Repository navigation
Clear chat queue rows once their prompt is being worked - #1191
Conversation
4e383b0 to
efad4b1
Compare
PR Summary by QodoClear queued chat prompts when Claude starts working on them
AI Description
Diagram
High-Level Assessment
Files changed (5)
|
Code Review by Qodo
1.
|
efad4b1 to
853922c
Compare
853922c to
c57bbb7
Compare
c57bbb7 to
454abf0
Compare
Claude Code records a prompt taken up mid-turn only as a queued_command attachment, so the leaf now projects it: servers will ingest these as new user-message events keyed by the attachment's own uuid.
454abf0 to
a2640d9
Compare
AI-3234 — no GitHub issue exists
What & why
The queued-messages strip drops a row only when the transcript echoes that prompt, and two echoes never matched. Claude Code records a prompt it takes up mid-turn only as a
queued_commandattachment (commandMode: prompt), which the Claude leaf ignored, so the row stayed "queued" while the agent worked on it. The leaf now projects that attachment as a user message, so the row clears and the prompt shows as a sent bubble. A prompt carrying an attachment trailer is echoed inside a<pasted_content>wrapper; stripping that wrapper is #1190's, and this PR relies on it for that case.An attachment send also sat in the strip and the composer at once while the daemon fetched the files. The in-flight send is now tracked but kept out of the strip until the channel answers, so the composer (with its "Sending…" hint) is the only place it shows. Rejected and unconfirmed sends keep the draft, as before.
Where to look
ClaudeTranscriptEvents.QueuedCommand: servers will ingest these attachments as newUserMessageReceivedevents, keyed by the record's own uuid, so already-ingested ids are unchanged.Verification
queued_commandattachment (reason: absorbed_mid_turn).ChatTabViewModelTestsfail onmainand pass here.dotnet publish … -c Release | grep -cE 'IL[23][01][0-9]{2}'→ 0