From 5bd7478614bf90e9a5dc6e68967da1abad7477bf Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Sat, 16 May 2026 01:10:02 +0200 Subject: [PATCH] docs: add GUI-redesign RFC superseding F4a-F4d Co-Authored-By: Claude Sonnet 4.6 --- dev-docs/PRIMEVUE_COMPONENTS.md | 4 ++ dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md | 6 ++ .../RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md | 63 +++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md diff --git a/dev-docs/PRIMEVUE_COMPONENTS.md b/dev-docs/PRIMEVUE_COMPONENTS.md index e3f13ae1..c5fd7b9c 100644 --- a/dev-docs/PRIMEVUE_COMPONENTS.md +++ b/dev-docs/PRIMEVUE_COMPONENTS.md @@ -8,6 +8,10 @@ **Status:** Foundation (F2). Refined incrementally by F4 sub-packages as real migration experience surfaces gaps. + +> **GUI redesign:** the page-migration phase is governed by +> `dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md` (supersedes F4a–F4d). +> This component reference still applies to all v2 work. **Aligned to:** PrimeVue 4.5.x with the Aura preset and `@primevue/forms`. PrimeVue is installed in F3; F2 documents intent only. **Replaces:** [`VUEXY_COMPONENTS.md`](./VUEXY_COMPONENTS.md) (now a diff --git a/dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md b/dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md index 0a73e0da..d1534d00 100644 --- a/dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md +++ b/dev-docs/RFC-WS-FRONTEND-PRIMEVUE.md @@ -225,6 +225,12 @@ Six work packages, executed strictly serially. Each package ends with: (a) all t **Risk:** Layout-shell rewrite is the largest single discrete change. Recommend committing the shell change in isolation before any component migration, so rollback is one-commit-revert if needed. +> **⚠️ SUPERSEDED (2026-05-16):** F4a–F4d below are superseded by +> `dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md`. The page-migration +> strategy changed (crewli-starter is now the design source, parallel +> `/v2/*` routes, page-by-page cutover). AD-1..AD-12 remain binding. +> F2/F3/F5/F6 are unaffected. + ### F4 — Component migration (5–6 days, 4 sub-packages) Each sub-package migrates one route tree. Within a sub-package: pages migrate one at a time, smallest pages first, dialogs/modals/components used by those pages migrate alongside their parent page. diff --git a/dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md b/dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md new file mode 100644 index 00000000..ed7efe60 --- /dev/null +++ b/dev-docs/RFC-WS-GUI-REDESIGN-CREWLI-STARTER.md @@ -0,0 +1,63 @@ +# RFC-WS-GUI-REDESIGN-CREWLI-STARTER — crewli-starter as design source + +| Field | Value | +|---|---| +| **Status** | Approved (2026-05-16) | +| **Supersedes** | F4a–F4d component-migration sub-packages of RFC-WS-FRONTEND-PRIMEVUE | +| **Design spec** | `dev-docs/superpowers/specs/2026-05-15-crewli-starter-gui-redesign-design.md` | +| **Impl plans** | `dev-docs/superpowers/plans/2026-05-16-gui-redesign-foundation.md` (Plan 1 of 5) | + +## 1. What changes vs RFC-WS-FRONTEND-PRIMEVUE + +The F4a–F4d strategy ("translate legacy Vuetify pages 1:1 to PrimeVue, +preserve UX") is **superseded**. The new strategy: `crewli-starter/` is +the design source of truth; v2 pages are built fresh under `/v2/*` +parallel routes and migrated page-by-page; v1 stays inert until per-page +cutover. All F4 *architectural* decisions (AD-1..AD-12: PrimeVue + Aura + +Tailwind + FormField + DataTable conventions) remain binding. + +## 2. Binding architectural decisions (carried from the spec) + +- **AD-G1 — Parallel routes.** `pages-v2/` mounts at `/v2/*` via a second + `routesFolder`; v2 route NAMES are `v2-` prefixed (collision guard). +- **AD-G2 — Layout.** `OrganizerLayoutV2` wraps `AppShellV2`; every + `pages-v2/**` page declares `definePage({ meta: { layout: + 'OrganizerLayoutV2' } })`, enforced by a custom ESLint rule. +- **AD-G3 — Fidelity.** PrimeVue-first; custom CSS only for genuinely + bespoke visuals (DraggableBlock layout, WorkspaceSwitcher visual, + shell chrome). Generic elements accept the PrimeVue look. +- **AD-G4 — State.** No `useWorkspaceStore`. Org/context data reuses + `useAuthStore`/`useOrganisationStore`. One new `useShellUiStore` holds + only sidebar/theme/density + right-drawer state. `provide`/`inject` + from crewli-starter is replaced per-port (no `inject()` survives). +- **AD-G5 — Boundaries.** New `components-v2`/`pages-v2` zones; the only + v1→v2 bridge is a narrow `components-foundation` zone (FormField, + Icon). No back-porting (structurally enforced). +- **AD-G6 — Testing.** TEST-INFRA-001 (✅ Resolved) Playwright-CT + + visual foundation is kept as the CI gate; Storybook a11y is + complementary. v2 visual baselines are captured from the v2 component + after human parity-check vs crewli-starter. CT specs are standalone + (no `@storybook/test-runner`). +- **AD-G7 — Portal.** Frontend SPA prefix is `/portal/*` (already true + in repo); observability binds on `route.meta.context==='portal'`, not + path; `/api/v1/p/*` is a separate untouched backend layer. Portal v2 + is a later sprint with its own `PortalLayoutV2`. +- **AD-G8 — Cutover.** Per page: move `pages-v2/X`→`pages/X`, rewrite + links, strip `v2-` name prefix, delete dead v1. Final cutover: folder + renames + revert router/boundaries config + delete v1 shell + Vuetify. + +## 3. Sequencing + +Plan 1: RFC + structural foundation (bootable `/v2/` slice). +Plan 2: shell pieces (AppSidebar/AppTopbar/SidebarNav/WorkspaceSwitcher/ +RightDrawer/AppDialog). +Plan 3: Tier-1 primitives + DraggableBlock + their Storybook stories. +Plan 4: template layer (List/Form/Detail/Dashboard/StateBlock). +Plan 5: full PrimeVue standard catalog stories + theme/density toolbar. +Then: Smart-Filter sub-sprint → Page-1 (events list) → subsequent trees. + +## 4. Out of scope + +Backend changes; v1 deletion before cutover; back-porting; domain +modules (Timetable/Cue/SectionBuilder migrate with their owning page); +Flatpickr/vue-i18n/DatePicker (inherit RFC-WS-FRONTEND-PRIMEVUE).