Skip to content

Releases: corv89/shannot

v0.11.0

11 Jan 12:07
ed4d552

Choose a tag to compare

v0.11.0 Pre-release
Pre-release

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

CLI

  • Add shannot rollback <session_id> command with --force and --dry-run options
  • Add shannot checkpoint list to list sessions with available checkpoints
  • Add shannot checkpoint show <session_id> to display checkpoint details

v0.10.3

07 Jan 17:26
84f20d2

Choose a tag to compare

v0.10.3 Pre-release
Pre-release

Bug Fixes

  • Fix self-test creating pending session on macOS (avoid uname -p subprocess)
  • Fix self-test output showing summary message instead of script output

v0.10.2

07 Jan 11:56
5017731

Choose a tag to compare

v0.10.2 Pre-release
Pre-release

Bug Fixes

  • Fix SSL certificate verification for Nuitka binaries on macOS
  • Fix macOS stdlib download URL (use PyPy 3.8 v7.3.11)

v0.10.1

07 Jan 11:24

Choose a tag to compare

v0.10.1 Pre-release
Pre-release

Enhancements

  • Auto-download sandbox binary: shannot run now 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

06 Jan 21:43

Choose a tag to compare

v0.10.0 Pre-release
Pre-release

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=1 environment variable for sandbox detection by scripts
  • Add darwin/arm64 struct sizes to validation
  • Add check_output to subprocess stub for platform.node() support
  • Add pwd stub and populate environ with HOME/USER for expanduser() support
  • Add _bootlocale stub 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

28 Dec 03:39
c05b06d

Choose a tag to compare

v0.9.4 Pre-release
Pre-release

Enhancements

  • Improve startup speed with lazy version loading (~88ms savings per CLI invocation)

v0.9.3

27 Dec 15:01
7bd864a

Choose a tag to compare

v0.9.3 Pre-release
Pre-release

Bug Fixes

  • Fix self-test regression: use --code instead of removed -c flag

v0.9.2

27 Dec 14:24
6f56910

Choose a tag to compare

v0.9.2 Pre-release
Pre-release

Enhancements

  • Improve CLI help with quick start guide and clearer description
  • Remove -c alias for --code flag (avoids Nuitka conflict, more self-documenting)

v0.9.1

27 Dec 13:04
ce8d4f4

Choose a tag to compare

v0.9.1 Pre-release
Pre-release

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 runtime command
    • Add shannot status verification step
    • Auto-activate venv in shell rc files for direct shannot access
    • Replace generic welcome with step-by-step "Try it out" tutorial

v0.9.0

27 Dec 10:29
f3f8a8a

Choose a tag to compare

v0.9.0 Pre-release
Pre-release

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 execute into shannot run --session=ID
  • shannot run script.py now always uses dry-run mode (removed explicit --dry-run flag)

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 fstat64 handling for write-mode files in VFS
  • Fix basedpyright type errors in cli.py and mix_subprocess.py