# 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.vue` render in `NexusLayout.vue` with `AppSidebar.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 `900px` overlay 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`, or `1920px`. - 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 ```text 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.