feat(docs): add logo, dark theme, feature cards to docs site#1022
Conversation
The docs site lacked brand identity — no logo, default light theme, and plain bullet lists for features. Add the existing shield logo to the header and hero, default to dark theme via localStorage script, replace the "What is Archon?" bullets with Starlight CardGrid components, and extend custom CSS with dark theme colors, tighter hero spacing, and sidebar active-link gradient. Changes: - astro.config.mjs: add logo config + dark theme head script - index.md → index.mdx: add hero image, import CardGrid/Card components - custom.css: dark theme vars, hero padding, sidebar highlight Fixes #1018 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe docs site is enhanced with Archon's gradient logo in the header, a dark theme default via localStorage injection on first load, a logo-adorned hero section, feature cards replacing bullet points, and dark mode CSS customizations for consistent branding. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🔍 Comprehensive PR ReviewPR: #1022 — feat(docs): add logo, dark theme, feature cards to docs site SummaryClean, minimal docs-only improvement. Zero blast radius — all changes confined to Verdict:
🟡 Medium Issues (Needs Decision)Missing "Portable" Feature Card📍 The original homepage had 5 feature bullets. The CardGrid conversion carries over only 4, silently dropping "Portable" — the callout for multi-platform support (CLI, Web, Slack, Telegram, GitHub, Discord). This is one of Archon's most important differentiators and is explicitly called out as "Platform Agnostic" in CLAUDE.md. Options: Add 5th card | Fold into Multi-provider | Skip (first-time readers won't learn about Slack/Telegram/GitHub/Discord support) View recommended fix (3 lines of MDX)<CardGrid>
<Card title="Repeatable" icon="document">
Package your best AI coding patterns as shareable YAML workflows
</Card>
<Card title="Isolated" icon="laptop">
Each workflow runs in its own git worktree — no conflicts, no mess
</Card>
<Card title="Portable" icon="puzzle">
Run from CLI, Web UI, Slack, Telegram, GitHub, or Discord
</Card>
<Card title="Composable" icon="setting">
Chain nodes into DAGs with dependencies, loops, and conditional logic
</Card>
<Card title="Multi-provider" icon="rocket">
Works with Claude Code SDK and Codex SDK
</Card>
</CardGrid>Starlight's CardGrid handles odd-count cards gracefully (last card spans full width in 2-col layout). 🟢 Low IssuesView 3 low-priority suggestions
✅ What's Good
Next Steps
Reviewed by Archon comprehensive-pr-review workflow |
- Add missing "Portable" feature card to CardGrid (restores multi-platform support callout dropped in original conversion from bullet list) - Fix icon="random" on "Isolated" card — use "laptop" instead (shuffle icon does not communicate worktree isolation) - Reassign icons: Portable gets "puzzle", Composable gets "setting" - Add comment explaining !important in .hero is needed to override Starlight inline styles - Add comment noting .sidebar-content is an internal Starlight class (not public API) that should be re-tested after Starlight upgrades Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
⚡ Self-Fix Report (Aggressive)Status: COMPLETE Fixes Applied (4 total)
View all fixes
Tests Added(none — docs-only PR, no TypeScript changes) Skipped(none — all findings addressed) Suggested Follow-up Issues(none) ValidationN/A (docs-only PR, no TypeScript/lint/test surface) Self-fix by Archon · aggressive mode · fixes pushed to |
Archon PR Validation ReportVerdict: APPROVE SummaryAll five cosmetic gaps from issue #1018 are confirmed on the main branch and correctly resolved on the feature branch. The implementation uses idiomatic Starlight APIs (logo config, Card/CardGrid components, inline dark theme script), is confined entirely to Bug Confirmation
IssuesNo blocking issues found. Fix quality: 5/5. Validated by archon-validate-pr workflow |
* fix(docker): update Bun base image from 1.2 to 1.3 The lockfile was generated with Bun 1.3.x locally but the Docker image used oven/bun:1.2-slim. Bun 1.3 changed the lockfile format, causing --frozen-lockfile to fail during docker build. * fix(docker): pin Bun to exact version 1.3.9 matching lockfile Floating tag 1.3-slim resolved to 1.3.11 which has a different lockfile format than 1.3.9 used to generate bun.lock. Pin to exact patch version to prevent --frozen-lockfile failures. * fix(docker): add missing docs-web workspace package.json The docs-web package was added as a workspace member but its package.json was never added to the Dockerfile COPY steps. This caused bun install --frozen-lockfile to fail because the workspace layout in Docker didn't match the lockfile. * fix(docker): use hoisted linker for Vite/Rollup compatibility Bun's default "isolated" linker stores packages in node_modules/.bun/ with symlinks that Vite's Rollup bundler cannot resolve during production builds (e.g., remark-gfm → mdast-util-gfm chain). Using --linker=hoisted gives the classic flat node_modules layout that Rollup expects. Local dev is unaffected (Vite dev server handles the isolated layout fine). * ci: pin Bun version to 1.3.9 and add Docker build check - Align CI Bun version (was 1.3.11) with Dockerfile and local dev (1.3.9) to prevent lockfile format mismatches between environments - Add docker-build job to test.yml that builds the Docker image on every PR — catches Dockerfile regressions (missing workspace packages, linker issues, build failures) before they reach deploy * fix(ci): add permissions for GHA cache and tighten Bun engine - Add actions: write permission to docker-build job so GHA layer cache writes succeed on PRs from forks - Tighten package.json engines.bun from >=1.0.0 to >=1.3.9 to document the minimum version that matches the lockfile format * fix(ci): add smoke test, align Bun version across all workflows Review fixes: - Add load: true + health endpoint smoke test to docker-build CI job so we verify the image actually starts, not just compiles - Align Bun 1.3.9 in deploy-docs.yml and release.yml (were still 1.3.11) - Document why docs-web source is intentionally omitted from Docker * chore: float Docker to bun:1.3 and align CI to 1.3.11 - Dockerfile: oven/bun:1.3-slim (auto-tracks latest 1.3.x patches) - CI workflows: bun-version 1.3.11 (current latest, reproducible) - engines.bun: >=1.3.9 (minimum for local devs) Lockfile format is stable across 1.3.x patches, so this is safe. * fix(docker,ci): pin Docker to 1.3.11, loosen engines, harden smoke test - Dockerfile: pin oven/bun:1.3.11-slim (was floating 1.3-slim) so Docker builds are reproducible and match CI exactly. - package.json: loosen engines to ^1.3.0 so end users on any 1.3.x can run the CLI; CI/Docker remain pinned to the canonical latest. - CI smoke test: replace 'sleep 5' with curl --retry-connrefused, and move container cleanup to an 'if: always()' step so a failed health check no longer leaks the named container. --------- Co-authored-by: Rasmus Widing <rasmus.widing@gmail.com>
* fix(docker): update Bun base image from 1.2 to 1.3 The lockfile was generated with Bun 1.3.x locally but the Docker image used oven/bun:1.2-slim. Bun 1.3 changed the lockfile format, causing --frozen-lockfile to fail during docker build. * fix(docker): pin Bun to exact version 1.3.9 matching lockfile Floating tag 1.3-slim resolved to 1.3.11 which has a different lockfile format than 1.3.9 used to generate bun.lock. Pin to exact patch version to prevent --frozen-lockfile failures. * fix(docker): add missing docs-web workspace package.json The docs-web package was added as a workspace member but its package.json was never added to the Dockerfile COPY steps. This caused bun install --frozen-lockfile to fail because the workspace layout in Docker didn't match the lockfile. * fix(docker): use hoisted linker for Vite/Rollup compatibility Bun's default "isolated" linker stores packages in node_modules/.bun/ with symlinks that Vite's Rollup bundler cannot resolve during production builds (e.g., remark-gfm → mdast-util-gfm chain). Using --linker=hoisted gives the classic flat node_modules layout that Rollup expects. Local dev is unaffected (Vite dev server handles the isolated layout fine). * ci: pin Bun version to 1.3.9 and add Docker build check - Align CI Bun version (was 1.3.11) with Dockerfile and local dev (1.3.9) to prevent lockfile format mismatches between environments - Add docker-build job to test.yml that builds the Docker image on every PR — catches Dockerfile regressions (missing workspace packages, linker issues, build failures) before they reach deploy * fix(ci): add permissions for GHA cache and tighten Bun engine - Add actions: write permission to docker-build job so GHA layer cache writes succeed on PRs from forks - Tighten package.json engines.bun from >=1.0.0 to >=1.3.9 to document the minimum version that matches the lockfile format * fix(ci): add smoke test, align Bun version across all workflows Review fixes: - Add load: true + health endpoint smoke test to docker-build CI job so we verify the image actually starts, not just compiles - Align Bun 1.3.9 in deploy-docs.yml and release.yml (were still 1.3.11) - Document why docs-web source is intentionally omitted from Docker * chore: float Docker to bun:1.3 and align CI to 1.3.11 - Dockerfile: oven/bun:1.3-slim (auto-tracks latest 1.3.x patches) - CI workflows: bun-version 1.3.11 (current latest, reproducible) - engines.bun: >=1.3.9 (minimum for local devs) Lockfile format is stable across 1.3.x patches, so this is safe. * fix(docker,ci): pin Docker to 1.3.11, loosen engines, harden smoke test - Dockerfile: pin oven/bun:1.3.11-slim (was floating 1.3-slim) so Docker builds are reproducible and match CI exactly. - package.json: loosen engines to ^1.3.0 so end users on any 1.3.x can run the CLI; CI/Docker remain pinned to the canonical latest. - CI smoke test: replace 'sleep 5' with curl --retry-connrefused, and move container cleanup to an 'if: always()' step so a failed health check no longer leaks the named container. --------- Co-authored-by: Rasmus Widing <rasmus.widing@gmail.com>
…0#1022) * feat(docs): add logo, dark theme, feature cards to docs site (coleam00#1018) The docs site lacked brand identity — no logo, default light theme, and plain bullet lists for features. Add the existing shield logo to the header and hero, default to dark theme via localStorage script, replace the "What is Archon?" bullets with Starlight CardGrid components, and extend custom CSS with dark theme colors, tighter hero spacing, and sidebar active-link gradient. Changes: - astro.config.mjs: add logo config + dark theme head script - index.md → index.mdx: add hero image, import CardGrid/Card components - custom.css: dark theme vars, hero padding, sidebar highlight Fixes coleam00#1018 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(docs): address review findings for PR coleam00#1022 - Add missing "Portable" feature card to CardGrid (restores multi-platform support callout dropped in original conversion from bullet list) - Fix icon="random" on "Isolated" card — use "laptop" instead (shuffle icon does not communicate worktree isolation) - Reassign icons: Portable gets "puzzle", Composable gets "setting" - Add comment explaining !important in .hero is needed to override Starlight inline styles - Add comment noting .sidebar-content is an internal Starlight class (not public API) that should be re-tested after Starlight upgrades Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(docker): update Bun base image from 1.2 to 1.3 The lockfile was generated with Bun 1.3.x locally but the Docker image used oven/bun:1.2-slim. Bun 1.3 changed the lockfile format, causing --frozen-lockfile to fail during docker build. * fix(docker): pin Bun to exact version 1.3.9 matching lockfile Floating tag 1.3-slim resolved to 1.3.11 which has a different lockfile format than 1.3.9 used to generate bun.lock. Pin to exact patch version to prevent --frozen-lockfile failures. * fix(docker): add missing docs-web workspace package.json The docs-web package was added as a workspace member but its package.json was never added to the Dockerfile COPY steps. This caused bun install --frozen-lockfile to fail because the workspace layout in Docker didn't match the lockfile. * fix(docker): use hoisted linker for Vite/Rollup compatibility Bun's default "isolated" linker stores packages in node_modules/.bun/ with symlinks that Vite's Rollup bundler cannot resolve during production builds (e.g., remark-gfm → mdast-util-gfm chain). Using --linker=hoisted gives the classic flat node_modules layout that Rollup expects. Local dev is unaffected (Vite dev server handles the isolated layout fine). * ci: pin Bun version to 1.3.9 and add Docker build check - Align CI Bun version (was 1.3.11) with Dockerfile and local dev (1.3.9) to prevent lockfile format mismatches between environments - Add docker-build job to test.yml that builds the Docker image on every PR — catches Dockerfile regressions (missing workspace packages, linker issues, build failures) before they reach deploy * fix(ci): add permissions for GHA cache and tighten Bun engine - Add actions: write permission to docker-build job so GHA layer cache writes succeed on PRs from forks - Tighten package.json engines.bun from >=1.0.0 to >=1.3.9 to document the minimum version that matches the lockfile format * fix(ci): add smoke test, align Bun version across all workflows Review fixes: - Add load: true + health endpoint smoke test to docker-build CI job so we verify the image actually starts, not just compiles - Align Bun 1.3.9 in deploy-docs.yml and release.yml (were still 1.3.11) - Document why docs-web source is intentionally omitted from Docker * chore: float Docker to bun:1.3 and align CI to 1.3.11 - Dockerfile: oven/bun:1.3-slim (auto-tracks latest 1.3.x patches) - CI workflows: bun-version 1.3.11 (current latest, reproducible) - engines.bun: >=1.3.9 (minimum for local devs) Lockfile format is stable across 1.3.x patches, so this is safe. * fix(docker,ci): pin Docker to 1.3.11, loosen engines, harden smoke test - Dockerfile: pin oven/bun:1.3.11-slim (was floating 1.3-slim) so Docker builds are reproducible and match CI exactly. - package.json: loosen engines to ^1.3.0 so end users on any 1.3.x can run the CLI; CI/Docker remain pinned to the canonical latest. - CI smoke test: replace 'sleep 5' with curl --retry-connrefused, and move container cleanup to an 'if: always()' step so a failed health check no longer leaks the named container. --------- Co-authored-by: Rasmus Widing <rasmus.widing@gmail.com>
…0#1022) * feat(docs): add logo, dark theme, feature cards to docs site (coleam00#1018) The docs site lacked brand identity — no logo, default light theme, and plain bullet lists for features. Add the existing shield logo to the header and hero, default to dark theme via localStorage script, replace the "What is Archon?" bullets with Starlight CardGrid components, and extend custom CSS with dark theme colors, tighter hero spacing, and sidebar active-link gradient. Changes: - astro.config.mjs: add logo config + dark theme head script - index.md → index.mdx: add hero image, import CardGrid/Card components - custom.css: dark theme vars, hero padding, sidebar highlight Fixes coleam00#1018 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(docs): address review findings for PR coleam00#1022 - Add missing "Portable" feature card to CardGrid (restores multi-platform support callout dropped in original conversion from bullet list) - Fix icon="random" on "Isolated" card — use "laptop" instead (shuffle icon does not communicate worktree isolation) - Reassign icons: Portable gets "puzzle", Composable gets "setting" - Add comment explaining !important in .hero is needed to override Starlight inline styles - Add comment noting .sidebar-content is an internal Starlight class (not public API) that should be re-tested after Starlight upgrades Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
packages/docs-web/UX Journey
Before
After
Architecture Diagram
Before
After
Connection inventory:
logo.srchero.image.fileLabel Snapshot
risk: lowsize: XSdocsdocs:uiChange Metadata
featuredocsLinked Issue
Validation Evidence (required)
All checks passed on first run with no fixes required.
Security Impact (required)
Compatibility / Migration
/)Human Verification (required)
defaultThemeconfig key not supported in Starlight v0.38.2 so replaced with inline<head>scriptSide Effects / Blast Radius (required)
packages/docs-webonly — zero impact on server, CLI, core, or any other packageRollback Plan (required)
git revert HEAD— single atomic commit; docs rebuild redeploysRisks and Mitigations
Risk: MDX code-group syntax breaks after .md → .mdx rename
:::code-groupremark plugin works in both.mdand.mdx; build confirmed passingRisk:
defaultThemeconfig key not supported in Starlight v0.38.2<head>script settinglocalStorage+data-themeattribute on first visit — identical UX effect, validated in buildSummary by CodeRabbit
New Features
Style