• 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
名称
最后提交
最后更新
.claude 正在载入提交数据...
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
makers 正在载入提交数据...
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 正在载入提交数据...
CLA.md 正在载入提交数据...
CLAUDE.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
lint-staged.config.js 正在载入提交数据...
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 正在载入提交数据...