v0.5.0
What's changed
Added
--stdinforsnapshot: New--stdinflag to read backup data from stdin as a single virtual file at/stdin, with full deduplication and encryption.- Interruptible
clean: Theclean(andforget --clean) command can now be interrupted with SIGINT / SIGTERM. The shutdown signal is polled at safe checkpoints between GC phases. - JSON output for
find: Thefindcommand now supports--jsonoutput. - Error codes for
findandmount: Both commands now exit with meaningful error codes:10on repo open failure,20on command failure, and130on interrupt (mount only). - Sliding-window rate estimator: Replaced indicatif's lifetime-average
per_sec/etawith a configurable 10s sliding window for responsive ETA and throughput in progress bars (CLI and TUI). - Recursive filename search:
findnow searches recursively when the pattern does not contain a/(e.g.find file.txtmatches in any subdirectory). Use a leading/to restrict the search to the root (find /file.txt). dumpcommand: Newdumpcommand to print the contents of a single file from a snapshot to stdout. Supports snapshot ID prefixes andlatest.--no-lock: Added an option to open a repository without acquiring a lock.- Interactive diff screen (TUI): New
DiffScreenwith a navigable tree of changes (+/~/-), inline expand/collapse,uto toggle unchanged files,</>to browse adjacent snapshot pairs, live spinner while loading, and/to filter entries by path. - Interactive find screen (TUI): New
FindScreenwith real‑time glob search across all snapshots, progress bar with spinner, results table, inline detail panel, and direct navigation to file explorer and restore. - Redesigned TUI theme: The TUI now uses a refined colour palette and layout for improved readability.
Changed
- Restorer performance: Optimized the restorer with a flattened parallel pipeline, concurrent blob decoding, and JIT file initialization. This improves restoration performance while maintaining a low memory footprint.
- GC memory usage: Repack memory usage is now bounded by a configurable budget, preventing excessive memory consumption during garbage collection with large packs.
Fixes
- Exit code on interrupt:
snapshot,restore,sync,verify,forget,rechunk,amend, andrebuild-indexnow all exit with code130(the conventional128 + SIGINT) when the user cancels the operation. Previously several of these silently returned success (exit0) on interrupt, leaving scripts with no way to detect the cancellation.
Full Changelog: v0.4.2...v0.5.0