Skip to content

leepokai/ccundo

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ccundo

npm version License: MIT

Intelligent undo for Claude Code sessions - Revert individual operations with cascading safety and detailed previews.

ccundo seamlessly integrates with Claude Code to provide granular undo and redo functionality. It reads directly from Claude Code's session files to track file operations and allows you to selectively revert or restore changes with full preview and cascading safety.

✨ Features

  • Automatic Detection - Reads directly from Claude Code session files
  • Detailed Previews - See exactly what will be changed before undoing/redoing
  • Cascading Undo/Redo - Maintains project consistency by undoing/redoing dependent operations
  • Complete Redo System - Reverse any undo operation with full cascading support
  • Turn-based Operations - Group related operations into conversation turns for batch undo
  • Multi-language - Supports English and Japanese (ζ—₯本θͺž)
  • Smart Operation Tracking - Tracks file edits, creations, deletions, renames, and bash commands
  • Safe Backups - Creates backups before making changes
  • Zero Configuration - Works out of the box with Claude Code

Installation

npm install -g ccundo

Quick Start

  1. Navigate to a directory where you've used Claude Code
  2. List recent operations:
    ccundo list
  3. Preview what would be undone:
    ccundo preview
  4. Undo operations with confirmation:
    ccundo undo
  5. Redo previously undone operations:
    ccundo redo
  6. Work with conversation turns:
    ccundo turns                 # Group operations into turns
    ccundo preview-turn          # Preview turn undo
    ccundo undo-turn             # Undo entire turn

Usage

List Operations

View all operations from your current Claude Code session:

ccundo list                    # Show recent operations
ccundo list --all             # Include already undone operations

Example output:

Operations from Claude Code session:

1. [ACTIVE] file_edit - 2m ago
   ID: toolu_01XYZ...
   File: /project/src/app.js

2. [ACTIVE] file_create - 5m ago
   ID: toolu_01ABC...
   File: /project/src/utils.js

3. [ACTIVE] bash_command - 7m ago
   ID: toolu_01DEF...
   Command: npm install express

Preview Changes

See exactly what will be undone without making any changes:

ccundo preview                 # Interactive selection
ccundo preview <operation-id>  # Preview specific operation

Preview shows:

  • File diffs for edits (- current content, + original content)
  • Content that will be restored for deleted files
  • Files that will be deleted for created files
  • Bash commands that require manual intervention

Undo Operations

Safely revert operations with detailed confirmation:

ccundo undo                    # Interactive selection with preview
ccundo undo <operation-id>     # Undo specific operation
ccundo undo --yes             # Skip confirmation prompts

Cascading Undo: When you select an operation to undo, ccundo will also undo ALL operations that came after it. This ensures your project remains in a consistent state.

Redo Operations

Restore previously undone operations with the same safety and preview features:

ccundo redo                    # Interactive selection of undone operations
ccundo redo <operation-id>     # Redo specific operation
ccundo redo --yes             # Skip confirmation prompts

Cascading Redo: When you select an operation to redo, ccundo will also redo ALL undone operations that came before it. This maintains the same consistency guarantees as undo operations.

Turn-based Operations

Group related operations into conversation turns for easier management:

ccundo turns                   # List grouped turns
ccundo turns                   # Auto-group operations by time gaps
ccundo preview-turn            # Preview what a turn undo would do
ccundo undo-turn               # Undo an entire conversation turn

Turn Features:

  • Smart Grouping - Automatically groups operations by time gaps (default 5 minutes)
  • Batch Undo - Undo all operations from a single conversation turn at once
  • Turn Preview - See exactly what will be undone before confirming
  • Interactive Selection - Choose which turn to undo with full context
  • Conversation State Recovery - Restore your codebase to any previous conversation completion point

Automatic Turn Creation:

To automatically create turns after each conversation, add this hook to your Claude Code settings:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "ccundo group-turns"
          }
        ]
      }
    ]
  }
}

This hook runs ccundo group-turns automatically when each conversation ends, creating logical turn boundaries that let you restore your codebase to exactly where it was after any previous conversation.

Example:

$ ccundo turns
1. TURN - 2h ago (45s)
   Description: 2 file ops + 3 commands
   Operations: 5

$ ccundo preview-turn
πŸ“‹ Turn Preview: 2 file ops + 3 commands
   Operations: 5 total, 4 can undo
   ⚠️ 1 operations have warnings

$ ccundo undo-turn
βœ… Turn undo completed: 4 successful, 1 failed

Session Management

Work with multiple Claude Code sessions:

ccundo sessions              # List all sessions across projects
ccundo session <session-id>  # Switch to specific session

Language Support

ccundo supports multiple languages with persistent preferences:

ccundo language              # Show current language and options
ccundo language en           # Switch to English
ccundo language ja           # Switch to Japanese (ζ—₯本θͺž)
ccundo language fr           # Switch to French (FranΓ§ais)
ccundo language es           # Switch to Spanish (EspaΓ±ol)
ccundo language de           # Switch to German (Deutsch)

Supported Languages:

  • πŸ‡ΊπŸ‡Έ English (en) - Default
  • πŸ‡―πŸ‡΅ Japanese (ja) - ζ—₯本θͺžγƒ•γƒ«γ‚΅γƒγƒΌγƒˆ
  • πŸ‡«πŸ‡· French (fr) - FranΓ§ais
  • πŸ‡ͺπŸ‡Έ Spanish (es) - EspaΓ±ol
  • πŸ‡©πŸ‡ͺ German (de) - Deutsch

How It Works

ccundo automatically integrates with Claude Code by:

  1. Reading Session Files - Parses .jsonl files in ~/.claude/projects/
  2. Extracting Operations - Identifies file operations and bash commands from tool usage
  3. Tracking Dependencies - Understands operation ordering for safe cascading undo
  4. Creating Backups - Saves current state before making changes to ~/.ccundo/backups/
  5. Maintaining State - Stores undo history and language preferences in ~/.ccundo/

Supported Operations

Operation Type Description Undo Action Redo Action
File Create Files created by Claude Delete file (with backup) Recreate file with original content
File Edit File content modifications Revert to original content Re-apply the edit changes
File Delete Files deleted by Claude Restore file content Delete file again (with backup)
File Rename File/directory renames Rename back to original Apply rename again
Directory Create Directory creation Remove directory Recreate directory
Directory Delete Directory removal Recreate directory Remove directory again
Bash Command Shell commands Manual intervention required Manual intervention required

Examples

Undoing Recent File Changes

$ ccundo list
Operations from Claude Code session:

1. [ACTIVE] file_edit - 30s ago
   ID: toolu_01XYZ123
   File: /project/src/app.js

$ ccundo preview
πŸ“‹ Preview: Would undo 1 operation(s):

1. file_edit - 30s ago
   Will revert file: /project/src/app.js
   
   - const newFeature = true;
   + const newFeature = false;
     console.log('App started');

$ ccundo undo --yes
βœ“ File reverted: /project/src/app.js
  Backup saved to: ~/.ccundo/backups/toolu_01XYZ123-current

Completed: 1 successful, 0 failed

Cascading Undo Example

$ ccundo preview
⚠️  Cascading undo: Selecting an operation will undo it and ALL operations that came after it.

? Select operation to preview:
❯ file_create - 1m ago (+ 2 more would be undone)
  file_edit - 2m ago (+ 1 more would be undone)  
  bash_command - 5m ago

πŸ“‹ Preview: Would undo 3 operation(s):

1. file_create - 1m ago
   Will delete file: /project/new-feature.js

2. file_edit - 2m ago  
   Will revert file: /project/app.js

3. bash_command - 5m ago
   Cannot auto-undo bash command: npm install new-package
   Manual intervention required

Redoing Undone Operations

$ ccundo undo
# ... undo some operations ...

$ ccundo redo
⚠️  Cascading redo: Selecting an operation will redo it and ALL undone operations that came before it.

? Select operation to redo:
❯ file_edit - 2m ago (+ 1 more will be redone)
  file_create - 5m ago

$ ccundo redo --yes
βœ“ File edit redone: /project/src/app.js
  Backup saved to: ~/.ccundo/backups/toolu_01XYZ123-redo
βœ“ File recreated: /project/new-feature.js

Completed: 2 successful, 0 failed

Configuration

ccundo stores its configuration in ~/.ccundo/:

~/.ccundo/
β”œβ”€β”€ config.json              # Language preferences
β”œβ”€β”€ undone-operations.json   # Undo/redo state tracking
β”œβ”€β”€ turns.json               # Turn grouping data
β”œβ”€β”€ sessions/                # Local session tracking (if used)
└── backups/                # Operation backups

Config format:

{
  "language": "en"
}

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development Setup

git clone https://github.com/RonitSachdev/ccundo.git
cd ccundo
npm install
npm link

Adding Languages

  1. Add translations to src/i18n/languages.js
  2. Update language list in documentation
  3. Test with npm run test

License

MIT Β© Ronit Sachdev

About

ccundo seamlessly integrates with Claude Code to provide granular undo functionality. It reads directly from Claude Code's session files to track file operations and allows you to selectively revert changes with full preview and cascading safety.

Resources

License

Code of conduct

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%