feat: ship agent-first mission control v0.2.57
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s

This commit is contained in:
AzuTear
2026-07-31 22:39:47 +02:00
parent 3bc7622977
commit f5552218bc
535 changed files with 95242 additions and 8791 deletions
@@ -0,0 +1,101 @@
# 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
```