Commit Graph

  • bffd4578fc Record each snapshot's new chunk size when its backup runs (closes #311) clawbot 2026-10-13 16:44:14 +02:00
  • f4ab1ba5ae Exit as interrupted when Ctrl-C lands during a local index write (closes #301) clawbot 2026-10-13 16:28:59 +02:00
  • 005927a7fc Print snapshot list and purge sizes like every other command (closes #312) clawbot 2026-10-13 16:22:03 +02:00
  • 09a0c01c43 Stop a stalled blob read when restore or deep verify is interrupted (closes #325) clawbot 2026-10-13 15:48:00 +02:00
  • 8c54e0ff75 Make a mistyped subcommand under a group command an error (closes #319) clawbot 2026-10-13 14:14:39 +02:00
  • d1213ecb34 Make a leading **/ in an exclude pattern match at the top level (closes #303) clawbot 2026-10-13 13:50:11 +02:00
  • 5f6455ba17 Refuse a relative file:// storage_url and decode its escapes (closes #299) clawbot 2026-10-13 11:27:59 +02:00
  • 0288735aaf Remove the blob temp file when a backup stops part-way (closes #302) clawbot 2026-10-13 11:14:55 +02:00
  • 35eed79b1a Check --keep-newer-than before the backup starts (closes #307) clawbot 2026-10-13 09:44:44 +02:00
  • 94412d9ef3 Stop remote info counting a non-blob file under blobs/ (closes #295) clawbot 2026-10-13 08:33:27 +02:00
  • 167c0a0746 Make snapshot remove fail for an unknown snapshot ID (closes #293) clawbot 2026-10-13 05:55:22 +02:00
  • 07c957f84b Bind the local index to the s3.* destination too (closes #298) clawbot 2026-10-13 03:48:36 +02:00
  • c9a519c233 Reject a retention duration longer than about 292 years (closes #289) clawbot 2026-10-13 01:51:24 +02:00
  • fa56165fe4 Stop a cancelled backup at once under --skip-errors (closes #286) clawbot 2026-10-08 15:12:07 +02:00
  • 34f61fb408 Make remote nuke delete leftover .partial uploads (closes #281) clawbot 2026-10-08 14:17:20 +02:00
  • 05bf73c48a Never skip a local index error for a directory or symlink (closes #284) clawbot 2026-10-08 12:59:26 +02:00
  • 79a73fa122 Count a file a backup could not store as failed (closes #280) clawbot 2026-10-08 10:12:10 +02:00
  • 0d0368df81 Report unknown blob figures for a snapshot whose manifest cannot be read (closes #272) clawbot 2026-10-08 08:46:11 +02:00
  • c06c4d201b Keep the progress line of a multi-path snapshot within 100% (closes #271) clawbot 2026-10-08 07:29:11 +02:00
  • 70f008a21a Document that --json skips the confirmation prompt (closes #268) clawbot 2026-10-08 04:59:30 +02:00
  • fce253fa39 Give a second snapshot create in the same second its own ID (closes #270) clawbot 2026-10-08 03:29:07 +02:00
  • e459a66099 Stop a backup on a symlink whose target cannot be read (closes #269) clawbot 2026-10-08 00:12:13 +02:00
  • 32c4a46b49 Write rclone uploads under a temporary name and move them into place (closes #266) clawbot 2026-10-07 22:59:26 +02:00
  • b5389a62b5 Exit 130 and say so when a command is interrupted (closes #267) clawbot 2026-10-07 21:59:27 +02:00
  • d87202fb70 Correct doc and help sentences that are false about the code (closes #233) clawbot 2026-10-07 17:59:27 +02:00
  • e161343eac Speed up the vaultik and database package tests (closes #235) clawbot 2026-10-07 17:12:07 +02:00
  • d53202eb86 Fix two misleading messages (closes #240) clawbot 2026-10-07 15:29:07 +02:00
  • 8b22ae8d42 Pass s3.part_size to the multipart uploader (closes #232) clawbot 2026-10-07 14:29:10 +02:00
  • 3fc8a8f2f4 Read the snapshot name using the stored hostname (closes #230) clawbot 2026-10-07 12:12:08 +02:00
  • 7696f83258 Leave remote info orphan figures unknown when a manifest is unreadable (closes #228) clawbot 2026-10-07 10:59:26 +02:00
  • 5d1118d143 Quote a string setting that YAML would read as a number (closes #229) clawbot 2026-10-07 09:29:19 +02:00
  • b57ce2277d Store and compare file mtimes to the nanosecond (closes #226) clawbot 2026-10-07 07:12:12 +02:00
  • 8496404d8b Make the process-wide lock atomic with flock (closes #227) clawbot 2026-10-07 06:12:10 +02:00
  • cdc60c4dfa Write only the document to stdout from snapshot remove --json (closes #251) clawbot 2026-10-07 04:46:13 +02:00
  • 49eed7a3e5 Count each file, byte and upload once in backup statistics (closes #225) clawbot 2026-10-07 02:59:27 +02:00
  • 85d4ef118d Keep command output to the README's stdout and stderr rules (closes #224) clawbot 2026-10-07 01:12:15 +02:00
  • b06f992152 Start the progress reporter once per snapshot, not once per path (closes #253) clawbot 2026-10-07 00:12:10 +02:00
  • 5d685f03ce List the files under a path by path, not by string prefix (closes #223) clawbot 2026-10-06 22:12:16 +02:00
  • f59086c0e5 Return an error, not a panic, on a malformed snapshot database (closes #231) clawbot 2026-10-06 21:16:28 +02:00
  • d276d891da Join the S3 prefix to every key with one slash (closes #222) clawbot 2026-10-06 19:46:09 +02:00
  • 5aa5ba5544 Apply restored owners, modes and times in an order that keeps them (closes #219) clawbot 2026-10-06 18:29:09 +02:00
  • 315b6483b8 Mark github.com/spf13/pflag as a direct dependency in go.mod (closes #246) clawbot 2026-10-06 16:59:26 +02:00
  • 14fc4c9893 Load a config that has no age recipient (closes #221) clawbot 2026-10-06 15:46:13 +02:00
  • 66c80a70e3 Skip files of an unreadable blob under restore --skip-errors (closes #218) clawbot 2026-10-06 14:46:05 +02:00
  • 81f83b29f6 Re-vendor the canonical files from sneak/prompts at dd4027b (closes #213) clawbot 2026-10-06 12:46:13 +02:00
  • c4adb72d80 Run the local index in WAL mode with a busy timeout (closes #217) clawbot 2026-10-06 11:29:18 +02:00
  • 4a167e153a Record the real uid and gid of backed-up files (closes #216) clawbot 2026-10-06 09:46:16 +02:00
  • ea72697992 List a missing file:// destination directory as an error (closes #220) clawbot 2026-10-06 08:46:17 +02:00
  • 713be502bd Reject a duration with characters outside its parts (closes #215) clawbot 2026-10-06 06:12:07 +02:00
  • 35cf985c18 Re-chunk a known file whose chunks no uploaded blob holds (closes #214) clawbot 2026-10-06 04:46:16 +02:00
  • 070090124a Stamp the tag or short commit in a plain docker build (closes #211) clawbot 2026-10-02 10:04:14 +02:00
  • 584444b619 List only after-1.0 work in the README roadmap (closes #208) clawbot 2026-10-01 21:41:41 +02:00
  • b30e79ee45 Run the disk-full restore test again (closes #207) clawbot 2026-10-01 20:24:30 +02:00
  • d886a9026f Merge branch 'main' into next sneak 2026-09-29 03:02:24 +02:00
  • 6e1f499048 Document that migrations are supported and none are added before 1.0 (closes #68) clawbot 2026-09-28 20:21:38 +02:00
  • 15e6506e5d next: integrate accumulated work into main (#114) main sneak 2026-09-23 13:03:02 +02:00
  • d24f5dc33c Adopt the canonical golangci-lint config (closes #90) clawbot 2026-09-23 02:14:40 +02:00
  • eed117fe25 Route direct-stdout command output through internal/ui (closes #149) clawbot 2026-09-22 20:28:50 +02:00
  • dd7a610c23 Mark a snapshot complete only after its metadata export succeeds (closes #177) clawbot 2026-09-22 20:00:41 +02:00
  • 1548c0f933 Correct the security claims in docs and comments, and record the accepted risks (closes #171) clawbot 2026-09-22 19:28:31 +02:00
  • c3bec7d3aa Reject a metadata database truncated to the age header and nonce (closes #152) clawbot 2026-09-22 18:11:57 +02:00
  • 1244c9e48d Bound download expansion and escape control chars on the terminal (closes #164) clawbot 2026-09-22 17:00:35 +02:00
  • 82c51a5337 Validate blob hashes, offsets and lengths from the destination (closes #155) clawbot 2026-09-22 16:11:28 +02:00
  • d88ed64489 Parse the age identity key once and accept every identity in it (closes #165) clawbot 2026-09-22 15:45:27 +02:00
  • bd9656dbd4 Reject a decrypted snapshot database that is not the requested one (closes #156) clawbot 2026-09-22 15:01:02 +02:00
  • 7e611b95db Check blob sizes and the database in shallow verify (closes #169) clawbot 2026-09-22 14:28:44 +02:00
  • 4f27608560 Add negative and boundary tests for blobgen and types (closes #170) clawbot 2026-09-22 14:28:34 +02:00
  • ae6aaaa388 Wait for the interrupted operation to clean up before exit (closes #159) clawbot 2026-09-22 14:00:49 +02:00
  • f788668287 Remove the unused crypto path and write the blob-ID hash step once (closes #151) clawbot 2026-09-22 13:46:02 +02:00
  • 238ce3985f Scrub example config of real credentials and internal hosts (closes #172) clawbot 2026-09-22 13:45:52 +02:00
  • 548a7ae156 Give the local index and its export copy an explicit 0600 mode (closes #168) clawbot 2026-09-22 13:12:07 +02:00
  • 3a58377127 Parse age_recipients at config load and never echo the entry (closes #153) clawbot 2026-09-22 13:01:00 +02:00
  • a6434de57f Open the downloaded snapshot database read-only, on a private temp dir (closes #162) clawbot 2026-09-22 12:45:53 +02:00
  • b4654f8e52 Abort the run when packing fails, even under --skip-errors (closes #161) clawbot 2026-09-22 12:28:44 +02:00
  • 39aef1c47c Stop config set echoing secrets; reject credential-bearing storage URLs (closes #166) clawbot 2026-09-22 12:28:32 +02:00
  • 96ebcd40d7 Reconcile purge against remote by hashed key, not human ID (closes #160) clawbot 2026-09-22 12:11:49 +02:00
  • d9f0220f94 Restore files at 0600 and make the blob hash check unskippable (closes #163) clawbot 2026-09-22 11:45:52 +02:00
  • 4c83e82543 Reject a blob_size_limit below the largest possible chunk (closes #167) clawbot 2026-09-22 11:45:41 +02:00
  • 86361c8b50 Fail closed on unreadable manifests instead of losing blobs (closes #157) clawbot 2026-09-22 11:45:30 +02:00
  • d77663d039 Default a scheme-less s3.* endpoint to TLS (closes #158) clawbot 2026-09-22 11:11:34 +02:00
  • 3abe9cbd9e Scope the PID lock to mutating commands (closes #150) clawbot 2026-09-22 11:01:29 +02:00
  • 76a6917a35 Keep restore writes inside the target directory (closes #154) clawbot 2026-09-22 11:01:01 +02:00
  • 38ebfd843a Trust only uploaded blobs for deduplication (closes #148) clawbot 2026-09-22 10:29:21 +02:00
  • 6b7517a4dc Add fault-injection tests for interruption and corruption (closes #72) clawbot 2026-09-22 09:46:46 +02:00
  • 994e5de613 Quiet only the stdout UI under --json, not the log level (closes #112) clawbot 2026-09-22 09:05:52 +02:00
  • 42f4e648d7 Reconcile docs with code across the accuracy-sweep items (closes #74) clawbot 2026-09-22 09:05:36 +02:00
  • 343129f891 Accept a remote key for restore and verify, and document it (closes #124) clawbot 2026-09-22 01:01:25 +02:00
  • a50e3fa038 Add tests for internal/storage: URL parsing, backends, shared conformance suite (closes #66) clawbot 2026-09-22 00:58:27 +02:00
  • 6fcd8e1668 Stamp Docker image version from the host; flush profiles on error exit (closes #75) clawbot 2026-09-21 22:01:05 +02:00
  • aab6a87f8c Reconcile the schema/migration docs with the code (closes #68) clawbot 2026-09-21 21:58:37 +02:00
  • c355ef4d25 Report a prune count that could not be read as unknown, not 0 (closes #96) clawbot 2026-09-21 21:41:57 +02:00
  • 5927e1aa3d Write file:// blobs atomically via temp file and rename (closes #130) clawbot 2026-09-21 21:24:42 +02:00
  • 9ca962969a Map s3 not-found to storage.ErrNotFound in Get and Stat (closes #129) clawbot 2026-09-21 21:07:35 +02:00
  • 89ebfc78e2 Use one duration parser and fix the --older-than months example (closes #123) clawbot 2026-09-21 20:58:30 +02:00
  • 07ef3a1c78 Drop the lint-guard shell scanner, keep the Dockerfile.lint checks (closes #121) clawbot 2026-09-21 20:41:33 +02:00
  • c423d13191 Hash the plaintext, not the encrypted bytes, in verify --deep (closes #131) clawbot 2026-09-21 20:24:37 +02:00
  • 75a10d3a22 Hash-verify the Go toolchain in the release workflow (closes #105) clawbot 2026-09-21 19:48:52 +02:00
  • 3d56dd7eb0 VACUUM snapshot metadata through the sqlite driver, not a CLI (closes #120) clawbot 2026-09-21 19:41:28 +02:00
  • bdce350041 Delete dead code and stale fixtures, fix config set reindent (closes #70) clawbot 2026-09-21 19:25:01 +02:00
  • 753bc3ef60 Correct remote layout and privacy docs for hashed snapshot keys (closes #67) clawbot 2026-09-21 19:24:44 +02:00