• 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
preload.ts 6.7 KB