2.0 KiB
2.0 KiB
Dashboard sidebar unification
Outcome
The dashboard now renders the same AppSidebar.vue component as every other
authenticated route. This removes the final visible navigation fork without
changing dashboard content, domain state, stores, API contracts, or route
registration.
Implementation
- Replaced the dashboard-only
Sidebar.vuerender inNexusLayout.vuewithAppSidebar.vue. - Preserved the dashboard task count through the existing task store.
- Bound the active destination to the current Vue Router route.
- Kept the existing mobile close event and backdrop behavior.
- Aligned the dashboard topbar and backdrop breakpoint with the shared
sidebar's
900pxoverlay breakpoint.
Rendered proof
| Evidence | Viewport | Result |
|---|---|---|
| Dashboard before | 1440 x 900 |
Separate sidebar confirmed |
| Settings reference | 1440 x 900 |
Shared component authority |
| Dashboard after | 1440 x 900 |
Matches shared sidebar |
| Dashboard mobile | 375 x 812 |
Overlay, categories, Settings, and footer visible |
| Same-viewport comparison | 1440 x 900 |
Identical sidebar geometry and styling |
Evidence files are stored under screenshots/.
Interaction and geometry
- Dashboard -> Agents -> Dashboard passed.
- Dashboard -> Settings passed at
375px. - Active states use
aria-current="page". - The overlay closes after navigation.
- No document-level horizontal overflow at
375,768,1024,1440, or1920px. - At
768px, the sidebar is hidden off-canvas and the named topbar toggle is visible. - Browser console: no errors. Existing fixture/API fallback warnings remain.
Technical gates
pnpm typecheck -> passed
pnpm test -> passed (1 file, 2 tests)
pnpm build -> passed (1,873 modules)
git diff --check -> passed; line-ending notices only
Severity result
- P0: none
- P1: none
- P2: none
Evidence maturity: controlled local browser proof. No commit, push, or deployment was performed.