• Will Chen's avatar
    Add uncommitted files banner with review & commit dialog (#2257) · e73bea94
    Will Chen 提交于
    - Add IPC handlers for getting uncommitted files with status and
    committing changes
    - Create useUncommittedFiles and useCommitChanges hooks
    - Add UncommittedFilesBanner component that shows when there are
    uncommitted changes
    - Display file status (added, modified, deleted, renamed) in the review
    dialog
    - Auto-generate sensible commit messages based on changes
    - Add E2E tests for the uncommitted files banner feature
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Adds an uncommitted files banner with a review & commit dialog in
    ChatHeader to make it easy to see changes and commit from the app.
    Improves visibility on main and streamlines committing with sensible
    default messages.
    
    - **New Features**
    - Show banner on main when there are uncommitted changes; includes count
    and “Review & commit”.
    - Dialog lists changed files with status
    (Added/Modified/Deleted/Renamed) and generates an editable default
    commit message.
    - Hooks and IPC: useUncommittedFiles (polls every 5s) and
    useCommitChanges; git:get-uncommitted-files and git:commit-changes.
    - Commit stages all changes, blocks during merge/rebase, and invalidates
    queries so the banner disappears and versions refresh.
    - E2E tests cover banner visibility, review/commit flow, success toast,
    and multiple file statuses.
    
    <sup>Written for commit d28ab8364e2344cfd4d9c9b548eeedaff3187f6a.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > Introduces an inline workflow to spot and commit local changes from
    the chat header when on `main`.
    > 
    > - **UI**: Adds `UncommittedFilesBanner` in `ChatHeader` with “Review &
    commit” dialog showing changed files (status:
    Added/Modified/Deleted/Renamed) and a generated default commit message
    > - **Hooks**: New `useUncommittedFiles` (polls every 5s) and
    `useCommitChanges` (toast + query invalidation for `uncommittedFiles`
    and `versions`)
    > - **IPC & Types**: Adds `git:get-uncommitted-files` and
    `git:commit-changes`; updates `ipc_client.ts`, `ipc_types.ts`, and
    `preload.ts`
    > - **Git utils**: Implements `getGitUncommittedFilesWithStatus`,
    `gitAddAll`, and `gitCommit` with merge/rebase state checks and
    native/isomorphic support
    > - **Tests**: E2E (`uncommitted_files_banner.spec.ts`) validates banner
    visibility, dialog content, committing (including native Git path), and
    resulting commit
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    d28ab8364e2344cfd4d9c9b548eeedaff3187f6a. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    ---------
    Co-authored-by: 's avatarClaude <noreply@anthropic.com>
    Co-authored-by: 's avatarcubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
    e73bea94
名称
最后提交
最后更新
..
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 正在载入提交数据...
DefaultChatModeSelector.tsx 正在载入提交数据...
DeleteConfirmationDialog.tsx 正在载入提交数据...
DyadProSuccessDialog.tsx 正在载入提交数据...
EditCustomModelDialog.tsx 正在载入提交数据...
ErrorBoundary.tsx 正在载入提交数据...
ForceCloseDialog.tsx 正在载入提交数据...
GitHubConnector.tsx 正在载入提交数据...
GitHubIntegration.tsx 正在载入提交数据...
GithubBranchManager.tsx 正在载入提交数据...
GithubCollaboratorManager.tsx 正在载入提交数据...
HelpBotDialog.tsx 正在载入提交数据...
HelpDialog.tsx 正在载入提交数据...
ImportAppButton.tsx 正在载入提交数据...
ImportAppDialog.tsx 正在载入提交数据...
InputRequestToast.tsx 正在载入提交数据...
LoadingBlock.tsx 正在载入提交数据...
LocalAgentNewChatToast.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 正在载入提交数据...