Session-based change tracking for VS Code — track, highlight, and review code changes independently of Git.
Perfect for:
- Reviewing AI-generated code changes before committing
- Tracking experimental edits without staging
- Quick code reviews during pair programming
- Keeping focus on "what changed since I started"
Features
- Full workspace tracking — snapshots all workspace files on disk, not just open tabs
- Disk-backed snapshots — files stored in a temp directory, not in memory, so large projects (26K+ files) work without issues
- Real-time highlighting — added lines highlighted in green, removed lines marked in the gutter
- Review panel — dedicated UI to browse all changes with accept/reject controls at hunk, file, or global level
- Smart file filtering — automatically excludes
node_modules,.git, binary files, build artifacts, and lock files - Status bar — always see tracking status and file count
Quick Start
- Start tracking:
Ctrl+Shift+T(orCmd+Shift+Ton Mac) - Make edits — changes are highlighted in real-time
- Review:
Ctrl+Shift+Rto open the review panel - Accept or Reject — update baseline or revert changes
- Stop tracking:
Ctrl+Shift+Yto stop tracking
Commands
| Command | Keybinding | Description |
|---|---|---|
Vibe Changes: Start Tracking |
Ctrl+Shift+T |
Snapshot all workspace files and start tracking |
Vibe Changes: Stop Tracking |
Ctrl+Shift+Y |
Clear snapshots and stop |
Vibe Changes: Open Review Panel |
Ctrl+Shift+R |
Open the review panel |
Vibe Changes: Accept All |
— | Accept all changes (update baseline) |
Vibe Changes: Reject All |
— | Reject all changes (revert to snapshot) |
How It Works
[Start Tracking] → Snapshot all workspace files to temp directory on disk
↓
[Edit files] → Diff computed on demand → Lines highlighted
↓
[Open Review] → Reads snapshots from disk, shows changes for open & modified files
↓
[Accept] → Snapshot updated (new baseline)
[Reject] → File reverted to snapshot
Accept vs Reject
- Accept = "These changes are good, make them the new baseline"
- Reject = "Undo these changes, go back to the snapshot"
What's Excluded
The following are automatically excluded from tracking:
- Directories:
node_modules,.git,.vscode,dist,out,build,.cache,.next,.nuxt,coverage,__pycache__ - Binary files: images, fonts, archives, executables, compiled objects,
.wasm - Lock files:
package-lock.json,yarn.lock,pnpm-lock.yaml - Generated files:
.map,.min.js,.min.css,.chunk.js,.bundle.js - Files larger than 1 MB
Settings
| Setting | Default | Description |
|---|---|---|
vibeChanges.addedLineColor |
rgba(40, 167, 69, 0.2) |
Background for added lines |
vibeChanges.removedLineColor |
rgba(220, 53, 69, 0.2) |
Color for removed indicators |
vibeChanges.modifiedLineColor |
rgba(255, 193, 7, 0.2) |
Background for modified lines |
vibeChanges.highlightAddedLines |
true |
Enable added line highlighting |
vibeChanges.highlightRemovedLines |
true |
Enable removed line indicators |
Use Cases
Reviewing AI-Generated Code
- Start tracking before asking AI to modify your code
- AI makes changes
- Open review panel to see exactly what changed
- Accept good changes, reject bad ones
Experimental Edits
- Start tracking
- Try different approaches
- If it works → Accept
- If it breaks → Reject and try again
Development
git clone https://github.com/baitemir-a/vibe-changes.git
cd vibe-changes
npm install
npm run compile
# Press F5 in VS Code to launch Extension Development Host
Contributing
Contributions welcome! Some ideas:
- Surgical hunk rejection (currently reverts entire file)
- Persist snapshots across VS Code restarts
- Side-by-side diff view
- Inline CodeLens accept/reject buttons
- Custom ignore patterns configuration
- Export changes as patch file