• 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
名称
最后提交
最后更新
..
chat 正在载入提交数据...
home 正在载入提交数据...
preview_panel 正在载入提交数据...
settings 正在载入提交数据...
ui 正在载入提交数据...
AppList.tsx 正在载入提交数据...
AppSearchDialog.tsx 正在载入提交数据...
AppUpgrades.tsx 正在载入提交数据...
AutoApproveSwitch.tsx 正在载入提交数据...
AutoFixProblemsSwitch.tsx 正在载入提交数据...
AutoUpdateSwitch.tsx 正在载入提交数据...
BugScreenshotDialog.tsx 正在载入提交数据...
CapacitorControls.tsx 正在载入提交数据...
ChatInputControls.tsx 正在载入提交数据...
ChatList.tsx 正在载入提交数据...
ChatModeSelector.tsx 正在载入提交数据...
ChatPanel.tsx 正在载入提交数据...
ChatSearchDialog.tsx 正在载入提交数据...
CommunityCodeConsentDialog.tsx 正在载入提交数据...
ConfirmationDialog.tsx 正在载入提交数据...
ContextFilesPicker.tsx 正在载入提交数据...
CopyErrorMessage.tsx 正在载入提交数据...
CreateAppDialog.tsx 正在载入提交数据...
CreateCustomModelDialog.tsx 正在载入提交数据...
CreateCustomProviderDialog.tsx 正在载入提交数据...
CreatePromptDialog.tsx 正在载入提交数据...
CustomErrorToast.tsx 正在载入提交数据...
DeleteConfirmationDialog.tsx 正在载入提交数据...
DyadProSuccessDialog.tsx 正在载入提交数据...
EditCustomModelDialog.tsx 正在载入提交数据...
ErrorBoundary.tsx 正在载入提交数据...
ForceCloseDialog.tsx 正在载入提交数据...
GitHubConnector.tsx 正在载入提交数据...
GitHubIntegration.tsx 正在载入提交数据...
HelpBotDialog.tsx 正在载入提交数据...
HelpDialog.tsx 正在载入提交数据...
ImportAppButton.tsx 正在载入提交数据...
ImportAppDialog.tsx 正在载入提交数据...
InputRequestToast.tsx 正在载入提交数据...
LoadingBlock.tsx 正在载入提交数据...
MaxChatTurnsSelector.tsx 正在载入提交数据...
McpConsentToast.tsx 正在载入提交数据...
McpToolsPicker.tsx 正在载入提交数据...
ModelPicker.tsx 正在载入提交数据...
NeonConnector.tsx 正在载入提交数据...
NeonDisconnectButton.tsx 正在载入提交数据...
NeonIntegration.tsx 正在载入提交数据...
NodePathSelector.tsx 正在载入提交数据...
PortalMigrate.tsx 正在载入提交数据...
PriceBadge.tsx 正在载入提交数据...
ProBanner.tsx 正在载入提交数据...
ProModeSelector.tsx 正在载入提交数据...
ProviderSettings.tsx 正在载入提交数据...
ReleaseChannelSelector.tsx 正在载入提交数据...
RuntimeModeSelector.tsx 正在载入提交数据...
ScreenshotSuccessDialog.tsx 正在载入提交数据...
SettingsList.tsx 正在载入提交数据...
SetupBanner.tsx 正在载入提交数据...
SetupProviderCard.tsx 正在载入提交数据...
SupabaseConnector.tsx 正在载入提交数据...
SupabaseIntegration.tsx 正在载入提交数据...
TelemetryBanner.tsx 正在载入提交数据...
TelemetrySwitch.tsx 正在载入提交数据...
TemplateCard.tsx 正在载入提交数据...
ThinkingBudgetSelector.tsx 正在载入提交数据...
VercelConnector.tsx 正在载入提交数据...
VercelIntegration.tsx 正在载入提交数据...
ZoomSelector.tsx 正在载入提交数据...
app-sidebar.tsx 正在载入提交数据...
appItem.tsx 正在载入提交数据...