Releases: corv89/shannot
Releases · corv89/shannot
v0.11.0
Features
- Checkpoint and rollback: Automatically create checkpoints before session execution, enabling rollback to restore files to their pre-execution state
- Original file content stored as blob files in
~/.local/share/shannot/sessions/{id}/checkpoint/ - Conflict detection via post-exec hash comparison (bypass with
--force) - Support for both local and remote (SSH) rollback
- Large directory handling with limits (100 files / 50MB) and partial checkpoint warnings
- New session status:
rolled_back
- Original file content stored as blob files in
CLI
- Add
shannot rollback <session_id>command with--forceand--dry-runoptions - Add
shannot checkpoint listto list sessions with available checkpoints - Add
shannot checkpoint show <session_id>to display checkpoint details
v0.10.3
v0.10.2
v0.10.1
Enhancements
- Auto-download sandbox binary:
shannot runnow automatically downloads the PyPy sandbox binary on first run (with graceful failure for unsupported platforms) - macOS runtime support: Platform-specific PyPy versions (Linux: PyPy 3.6, macOS: PyPy 3.8) with automatic detection and download
v0.10.0
Features
- Deletion tracking:
shutil.rmtree()and file deletions are now queued for approval- Full support for fd-based directory operations (fdopendir, dirfd, unlinkat)
- Deletions displayed in approve TUI with file/directory counts
- Audit logging for deletion events
- Add PyPy sandbox support for macOS ARM64
- Mount home directory read-only in sandbox VFS
Enhancements
- Add
SHANNOT_SANDBOX=1environment variable for sandbox detection by scripts - Add darwin/arm64 struct sizes to validation
- Add
check_outputto subprocess stub forplatform.node()support - Add
pwdstub and populate environ with HOME/USER forexpanduser()support - Add
_bootlocalestub for text I/O encoding support - Add missing syscall signatures (W* macros, dirfd, sendfile, mach_absolute_time, ftime)
Bug Fixes
- Fix misleading sandbox binary path in status message
- Fix Unicode output handling - preserve UTF-8 characters in sandbox output
v0.9.4
v0.9.3
v0.9.2
v0.9.1
Bug Fixes
- Use absolute path for shannot-mcp in Claude Desktop config (fixes PATH resolution issues)
Enhancements
- Improve devcontainer post-create experience
- Use explicit
shannot setup runtimecommand - Add
shannot statusverification step - Auto-activate venv in shell rc files for direct
shannotaccess - Replace generic welcome with step-by-step "Try it out" tutorial
- Use explicit
v0.9.0
Features
- Overlay commit model for file writes: File writes are now captured during dry-run and committed to the filesystem after approval, rather than being blocked
- Execution tracking: Commands and file writes are tracked during execution with per-item success/failure status
- Colorized execution summary: After execution, shows what commands ran and what files were written with ✓/✗ indicators
- Conflict detection: SHA256 hash of original file content is stored; commits fail if file was modified between dry-run and execution
- Large file handling: 50MB hard limit blocks excessive writes at capture time; 5MB threshold shows ⚠ warning in approval TUI
- Remote SSH file writes:
commit_writes_remote()writes approved files to remote filesystem via SSH with conflict detection - Conflict warnings in TUI: Show write conflicts prominently on Results view after execution
Changed
- Consolidated CLI commands: Merged
shannot executeintoshannot run --session=ID shannot run script.pynow always uses dry-run mode (removed explicit--dry-runflag)
Bug Fixes
- Fix session execution for Nuitka binary by calling directly instead of subprocess
- Fix sandbox exit code by waiting for natural process exit before terminating
- Fix bytes/str type mismatch in remote conflict detection
- Fix
fstat64handling for write-mode files in VFS - Fix basedpyright type errors in cli.py and mix_subprocess.py