base red: row-gap drags select again; Retry stage and recap test follow the grid's action row (#27580)

Merged
TE
4d ago
+55-12

Base reds from #27580 (ours), which moved the transcript's gaps out of the rows into the virtual stack and lays a prompt's action row in the turn gap (design/grid.md 5.5). Each test below passes on #31384 (only #27580 reverted) and fails on feat-cmux-next:

  • Row gaps select again (transcript-gutter-select-browser.test.ts "a drag from each row gap starts at its nearest mounted caret", chromium and webkit; gallery: "Gap drag selected no text"). .acpmux-row__gap took its height from the row's padding, which is now 0, so a drag from between two rows selected nothing. RowFrame gives it the placed gap under its row (tops[i+1] - tops[i] - heights[i]). User-visible fix.
  • Retry is clickable in its gallery stage (retry-model-menu.test.ts, 8 tests). The stage div took .acpmux-row's --cv-inset as a relative offset plus its own padding, so the action row laid in the gap (right: -6) landed past the 560px viewport. The stage's inset is now a wrapper's; the row clears its offset and keeps layout containment only, as article rows do. Fixture-only.
  • Recap card test counts the footer band (agent-pane-recap-card.test.ts "the card leaves the turn's footer in view above it"). The rest gap starts under the turn footer's band (transcriptGrid.ts restBand), and the test sized the pane without it. Test-only.

Tests: red at base (CI run 41362440478 and cmux-ci at 0dbfb2ed/c0b3866c), green at this head (cmux-ci, all 3 files).

Not in this PR: agent-pane-stream-jitter (reply moves 26 = restBand when a turn ends) and streaming-text-frames p95 are still red at base. They need a design call on where the live line's room goes when the footer arrives.

Risk: small. One inline style on the gap target, a gallery fixture, and a test.

Agent session: agent session

šŸ¤– Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes three regressions from #27580, which moved transcript gaps out of rows into the virtual stack and lays a prompt's action row in the turn gap.

  • Bug Fixes
    • Row gaps are draggable again: RowFrame sizes the gap target from the row's own bottom padding plus the placed gap under it (down to the next row), instead of inheriting the row's now-zero padding. It comes before the row content, so the action rows laid in the same gap paint and hit-test over it.
    • Retry is clickable in its gallery stage: the stage's inset moved to a wrapper so the action row no longer lands past the viewport.
    • Recap card test now counts the turn footer's band when sizing the pane, matching transcriptGrid.ts restBand.