Repository navigation
Agent chat: deleting a queued prompt leaves no gap under the last message - #22915
Conversation
…t row Red on base: the room a queued card leaves is held for a second for its prompt to arrive as a row, but a withdrawn prompt never arrives. Both orders of acpmux's queue update and its queue_removed record. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…leted direct.ts names prompts that left the queue via queue_removed on the snapshot (queueWithdrawn). VirtualTranscript keeps a leaving card's room only for a prompt that was sent, or while the reply streams and fills it; a withdrawal lets it go at once, also when it arrives after the queue update. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Bead |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Yours to fix: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; base red: the same failure on the base 6c39334; does not block Tour of |
…leaves no gap for long Review of #22915: with the turn running but nothing streaming, the room was still held for a second. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… grows Held only for a withdrawn prompt, the room is released 250 ms after the reply last grew (re-armed on each pass), so a turn in a tool call or thinking does not keep a gap. Withdrawn ids are memoized per snapshot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflict only in App.tsx: base #22915 added queueWithdrawn to VirtualTranscript, which this branch wraps in SubsessionContext. Kept the wrapper and added the prop. Agent-Session: 01a15ba9-9614-7832-8e39-d8ca0407c193 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
owner: 01a15c40-dc2e-7881-81fa-0b71a528cca3 |
|
Shipped in:
|
|
Shipped in:
|
Summary
Follow-up to #22858. When a queued prompt was deleted from the queue (acpmux
queue_removed), the agent chat kept a card-high gap under the last message for up to 1 s, then glided down. #22858 holds the room a leaving queue card frees so that a sent prompt (dequeued) can arrive as a row without the view moving down. A deleted prompt never arrives, so that room was held for nothing.direct.ts: prompts that leave the queue throughqueue_removedare named on the snapshot asqueueWithdrawn(the last 16;model.tsadds the optional field).VirtualTranscript(App.tsx): it notes which cards (.acpmux-queued[data-prompt-id]) left the stack. It keeps their room only for a prompt that was sent, or while a reply is streaming, since the growing reply fills that room. If no reply is streaming, a withdrawal lets the room go at once. Held only for a withdrawn prompt, the room is released 250 ms after the reply last grew, so a turn busy in a tool call or thinking doesn't keep a gap either (from review). That also works when acpmux's queue update arrives before itsqueue_removedrecord: the room is held for a frame or two, then released when the record lands.The queue card itself (
ComposerQueue.tsx, its CSS) is untouched. #22854 (prompt-queue-edit) owns it; I told that lane this PR only reads.acpmux-queued[data-prompt-id].Testing
Command:
cd webviews && CMUX_BROWSER_TESTS=1 bun test test/agent-pane-stream-jitter.test.tsNew case "a deleted queued prompt leaves no gap under the last row". It runs in Chromium and WebKit, once with the
queue_removedrecord first and once with the queue update first. 300 ms after the card leaves, the last row must sit where it rested before the card came, and the view must be at its end.78aaa620aa5(test commit be1570b)Observed / Not run
agent-pane-chat-column,-queue-steer,-bottom-stack,-follow-live,-scrollbar-full-height,-wheel-pass-through, alltranscript-*files andComposerQueue.test.tsx: 138 pass, 1 fail. The failing case,agent-pane-queue-steer"Send now on a queued prompt keeps its row, reading Steering, until it runs", also fails on base78aaa620aa5(2 of 2 runs each), so it is not caused by this PR.scripts/web-lint.shandprepush-gate.pypass. Web-only: no Swift or Rust.Changelog
Fixed: Deleting a queued prompt in the agent chat no longer leaves a gap under the last message for a second
Agent session: cmux16
🤖 Generated with Claude Code