• Will Chen's avatar
    Support concurrent chats (#1478) · 9691c983
    Will Chen 提交于
    Fixes #212 
    
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Add concurrent chat support with per-chat state, chat activity UI, IPC
    per-chat handling, and accompanying tests.
    > 
    > - **Frontend (Chat concurrency)**
    > - Replace global chat atoms with per-chat maps:
    `chatMessagesByIdAtom`, `isStreamingByIdAtom`, `chatErrorByIdAtom`,
    `chatStreamCountByIdAtom`, `recentStreamChatIdsAtom`.
    > - Update `ChatPanel`, `ChatInput`, `MessagesList`,
    `DyadMarkdownParser`, and `useVersions` to read/write per-chat state.
    > - Add `useSelectChat` to centralize selecting/navigating chats; wire
    into `ChatList`.
    > - **UI**
    > - Add chat activity popover: `ChatActivityButton` and list; integrate
    into `preview_panel/ActionHeader` (renamed from `PreviewHeader`) and
    swap in `TitleBar`.
    > - **IPC/Main**
    > - Send error payloads with `chatId` on `chat:response:error`; update
    `ipc_client` to route errors per chat.
    > - Persist streaming partial assistant content periodically; improve
    cancellation/end handling.
    > - Make `FileUploadsState` per-chat (`addFileUpload({chatId,fileId},
    ...)`, `clear(chatId)`, `getFileUploadsForChat(chatId)`); update
    handlers/processors accordingly.
    > - **Testing**
    > - Add e2e `concurrent_chat.spec.ts` and snapshots; extend helpers
    (`snapshotMessages` timeout, chat activity helpers).
    > - Fake LLM server: support `tc=` with options, optional sleep delay to
    simulate concurrency.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    9035f30b73a1f2e5a366a0cac1c63411742b16f3. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    9691c983
concurrent_chat.spec.ts_concurrent-chat-2.aria.yml 136 Bytes