🤖 feat: add stream-end queue dispatch mode and send controls#2541
🤖 feat: add stream-end queue dispatch mode and send controls#2541ethanndickson wants to merge 15 commits intomainfrom
Conversation
Keep the send-mode caret always visible in workspace chat while disabled whenever it would previously be hidden (not streaming) or unusable (empty input / cannot send). Also shrink the caret icon slightly and update UI tests for the new visibility contract. --- _Generated with `mux` • Model: `openai:gpt-5.3-codex` • Thinking: `xhigh` • Cost: `$18.21`_ <!-- mux-attribution: model=openai:gpt-5.3-codex thinking=xhigh costs=18.21 -->
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c6c189a044
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Merge latest `origin/main` into `ethan/stream-end-queueing` and resolve conflicts in chat send controls and queue dispatch internals. Resolved conflict files: - src/browser/components/ChatInput/index.tsx - src/browser/components/ChatPane.tsx - src/node/services/messageQueue.ts --- _Generated with `mux` • Model: `openai:gpt-5.3-codex` • Thinking: `xhigh` • Cost: `$18.21`_ <!-- mux-attribution: model=openai:gpt-5.3-codex thinking=xhigh costs=18.21 -->
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0906054579
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Addressed the previous review feedback:
Validation run locally: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f6bd8d6272
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Latest push propagates the user's selected queue dispatch mode through
Local validation: |
|
@codex review Latest push ( Production fix:
Test stabilization:
Validation: typecheck ✓, all 6 sendModeDropdown tests pass, 5/5 flake loop ✓, 9 compaction tests pass |
|
@codex review Resolved the P2 thread — the latest commit |
|
Codex Review: Didn't find any major issues. Hooray! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Add dual queued-send dispatch behavior for chat messages and expose it in the UI. When sending during an active stream, users can now choose between dispatching at the next step boundary (
tool-end) or after the current turn fully completes (turn-end).Background
Queued sends previously always dispatched at step boundaries, which made it impossible to intentionally let the current stream complete naturally before dispatching the queued message.
Implementation
queueDispatchMode("tool-end" | "turn-end") to send options schema and queue plumbing.tool-endbehavior.turn-enddoes not trigger step-boundary dispatch.Enter→ send/queue astool-endCtrl/Cmd+Enter→ send/queue asturn-endonMessageSent(dispatchMode)), wired through ChatInput/ChatPane/chatCommands.tool-endsends.SendModeDropdownin chat controls using inline rendering (test-friendly), with keybind chips and outside-click/Escape close.Validation
make static-checkmake typecheckbun test ./tests/ui/chat/sendModeDropdown.test.tsbun test ./tests/ui/compaction/compaction.test.tsbun test src/browser/utils/ui/keybinds.test.tsbun test src/node/services/messageQueue.test.tsRisks
Generated with
mux• Model:openai:gpt-5.3-codex• Thinking:xhigh• Cost:$18.21