# 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.
