Agent chat: pin a waiting steer's Send now, × and Copy to the bubble's edge
Relayed from Leo's look at a transcript capture: "Queued-message controls. 'Send now ×' and the copy icon float loosely under the bubble. Align them to the bubble's edge."
What I found
On the current base, a waiting steer's controls already sit exactly where a sent prompt's controls sit. #31683 made that change (merged 2026-11-02 02:51 UTC). Before it, the waiting steer's row stayed in flow (#27580), so it sat inset from the bubble and took its own height. A capture from a build before #31683 shows the loose row.
I measured base with the shared footer test and the gallery, in Chromium at 880px and 360px, with short and wrapping prompts:
| Copy glyph right minus bubble right | Glyph top minus bubble bottom | Icon button | |
|---|---|---|---|
| Waiting steer (Send now, ×, Copy) | 0 px | 8 px | 28×28 |
| Same prompt once sent (time, Copy, Retry) | 0 px | 8 px | 28×28 |
The two steers in agent-pane.composer/steer-waiting-stack measure the same.
What this changes
Tests and gallery only. No CSS change.
webviews/test/queued-user-footer.test.ts: the test checked only the outer row's box. It now also checks the controls in each width, length and theme case: Copy's glyph ends on the bubble's right edge, both while waiting and once sent. The glyphs keep the sent row's gap under the bubble. Every queued icon button and the sent Copy are thetranscript-action-controlsquare. If a change moved the controls inside a correct-looking row box, the old test would still pass, and this one fails.QueuedUserFooter.gallery.ts: adds a newstackvariant with two waiting steers. Only the newest one offers Send now. Thebalancedandstackplays now check the same glyph alignment against the sent prompt in the same frame.
Design spec: leo-workspace design/chat-transcript.md, "A queued personal prompt stays right-aligned in the sent-prompt bubble position. Send now and the withdrawal × occupy the same footer slot directly under the bubble's right edge." Nothing in the spec changes.
Observed / Not run
- Observed on fast checks at this tree:
CMUX_BROWSER_TESTS=1 bun test test/queued-user-footer.test.ts, 12 pass and 0 fail. Gallery plays foragent-pane.queued-user-footercompact,balanced,roomy,stackandreadpass in dark and light.acceptedfails its click step at base too, and this PR leaves it unchanged.vp lintand the type check are clean. One formatting fix was applied after that run. - Not run: the native app build. The native host draws SF Symbols in place of the browser fallback glyphs, so pixel positions in the app may differ slightly from this harness.
Changelog
none
Agent session: agent session
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Strengthens the queued-footer regression test and gallery so a waiting steer's controls (Send now, ×, Copy) are verified to align to the bubble's edge exactly as the sent prompt's row does.
- The test now compares the controls themselves — Copy's glyph on the bubble's right edge, the glyphs' gap under the bubble, and each icon button's square — instead of only the outer row's box.
- Adds a gallery
stackvariant showing two waiting steers, where only the newest offers Send now, and checks both align against the sent prompt. The check reads each row's Copy glyph by its label, so a version chevron in a sent row can't stand in for it. - No CSS or behavior changes; the controls already sit correctly on the current base.