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,86 @@
# Dashboard orchestration focus
## Outcome
The dashboard is now an orchestration stage: compact operational status frames
the top, compact focus tasks frame the bottom, and Iris enters only when the
owner invokes the topbar action.
This is a `distill` correction for an operational product surface. It preserves
the established Galaxy/Glass direction and all existing dashboard stores,
requests, events, task data, chat messages, agent actions, and route behavior.
## Implementation
- Removed the permanently visible `360px` Iris rail from the dashboard
workspace.
- Made the existing topbar action an explicit `Iris Chat` trigger with
`aria-haspopup="dialog"`, `aria-expanded`, and `aria-controls`.
- Rendered the existing `IrisChat.vue` data and send handler inside a native
modal dialog. The dialog is absent by default, focuses the message field,
closes through its named button or Escape, and returns focus to the trigger.
- Reduced the operations status surface to one `46px` row. Narrow layouts keep
active/planning/blocker signals and remove lower-priority idle/cost detail.
- Reduced the task surface to one `44px` focus row with priority, state, title,
and owner retained through visible or accessible text.
- Increased the first multi-row auto-layout offset to avoid node overlap and
introduced compact agent cards at `680px` and below.
- Replaced the affected blank inline icon slots with the installed Lucide
components.
No backend, API, store, service, DTO, route, permission, chat-send, task, or
agent-selection contract changed.
## Measured geometry
At `1440 x 1000`:
| Surface | Before | After | Change |
| --- | ---: | ---: | ---: |
| Live orchestration | `774 x 731px` | `1152 x 808px` | `+48.8%` width, `+10.6%` height |
| Iris rail | `360 x 902px` | absent until invoked | full workspace width recovered |
| Operations status | `57px` high | `46px` high | `-19%` |
| Focus tasks | `87px` high | `44px` high | `-49%` |
## Operated proof
- Default state: Iris dialog absent and `aria-expanded="false"`.
- Pointer path: Iris Chat open -> named close button -> dialog removed -> focus
returned to Iris Chat.
- Keyboard path: Iris Chat open -> input focused -> Escape -> dialog removed ->
focus returned to Iris Chat.
- Input path: message text enables the named send action; the existing send
handler remains unchanged.
- Native dialog top layer and backdrop passed at desktop and `375px`.
- No page overflow, clipped nodes, or node intersections at `375`, `680`,
`681`, `768`, `1024`, `1440`, or `1920px`.
The after-state used a temporary controlled browser fixture so the layout could
be exercised without credentials or external API dependency. The fixture and
temporary QA entry were removed after capture. Evidence maturity is controlled
local browser proof, not deployment evidence.
## Evidence
- `screenshots/dashboard-orchestration-before-1440.png`
- `screenshots/dashboard-orchestration-before-693.png`
- `screenshots/dashboard-orchestration-after-1440.png`
- `screenshots/dashboard-orchestration-after-375.png`
- `screenshots/dashboard-iris-modal-after-1440.png`
- `screenshots/dashboard-iris-modal-after-375.png`
## Technical gates
```text
vue-tsc --noEmit -> passed
vitest run -> passed (1 file, 2 tests)
vite build -> passed (1,873 modules)
git diff --check -> passed; line-ending notices only
```
The Codex `pnpm` wrapper attempted a package-manager bootstrap before executing
the repository scripts. Restricted registry access and its non-interactive
dependency-purge prompt blocked that wrapper path; the already-installed local
script binaries above completed successfully.
No commit, push, or deployment was performed.