[1.150.0] — 2026-08-12
Consistent empty states (Phase 4 polish) — every "nothing here yet" panel now renders through the one shared .empty style instead of a few views re-declaring the look inline with a magic 40px. Small visual-consistency fix; the empty states on #/activity, #/cv-studio, #/stats, and #/usage now match every other one (tokenized 48px padding + the dashed border).
Changed
#/activity,#/cv-studio,#/stats,#/usagedropped their redundant inlinestyle: { padding: '40px', textAlign: 'center', color: 'var(--foggy)' }on empty-state panels — all three properties are already provided by the shared.emptyclass (tokenized--space-7= 48px, centered, muted, dashed border). So those four now render pixel-identical to the ~25 other.emptypanels instead of drifting a few px on a hardcoded number.- Genuine per-view overrides (
#/dashboardwidth:100%,#/pipelineborder:none) are untouched — only the pure-redundant re-declarations were removed.
Notes
- Client CSS-usage cleanup only — no route, no server, no i18n key, no CSS-rule change (the
.emptyclass itself is unchanged); app dict snapshot stays 1208. Browser-verified (the#/usageempty panel computes to 48px padding + dashed border, no inline style, 0 console errors). - New canary
tests/empty-state-consistency.test.mjskeeps.emptythe single source of truth — a view may still add a layout-specific override (width/border) but not re-state padding/centering/colour. - Completes the concrete slice of Phase 4's "overall visual polish"; broader taste-driven refinement across all pages remains open to direction. Phase 5 (Hermes provider) stays blocked on the API-contract spike.
- Suite: 2385 tests (+2:
tests/empty-state-consistency.test.mjs).