Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# APP-3919: Commit Dialog
|
||||
|
||||
Parent spec: `specs/APP-3918/PRODUCT.md`
|
||||
Branch: `edward/commit-dialog`
|
||||
|
||||
## Summary
|
||||
|
||||
Add a commit dialog overlay to the code review panel that lets users compose and execute a git commit directly from the code review header, without switching to the terminal.
|
||||
|
||||
## Problem
|
||||
|
||||
The git operations button (from the parent branch) dispatches `OpenCommitDialog` but has no dialog to open. Users must switch to the terminal to run `git commit`. This breaks the inline workflow the button is designed to enable.
|
||||
|
||||
## User Experience
|
||||
|
||||
### Opening the dialog
|
||||
|
||||
The commit dialog opens when the user:
|
||||
- Clicks the "Commit" primary button in the code review header
|
||||
- Selects "Commit" from the chevron dropdown menu
|
||||
|
||||
The dialog renders as a centered modal overlay with a blurred background, consistent with the existing discard confirmation dialog.
|
||||
|
||||
### Dialog layout
|
||||
|
||||
The dialog ("Commit your changes") contains four sections:
|
||||
|
||||
1. **Branch** — displays the current branch name with a git-branch icon. Read-only.
|
||||
|
||||
2. **Changes** — shows a summary of changed files with aggregate stats (file count, +additions, -deletions).
|
||||
- A collapsible file list shows per-file stats (filename, directory, +/-, -)
|
||||
- "Include unstaged" toggle (on by default) controls whether unstaged + untracked changes are included or only staged changes
|
||||
- Toggling the switch reloads the file list from git
|
||||
|
||||
3. **Commit message** — a multi-line text editor with placeholder text "Leave blank to autogenerate a commit message".
|
||||
- Supports soft-wrap and autogrow
|
||||
- ESC dismisses the dialog
|
||||
- Editor is focused on open
|
||||
|
||||
4. **Intent selector** — currently only "Commit" button. Future: "Commit and push", "Commit and create PR".
|
||||
|
||||
### Footer
|
||||
|
||||
- Cancel button (left)
|
||||
- Confirm "Commit" button (right) — disabled when no files or no commit message
|
||||
|
||||
### After committing
|
||||
|
||||
On success:
|
||||
- Dialog closes
|
||||
- A toast notification shows "Changes successfully committed."
|
||||
- Diffs are reloaded to reflect the new state
|
||||
- Diff metadata and PR info are refreshed
|
||||
|
||||
On failure:
|
||||
- Dialog closes
|
||||
- A toast shows the error message
|
||||
- Diffs are reloaded (state may have partially changed)
|
||||
|
||||
### Closing the dialog
|
||||
|
||||
The dialog can be closed by:
|
||||
- Clicking Cancel
|
||||
- Clicking the X button
|
||||
- Pressing ESC in the message editor
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Staging individual files/hunks from the dialog (the "Include unstaged" toggle is all-or-nothing)
|
||||
- Commit amend
|
||||
- Compound actions (commit+push, commit+create PR) — stubs exist but are wired in child branches
|
||||
|
||||
## Success Criteria
|
||||
|
||||
1. Clicking "Commit" in the header opens the dialog overlay
|
||||
2. The dialog shows the current branch, file changes with stats, and a message editor
|
||||
3. Toggling "Include unstaged" refreshes the file list (staged-only vs all changes)
|
||||
4. Confirming runs `git commit` with the entered message
|
||||
5. Success/failure toasts appear after the commit
|
||||
6. The code review panel refreshes to reflect post-commit state
|
||||
7. ESC and Cancel close the dialog without committing
|
||||
Reference in New Issue
Block a user