feat(web): add steer-now buttons for queued messages - #2273
Conversation
🦋 Changeset detectedLatest commit: 978aac2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8346474702
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
51cc434 to
ee96253
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 51cc434d52
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
763b7e9 to
b38fe4e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b38fe4e772
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
3755a54 to
6cb0499
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6cb0499e8f
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
8b71f02 to
0d86757
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0d86757945
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
0d86757 to
c15ead7
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c15ead7cbe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
c15ead7 to
122ea70
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 122ea70315
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
122ea70 to
5dfd98d
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5dfd98dc58
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
a42f8e0 to
a421050
Compare
Add explicit steer actions to the web UI's queued-message list: a per-row button that injects a single queued message into the running turn, and a queue-header button that steers the whole queue (TUI Ctrl+S parity). Also fix Ctrl+S steering not triggering when CapsLock is on, and count web-initiated steers in the input_steer telemetry event by moving the tracking call to the shared steer path. Closes MoonshotAI#2270
a421050 to
978aac2
Compare
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubCodex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback". |
74fc9a0 to
978aac2
Compare
|
@RealKai42, could you please take a look at the overall approach in this PR? Although the visible change is adding “Steer now” controls, the implementation also touches queued-message handling, operation serialization, automatic draining when a turn ends, session lifecycle invalidation, and the shared steer path. Since this could affect a fairly important part of the existing interaction flow, I’d especially appreciate your feedback on whether the proposed UX and queue semantics align with the intended direction before we move forward. Thanks! |
Add explicit steer actions to the web UI's queued-message list: a per-row button that injects a single queued message into the running turn, and a queue-header button that steers the whole queue (TUI Ctrl+S parity).
Also fix Ctrl+S steering not triggering when CapsLock is on, and count web-initiated steers in the input_steer telemetry event by moving the tracking call to the shared steer path.
Related Issue
Resolve #2270
Problem
See linked issue. In short: the web UI queues messages during a running turn but offers no visible way to inject them into that turn, and no way to steer a single queued message without steering everything at once.
What changed
POST /sessions/{id}/prompts:steerendpoint, leaving the rest of the queue untouched. Attachments are carried along.e.key, so steering no longer silently fails when CapsLock is on. (Terminal input is unaffected by CapsLock, so the TUI never had this issue.)input_steertracking call from the TUI-only RPC steer path down into the shared prompt-queue steer path, so steers initiated from the web UI are counted the same way as TUI steers (segmented by the existingui_modefield). No new event, no schema change.Why this approach: the UI surface is purely additive on top of the existing steer machinery — no backend or protocol changes; everything flows through the same submit-then-steer path the composer shortcut already used. The queue internals were hardened (serialization, lifecycle invalidation) specifically so the new per-entry steer flows cannot corrupt ordering or revive stale work under races.
Tests: new unit tests cover single-entry steer (queue order preserved, attachments included), restore-on-rejection, concurrent steers, steer/drain interleaving on turn end, session-switch liveness, archive/restore invalidation, and rejection-after-reorder ordering; a telemetry assertion verifies
input_steerfires from the shared steer path.Checklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.