Agent chat: one bottom stack, so the queue never covers the PR dock
Summary
Leo saw the queued prompts drawn over the pull request dock and clipped. The queue was laid over the transcript's foot with absolute positioning, at a fixed offset above the card, so anything else above the composer collided with it.
Now everything under the transcript is one bottom stack in the layout flow (bottomStack.css). From top to bottom:
- the question waiting for an answer
- notices
- the PR dock
- then, inside the composer form: the queued prompts, the location strip and the card.
How it behaves:
- Every part takes its own height, so none draws over another.
- When the pane gets short, the transcript gives up height first, down to 96px. After that, the dock and the queue shrink to one row and scroll inside it.
- The transcript already keeps a followed view at its end when the stack changes height, so queuing a prompt doesn't jump it.
The queue's published height (--acpmux-queue-space, its ResizeObserver and its JSDOM test) is removed. The flow itself now keeps the question above the queue clear (hq #1893). The new browser test covers that case.
This is the slot op-next-steering's queue/steer panel (#20391) plugs into, and the PR + subagent strip will join it next.
#20454 landed (e2a6fac22a). This branch takes base's strip and keeps only the bottom stack: the red test (07e884112d0) and the fix (f4675cfdd39), replayed on 590d535fb1.
Testing
agent-pane-bottom-stack.test.ts, run withCMUX_BROWSER_TESTS=1 bun test. Fixture: a running chat with a permission question, three PRs and six queued prompts. It checks for no overlap, no clipping and nothing over the transcript at 900Ć760; at 900Ć480 the transcript must also stay ā„96px and the queue must scroll.- Red at 07e884112d0: dock/queue overlap; in the short pane, the question was over the transcript.
- Green at f4675cfdd39.
- 15 neighbouring browser suites pass (queue, steer, PR dock, permission, follow/jump, composer strip/edges/row).
bun run checkpasses.- After the rebuild on 590d535fb1: typecheck passes, and 19 browser suites (128 tests) that touch the composer, the queue, the dock, the question stack or the permission card pass. The one red there,
subtle-elevationon.lg-sheet, is base's (e111f3fcb3a in home-channels/ledger.css).
Recording
Before/after, recorded headless in Chromium from the bottom-stack test's fixture (the pane's dev entry and a stand-in acpmux daemon): 900Ć760, then the pane shrinks to 480. The native app recording is blocked on this host (the window is occluded). I watched both recordings frame by frame.
- Before (base 590d535fb1): the queued prompts draw over the PR dock at every height. In the short pane the question rides over the transcript.
- After: the question, the dock, the queue, the strip and the card stack in order at every height. At 480 the transcript keeps its room and the queue scrolls in a one-row box.
Files on big-red:/tmp/cg-lane-adopt-dogfood/bottom-stack/: bottom-stack-before-after.mp4 (side by side) and {before,after}-{tall-760,short-480}.png.
Changelog
- Fixed: Queued prompts in an agent chat no longer draw over the pull request dock or get clipped in a short pane.
š¤ Generated with Claude Code
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Makes the agent chat's bottom area under the transcript one flow stack, so queued prompts no longer draw over the pull request dock or clip in short panes.
The stack runs: question waiting for an answer, notices, PR dock, then inside the composer the queued prompts, location strip and card. Every part takes its own height; in a short pane the transcript shrinks first (down to 96 px), then the dock and queue collapse to one scrolling row. The queue's published-height mechanism (--acpmux-queue-space) and its JSDOM test are gone, replaced by a browser test that checks nothing overlaps or clips.