- 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
- 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
- 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)
- 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
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.
- 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
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.
- 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
- 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
- Change documentation-intro-accent from purple (#7044ff) to phosphor green (#33ff33)
- Darken gradient background to near-black (#0a0f0a) for CRT terminal feel
- 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
- 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)
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.
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.
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.
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.
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.
- 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/)
- 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
- 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
- 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
- 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/
- Add Spotnik Terminal UI demo image to project README
- Reference real TUIKit application example built with the framework
- Enhance project presentation with visual demonstration
- 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