102 lines
4.5 KiB
Markdown
102 lines
4.5 KiB
Markdown
# Authenticated dashboard design migration audit
|
||
|
||
## Outcome
|
||
|
||
The dashboard V2 language now covers all 16 other authenticated routes through
|
||
a shared token source, presentation layer, and aligned legacy shell. Dashboard
|
||
and Login remain visually unchanged. No product behavior, backend contract,
|
||
route registration, store/service/composable logic, or permission rule was
|
||
modified.
|
||
|
||
## Implemented layers
|
||
|
||
1. Expanded `nexus-tokens.css` into the V2 source for surfaces, text, accents,
|
||
status colors, focus, typography, page geometry, and legacy aliases.
|
||
2. Added `nexus-components.css` for route frames, headers, glass panels,
|
||
controls, badges, modals, and state surfaces.
|
||
3. Aligned `App.vue`, `AppSidebar`, and `AppHeader` with the dashboard's galaxy,
|
||
248px sidebar, 62px topbar, glass, and responsive navigation.
|
||
4. Applied standard, workspace, or reading-width contracts to every migrated
|
||
route family.
|
||
5. Replaced presentation emoji/glyph icons with existing Lucide icons and added
|
||
accessible names, semantic interactive elements, keyboard equivalence, and
|
||
visible focus.
|
||
6. Unified both authenticated navigation shells around the four dashboard
|
||
categories and added a persistent Settings destination to the dashboard
|
||
footer. Shared-shell and dashboard destinations now use RouterLinks, while
|
||
detail routes retain the active state of their parent section.
|
||
|
||
## Evidence matrix
|
||
|
||
| Evidence | Coverage | Result |
|
||
| --- | --- | --- |
|
||
| Fresh dashboard reference | `/dashboard`, `1440 × 900` | Passed |
|
||
| Full desktop route matrix | all 18 registered routes, `1440 × 900` | Passed |
|
||
| Full migrated mobile matrix | 16 migrated routes, `375 × 812` | Passed |
|
||
| Representative responsive matrix | 5 route families at `768`, `1024`, `1920px` | Passed |
|
||
| Automated geometry | document width and route-root geometry | Passed |
|
||
| Same-viewport visual comparison | dashboard reference beside migrated Agents | Passed |
|
||
| Core interactions | filters, forms, modal, detail changes, board, chat, notifications | Passed |
|
||
| Keyboard/accessibility | names, semantics, focus, equivalent activation | Passed |
|
||
| Frontend gates | typecheck, tests, build | Passed |
|
||
|
||
Evidence is under `screenshots/`. The final reference is
|
||
`screenshots/00-dashboard-reference-1440.png`; route captures are under
|
||
`screenshots/design-migration-routes/`; and the combined visual comparison is
|
||
`screenshots/design-qa-comparison-dashboard-vs-agents-1280.png`.
|
||
|
||
## Measured contracts
|
||
|
||
- Sidebar: `248px` desktop.
|
||
- Topbar: `62px`.
|
||
- Page title: Space Grotesk `24px / 30px`, weight `700`.
|
||
- Desktop/mobile inset: `20px / 14px`.
|
||
- Maximum route widths: standard `1180px`, workspace `1440px`, reading/form
|
||
`880px`.
|
||
- No document-level horizontal overflow at the required breakpoints.
|
||
- Task Board columns retain their intentional internal horizontal scroller.
|
||
|
||
## Findings resolved during QA
|
||
|
||
- The inherited 768px shell breakpoint initially hid the sidebar without
|
||
exposing the mobile navigation button. The shell now switches coherently at
|
||
`900px`.
|
||
- Scoped Settings width rules initially overrode the shared reading-width
|
||
modifier. Higher-specificity shared contracts now enforce `880px` for every
|
||
reading/form root.
|
||
- Undefined or ambiguous legacy color aliases and hard-coded route colors were
|
||
replaced by V2 semantic tokens.
|
||
- Presentation emoji/glyph icons and unnamed icon controls were replaced with
|
||
Lucide icons and explicit accessible names.
|
||
- The shared sidebar initially exposed one flat list and the dashboard omitted
|
||
Settings. Both shells now expose the same category framework and persistent
|
||
Settings access without changing routes, handlers, stores, or permissions.
|
||
- A RouterLink migration initially shadowed each dashboard item's target with
|
||
the current route. The prop/current-route names are now distinct, and browser
|
||
checks confirmed the real registered destinations.
|
||
|
||
## Residuals
|
||
|
||
There are no P0-P2 design defects. A deliberate Task Board route leave aborts
|
||
the fixture-backed live stream and logs the existing polling-fallback warning.
|
||
This is outside the presentation scope and does not affect the rendered result
|
||
or interaction path.
|
||
|
||
## Verification
|
||
|
||
```text
|
||
pnpm typecheck -> passed
|
||
pnpm test -> passed (1 file, 2 tests)
|
||
pnpm build -> passed (1,882 modules)
|
||
git diff --check -> passed; line-ending notices only
|
||
```
|
||
|
||
Navigation follow-up evidence:
|
||
|
||
```text
|
||
navigation-groups-after-dashboard.png
|
||
navigation-groups-after-settings.png
|
||
navigation-groups-after-settings-375.png
|
||
navigation-groups-comparison-dashboard-vs-settings-1440.png
|
||
```
|