base red: waiting steer's action row takes no layout height, like a sent prompt's
Cause
queued-user-footer.test.ts "queued and sent bubble and footer keep their position at 360px, wrapping, dark/light" fails about 8 runs in 10 on feat-cmux-next.
Since #27580, a sent prompt's action row is laid in the turn gap and takes no layout height (absolutely positioned under the bubble). A waiting steer's row (Send now, X, Copy) stayed in flow: userMetaHeight in webviews/src/agent-session/acpmux/model.ts reserved metaRow() while steer == "waiting", and the CSS kept the row position: relative. #31478 matched only the waiting row's position to the sent one, not its height.
So Send now shrinks the prompt row by 28px (row dump at 360px, wrapping: steer h296 before, prompt h268 after). At 360px the content sits near the scroll end, so the shorter content clamps there and pulls every row down 11px, and the footer the test measures moves with it.
Fix
conversation.css: a waiting steer's action row under a bubble uses the same absolute placement as a sent prompt's (sametop/right, no margin), so it takes no height and sits in the same place. The oldposition: relativerule now covers only a waiting steer of images alone, which has no bubble to hang the row from.model.ts:userMetaHeightno longer reservesmetaRow()for a waiting steer with text. The images-only case keeps its in-flow reservation, matching the CSS.
Nothing else changes: the 22px row pitch, transcriptGrid.ts gaps and the footer overhang are untouched.
Design
- leo-workspace
design/grid.md5.5: "A message's hover action row (copy, speak, …, time) takes no layout height: it is laid in the gap under its message, its 16 glyphs' top 4 below the message's box in every case." - leo-workspace
design/chat-transcript.md(queued personal prompt): "Send now and the withdrawal×occupy the same footer slot directly under the bubble's right edge. When the prompt is delivered, that slot switches to the normal time, Copy and Retry controls." Same slot now also means the same (zero) height.
Tests (fleet, at this head)
Runs pending; job ids follow.
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 a flaky queued-user-footer test at 360px by making a waiting steer's action row take no layout height, like a sent prompt's.
Since #27580 a sent prompt's action row is absolutely positioned in the turn gap and takes no height, but a waiting steer's row stayed in flow. Send now then shrank the row by 28px; at narrow widths near the scroll end the transcript clamped, shifting every row and moving the footer the test measures.
Changes
- A waiting steer's action row under a bubble is now absolutely positioned in the same place as a sent prompt's, and
userMetaHeightno longer reserves it. - A waiting steer of images alone has no bubble, so its row stays in flow and keeps its reservation.