Files
nexus/docs/audits/2026-07-27/DASHBOARD_ORCHESTRATION_FOCUS.md
AzuTear f5552218bc
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
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

3.6 KiB

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

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.