Dashboard UX/UI design (design-only, merges into future implementation branch) - #320
Conversation
Implementation PlanThis is a design PR. No production code will be written. ProblemThe dreb web dashboard (implementation issue 307) needs a UX/UI spec before another implementation attempt. The first attempt (closed draft PR 310) built backend scaffolding plus a vanilla-DOM client with no design pass — the server side was solid, the client was unusable. The assessment on the design issue inventoried TUI capabilities, identified RPC gaps (all since closed by merged sub-issue PRs 315, 316, 317), and the fleet-centric information architecture decision is made. What remains is the actual design work: mockups, the parity checklist, UX flows, security copy, a framework recommendation, and acceptance criteria for the future implementation PR. Workflow (non-standard, agreed with maintainer)
Deliverables (all under
|
Vitest coverage
|
…klist, spec Design deliverables for the dreb web dashboard (design issue, PR 320): - tokens.css: design language forked from the approved gallery template (IBM Plex Mono, pure black/white + auto dark mode, hairline borders, status chips as the only accent color) - mockups/: six static screens (fleet-overview, session-view, pairing, files, settings, tree) sharing tokens.css - capture.mjs + screenshots/: Playwright captures at desktop/mobile/dark, all vision-reviewed - PARITY.md: TUI feature parity checklist, ground-truth re-verified against source (21 built-in commands, ~74 keybindings, 19 event types) - SPEC.md: IA, flows, responsive plan, two-mode security UX, foundation scope, SolidJS recommendation, acceptance criteria
Progress Update — all design deliverables completeEvery deliverable from the plan now exists under What landed
Fleet overviewHome screen: sessions grouped by project, needs-attention sorts first with filled chip + colored border, live subagent lines, on-disk inventory with resume/delete. Session viewChat pane structurally modeled on the export-html renderer: collapsible thinking, per-tool-type cards (edit renders diffs), compaction summaries, streaming cursor. Dock: tasks panel, status line with stop (visible only while streaming, 1 steer queued shown), composer with explicit steer/follow-up toggle and suggest-next chip. Dark mode: Mobile (read-and-steer priority — switchers collapse to overflow, tasks default collapsed): Pairing (remote first login)Identity echo, single-use expiring PIN, and the two security copy blocks ("why a PIN", "what pairing grants"). Files, settings, treeTree with navigate-confirm modal (docked so the tree stays reviewable; bottom sheet on mobile): Remaining mobile/dark captures are in Notable findings (doc bugs found during ground-truth verification, for follow-up outside this PR)
Verification
Commit: Progress tracked by mach6 |
Maintainer feedback on PR 320: 1. Files screen reworked from project-scoped to host-wide browsing: places shortcuts (~, /tmp, project roots), breadcrumbs to /, new folder, 'new session here' on any directory. Trusted-operator model documented in SPEC.md: a paired device already equals terminal access, so a project jail would be security theater; paths are still canonicalized and operations logged. 2. Subagent observability designed as three levels: fleet card counts/lines, session subagent strip (clickable chips), and a new read-only subagent-view mockup showing a live drill-in transcript. SPEC.md gains a section on the RPC plumbing gap: background_agent events carry no session path and child JSONL events are consumed privately by the parent, so the implementation PR must add registry exposure over RPC plus an agentId-namespaced event relay — file tailing explicitly rejected. Relay addressing is designed to be reused by future subagent steering (not MVP; requires child stdin control channel).
Feedback round 1 addressedBoth notes are in, commit 1. Host-wide file browsingThe files screen is no longer project-jailed. It now browses anywhere the dreb process can read, with:
SPEC.md documents the trust rationale explicitly: a paired device already equals terminal access, so a project jail would be security theater. Paths are still canonicalized (symlink/percent-decode confusion rejected) so the API can't be tricked, and file operations are logged — the boundary is "what the dreb process can read as its Unix user," enforced honestly. 2. Subagent observability — three levels + the RPC gap named for implementation scope
On the plumbing gap — verified against source before designing:
Acceptance criteria updated: subagents get their own criterion (item 6), files criterion reworked (item 5), and the §5a section includes an honest-degradation rule — if the relay slips, chips lose their click target rather than shipping a broken viewer. Progress tracked by mach6 |
Code ReviewDesign-only PR: review focused on factual accuracy of design-doc claims against source, internal consistency, mockup/CSS quality, and simplification. Error-auditor and test-reviewer were not run (no error-handling logic or testable production code in scope). CriticalNone. ImportantNone. SuggestionsFinding 1 — Needs-attention status chip fails the WCAG AA contrast the spec itself promises (medium, confidence 90) Finding 2 — Session-event count arithmetically wrong: claims 19, source has 21 (low, confidence 90) Finding 3 — Tree screen classified ✅ dashboard in PARITY but "sequenced later" in SPEC section 7 (low, confidence 85) Finding 4 — RPC command count off by one: claims 39, request union has 40 (low, confidence 82) Finding 5 — Inert Below-threshold note (a11y, non-blocking): the composer send-mode Strengths
Agents run: code-reviewer, completeness-checker, simplifier Reviewed by mach6 |
Review AssessmentAssessing the review posted above: #320 (comment) The assessor independently re-verified every finding against source — recomputing the WCAG contrast ratios from relative luminance, recounting the event and RPC unions, and checking selector matching in the mockup CSS. Classifications
Counts: 4 genuine · 1 nitpick · 0 false positives · 0 deferred Action Plan
No tracking issues needed — everything is in-scope for this design PR and cheap to fix now. Note the review also independently confirmed the docs' three claimed upstream doc bugs (stale Assessment by mach6 |
Progress Update — all 5 review findings fixedAll four genuine findings plus the nitpick from the assessment are addressed:
Screenshots re-captured for the affected screens (fleet-overview, pairing, tree at all three variants). Only the four light-mode captures using the attention amber actually changed; the tree captures came back pixel-identical, confirming the removed class was truly inert. Both changed screens vision-reviewed — the darker amber keeps the filled-chip weight and reads clearly. Pre-commit hooks green (4050 tests passed, biome clean). Commit: Progress tracked by mach6 |
Design accepted — handing off to implementationReview round complete: the multi-agent review found four genuine issues (WCAG AA contrast on the needs-attention chip, two stale ground-truth counts, a tree-disposition contradiction between the two docs) plus one nitpick — all fixed in commit This design is now the accepted baseline for the dashboard implementation issue (#307). What happens to this branch and PR:
Handoff brief for the implementation planning session is posted on the implementation issue. The design issue (311) is closed as completed. Progress tracked by mach6 |
60ce3a6
into
feature/issue-307-dashboard-foundation











Closes #311
UX/UI design pass for the dreb web dashboard: static HTML/CSS mockups with committed Playwright screenshots, a TUI feature parity checklist, the full design spec (flows, responsive layout, security UX for the two access modes, frontend architecture recommendation), and acceptance criteria for the future implementation PR.
Non-standard workflow: this branch is never merged to master. Design artifacts iterate here; when the design is accepted, this branch merges into the future implementation branch for the dashboard implementation issue.
Implementation plan posted as a comment below.