Commit f0dd598
feat: Sprint 5 — Astro native i18n, sub-pages, nav redesign (#12)
* feat(tokens): add calm-mode spacing, card-muted, pill, eyebrow tokens
* feat(styles): add .section-calm, .card-muted, .pill-neutral, .eyebrow utilities
* feat(hero): compress stats, collapse SEO paragraph into details toggle
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(landing): add CompatibilityStrip — 'Works with' AI tool pill row
* feat(landing): add Capabilities section — Context Forge suite frame (RTK/ICM/Vox)
* feat(landing): wire CompatibilityStrip + Capabilities into landing section order
* refactor(problem): neutral cards, colored evidence in terminal blocks only
* feat(landing): add Eyebrow component, wire into Problem/Install/CTA/Capabilities
* refactor(cta): viewport-height section, gradient headline, viking background at 12% opacity
* feat(install): persona tabs for Claude Code / Cursor / Other AI CLI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(whitespace): section padding 80px → 144px (--space-13)
Apply --space-13 (9rem/144px) to all landing sections for breathing room.
Mobile breakpoint uses --space-10 (5rem/80px) to stay proportional.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): add translations for Capabilities and Install persona tabs
New keys: caps.*, install.tab.*, install.note.* for all 6 languages.
Capabilities and Install now use data-i18n attributes for proper translation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(ci): fail build when docs source is missing in CI
Exit with code 1 in CI when RTK docs repo is absent, while keeping exit 0 for local dev stubs. Prevents silent deployment failures with empty documentation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* perf: remove 380KB orphaned PNG screenshots (WebP versions are used)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* perf(icm): convert hero image to WebP + fetchpriority (LCP improvement)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* perf: add fetchpriority=high + decoding=async on hero image
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(a11y): sync <html lang> attribute with language switcher
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(a11y): add aria-label to main nav
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ux: remove unsourced 'Starred by' carousel
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(a11y): slideshow pause/play + respect prefers-reduced-motion (WCAG 2.2.2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(a11y): touch targets minimum 44x44px on nav-icon-btn, copy-btn, lang-btn (WCAG 2.5.5)
- .nav-icon-btn: 30px → 44px (width/height)
- .copy-btn: 4px → 10px padding, added min-width/min-height 44px + flex centering
- .lang-btn: 3px 8px → 10px 12px padding, added min-height 44px + flex centering
Meets WCAG 2.1 Level AA target touch size requirement (44×44 CSS pixels minimum).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* perf: replace transition:all with targeted properties in landing.css (INP improvement)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(tokens): replace hardcoded hex with CSS custom properties in docs Header
Replaces #1a2344, #0f1629, #0c1225, #8294ab, and #e2e8f0 with their corresponding CSS custom properties (--border, --bg-card, --bg-alt, --text-muted, --text) for consistent design token usage.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ux: use global SiteFooter on /vox/ and /icm/ for cross-product nav
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* copy: shorten hero-context + remove em dashes (anti-AI markers)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs: sync CLAUDE.md — SiteHeader replaces Nav.astro/ProductNav.astro
Updated Nav architecture sections in both CLAUDE.md files to reference
the actual SiteHeader component with variant prop, instead of
non-existent Nav.astro and ProductNav.astro files.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: remove Tailwind — zero utility classes used, pure CSS design system
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(css): scope Hero styles into component
Move all Hero-exclusive CSS from landing.css into a scoped <style> block in Hero.astro — includes hero layout, badges, stats, terminal demo, viking layout, and responsive overrides.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(css): scope Nav/Header styles into SiteHeader component
* refactor(css): scope Install styles into component
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(css): scope Problem styles into component
* refactor(css): scope ToolComparison styles into component
* refactor(css): scope DemoSlideshow styles into component
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(css): scope Proof styles into component
* refactor(css): scope ShareGain styles into component
* refactor(css): scope CloudWaitlist styles into component
* refactor(css): scope Cta styles into component
* refactor(css): scope Footer styles into component
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(layout): create ProductLayout.astro shared shell for product pages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(vox): migrate to ProductLayout + @graph JSON-LD schema
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(icm): migrate to ProductLayout + @graph JSON-LD schema
* fix(ci): allow pinning RTK docs to a specific tag via RTK_DOCS_REF
* feat(i18n): add missing UI/aria keys to translations (S5-B1)
Audited all .astro files in components/landing/, components/global/SiteHeader.astro,
and pages/index.astro, vox/index.astro, icm/index.astro.
Added 35 new keys across 3 namespaces:
- eyebrow.* (4 keys): Eyebrow label props previously passed as hardcoded strings
- ui.* (9 keys): terminal title, hero "stars" suffix, works-with label, nav links, search label, install docs link
- aria.* (14 keys): copy, prev/next, pause/resume slideshow, choose-ai-tool tablist, main-nav, open/close menu, search, ko-fi, discord, compat-tools, share_x/bsky/linkedin
All 6 locales covered (en, fr, es, de, zh, ja).
HTML_KEYS set and existing 142 keys are untouched.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): add i18n helper, Astro i18n config, sitemap integration (S5-B2)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(pages): extract shared page templates for i18n routing (S5-B3)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): migrate landing components to server-side t() (S5-B4)
Replace all data-i18n / data-i18n-html DOM attributes with server-side
t(key, lang) calls at build time across 11 landing components + SiteHeader.
LandingPage.astro now propagates lang prop to every child component.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): add [locale] catch-all routes for 5 non-EN locales (S5-B5)
Creates dynamic [locale] pages for fr/es/de/zh/ja: landing (/fr/),
Vox (/fr/vox/), ICM (/fr/icm/). Threads lang prop through ProductLayout
to SiteHeader so nav text renders in the correct locale. Build: 139
pages (15 new vs baseline 124).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): rewrite lang switcher to nav links, add hreflang to Layout (S5-B6)
Replace localStorage-based button switcher with proper <a> navigation links
using getRelativeLocaleUrl. Add 7 hreflang alternate tags to Layout.astro head
and dynamic html[lang] from Astro.currentLocale for all locale pages.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(i18n): remove I18nScript, complete server-side i18n migration (S5-B7)
Delete client-side I18nScript.astro (data-i18n DOM engine) and remove all
imports from LandingPage.astro and ProductLayout.astro. All translations are
now rendered server-side at build time via locale routes — no runtime JS needed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(landing): split landing into focused sub-pages (/savings, /vs, /cloud)
Slim /: keeps Hero, Problem, DemoSlideshow, Install, FAQ, CTA.
Proof moves to /savings/, ToolComparison to /vs/, CloudWaitlist + ShareGain to /cloud/.
Hash-redirect script on / handles old anchors (#proof, #compare, #cloud, #share-gain).
Landing nav /#compare link updated to /vs/.
3 RSS entries added for the new pages.
Each sub-page has compact hero breadcrumb, the relevant component, footer CTA → /#install.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(nav): add /cloud/ link to landing nav (desktop + mobile drawer)
Cloud page was unreachable from the main navigation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(cloud): add initReveal() + nav Option B cleanup
Cloud page:
- Add initReveal() so .reveal elements animate in instead of staying invisible
Landing nav (Option B):
- Drop Ko-fi icon
- Drop Cloud from desktop nav (stays in mobile drawer)
- "Tools" → "Compare" (clearer intent)
- Replace 6 lang buttons with globe icon → dropdown panel (details/summary, no-JS toggle)
- Close on outside click and after lang selection
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(nav): lang dropdown vertical layout
* fix(footer): fix dead links + add new sub-pages
- `#install` → `/#install` (absolute) in pre-footer CTA and Install column
- `/guide/features/` (404) → `/savings/` (Token Savings page)
- `#cloud` → `/cloud/` (RTK Cloud page)
- Add Vox/ICM sub-page links: how-it-works + ICM compare
- Add "Explore" section with /savings/ and /vs/
- Add .footer-sub-link CSS for indented sub-page items
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* seo: add JSON-LD breadcrumbs, fix dates, and enrich sub-page schemas
- /savings/ : BreadcrumbList + Dataset (6 variableMeasured), datePublished fixed, ogType=article
- /vs/ : BreadcrumbList + ItemList (6 compatible tools), datePublished fixed, ogType=article
- /cloud/ : SoftwareApplication (PreOrder) + BreadcrumbList — zero schema → proper markup
- /icm/ : BreadcrumbList prepended + SpeakableSpecification on SoftwareApplication
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* seo: fix OG image, datePublished, and add BreadcrumbList to /vox/
- og-icm-banner.png: 1024×254 → 1200×630 (proper OG card with title, subtitle, illustration)
- /: datePublished 2025-01-01 → 2026-01-29 (earliest verifiable CHANGELOG entry)
- /vox/: add BreadcrumbList schema (RTK → Vox)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* seo: dedicated OG images, BreadcrumbLists, SpeakableSpec, real dates
OG images (1200×630, new):
- og-savings.png — 89% stat + command breakdown
- og-vs.png — RTK vs 6 AI coding tools
- og-cloud.png — coming soon + feature list
- og-icm-how-it-works.png — 3 memory systems
- og-icm-vs.png — comparison table vs Mem0/Zep/mcp-memory
Schemas:
- /icm/how-it-works: BreadcrumbList (3-level) + datePublished 2026-04-29
- /icm/vs: BreadcrumbList (3-level) + datePublished 2026-04-29
- /vox: SpeakableSpecification + datePublished 2026-04-16
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(subpages): replace scoped .hero/.hero-sub/.hero-cta with standalone .subpage-* classes
* feat(nav): add 'soon' badge to Cloud nav link
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 5f30f0e commit f0dd598
83 files changed
Lines changed: 9821 additions & 3101 deletions
File tree
- .claude
- commands
- skills/ui-ux-pro-max
- data
- stacks
- scripts
- .github/workflows
- docs
- superpowers/plans
- public
- assets
- illustrations
- screenshots
- scripts
- src
- components
- global
- landing
- pages
- data
- layouts
- lib
- pages
- [locale]
- icm
- vox
- cloud
- icm
- savings
- vox
- vs
- scripts
- styles
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
| 105 | + | |
| 106 | + | |
107 | 107 | | |
108 | 108 | | |
109 | | - | |
| 109 | + | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
0 commit comments