docs(plan-2.5): closure — RFC supersession, BACKLOG landing, applyDomAttributes dedupe
Plan 2.5 final phase (P8). Closes the PrimeVue shell-migration workstream. - RFC-WS-PRIMEVUE-PLAN-2-5: added Supersessions section recording the governing-RFC divergences (§4 dark mode `<body>`→`<html>` per AD-2.5-D1; §7.4 workspace sub option A reversed to placeholder after visual review). Added closure summary (phases, ADs, brand-square recipe, suite delta, lessons). Status → COMPLETE. - BACKLOG: landed 8 items surfaced during Plan 2.5 (MOBILE-SHELL-PARITY, WORKSPACE-DROPDOWN-SUB-CONTENT, DENSITY-AWARE-SPACING, TOPBAR-H-VAR- DECLARE, CSP-FONT-SRC-LOCKDOWN, AUTO-IMPORTS-V2-SCAN, PNPM-RESOLUTIONS- ROOT, SHELLUI-STALE-DATA-THEME-CLEANUP). Marked GRADIENT-BRAND- ALIGNMENT as resolved. - useShellUiStore.toggleDensity: removed redundant applyDomAttributes() call (the AppShellV2 watch already covers density changes). Moved the DOM-write assertion to AppShellV2 watcher-coverage specs. Plan 2.5 status: COMPLETE. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -676,6 +676,130 @@ voor third-party integraties (ticketing, HR, etc.)
|
||||
|
||||
## Technische schuld
|
||||
|
||||
> Plan 2.5 shell follow-ups (landed at P8 closure, juni 2026). See
|
||||
> `dev-docs/RFC-WS-PRIMEVUE-PLAN-2-5.md` → Plan 2.5 Closure.
|
||||
|
||||
### MOBILE-SHELL-PARITY — Mobile drawer chrome parity with desktop sidebar
|
||||
|
||||
**Prioriteit:** Middel
|
||||
|
||||
Mobile drawer chrome doesn't match the desktop sidebar polish: logo
|
||||
placement is incorrect, an extraneous X close button overlaps the drawer,
|
||||
and the WorkspaceSwitcher is hidden on mobile. A dedicated mobile sprint
|
||||
after Plan 2.5; deliberately out of scope per Q3.
|
||||
|
||||
**Trigger:** before mobile users onboard / mobile traffic becomes
|
||||
non-trivial.
|
||||
|
||||
---
|
||||
|
||||
### WORKSPACE-DROPDOWN-SUB-CONTENT — Real WorkspaceSwitcher sub-line content (type + metrics)
|
||||
|
||||
**Prioriteit:** Middel
|
||||
|
||||
The WorkspaceSwitcher sub line currently shows the placeholder string
|
||||
'Organisatie' (per AD-2.5-W1 reversal). Real content requires an
|
||||
`organisations.type` enum + a metrics endpoint (e.g., member count,
|
||||
festival/event metadata). Needs a small RFC covering: type enum schema,
|
||||
metrics aggregation, API shape, frontend wiring.
|
||||
|
||||
**Trigger:** when organisation metadata work begins, OR when the
|
||||
placeholder reads as too empty in production.
|
||||
|
||||
---
|
||||
|
||||
### DENSITY-AWARE-SPACING — Wire `data-density` to component spacing
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
`<html data-density>` toggles correctly between `comfortable` and
|
||||
`compact`, but no component CSS reads the attribute, so the toggle is
|
||||
visually inert. Plan 4 should pick which spacing surfaces (tables, lists,
|
||||
cards) respond to density and add the corresponding
|
||||
`[data-density="compact"]` overrides.
|
||||
|
||||
**Trigger:** Plan 4 template-layer work.
|
||||
|
||||
---
|
||||
|
||||
### TOPBAR-H-VAR-DECLARE — Declare `--topbar-h` in `:root` (or drop it)
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
`--topbar-h` is referenced as `var(--topbar-h, 56px)` in component CSS but
|
||||
never declared in `:root`. Effectively a hardcoded 56px with no override
|
||||
path. Either declare it in `:root` for real or replace usages with `h-14`
|
||||
(Tailwind).
|
||||
|
||||
**Trigger:** Plan 4 cleanup, or when topbar height changes.
|
||||
|
||||
---
|
||||
|
||||
### CSP-FONT-SRC-LOCKDOWN — `Content-Security-Policy: font-src 'self'` lockdown
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
The P2-followup webfontloader lesson exposed a structural risk: dynamic
|
||||
font-loading JS can pull from external domains (Google Fonts), bypassing
|
||||
GDPR/privacy posture. A `Content-Security-Policy: font-src 'self' data:`
|
||||
directive provides structural defense — even if a stray font-loader is
|
||||
reintroduced, browsers would block external requests.
|
||||
|
||||
**Trigger:** pre-launch security hardening.
|
||||
|
||||
---
|
||||
|
||||
### AUTO-IMPORTS-V2-SCAN — `components-v2/` not in the auto-import scan dirs
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
`vite.config.ts:79-94` `Components({dirs})` doesn't scan `components-v2/`,
|
||||
so v2 components must be explicitly imported. The P5-followup AppBreadcrumb
|
||||
auto-import surprise was traced to this. Either add `components-v2/` to the
|
||||
scan dirs or accept explicit imports (the current trade-off).
|
||||
|
||||
**Trigger:** when explicit imports become tedious, or a new contributor
|
||||
stumbles.
|
||||
|
||||
---
|
||||
|
||||
### PNPM-RESOLUTIONS-ROOT — `resolutions` field in app package.json is a no-op
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
`apps/app/package.json` has a `resolutions` field, but pnpm only honors
|
||||
resolutions in the workspace root `package.json`. Currently a no-op. Move
|
||||
to root `package.json` or remove.
|
||||
|
||||
**Trigger:** next dependency conflict requiring a resolution override.
|
||||
|
||||
---
|
||||
|
||||
### SHELLUI-STALE-DATA-THEME-CLEANUP — Clean up stale legacy `data-theme` on init
|
||||
|
||||
**Prioriteit:** Laag
|
||||
|
||||
`useShellUiStore.applyDomAttributes()` writes `<html class="dark">` and
|
||||
`<html data-density>` but doesn't clean up an old `data-theme` attribute if
|
||||
it ever existed (from a prior Vuetify-era implementation). Pre-launch this
|
||||
is a non-issue; for cleanliness, remove the stale attribute on init.
|
||||
|
||||
**Trigger:** cleanup pass before launch, or if anyone hits attribute-related
|
||||
styling weirdness.
|
||||
|
||||
---
|
||||
|
||||
### ~~GRADIENT-BRAND-ALIGNMENT — gradient palette off-brand teal anchor~~ ✅ RESOLVED
|
||||
|
||||
~~The `utils/v2/gradient.ts` GRADIENT_PALETTE clustered in the Tailwind
|
||||
blue-green family with off-brand teal `#0d9488` for the anchor slot.~~
|
||||
Resolved in P7-followup-gradient-brand: palette replaced with the
|
||||
crewli-starter diverse 8-color palette, slot 1 anchored to Crewli
|
||||
`#0D9394`/`#075F60`. User-avatar fallback also corrected. Regression-spec
|
||||
locks the brand-teal slot.
|
||||
|
||||
---
|
||||
|
||||
### TECH-OBSERVER-TEST-CONVERGENCE — Drop `bootstrap_on_org_create` flag once tests converge
|
||||
|
||||
**Aanleiding:** Session 3 introduceerde `OrganisationObserver` om elke nieuwe
|
||||
|
||||
Reference in New Issue
Block a user