base red: gallery plays wait for what the transcript draws now (gutter gaps, sent rows, reply time)
Base red fix: the gallery health workflow reports these gallery states as broken on every full base render. Each play waited for, or pressed, something the transcript no longer draws after recent transcript changes. The components behave as their PRs intend, so the plays now follow what they draw. Nothing goes on the allowlist.
| State(s) | Cause | Regressing PR | Fix |
|---|---|---|---|
agent-pane.gutter-select#*-gap (8 pairs except tool-to-tool) — "Gap drag selected no text" | #27580 moved transcript gaps out of the rows (padding-block: 0), so the stack places them under each row. The play started its drag at row bottom - padding/2, which is now 1px inside the row's content. The press never reached the gap target, so gutterSelect.ts ignored it. #31579 repaired the gap target and the browser test, but not this play. | #27580 | The drag starts at the middle of the upper row's [data-transcript-gap="row"] target, or at the nearest point the target itself covers. |
agent-pane.sent-message-rows#{sent,with-preview,recorded-file,written-file,look-arrow,look-quote} — waitFor .cv-sent | After "Worked for" opens, a turn's run of sends now folds into one "Sent N messages" line. | #31398 | openTurn opens the button[data-message-run] line, then waits for .cv-sent. |
agent-pane.transcript#agent-messages — waitFor .cv-shell__folder | The sends and the shell call fold into one message-run line, so the first .cv-tool.is-toggle became that line instead of the shell call. | #31398 | The play opens the run line, then clicks the first toggle that is not a run line. |
agent-pane.transcript#grid-rhythm-hover — waitFor .cv-reply-actions opacity 1 | A reply mid-turn draws no action row (hasReplyActions is always false: Copy once per turn). The variant was added after that change and waited for a row that is never drawn. | #29740 (variant from #27580) | The play hovers the reply and asserts that no action row is drawn. |
agent-pane.user-bubble#answer-time-tooltip — waitFor a tooltip with a year | A reply's time is now its exact time at the end of the row, shown on hover, and its tooltip shows the turn's time and tokens. No tooltip with a year appears any more. | #31609 | The play hovers the time and waits until it is shown (opacity 1) and reads as a clock time. |
Only gallery play files change. scripts/web-lint.sh --base origin/feat-cmux-next passes.
Base-red-job: cmux-next / gallery health (0)
Base-red-job: cmux-next / gallery health (1)
Base-red-job: cmux-next / gallery health (2)
Base-red-job: cmux-next / gallery health (3)
Base-red-job: cmux-next / gallery health (4)
Base-red-job: cmux-next / gallery health (5)
Base-red-job: cmux-next / gallery health (6)
Base-red-job: cmux-next / gallery health (7)
Agent session: agent session
🤖 Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Fixes the gallery plays that gallery health reports broken on every full base render — each play waited for or pressed something the transcript no longer draws, and now follows what it draws. Nothing goes on the allowlist.
| State(s) | Cause | Fix |
|---|---|---|
agent-pane.gutter-select#*-gap | #27580 removed row bottom padding, so the stack places gaps under the row and the old drag start landed on content. | The drag starts at the middle of the upper row's [data-transcript-gap="row"] target, or the nearest point the target covers. |
agent-pane.sent-message-rows#* and AcpmuxBatchSend.gallery.ts | #31398 folds a turn's sends into one "Sent N messages" line. | openTurn opens the run line after "Worked for"; batch-raw waits for the call itself and clicks Raw only when drawn (a file-read message opens straight to its call); shift-baseline.json scores the sent, look, recorded-file, and batches rows' measured shifts. |
MessageRuns.gallery.ts#open | The run's line can sit inside a folded "Worked for" line. | openLine opens "Worked for" first when the run's line is inside it. |
agent-pane.transcript#agent-messages | The sends and shell call fold into one run line, so the first toggle is no longer the shell call. | The play opens the run line, then clicks the first toggle that is not a run line. |
agent-pane.transcript#grid-rhythm-hover | #29740: a reply mid-turn draws no action row. | The play hovers the reply and asserts no action row is drawn. |
agent-pane.user-bubble#answer-time-tooltip | #31609: a reply's time is now its exact end-of-row time on hover; no tooltip with a year appears. | The play hovers the time and waits until it reads as a clock time. |
Only gallery play files and shift-baseline.json change. scripts/web-lint.sh --base origin/feat-cmux-next passes.