feat(chat): queue a message sent while a turn is streaming - #392
Merged
Conversation
Pressing Enter (or Send) while the host Claude chat was answering silently did nothing — submit() bailed on the `busy` guard, so "Enter won't send" mid-answer. Now a message sent while busy is QUEUED instead of dropped: - It shows as a dimmed "queued" bubble with an × to cancel before it fires. - When the current turn ends (turn_end), the queued message auto-sends as the next turn. - The composer keeps Send available while busy (relabeled "Queue") next to Stop; New chat clears any pending queued message. Applies to every host-Claude chat (global dock, project chat, PR review) since they share ChatPanel. Verified with a mocked chat WS: queue shows, auto-fires on turn_end, and × cancels it so it never sends. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes "Enter won't send while Claude is answering." Pressing Enter (or Send) in the host Claude chat while a turn was streaming silently did nothing —
submit()bailed on thebusyguard, so the message was dropped. Now it's queued instead:Applies to every host-Claude chat (global dock, project chat, PR review) since they share
ChatPanel.Verified
Playwright with a mocked chat WS: while busy the button reads "Queue" and the queued bubble appears; on
turn_endthe queued message auto-fires (prompts_sent=["first","second (queued)"]); clicking × cancels it so only "first" is ever sent. Typecheck + build pass.🤖 Generated with Claude Code