Skip to content

recon(sprint-u0): web dashboard census, colour/contrast/streaming/focus findings - #188

Draft
konjoinfinity wants to merge 1 commit into
mainfrom
claude/dashboard-recon-sprint-u0-rfy9tl
Draft

recon(sprint-u0): web dashboard census, colour/contrast/streaming/focus findings#188
konjoinfinity wants to merge 1 commit into
mainfrom
claude/dashboard-recon-sprint-u0-rfy9tl

Conversation

@konjoinfinity

Copy link
Copy Markdown
Contributor

Summary

Read-only reconnaissance sprint (Sprint U-0 v2) on the axum-served / SvelteKit web dashboard, emphasis on the Loop Stacks page (/stacks) and its interactive controls. This is evidence for a design decision, not the decision itself, and no line of CSS/HTML/JS/Rust serving the dashboard was modified.

  • Pre-flight passed: ref 043ca18 (HEAD, forked from main post-merge of PR fix(web): xN loop-count grammar, facet colors, and running-card chrome #181), all three canary selectors (.pop.sched, .chipinput, .cfgrow) resolved live before any capture work began.
  • tools/recon/: a self-contained Playwright fixture/capture harness (own package.json, own node_modules gitignored) that mocks the app's REST + WebSocket surface deterministically (fixed ids/timestamps, no PRNG), reaching all 13 fixture states via the same composer/run-stack UI interactions a real user takes.
  • recon/: the full census output, 55 page-state screenshots (11 reachable states x 5 viewports, S7/S8 correctly absent, no web consumer exists for budget-tier or cache-hit-ratio degradation), 8 labelled component state grids, a 20-frame motion strip, two 30s videos, and REPORT.md with all six censuses (colour/contrast, streaming path, layout stability, animation inventory, component matrix, keyboard/focus/layering).

Headline findings

  1. Streaming path (the sprint's stated open question): the CLI is invoked in genuine incremental-streaming mode and read line-by-line, but claude_events.rs's parse_stream_event explicitly discards every content_block_delta before it reaches the UI. Text arrives as one atomic chunk per complete assistant turn, not incrementally. This is a lopi-agent plumbing fix, not a lopi-ui CSS fix.
  2. Keyboard focus: only 5 of 25 sampled tab stops (20%) have any visible focus indicator. Every icon button in the stack-controls dock toolbar and every quick-insert chip token focuses invisibly (root cause: a transparent box-shadow on focus). Popovers also don't trap focus or restore it to the trigger on close.
  3. Contrast: two real WCAG AA failures at ~1.1:1 (#231000 on near-black), not a subjective judgement call.
  4. Animation: already at the sprint's own stated target (1 concurrent CSS animation during a running prompt), but a 250ms-interval JS timer per running card (agents.ts) is a real, quantified motion source the CSS-only audit alone would have missed.

Options (not recommendations) and specific open questions for each area are in REPORT.md sections 10-11.

Test plan

  • Pre-flight canary resolution confirmed live in DOM before capturing
  • git diff --stat against RECON_REF touches only tools/recon/, recon/ (verified, 110 files, all under those two paths)
  • All censuses backed by live computed-style/DOM extraction or checked-in real capture data (artifacts/STREAM_CAPTURE.jsonl), not source-code inference alone
  • Human review of REPORT.md sections 10 (options) and 11 (questions) to scope Sprint U

Generated by Claude Code

…us findings

Read-only recon on the axum/SvelteKit Loop Stacks dashboard per Sprint U-0 v2.
Pre-flight verified against RECON_REF 043ca18 with all three canaries
resolving live; tools/recon/ holds a self-contained Playwright fixture and
capture harness (own package.json, WS/REST mocking, no lopi workspace
dependency changes). recon/ holds the full census output: 55 page-state
screenshots across 5 viewports, 8 component state grids, a 20-frame motion
strip, two 30s videos, and REPORT.md with the six censuses.

Headline findings: hop 3 of the streaming path discards CLI partial-message
deltas before they reach the UI (a lopi-agent fix, not CSS); 80% of sampled
keyboard tab stops have zero visible focus indicator; two real WCAG AA
contrast failures (~1.1:1); S7/S8 fixtures are unreachable on the web
dashboard (no consuming component found). Options and open questions for
each area are in REPORT.md sections 10-11.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0164UjfgEepiNU9vHCNHF755
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants