🛡️ Henching - Personal Utility Extension
"Undo for AI mistakes — without committing."
A multi-purpose VS Code extension tailored for developers who frequently paste AI-generated code and want instant rollback without using Git.
✨ Features
📦 Local Checkpoints
Create instant snapshots of your project that you can restore at any time. Perfect for:
- Before pasting AI-generated code - Create a safety net before major changes
- Quick experimentation - Try risky changes without fear
- No Git required - Works independently of version control
📋 Angular Component Copying
Quickly copy Angular component files (TS, HTML, CSS) with a single click.
🚀 Quick Start
- Create a checkpoint: Press
Ctrl+Shift+S (or Cmd+Shift+S on Mac)
- Quick checkpoint: Press
Ctrl+Alt+S for an instant auto-labeled checkpoint
- Restore a checkpoint: Press
Ctrl+Shift+R and select a checkpoint
- View all checkpoints: Check the "Henching" panel in the Activity Bar
📚 Commands
| Command |
Shortcut |
Description |
Henching: Create Checkpoint |
Ctrl+Shift+S |
Create a new checkpoint with optional label |
Henching: Quick Checkpoint |
Ctrl+Alt+S |
Create an instant checkpoint with auto-label |
Henching: Restore Checkpoint |
Ctrl+Shift+R |
Restore files from a checkpoint |
Henching: List All Checkpoints |
- |
View all checkpoints in a markdown document |
Henching: Delete Checkpoint |
- |
Delete a specific checkpoint |
Henching: Rename Checkpoint |
- |
Rename a checkpoint's label |
Henching: Cleanup Old Checkpoints |
- |
Remove old checkpoints beyond the max limit |
Henching: Manage Ignore Patterns |
- |
UI to manage ignored files/folders |
🎯 How It Differs From Git
| Feature |
Henching Checkpoints |
Git |
| Purpose |
Quick safety net |
Full version control |
| Speed |
Instant, no staging |
Requires add & commit |
| Learning curve |
Zero |
Moderate |
| Commit messages |
Optional labels |
Required (best practice) |
| Storage |
Local only (.checkpoints/) |
Local + remote |
| History |
Simple list |
Complex DAG |
| Best for |
Quick undo, experimentation |
Long-term history |
🤔 When To Use Checkpoints
✅ USE checkpoints when:
- Pasting AI-generated code (ChatGPT, Copilot, etc.)
- Trying experimental changes
- Before major refactoring
- Quick prototyping
- You want instant undo without commits
❌ DON'T rely on checkpoints for:
- Long-term version history
- Collaboration with team
- Production deployments
- Replacing Git
⚙️ Configuration
Configure the extension in VS Code Settings:
{
"henching.checkpoints.maxCount": 20,
"henching.checkpoints.ignoreFolders": ["node_modules", ".git", ".checkpoints", "dist", "out"],
"henching.checkpoints.ignoreFiles": ["*.log", "package-lock.json"]
}
Settings Explained
| Setting |
Default |
Description |
maxCount |
20 |
Maximum checkpoints to keep |
ignoreFolders |
[...] |
Folders to exclude from checkpoints |
ignoreFiles |
[...] |
File patterns to exclude |
📁 Checkpoint Storage
Checkpoints are stored in your workspace:
your-project/
├── .checkpoints/
│ ├── 2024-01-15_14-30-45/
│ │ ├── delta.json # Compressed changes
│ │ ├── snapshot.json # File state snapshot
│ │ └── meta.json # Metadata
│ └── ...
└── src/
└── app.ts
Checkpoints use delta storage to save space, only storing what changed + a snapshot.
🔒 Safety Features
- Confirmation before restore - Always warns before overwriting files
- Backup option - Can create a checkpoint before restoring another
- Auto-cleanup - Keeps only the latest N checkpoints
- No data loss - Files are copied, not moved
- Git-aware - Reads branch info for reference (but doesn't modify Git)
🛠️ Development
Building the Extension
# Install dependencies
npm install
# Compile TypeScript
npm run compile
# Watch for changes
npm run watch
# Package the extension
npm run package
Project Structure
src/
├── extension.ts # Main entry point
├── commands/ # Command handlers
│ ├── checkpointCommands.ts
│ └── angularCopyCommands.ts
├── services/ # Core business logic
│ ├── checkpointService.ts
│ ├── angularCopyService.ts
│ └── ignorePatternManager.ts
├── views/ # UI components
│ └── checkpointTreeProvider.ts
├── types/ # TypeScript interfaces
│ └── checkpoint.ts
└── utils/ # Helper functions
├── fileUtils.ts
├── dateUtils.ts
├── gitUtils.ts
└── configUtils.ts
🤝 Contributing
This is a personal utility extension for friends and personal use. Feel free to fork and customize!
📄 License
MIT License - Use it however you want!
Made for developers who love experimenting without fear.