cmux NEXT agent pane: Send now under a steer the agent has not read yet
Merged
TE
16d ago+597+597+012345678901234567890123456789-2-2-0123456789
A steer waits until the agent's current step ends. Until then, its bubble now shows a faint clock and a Send now button underneath. Send now stops that step so the agent reads the message right away. The turn goes on, and only Stop ends it. Composer keys still never interrupt; Send now is the only way.
conversation/PendingSteer.tsx(new) renders under the bubble only whilerow.steer === "waiting".- Send now calls
_acpmux/queue_edit {sessionId, promptId: <the steer's own promptId>, op: "send_now"}through the existingchat.queue.edithost action, so no new method is needed. The reply{ok, sent}comes from #22805:sentis "now" when the step stopped and "steer" when the agent can't stop a step; ok is false once the steer was read. direct.tsadds one line: waiting steer rows carrysteerPromptId.- 3 new strings (
steer.pending,steer.sendNow,steer.sendNowHelp) in 21 locales, plus the gallery "steer-marks" entry, which now shows the clock and Send now.
Depends on #22805 (the hub's send_now op), merged as 16c12ff. If #22773 (deletes SteerMark) lands after this, PendingSteer stays beside ReadReceipt in MessageRow; I'll follow up if it needs moving.
Changelog
Added: Send now under a steer the agent hasn't read yet, which stops the current step so the agent reads it at once.
Test
cd webviews && bun test test/agent-pane-pending-steer.test.tsx
- Red when the
<PendingSteer>line is removed from App.tsx: no Send now button. - Green with it: one Send now button. A click sends
_acpmux/queue_editwith{sessionId, promptId: "p-steer", op: "send_now"}and nosession/cancel, and the button is gone once a new user_message arrives.
Observed / Not run
- Observed, on this content before the push: the test going red, then green, and
bun run checkpassing except for 2prefer-tag-over-rolewarnings inUserBubble.tsx(lines 99 and 222). Those come from the base or another lane, not this PR. - CI on 6a618a3b: the 7 reds (release-notary, Guard status, defaults-snapshot, and react-apps-check 1-4 at "Build the web bundles": stale optchat inspector page) are the same on unrelated #22854, so base reds. The base bundle red skips the webview test step, so CI did not re-run the tests on 6a618a3b. 9ef6efc6's run showed one own red, gallery coverage asking for
PendingSteerandClockentries; 6a618a3b adds them to the composer entry's covers. Its other webview reds (background-task terminal click, long-draft wheel) touch nothing this PR changes. - Not run: the head was not re-checked locally after the push, because cosmic-gray now blocks local bun runs; CI covers it. Not tried end to end against a live daemon, because the running daemon lacks #22805. No gallery capture yet.
Agent session: cosmic-gray
š¤ Generated with Claude Code