• Mohamed Aziz Mejri's avatar
    Message list virtualization (#1993) · bf44acd7
    Mohamed Aziz Mejri 提交于
    Closes #1971
    
    
    
    
    
    
    
    
    
    
    
    
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Virtualized the chat message list with react-virtuoso for smoother
    scrolling and lower memory use in long chats, with non-virtualized
    rendering in E2E builds for stable tests. Memoized ChatMessage to reduce
    unnecessary re-renders.
    
    - **New Features**
    - Switched MessagesList to Virtuoso with itemContent, overscan, smooth
    follow, and initial focus on the latest message.
    - Moved context limit and Undo/Retry controls into a footer; preserved
    empty/setup states.
    
    - **Dependencies**
      - Added react-virtuoso ^4.17.0.
    
    <sup>Written for commit f82a976c70bebf40d5c7af7de514e0afde604c64.
    Summary will update automatically on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    
    
    
    
    
    
    
    
    
    
    
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Virtualizes the chat message list with react-virtuoso, adds a
    non-virtualized path for E2E via E2E_TEST_BUILD, and refactors
    footer/actions with memoized ChatMessage.
    > 
    > - **Frontend (chat)**:
    > - Switch `src/components/chat/MessagesList.tsx` to `react-virtuoso`
    with `itemContent`, `components.Footer`, overscan, and smooth follow;
    extract `FooterComponent` for context limit + Undo/Retry controls.
    > - Add E2E test mode using `envVars.E2E_TEST_BUILD` to render
    non-virtualized list; improve empty/setup handling; memoize
    `ChatMessage`.
    > - **Electron/IPC**:
    > - Include `E2E_TEST_BUILD` in `get-env-vars` so renderer can access
    test-mode flag.
    > - **Dependencies**:
    >   - Add `react-virtuoso`.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    1c71fe7555a6a32ff29ef1034b889822527484ba. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    bf44acd7
package-lock.json 774.9 KB