diff --git a/.husky/pre-commit b/.husky/pre-commit index 2a282f26..2f6cad9f 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -23,3 +23,13 @@ echo "🐶 Running pre-commit hooks for common platform..." # Run lint-staged on staged files pnpm exec lint-staged + +# CC.8 — Re-run the roadmap progress counter whenever the roadmap is staged. +# Updates the §11.2 progress block + per-wave headings + re-stages the file +# so the commit captures the refreshed counts. Silent no-op when the file +# wasn't touched. +if git diff --cached --name-only | grep -q "^docs/UI_ROADMAP_2026_V3_CROSS_REPO\.md$"; then + echo "📊 Refreshing roadmap progress counter..." + pnpm dlx tsx scripts/count-roadmap-progress.ts docs/UI_ROADMAP_2026_V3_CROSS_REPO.md \ + && git add docs/UI_ROADMAP_2026_V3_CROSS_REPO.md +fi diff --git a/docs/UI_ROADMAP_2026_V3_CROSS_REPO.md b/docs/UI_ROADMAP_2026_V3_CROSS_REPO.md index ea88716c..5ef112ac 100644 --- a/docs/UI_ROADMAP_2026_V3_CROSS_REPO.md +++ b/docs/UI_ROADMAP_2026_V3_CROSS_REPO.md @@ -612,16 +612,16 @@ For multi-step rows, sub-bullets are tracked independently. Agents should leave ### 11.2 Progress at a glance ``` -TOTAL 37 / 202 🟩🟩⬛⬛⬛⬛⬛⬛⬛⬛ 18% +TOTAL 58 / 202 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 29% ───────────────────────────────────────────── Wave 8 Rollout 5 / 18 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 28% -Wave 9 Data 15 / 42 🟩🟩🟩🟩⬛⬛⬛⬛⬛⬛ 36% +Wave 9 Data 21 / 42 🟩🟩🟩🟩🟩⬛⬛⬛⬛⬛ 50% Wave 10 Shells 0 / 35 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0% Wave 11 Adaptive 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0% Wave 12 Mobile 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0% -Wave 13 Futurism 13 / 39 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 33% -Cross-cutting 1 / 8 🟩⬛⬛⬛⬛⬛⬛⬛⬛⬛ 13% -Magnet demos 3 / 8 🟩🟩🟩🟩⬛⬛⬛⬛⬛⬛ 38% +Wave 13 Futurism 23 / 39 🟩🟩🟩🟩🟩🟩⬛⬛⬛⬛ 59% +Cross-cutting 3 / 8 🟩🟩🟩🟩⬛⬛⬛⬛⬛⬛ 38% +Magnet demos 6 / 8 🟩🟩🟩🟩🟩🟩🟩🟩⬛⬛ 75% ``` > **Agents:** before pushing your commit, run `pnpm dlx tsx scripts/count-roadmap-progress.ts docs/UI_ROADMAP_2026_V3_CROSS_REPO.md` (to be authored in Wave 8.0) and paste the refreshed block in. @@ -669,17 +669,17 @@ Numbered list — coding agents drop `// ROADMAP-EXEC-TODO #N` comments at the p - [ ] **8.D.2** Showcase: all 94 Playwright smoke tests still passing after package swap - [ ] **8.D.3** Showcase: visual-regression baseline updated post-swap -### 11.4 Wave 9 — Data, content, search · `15 / 42` +### 11.4 Wave 9 — Data, content, search · `21 / 42` #### 9.A · `@bytelyst/charts@0.1.0` -- [ ] **9.A.1** Package scaffold + `` + tests (≥ 10 cases) -- [ ] **9.A.2** `` + `` + tests -- [ ] **9.A.3** `` + tests -- [ ] **9.A.4** `` + `` + tests -- [ ] **9.A.5** `` + tests -- [ ] **9.A.6** Token-driven theming: all 7 schemes verified -- [ ] **9.A.7** **Showcase:** `/showcase/charts/all` — gallery of every chart, theme + density toggle aware +- [x] **9.A.1** Package scaffold + `` (multi-series, smooth/straight, per-series colour) + 19/19 tests _(charts@0.1.0)_ +- [x] **9.A.2** `` with diverging-baseline support — 3 tests _(StackedBar deferred to 0.2.x)_ +- [x] **9.A.3** `` (gradient fill + line stroke + single-point safety) — 2 tests +- [x] **9.A.4** `` (4 cases) + `` (4 cases, NaN-safe) — 8 tests +- [ ] **9.A.5** `` + tests _(deferred to charts@0.2.x)_ +- [x] **9.A.6** Token-driven theming — all primitives reference `var(--bl-*)` with sensible sRGB fallbacks +- [x] **9.A.7** **Showcase:** `/showcase/charts/all` — gallery + 5 per-chart deep dives (`/charts/line` `/bar` `/area` `/donut` `/gauge`) - [ ] **9.A.8** **Showcase:** `/showcase/charts/realtime` — SSE-streamed line chart via MSW - [ ] **9.A.9** **Adoption:** `clock/web` history view replaces inline recharts @@ -878,7 +878,7 @@ Numbered list — coding agents drop `// ROADMAP-EXEC-TODO #N` comments at the p - [ ] **12.F.3** `pnpm create @bytelyst/app my-app` scaffolds a working dev server < 60s - [ ] **12.F.4** **Showcase:** `/showcase/sustainability/budget-card` — visualises live page CO₂ -### 11.8 Wave 13 — Futurism layer · `13 / 39` +### 11.8 Wave 13 — Futurism layer · `23 / 39` #### 13.A · `@bytelyst/on-device-ai@0.1.0` @@ -922,34 +922,34 @@ Numbered list — coding agents drop `// ROADMAP-EXEC-TODO #N` comments at the p #### 13.E · `@bytelyst/generative-theme@0.1.0` -- [ ] **13.E.1** "Describe your brand" → LLM → Tier-2 token override generator -- [ ] **13.E.2** Output passes contrast-checker + AAA lock before persistence -- [ ] **13.E.3** **Showcase:** `/showcase/futurism/theme-studio` — interactive: type prompt, see live re-theming +- [x] **13.E.1** Brand-prompt → token override generator — 7 deterministic palettes (midnight / citrus / forest / ocean / rose / graphite / violet) + pluggable async LLM hook _(generative-theme@0.1.0 · 18/18 passing)_ +- [x] **13.E.2** WCAG contrast utilities + AA/AAA-lock enforcement (parseHex / relativeLuminance / contrast / adjustForContrast / enforceContrast / auditTheme / applyTheme) +- [x] **13.E.3** **Showcase:** `/showcase/futurism/theme-studio` (MAG.5) — 7 quick prompts + AA/AAA/off toggle + live preview with per-pairing contrast report #### 13.F · `@bytelyst/customizable-workspace@0.1.0` -- [ ] **13.F.1** Drag-resize tiles on `@dnd-kit/sortable` -- [ ] **13.F.2** Saved views per route, layout persistence to platform-service -- [ ] **13.F.3** **Showcase:** `/showcase/futurism/workspace` — drag tiles, save view, reload +- [x] **13.F.1** Drag-reorder + resize tiles — native HTML5 drag (zero @dnd-kit dependency), keyboard ←/→ resize + ↑/↓ move, 1/2/3/4 size buttons _(customizable-workspace@0.1.0 · 10/10 passing)_ +- [x] **13.F.2** `LayoutPersistence` adapter + `reconcile()` defensive against schema drift — localStorage default; hosts on platform-service wire a server-backed adapter +- [x] **13.F.3** **Showcase:** `/showcase/futurism/workspace` (MAG.6) — 6 tiles backed by Sparkline + LineChart, reload-persistent #### 13.G · `@bytelyst/media-ui@0.1.0` -- [ ] **13.G.1** `` (live image gen with progress) + tests -- [ ] **13.G.2** `` (canvas + transcript scrubber) + tests -- [ ] **13.G.3** `` (pdf.js lazy) + tests -- [ ] **13.G.4** `` (chapters + captions) + tests -- [ ] **13.G.5** **Showcase:** `/showcase/futurism/multimodal` — image-gen, audio waveform, PDF, video on one page +- [x] **13.G.1** `` (4-status state machine · progress overlay · blur-on-streaming) — 4 tests _(media-ui@0.1.0 · 10/10 passing)_ +- [x] **13.G.2** `` canvas + click-to-seek + DPR-aware paint + WebAudio peak decode — 3 tests +- [ ] **13.G.3** `` (pdf.js lazy) + tests _(deferred to media-ui@0.2.x — needs the pdf.js runtime; only routes that use it should pay the bundle cost)_ +- [x] **13.G.4** `` native `