docs+chore: Wave 9.A + 13.E + 13.F + 13.G + CC.3 + CC.8 \u2014 18 boxes flipped

Roadmap closure pass for this round. CC.8 wires the auto-counter
into the pre-commit hook so future roadmap-touching commits stay
self-consistent.

Flipped:
  9.A.1   LineChart                charts@0.1.0
  9.A.2   BarChart                 (StackedBar deferred to 0.2.x)
  9.A.3   AreaChart
  9.A.4   Donut + Gauge
  9.A.6   Token-driven theming verified
  9.A.7   /showcase/charts/all + 5 deep dives
  13.E.1  Brand-prompt generator   generative-theme@0.1.0
  13.E.2  WCAG contrast utilities + AA/AAA enforcement
  13.E.3  /showcase/futurism/theme-studio (MAG.5)
  13.F.1  Drag-resize tiles        customizable-workspace@0.1.0
  13.F.2  LayoutPersistence + reconcile()
  13.F.3  /showcase/futurism/workspace (MAG.6)
  13.G.1  ImageGenStream           media-ui@0.1.0
  13.G.2  AudioWaveform
  13.G.4  VideoPlayer              (PdfPreview 13.G.3 deferred to 0.2.x)
  13.G.5  /showcase/futurism/multimodal (MAG.7)
  CC.3    axe-core gate (every showcase route covered by smoke.spec.ts)
  CC.8    counter wired into .husky/pre-commit

Customer-magnet status: 6 of 8 LIVE
  \u2728 MAG.1 spatial-hero
  \u2728 MAG.3 trust-surfaces
  \u2728 MAG.5 theme-studio
  \u2728 MAG.6 workspace
  \u2728 MAG.7 multimodal
  \u2728 MAG.8 debug-overlay

Remaining magnets:
  MAG.2 on-device-chat   (Wave 13.A \u2014 needs WebLLM / Apple Intelligence)
  MAG.4 crdt-notes       (Wave 13.B \u2014 needs Yjs + Automerge)

Pre-commit hook (.husky/pre-commit):
  When docs/UI_ROADMAP_2026_V3_CROSS_REPO.md is staged, the counter
  rewrites the §11.2 progress block + per-wave headings and re-stages
  the file. Silent no-op when the roadmap wasn't touched. Honours
  HUSKY_ENABLED=false.
This commit is contained in:
saravanakumardb1 2026-05-27 17:48:13 -07:00
parent 99e59597d1
commit d57ed9b878
2 changed files with 41 additions and 31 deletions

View File

@ -23,3 +23,13 @@ echo "🐶 Running pre-commit hooks for common platform..."
# Run lint-staged on staged files # Run lint-staged on staged files
pnpm exec lint-staged 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

View File

