• 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
名称
最后提交
最后更新
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...