Commit Graph

43 Commits

Author SHA1 Message Date
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
phranck a57e3115af fix: Add hosting-base-path to docc convert for GitHub Pages
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.
2026-01-29 03:01:50 +01:00
phranck a773122fa9 fix: Add contents: write permission for GitHub Actions workflow
The workflow needs write permissions to push generated documentation
back to the repository. Without this, github-actions[bot] gets a 403
permission denied error.
2026-01-29 02:59:44 +01:00
phranck bf15d423bb feat: Add generated DocC documentation to docs/ folder
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.
2026-01-29 02:57:54 +01:00
phranck e324283cb9 fix: Add error resilience to GitHub Pages deployment
- 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
2026-01-29 02:51:34 +01:00
phranck cbc882bc72 fix: Correct docc command syntax in GitHub Actions 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
2026-01-29 02:50:26 +01:00
phranck 6eb2d73ca4 fix: Remove problematic Swift version specification from GitHub Actions
- 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)
2026-01-29 02:49:29 +01:00
phranck 2cf72c2b19 feat: Add comprehensive DocC documentation with tutorials
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.
2026-01-29 02:42:29 +01:00