Add queued chat message UI - #920
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 6, 2026, 2:16 AM ET / 06:16 UTC. Summary Reproducibility: no. The linked issue has screenshots and a rapid-send clue, but this read-only Linux review did not run the WinUI app or establish a deterministic current-main reproduction path. Review metrics: 2 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this as the candidate fix only after current-head tray proof shows rapid follow-up sends queue above the composer and then reconcile into the transcript without duplicate user bubbles. Do we have a high-confidence way to reproduce the issue? No. The linked issue has screenshots and a rapid-send clue, but this read-only Linux review did not run the WinUI app or establish a deterministic current-main reproduction path. Is this the best way to solve the issue? Unclear until visible proof lands. The queue plus identity reconciliation design is plausible and well covered at provider level, but the actual tray UI behavior still needs current-head proof. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 43d40ed60acc. Label changesLabel justifications:
Evidence reviewedWhat I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
Show pending chat sends in the composer and reconcile them with gateway message identity to avoid duplicate user bubbles. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Queue follow-up chat prompts in memory until the active agent turn completes, then dispatch one queued prompt at a time. Suppress stale reset/shutdown/reconnect drains and reload authoritative history after aborted pre-reset submitted runs terminate. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Avoid briefly showing the first idle user message as a queued card. Keep busy follow-up prompts in the client queue while preserving direct-send echo suppression and history reconciliation metadata. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
d87ce66 to
807aa55
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 807aa55439
ℹ️ 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".
| if (isTerminalRunEvent) | ||
| TryDispatchNextQueuedSend(threadId); |
There was a problem hiding this comment.
Defer queued dispatch until the assistant final is applied
When lifecycle.end/job.done is delivered before the corresponding final chat.message (a sequence this provider already tolerates for late assistant messages), this drains the next queued prompt immediately. The late final then arrives while a single queued prompt is in Sending, so PromoteOldestQueuedMessageBeforeAssistantIfNeeded promotes that next user message before rendering the previous assistant answer, corrupting transcript order and sending the follow-up before the prior final is applied. Please gate terminal-event queue draining on having rendered the final assistant frame, or otherwise correlate the terminal event to a completed assistant message first.
Useful? React with 👍 / 👎.
Summary
Validation
build.ps1 -Project WinUIpassed.OpenClawChatDataProviderTestspassed.Behavior covered