-
由 Mohamed Aziz Mejri 提交于
<!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Allow users to queue multiple messages while a response is streaming. Queued items are visible, editable, reorderable, and auto-send one-by-one only after the current stream ends successfully. - **New Features** - Per-chat queue state via queuedMessagesByIdAtom and streamCompletedSuccessfullyByIdAtom. - QueuedMessagesList to view, edit, reorder, and delete items; shows status and attachment indicator. - ChatInput queues while streaming, supports editing queued items, clears input/attachments only on successful queue/send, and clears all queued on cancel. - useStreamChat exposes queuedMessages and queue/update/remove/reorder/clear APIs; processes the next item only after a confirmed successful end. - **Bug Fixes** - Eliminated race conditions by gating processing on successful onEnd (wasCancelled-aware), fixing a stale firstMessage closure, and clearing the queue before cancel IPC to avoid rapid-response races. - Preserved input and attachments when queueMessage fails; prevented dropping newly queued messages; cleared editing state when the edited queued item is deleted. <sup>Written for commit fb431f55b3a24284058062a6ced97ac21f825952. Summary will update on new commits.</sup> <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Introduces queued message support so users can submit another prompt while a response is streaming; the queued prompt auto-sends only after the current stream ends successfully. > > - Adds `QueuedMessage`, `queuedMessageByIdAtom`, and `streamCompletedSuccessfullyByIdAtom` to track one queued message and confirmed stream completion per chat > - Extends `useStreamChat` with queue APIs (`queuedMessage`, `queueMessage`, `clearQueuedMessage`) and processing gated by `onEnd` success; resets/sets completion flags; warns on multiple queue attempts > - Updates `ChatInput` to queue while streaming, clear on successful queue, and clear queued message on cancel; uses `shouldProcessQueue` > - Updates `MessagesList` to display queued prompt with status and a Clear action > - Expands IPC `ChatResponseEnd` schema with optional `wasCancelled`; send this flag on cancel in `chat_stream_handlers` > - Adds e2e test `queued_message.spec.ts` verifying queuing and auto-send behavior > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 62ed2131f7f9ee253b2542d35307459af504d6d0. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2120"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end --> --------- Co-authored-by:
Claude <noreply@anthropic.com>