- 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
The documentation was generated without the correct base path, causing 404s
for CSS and JS assets. The files are served from /TUIKit/ on GitHub Pages,
so all asset paths need to be prefixed.
Regenerated docs with --hosting-base-path /TUIKit to fix asset loading.
The workflow needs write permissions to push generated documentation
back to the repository. Without this, github-actions[bot] gets a 403
permission denied error.
Generated DocC documentation with xcrun docc convert:
- Main landing page and navigation
- 8 comprehensive guide articles
- 3 step-by-step tutorials
- Ready for GitHub Pages deployment from /docs folder
GitHub Pages should now be configured to deploy from main branch, /docs folder.
- Added continue-on-error: true to gracefully handle Pages deployment issues
- Documentation will still build even if Pages deployment fails
- This allows users to enable Pages later without re-running workflow
- Changed from 'docc build' to 'docc convert' (correct docc command)
- Use TUIKit.docc directory path instead of --product flag
- Added --hosting-base-path TUIKit for GitHub Pages deployment
- This matches the correct xcrun docc API
- Changed from swift-actions/setup-swift with specific version to simple swift --version check
- macos-latest runners come with Swift pre-installed
- Avoids 'Version not available' errors with swift-actions action
- Uses system Swift (currently 6.2.3 on runner)
Add complete Apple-style DocC documentation for TUIKit framework:
## Documentation Structure
- Main landing page (TUIKit.md) with quick-start and topic navigation
- 8 guide articles: GettingStarted, ViewHierarchy, StateManagement, Theming, Appearance, Focus, Modifiers, Architecture
- 3 step-by-step tutorials: BuildYourFirstApp, BuildInteractiveMenu, BuildThemableUI
- Documentation catalog with proper Info.plist configuration
## Code Improvements
- Enhanced Box.swift documentation with clear container comparison
- Added comprehensive examples and usage patterns
- Explained appearance integration and sizing behavior
## Infrastructure
- GitHub Actions workflow (.github/workflows/docc.yml) for automatic DocC building
- Configured for deployment to GitHub Pages on push to main
- Uses xcrun docc build with proper artifact handling
## Documentation Includes
- API reference stubs for all major components
- Comprehensive guide articles with code examples
- Interactive tutorials following Apple's documentation style
- Cross-references using DocC syntax (``Type``)
- Best practices and design patterns explained
The documentation is ready for automated building and deployment to GitHub Pages.