Go Rebase
Go Rebase is a VS Code extension for understanding and reorganizing the patches on a local branch. It presents commits in patch order and groups each commit's file changes into a compact visual stack.
Current features
- Activity Bar container and Patch Stack sidebar
- Patch-stack editor with commit metadata, changed files, and line statistics
- Publication-safe patch discovery: upstream-only commits when tracking is configured, or full history only when no remotes exist
- Collapsible patch/file trees, selectable ranges for modified text files, and whole-delta moves for non-text files
- Drag/drop and keyboard staging of whole-file deltas or selected ranges
- Multi-file selection and atomic group moves between patches
- Drag-to-create “New Patch” insertion zones with wheel and edge auto-scroll
- Explainable file-lineage dependency highlighting
- Dependency-group analysis with color-coded connected patch groups, editable persisted group names, and group-size badges
- Group-level selection, collapse/expand, dependency-closure preview, and dependency-safe reordering
- Dependency-group extraction into a new branch/worktree with group-only or dependency-closure modes
- Explainable, confidence-scored split suggestions for commits mixing changes from separate path areas, with source-patch selection, expanded-patch split groups, and one-click staging into a new patch
- Staged-plan preview, validation, undo/reset, progress, and read-only operation terminal
- Failed-rebase inspection in a separate VS Code worktree window before cleanup
- Workspace-persisted one-time setup and per-patch verification pipelines with selectable shells, ordered commands, and live timing/pass/fail status
- Staged commit-message editing with multiline message support
- Commit-message drafts persist across rerenders and save automatically when the editor loses focus
- Basic adjacent-patch Fix up, Squash, and Drop operations with staged preview
- Virtual new patches that can collect whole-file or selected-range deltas from existing patches
- Automatically focuses and selects the default commit message when a new patch is staged
- Drag-and-drop and keyboard patch reordering with dependency-inversion warnings
- Multi-patch selection and single-drag group reordering
- Isolated temporary-worktree rewriting with a recovery ref and guarded branch update
Run locally
Install dependencies and compile the extension:
npm install
npm run build
Open this folder in VS Code and press F5. In the Extension Development Host, open a Git repository with local commits and select the Go Rebase icon in the Activity Bar.
Product direction
Dragging a file change between patches produces a staged preview. Modified text files may be split by selecting unified-diff ranges before staging. Applying a validated plan happens through a temporary worktree, preserves a recovery ref, rejects dirty or conflicted repositories, and updates the user's branch only after every rewritten commit succeeds.
Dependency visualization should start with explicit file relationships: show when a later patch modifies a path introduced or renamed by an earlier patch. These edges are evidence of ordering constraints, not a claim that the code compiles independently.
The detailed implementation roadmap and safety contract are in docs/implementation-plan.md.