You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replaces hand-rolled bar divs / 30-day grid with a token-driven
chart layer: YearHeatmap on /dashboard and /metrics, TypeBreakdown
donut+barlist on /metrics Overview, plus the foundational MetricCard
shell + lib helpers (feature-flags, telemetry, recharts theme bridge)
so subsequent waves can layer in without rebuilding the chart contract.
Six review passes (3 on strategic plan, 3 on impl plan, 3 on this
PR) caught the load-bearing issues: timeline server cap mismatch
(90 vs 365), telemetry firing for flag-disabled cards, SSR cache
poisoning in the telemetry consent path, and an incorrect column-
math in the year heatmap. All resolved before this commit.
Notable bumps:
- workspace 0.0.1-beta → 0.0.2-beta
- tauri.conf.json 0.0.1 → 0.0.2
- TIMELINE_DAYS_MAX 90 → 366 in validation.rs (so the YearHeatmap
can request a 365-day window)
- recharts ^3.8.1 added to apps/web
The cross-cutting checklist (a11y srTable / empty / error / flag /
telemetry) is enforced at the type system level — `MetricCard` makes
those five props required with no defaults, so cards that skip any
fail `tsc` rather than silently degrading.
Migration 0021_share_scopes.sql ships ahead of any consumer to
future-proof the planned cross-user aggregate endpoints; column is
additive with conservative defaults.
Verification: cargo test (271 pass), pnpm typecheck clean, next
build compiled successfully, cargo fmt clean.
Plan docs at docs/DESIGN-METRICS-PLAN.md (strategic) and
docs/DESIGN-METRICS-IMPLEMENTATION-PLAN.md (execution) capture both
rounds of review findings.
0 commit comments