Commit Graph
2 Commits
Author SHA1 Message Date
DottaandPaperclip 46291d82cd fix(runner): address the Phase 7G gate review
Round-1 of the UX acceptance gate requested changes on four items plus a
deep-link nit. All are fixed, with named browser regressions for the two
blocking accessibility items.

§9.1 — Escape now closes the desktop overlay sheet (768–1100px) and hands
focus back to the visible control that owns the panel. The reset confirm
dialog keeps priority over Escape while it is open.

§9.2 — resolving an interaction card moves focus to its state chip. The
controls the user just operated unmount on resolve, so focus was landing on
`body` at exactly the moment the card changed under them.

§6 — the replay strip gains `Play all`, and `?at=<ordinal>` becomes the single
source of truth for the parked ordinal, so step / next-turn / play-all and the
deep link all move the same value instead of the strip being pinned to its
fixture. At 390px the strip wraps so the progress bar keeps a full row rather
than being squeezed to a stub.

Deliverable sizes — the T4 strip said `18.4 kB` where the T7 card said
`18.0 kB` for the same artifact. Both now format through one shared
`phase7FormatBytes`.

`?panel=` without `rec=` now scrolls the opened section clear of the sticky
panel head, so `debug-panel-open` shows the authorization records §10.2 asks
for instead of leaving them below the fold.

`test:browser:phase7` never ran `build:issue-thread`, and the suite's
`vite preview` serves the built bundle — so the gate could pass against a
stale `dist-issue-thread/`. Fixed; that is how these regressions first came up
red against already-fixed source.

Verification: browser suite 50/50 (46 prior + 4 new), axe clean on all 24
routes; 24 PNGs re-recorded and byte-stable across two runs (5 changed);
16/16 view-model, 23/23 phase-7 unit; live runnerd + real Codex smoke 13/13.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-10 07:25:53 +00:00
DottaandPaperclip 00c73cfff5 feat(runner): add the Phase 7 Paperclip-style issue-thread UI
Render the mock Paperclip issue as a native issue thread over one view
contract with two producers: deterministic fake fixtures for the screenshot
matrix and a server-side projection of live runnerd/Codex sessions. The
browser holds no policy, diff, or parity authority.

Add the typed interaction cards for all five request_human_input kinds and
every resolved, rejected, stale, superseded, expired, withdrawn, and closed
state; the six-state composer with draft survival; the eight-section Evidence
panel with bidirectional deep links and a first-class list of the operations
withheld from the agent; desktop, overlay, and mobile-segment layouts; and
refresh, reconnect, stop, reset, and replay behaviours.

Add the loopback session server, the 12-slug x 2-viewport byte-stable
screenshot matrix, a focused browser suite with an axe gate on every
screenshot route, a live runnerd/Codex smoke over the browser's own HTTP
routes, and the browser design-token check the verify script already
referenced but which the restored baseline did not contain.

Record one deviation back into the Phase 7B contract: the expired-family 60%
opacity dim measured 3.16:1 and failed the blocking accessibility gate, so it
is now a recessed surface plus muted text at >= 4.5:1.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-10 07:25:53 +00:00