managarten/docs/optimizable/frontend-consistency-improvements.md
Till JS ef76815eb2 docs(optimizable): add README index + refresh frontend-consistency tracker
The frontend-consistency-improvements.md was stale — it still listed
the 13 Tailwind-based ListViews as "to migrate" even though all 21
flagged modules shipped today (a2a43b1d5, 86c205ffc, 7d6a340b1, 52af8c0ce,
3e09ff66d). Rewrite to reflect the SHIPPED state and list the next
layer of open consistency work (i18n, Phosphor icons, cross-surface
theme parity).

New docs/optimizable/README.md is the master index. Consolidates:
  - 🔴 Release blocker: tier-patch revert (links memory entry)
  - 🟠 Tracked trackers: per-topic links with status
  - 🟡 Small open items without a dedicated file: module-structure
    audit, plan-inventory hygiene, memory-hygiene post-release,
    cross-surface theme parity
  - How-to: list of `pnpm run audit:*` commands for live metrics

Doesn't introduce new work items beyond what's already been discussed
this session — just gives them a home so future sessions can pick up
any one without re-discovery.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 18:07:44 +02:00

80 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Frontend Consistency Improvements
Tracked improvements for UI / styling consistency across the Mana
unified app.
## 1. ListView theme-token migration — ✅ **SHIPPED 2026-04-22**
All 76 module ListViews and the broader `lib/modules/**` + `routes/(app)/**`
surface now use theme tokens (`text-foreground`, `bg-muted`,
`border-border`, `--color-*` scoped CSS) instead of raw Tailwind
`white/N` or neutral-palette classes.
Enforced by three validators wired into `validate:all` + lint-staged:
- `validate:theme-variables` — CSS variable naming (`--muted` forbidden,
`--color-muted` required)
- `validate:theme-utilities` — Tailwind class rules: no `(bg|text|border)-white/N`,
no `(bg|text|border)-(gray|slate|zinc|neutral|stone)-N`
- `validate:theme-parity` — 25 tokens × 9 theme variants parity check
See `packages/shared-tailwind/brand-literals.md` for the register of
intentional hex literals (period pink, calc retro skins, skilltree
branch accents, who deck colours, etc.).
## 2. `transition-all` sweep — ✅ **SHIPPED 2026-04-22**
All 98 `transition-all` occurrences replaced with specific transitions
(`transition-colors`, `transition-opacity`, `transition-[width]`,
`transition-[border-color,box-shadow]`, `transition-[transform,colors,box-shadow]`).
Prevents the P5 CSS-custom-property rendering bug where colours don't
resolve on first paint.
Codemod: `scripts/migrate-transition-all.mjs`.
## 3. a11y warnings — ✅ **SHIPPED 2026-04-22**
30 svelte-check warnings resolved; `pnpm check` now runs with
`--fail-on-warnings` so any regression blocks pre-push. Covers
a11y (missing keyboard handlers, missing labels), dead CSS selectors,
and Svelte 5 `$state` local-reference bugs.
## 4. i18n coverage — OPEN
65 / 78 modules still hardcode German in `.svelte` templates. The
translation infrastructure (`@mana/shared-i18n`, per-module locale
files for de / en / it / fr / es with ~3500 German strings) is fully
wired; what's missing is usage. See
[`i18n-migration-inventory.md`](i18n-migration-inventory.md) for the
priority list and per-module workflow. Run
`pnpm run audit:i18n-coverage` for live numbers.
Top offenders today: broadcast (26 hits), articles (24), events (23),
invoices (22), quiz + stretch (20 each), library (19), profile (17),
skilltree PARTIAL (15), calendar PARTIAL (14).
## 5. Phosphor icon bloat — OPEN
`@mana/shared-icons` contributes 466 KB of icon paths to the shared
bundle. See [`bundle-analysis.md`](bundle-analysis.md) §2. Biggest
offender: `app-registry/apps.ts` imports 69 icons statically for the
module-name → icon-component map — ~290 KB alone. Recommended fix:
lazy `getIconComponent(name)` helper backed by per-icon dynamic
imports.
Run `pnpm run audit:icon-usage` for the current inventory.
## 6. Cross-surface theme parity — OPEN
Not yet audited:
- **`apps/mana/apps/landing/`** (Astro) — does the landing page use
the same theme tokens as the SvelteKit app, or a parallel system?
Theme drift would mean Lume / Nature / Stone variants don't match
between marketing and app.
- **`apps/memoro/apps/mobile/`** (Expo, RN) — the only remaining
mobile surface. `@mana/shared-theme` targets React Native; is the
token set aligned with the web `--color-*` palette?
- **`games/`** (arcade, voxelava, whopixels, worldream) — separate
Vite/Svelte apps; unlikely to be aligned with the main theme but
worth confirming.