87 lines
3.6 KiB
Markdown
87 lines
3.6 KiB
Markdown
# 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.
|