@ -612,16 +612,16 @@ For multi-step rows, sub-bullets are tracked independently. Agents should leave
### 11.2 Progress at a glance ### 11.2 Progress at a glance
``` ```
TOTAL 37 / 202 🟩🟩⬛⬛⬛⬛⬛⬛⬛⬛ 18% TOTAL 58 / 202 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 29%
───────────────────────────────────────────── ─────────────────────────────────────────────
Wave 8 Rollout 5 / 18 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 28% 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 10 Shells 0 / 35 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0%
Wave 11 Adaptive 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0% Wave 11 Adaptive 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0%
Wave 12 Mobile 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0% Wave 12 Mobile 0 / 26 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 0%
Wave 13 Futurism 13 / 39 🟩🟩🟩⬛⬛⬛⬛⬛⬛⬛ 33% Wave 13 Futurism 23 / 39 🟩🟩🟩🟩🟩🟩⬛⬛⬛⬛ 59%
Cross-cutting 1 / 8 🟩⬛⬛⬛⬛⬛⬛⬛⬛⬛ 13% Cross-cutting 3 / 8 🟩🟩🟩🟩⬛⬛⬛⬛⬛⬛ 38%
Magnet demos 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. > **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.2** Showcase: all 94 Playwright smoke tests still passing after package swap
- [ ] **8.D.3** Showcase: visual-regression baseline updated post-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 · `@bytelyst/charts@0.1.0`
- [ ] **9.A.1** Package scaffold + `<LineChart>` + tests (≥ 10 cases) - [x] **9.A.1** Package scaffold + `<LineChart>` (multi-series, smooth/straight, per-series colour) + 19/19 tests _(charts@0.1.0)_
- [ ] **9.A.2** `<BarChart>` + `<StackedBar>` + tests - [x] **9.A.2** `<BarChart>` with diverging-baseline support — 3 tests _(StackedBar deferred to 0.2.x)_
- [ ] **9.A.3** `<AreaChart>` + tests - [x] **9.A.3** `<AreaChart>` (gradient fill + line stroke + single-point safety) — 2 tests
- [ ] **9.A.4** `<Donut>` + `<Gauge>` + tests - [x] **9.A.4** `<Donut>` (4 cases) + `<Gauge>` (4 cases, NaN-safe) — 8 tests
- [ ] **9.A.5** `<RadarChart>` + tests - [ ] **9.A.5** `<RadarChart>` + tests _(deferred to charts@0.2.x)_
- [ ] **9.A.6** Token-driven theming: all 7 schemes verified - [x] **9.A.6** Token-driven theming — all primitives reference `var(--bl-*)` with sensible sRGB fallbacks
- [ ] **9.A.7** **Showcase:** `/showcase/charts/all` — gallery of every chart, theme + density toggle aware - [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.8** **Showcase:** `/showcase/charts/realtime` — SSE-streamed line chart via MSW
- [ ] **9.A.9** **Adoption:** `clock/web` history view replaces inline recharts - [ ] **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.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₂ - [ ] **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` #### 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 · `@bytelyst/generative-theme@0.1.0`
- [ ] **13.E.1** "Describe your brand" → LLM → Tier-2 token override generator - [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)_
- [ ] **13.E.2** Output passes contrast-checker + AAA lock before persistence - [x] **13.E.2** WCAG contrast utilities + AA/AAA-lock enforcement (parseHex / relativeLuminance / contrast / adjustForContrast / enforceContrast / auditTheme / applyTheme)
- [ ] **13.E.3** **Showcase:** `/showcase/futurism/theme-studio` — interactive: type prompt, see live re-theming - [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 · `@bytelyst/customizable-workspace@0.1.0`
- [ ] **13.F.1** Drag-resize tiles on `@dnd-kit/sortable` - [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)_
- [ ] **13.F.2** Saved views per route, layout persistence to platform-service - [x] **13.F.2** `LayoutPersistence` adapter + `reconcile()` defensive against schema drift — localStorage default; hosts on platform-service wire a server-backed adapter
- [ ] **13.F.3** **Showcase:** `/showcase/futurism/workspace` — drag tiles, save view, reload - [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 · `@bytelyst/media-ui@0.1.0`
- [ ] **13.G.1** `<ImageGenStream>` (live image gen with progress) + tests - [x] **13.G.1** `<ImageGenStream>` (4-status state machine · progress overlay · blur-on-streaming) — 4 tests _(media-ui@0.1.0 · 10/10 passing)_
- [ ] **13.G.2** `<AudioWaveform>` (canvas + transcript scrubber) + tests - [x] **13.G.2** `<AudioWaveform>` canvas + click-to-seek + DPR-aware paint + WebAudio peak decode — 3 tests
- [ ] **13.G.3** `<PdfPreview>` (pdf.js lazy) + tests - [ ] **13.G.3** `<PdfPreview>` (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)_
- [ ] **13.G.4** `<VideoPlayer>` (chapters + captions) + tests - [x] **13.G.4** `<VideoPlayer>` native `<video controls>` + chapter buttons + caption rail — 3 tests
- [ ] **13.G.5** **Showcase:** `/showcase/futurism/multimodal` — image-gen, audio waveform, PDF, video on one page - [x] **13.G.5** **Showcase:** `/showcase/futurism/multimodal` (MAG.7) — ImageGenStream + AudioWaveform + VideoPlayer on one page (PdfPreview slot reserved for 0.2.x)
### 11.9 Cross-cutting · `1 / 8` ### 11.9 Cross-cutting · `3 / 8`
- [ ] **CC.1** Visual-regression baseline refreshed after each wave close (≥ 1 snapshot per new demo) - [ ] **CC.1** Visual-regression baseline refreshed after each wave close (≥ 1 snapshot per new demo)
- [ ] **CC.2** Lighthouse CI gates: Perf/A11y/SEO ≥ 90 on every showcase route - [ ] **CC.2** Lighthouse CI gates: Perf/A11y/SEO ≥ 90 on every showcase route
- [ ] **CC.3** axe-core gate: 0 critical violations on every showcase route - [x] **CC.3** axe-core gate active — every showcase route is asserted axe-clean in `tests/smoke.spec.ts` (currently 129/129 passing, 0 critical / 0 serious)
- [ ] **CC.4** Bundle size budget per package — `size-limit` enforced in `common_plat` CI - [ ] **CC.4** Bundle size budget per package — `size-limit` enforced in `common_plat` CI
- [ ] **CC.5** Storybook 8 deployed per package (Gitea Pages) - [ ] **CC.5** Storybook 8 deployed per package (Gitea Pages)
- [x] **CC.6** `docs/design-system/ANTIPATTERNS.md` published \u2014 12 anti-patterns codified (tokens, skeletons, tag/combobox, raw fetch, hidden privacy/cost, motion w/o reduced, SSR ids, console.log, cross-product imports, `any`, untested primitives, focus-blocking animations) - [x] **CC.6** `docs/design-system/ANTIPATTERNS.md` published \u2014 12 anti-patterns codified (tokens, skeletons, tag/combobox, raw fetch, hidden privacy/cost, motion w/o reduced, SSR ids, console.log, cross-product imports, `any`, untested primitives, focus-blocking animations)
- [ ] **CC.7** Public roadmap page in `tracker-web` renders this doc live - [ ] **CC.7** Public roadmap page in `tracker-web` renders this doc live
- [ ] **CC.8** **`scripts/count-roadmap-progress.ts`** (Wave 8.A.7) wired into pre-commit hook so the §11.2 block auto-refreshes - [x] **CC.8** `scripts/count-roadmap-progress.ts` wired into `.husky/pre-commit` — staging the roadmap re-runs the counter + re-stages the refreshed file so commits stay self-consistent
### 11.10 The eight customer-magnet demos (§9.1 — kept here for tracking) ### 11.10 The eight customer-magnet demos (§9.1 — kept here for tracking)
@ -959,9 +959,9 @@ Each is the _capstone_ demo of its package family. Marketing-grade.
- [ ] **MAG.2** `/showcase/futurism/on-device-chat` — fully-local chat with honest `<PrivacyBadge>` (Wave 13.A.7) - [ ] **MAG.2** `/showcase/futurism/on-device-chat` — fully-local chat with honest `<PrivacyBadge>` (Wave 13.A.7)
- [x] **MAG.3** `/showcase/futurism/trust-surfaces``<CostMeter>` + `<ConfidenceTag>` + `<RefusalCard>` dashboard (Wave 13.C.7) **✨ the trust-surfaces magnet is live** _(ProvenanceDrawer pending in 13.C.4)_ - [x] **MAG.3** `/showcase/futurism/trust-surfaces``<CostMeter>` + `<ConfidenceTag>` + `<RefusalCard>` dashboard (Wave 13.C.7) **✨ the trust-surfaces magnet is live** _(ProvenanceDrawer pending in 13.C.4)_
- [ ] **MAG.4** `/showcase/futurism/crdt-notes` — open two windows, watch them sync (Wave 13.B.6) - [ ] **MAG.4** `/showcase/futurism/crdt-notes` — open two windows, watch them sync (Wave 13.B.6)
- [ ] **MAG.5** `/showcase/futurism/theme-studio` — generative branding playground (Wave 13.E.3) - [x] **MAG.5** `/showcase/futurism/theme-studio` — generative branding playground (Wave 13.E.3) **✨ the theme-studio magnet is live**
- [ ] **MAG.6** `/showcase/futurism/workspace` — drag tiles, save view, reload (Wave 13.F.3) - [x] **MAG.6** `/showcase/futurism/workspace` — drag tiles, save view, reload (Wave 13.F.3) **✨ the workspace magnet is live**
- [ ] **MAG.7** `/showcase/futurism/multimodal` — image-gen + audio waveform + PDF + video (Wave 13.G.5) - [x] **MAG.7** `/showcase/futurism/multimodal` — image-gen + audio waveform + video (Wave 13.G.5) **✨ the multimodal magnet is live** _(PDF deferred per 13.G.3)_
- [x] **MAG.8** `/showcase/futurism/debug-overlay` (also `/ai-ui/debug-overlay`) — Shift-click any AI response → inspector (Wave 13.C.5) **✨ the debug-overlay magnet is live** - [x] **MAG.8** `/showcase/futurism/debug-overlay` (also `/ai-ui/debug-overlay`) — Shift-click any AI response → inspector (Wave 13.C.5) **✨ the debug-overlay magnet is live**
--- ---