Commit Graph

57 Commits

Author SHA1 Message Date
phranck 5f91a3cae6 feat: add automated test count update workflow
- Created update-test-counts.yml workflow
- Triggers on push to main (when Tests/ or Sources/ change) or daily at 2 AM UTC
- Counts @Test and @Suite annotations
- Updates README.md badges and test count locations
- Auto-commits with [skip ci] to prevent rebuild loops
- Can be manually triggered via workflow_dispatch
2026-02-15 00:06:30 +01:00
phranck 0cf41dc29a Chore: Add GitHub Pages routing support for DocC
- Copy index.html as 404.html for SPA deep-link routing
- Replace root index.html with redirect to /documentation/tuikit/
2026-02-13 19:28:21 +01:00
phranck 1f08efade5 Chore: Move landing page to phranck/tuikit.dev repo
- Remove docs/ directory (now in phranck/tuikit.dev)
- Remove scheduled workflows (update-plans-data, update-weekly-activity, update-social-cache)
- Remove build-landing and deploy-landing CI jobs
- Remove pages/id-token permissions (no longer needed)
- Keep: build (lint/test), update-badge, deploy-docs (DocC -> docs.tuikit.dev)
2026-02-13 18:55:59 +01:00
phranck 756390dce3 Chore: Split CI into separate Landing Page and DocC deployments
- Landing page (Astro) deploys to tuikit.dev via main repo GitHub Pages
- DocC documentation deploys to docs.tuikit.dev via phranck/tuikit-docs
- Use peaceiris/actions-gh-pages for cross-repo DocC deployment
- Update documentation URLs to docs.tuikit.dev
2026-02-13 18:12:06 +01:00
phranck 021c62edcf Chore: Migrate custom domain from tuikit.layered.work to tuikit.dev
- Update CNAME in CI workflow
- Update Astro site URL, JSON-LD structured data
- Update robots.txt, sitemap.xml, install-template.sh
- Update documentation links in project-template README
2026-02-13 17:52:03 +01:00
phranck 6c1bda94bf Chore: Consolidate plans directory and standardize AI tool instructions
- Move all plans from plans/ to .claude/plans/ (41 files)
- Add open plans listing to whats-next.md for visibility
- Update docs pipeline (update-plans-data.ts) for new paths
- Rewrite .github/copilot-instructions.md with Swift 6.0 constraint
- Add CONTRIBUTING.md, PR template, AGENTS.md, .cursor/rules, .windsurfrules
- Update global references (~/.claude/CLAUDE.md, project-structure.md)
2026-02-13 16:18:45 +01:00
phranck dbce266008 Feat: Add scheduled workflow to update weekly activity cache 2026-02-08 17:46:28 +01:00
phranck e5a2cb2185 Fix: Use correct Astro env var for GitHub token in CI 2026-02-07 17:02:44 +01:00
phranck 8057dabd1c Fix: Use correct Astro output directory in CI workflow 2026-02-07 13:55:49 +01:00
phranck cfa8b31631 Refactor: Standardize UI card styling and remove em-dashes
- Unified card headers: gap-3, Icon size 20, text-accent color
- PlansCard: collapsible sections, animated expand/collapse
- update-plans-data.ts: export all plans (no limit)
- Replaced all em-dashes with colons or full sentences
- Content text standardized to text-lg across all cards
- FeatureCard, ArchHighlight descriptions adjusted
2026-02-07 00:24:19 +01:00
phranck 0d10b0255d Feat: Add Plans Dashboard Card with hourly data sync
- Standardize plan file structure (PLAN_TEMPLATE.md): Title → Preface → Context → Spec → Design → Implementation → Checklist
- Rewrite all 24 plan prefaces in natural, action-focused language with markdown support
- Add update-plans-data.ts script: extracts top 5 open + 5 done plans from plans/ directory
- Add PlansCard React component with markdown rendering (react-markdown)
- Integrate PlansCard into dashboard (below activity heatmap)
- Add usePlansCache hook with 5-minute localStorage cache
- Add update-plans-data.yml GitHub Actions workflow (hourly trigger)
- Install react-markdown dependency for markdown-in-JSON rendering
- Update npm scripts: prebuild and update:plans
2026-02-06 23:12:27 +01:00
phranck ea3cb6974e Fix: grant push permissions to social cache workflow
Checkout with DASHBOARD_GITHUB_TOKEN PAT so git push succeeds.
Also add explicit contents: write permission at workflow level.
Fixes 403 'Permission denied to github-actions[bot]' error.
2026-02-05 14:53:15 +01:00
phranck c78d439c4d feat(dashboard): add social account lookup for stargazers
- Add multi-source social search (Keybase, about.me, Linktree, GitHub bio/blog)
- Implement avatar comparison and cross-platform verification
- Create GitHub Action for scheduled cache updates (2h incremental, weekly full)
- Display Mastodon, Bluesky, Twitter links in stargazer popover
- Add smooth hover animations with invisible bridge for better UX
- Add social-overrides.json for manual account mappings
2026-02-04 20:09:55 +01:00
phranck 3cedf75376 Update README, added Copilot instructions file 2026-02-04 17:16:14 +01:00
phranck f9b106e509 Feat: Unified IconBadge component for SF Symbols
- Add IconBadge component with sm/md/lg variants
- Refactor FeatureCard to use IconBadge
- Update ArchHighlight and RepoInfo for consistency
- Add DASHBOARD_GITHUB_TOKEN to CI for rate limit
2026-02-04 14:18:54 +01:00
phranck 0d6f4a7bf3 Fix: CI concurrency group was static — runs cancelled each other
The concurrency group was hardcoded to "pages", causing every CI run
(any branch) to cancel all other running workflows. Now uses per-ref
groups (ci-$ref) with cancel-in-progress only for pull requests.
2026-02-02 21:55:39 +01:00
phranck 88f632b8ed Chore: Use personal git identity for CI badge commits 2026-02-02 16:57:23 +01:00
phranck 63b6513046 Fix: Include workflow_dispatch in update-badge trigger condition 2026-02-02 16:36:28 +01:00
phranck b1983e57f3 Feat: Auto-update test count badge in README via CI
- New 'update-badge' job runs after build on main pushes
- Counts @Test and @Suite annotations in Swift test files
- Updates badge, project structure, and developer notes in README.md
- Uses [skip ci] to prevent recursive workflow triggers
- Only commits if counts actually changed
2026-02-02 16:34:22 +01:00
phranck ba92c10863 Feat: Add custom landing page with theme switcher and auto-versioned SPM badge
- Next.js static site in docs/ with SN Pro font and WarText headline
- 4 phosphor themes (Green, Amber, White, Red) with localStorage persistence
- Animated cloud background tinted to active theme
- SF Symbols icons via sf-symbols-lib/hierarchical
- PackageBadge with copy-to-clipboard, version from CI tag
- CI workflow builds landing page + DocC, deploys to GitHub Pages
- Version auto-resolved from git tags on deploy
2026-01-31 16:33:32 +01:00
phranck b7a91220f9 Chore: Move theme-settings.json into DocC catalog
- Add theme-settings.json to TUIkit.docc (recognized by DocC automatically)
- Remove inline generation step from CI workflow
2026-01-30 21:03:47 +01:00
phranck 87a2857e81 Chore: Green phosphor gradient for DocC intro banner
- Change documentation-intro-accent from purple (#7044ff) to phosphor green (#33ff33)
- Darken gradient background to near-black (#0a0f0a) for CRT terminal feel
2026-01-30 21:02:20 +01:00
phranck df36015954 update banner image 2026-01-30 20:51:51 +01:00
phranck 4b36dfe4e8 update banner image 2026-01-30 20:49:17 +01:00
phranck 058082d0fc updates banner image 2026-01-30 20:40:59 +01:00
phranck 95029184e7 Chore: Rename TUIKit to TUIkit
- Rename module, targets and products in Package.swift
- Rename directories: Sources/TUIkit, TUIkitExample, Tests/TUIkitTests
- Rename files: TUIkit.swift, TUIkit.docc/TUIkit.md
- Update all import statements, module-qualified calls, file headers
- Update doc comments, string literals and DocC articles
- Update CI workflow, README, .swiftlint.yml and markdown docs
- Merge platform badges into single combined badge in README
- Add "Example App auslagern" task to to-dos.md
2026-01-30 20:29:29 +01:00
phranck 357c20c315 fix: Resolve stdout concurrency error on Linux and unify CI matrix
- Wrap fflush(stdout) in nonisolated(unsafe) to satisfy Swift 6 strict
  concurrency on Linux where stdout is a shared mutable global
- Replace separate lint + linux-build jobs with a single build matrix
  (macOS + Linux) that runs SwiftLint, swift build, and swift test
  on both platforms
- Install SwiftLint on Linux via release binary (no Homebrew available)
- DocC build-docs job now depends on the matrix build job
2026-01-30 17:00:00 +01:00
phranck 3ec23004b9 fix: Linux compatibility for Terminal, SignalManager, and AppStorage
- Replace #if os(Linux) with #if canImport(Glibc/Musl/Darwin) import guards
- Add TermFlag typealias to fix termios flag width mismatch (UInt vs UInt32)
- Add platform import guard to SignalManager for POSIX signal visibility
- Replace DispatchQueue.global with Task.detached in AppStorage
- Add XDG_CONFIG_HOME fallback for config directory resolution
- Add Linux Build & Test CI job (swift:6.0 container on ubuntu-latest)
2026-01-30 16:40:45 +01:00
phranck 6c80949914 ci: Merge SwiftLint and DocC workflows into single CI pipeline
Three jobs in one workflow:
1. lint — SwiftLint via Homebrew (runs on push + PR)
2. build-docs — DocC generation (runs after lint, push to main only)
3. deploy — GitHub Pages deployment (runs after build-docs)

Removes the separate docc.yml and swiftlint.yml workflows.
2026-01-30 16:02:13 +01:00
phranck 254085b2ff ci: Add standalone SwiftLint workflow via Homebrew
Runs SwiftLint as a separate CI job on push/PR to main.
Uses brew install instead of the SPM build plugin, which
cannot execute binary artifacts on GitHub Actions runners.
2026-01-30 16:00:27 +01:00
phranck 54d4abad28 fix: Disable SwiftLint build plugin in CI via DISABLE_SWIFTLINT env var
The SwiftLint prebuild plugin cannot execute binary artifacts on
GitHub Actions macOS runners. Package.swift now checks for
DISABLE_SWIFTLINT=1 to conditionally skip the plugin.
The DocC workflow sets this variable.
2026-01-30 15:58:33 +01:00
phranck aefb4e19b4 fix: Add --disable-sandbox to DocC workflow for SwiftLint plugin compatibility
The SwiftLint build plugin downloads a binary artifact that cannot
execute inside the default sandbox on GitHub Actions macOS runners.
Adding --disable-sandbox allows the prebuild plugin to run.
2026-01-30 15:56:15 +01:00
phranck 10746c9545 fix: Add root redirect to /documentation/tuikit 2026-01-30 08:27:56 +01:00
phranck 9a714fe057 fix: Add theme-settings.json to DocC deployment
The DocC Vue.js SPA requires theme-settings.json to bootstrap.
Without it, the page loads but stays blank (white screen).
This was the root cause of the 'empty page' issue.
2026-01-30 08:25:03 +01:00
phranck d6c05700e5 cleanup: Remove leftover VitePress workflow 2026-01-30 07:50:40 +01:00
phranck 578c3d6ab8 ci: Add workflow_dispatch trigger to DocC workflow 2026-01-30 07:50:18 +01:00
phranck 1d05de80d0 cleanup: Migrate from DocC/MkDocs to VitePress documentation
- Remove old DocC-generated documentation files (HTML, JS, CSS, JSON)
- Remove mkdocs.yml configuration file
- Add new VitePress configuration and documentation structure
- Add GitHub Actions workflow for automated VitePress deployment
- Update .gitignore to exclude node_modules and dist folders
- All documentation content migrated with modern layout and styling
- VitePress provides faster builds and better developer experience
2026-01-29 18:15:01 +01:00
phranck c66a53de66 feat: Replace all documentation with DocC + GitHub Pages deployment
- Remove old VitePress, MkDocs, and legacy DocC workflows and files
- Add swift-docc-plugin dependency to Package.swift
- Create DocC catalog at Sources/TUIKit/TUIKit.docc/ with:
  - Main landing page with full API topic organization
  - Getting Started guide
  - Architecture overview
  - State Management guide
  - Theming guide
- Add GitHub Actions workflow for DocC → GitHub Pages (macos-15)
- CNAME for tuikit.layered.work injected during CI build
- Clean up .gitignore (remove MkDocs/VitePress entries, add docs-output/)
2026-01-30 07:41:53 +01:00
phranck 97eec53ccb cleanup: Migrate from DocC/MkDocs to VitePress documentation
- Remove old DocC-generated documentation files (HTML, JS, CSS, JSON)
- Remove mkdocs.yml configuration file
- Add new VitePress configuration and documentation structure
- Add GitHub Actions workflow for automated VitePress deployment
- Update .gitignore to exclude node_modules and dist folders
- All documentation content migrated with modern layout and styling
- VitePress provides faster builds and better developer experience
2026-01-29 18:15:01 +01:00
phranck 544d84a21a feat: Replace DocC with MkDocs documentation
- Add MkDocs with Material theme for reliable documentation
- Create comprehensive markdown documentation:
  - Home page with quick start guide
  - Getting started with code examples
  - Complete API reference with Swift code samples
  - Contributing guidelines
- Material theme with automatic dark/light mode support
- Colors: Emerald (primary), Indigo (accent)
- Add GitHub Actions workflow to build and deploy to GitHub Pages
- Markdown-based docs are easier to maintain and customize
- Generates static HTML without complex framework dependencies
2026-01-29 14:57:07 +01:00
phranck f0d343acc6 Refactor: Deploy DocC directly to docs root
- Generate DocC directly to docs/ directory (not docs/api/)
- Remove landing page temporarily (will re-add separately later)
- Simplify workflow - no subdirectory complexity
- Fixes static asset path issues with DocC
- Let workflow commit all generated docs files
2026-01-29 14:28:42 +01:00
phranck 28a9f75e60 Refactor: Simplify DocC deployment workflow
- Generate DocC directly to docs/api/ (simpler approach)
- Workflow commits generated docs to repository
- Remove path conversion complexity
- Update .gitignore to track docs/api/
- Update landing page links to api/ endpoint
- Removes unnecessary path fixing script
2026-01-29 14:19:57 +01:00
phranck 502a8efc8a Fix: Create public directory for GitHub Pages deployment
- Prepare deployment directory that combines docs/ and docs-api/
- Copy landing page and documentation to public/ directory
- Use public/ as artifact path for GitHub Pages
- Ensures both landing page and docs are deployed correctly
2026-01-29 14:02:45 +01:00
phranck 0b3cedf522 Refactor: Move DocC to docs-api/ with relative paths
- Generate DocC to docs-api/ instead of docs/api/ for cleaner separation
- Add post-processing script to convert absolute paths to relative
- Ensures documentation works independently of hosting path
- Update .gitignore to ignore docs-api/ generated files
- Update landing page links to use relative paths to ../docs-api/
- Makes the site more portable and resilient to path changes
2026-01-29 13:58:29 +01:00
phranck 972b96f562 Fix: Add hosting-base-path to DocC generation for correct asset URLs
- Add --hosting-base-path /api flag to docc convert command
- Ensures CSS and JS assets load from /api/ subdirectory
- Fixes 404 errors when accessing documentation at docs-tuikit.layered.work/api/
2026-01-29 13:54:10 +01:00
phranck d81149f593 Docs: Add Spotnik demo screenshot to README
- Add Spotnik Terminal UI demo image to project README
- Reference real TUIKit application example built with the framework
- Enhance project presentation with visual demonstration
2026-01-29 13:48:18 +01:00
phranck 5e5c6f0c44 fix: Update workflow to output DocC to docs/api/ subdirectory 2026-01-29 13:21:51 +01:00
phranck 3be94706c5 fix: Add .nojekyll file to docs artifact to prevent Jekyll processing 2026-01-29 08:13:05 +01:00
phranck ed07a00ec7 refactor: Switch DocC deployment to GitHub Actions instead of branch deployment
- Remove git commits of generated docs/ folder
- Use actions/upload-pages-artifact and actions/deploy-pages for direct GH Pages deployment
- Update .gitignore to exclude generated /docs/ directory
- Change permissions to use pages:write and id-token:write
2026-01-29 07:58:59 +01:00
phranck ac04f28441 fix: Remove hosting-base-path from docc - GitHub Pages uses /docs as root 2026-01-29 07:29:19 +01:00