2026-03-24 - 2026-09-24

Overview

64 Active Pull Requests
83 Active Issues
Excluding merges, 2 authors have pushed 55 commits to main and 152 commits to all branches. On main, 174 files have changed and there have been 18200 additions and 7977 deletions.

63 Pull requests merged by 1 user

Merged #114 next: integrate accumulated work into main 2026-09-23 13:03:03 +02:00

Merged #202 Vendor the canonical .golangci.yml (gomodguard_v2) 2026-09-23 02:14:41 +02:00

Merged #201 Route direct-stdout command output through internal/ui (closes #149) 2026-09-22 20:28:51 +02:00

Merged #200 Mark a snapshot complete only after its metadata export succeeds 2026-09-22 20:00:41 +02:00

Merged #199 Correct the security claims in docs and comments, and record the accepted risks 2026-09-22 19:28:32 +02:00

Merged #198 Reject a metadata database truncated to the age header and nonce 2026-09-22 18:11:58 +02:00

Merged #197 Bound download expansion and escape control chars on the terminal (closes #164) 2026-09-22 17:00:36 +02:00

Merged #195 Validate blob hashes, offsets and lengths read from the destination 2026-09-22 16:11:29 +02:00

Merged #196 Parse the age identity key once and accept every identity in it 2026-09-22 15:45:28 +02:00

Merged #194 Reject a decrypted snapshot database that is not the requested one 2026-09-22 15:01:02 +02:00

Merged #193 Check blob sizes and the database in shallow verify 2026-09-22 14:28:45 +02:00

Merged #192 Add negative and boundary tests for blobgen and types (closes #170) 2026-09-22 14:28:35 +02:00

Merged #189 Wait for the interrupted operation to clean up before exit 2026-09-22 14:00:50 +02:00

Merged #191 Remove the unused crypto path and write the blob-ID hash step once 2026-09-22 13:46:02 +02:00

Merged #190 Scrub example config of real credentials and internal hosts 2026-09-22 13:45:52 +02:00

Merged #188 Give the local index and its export copy an explicit 0600 mode 2026-09-22 13:12:07 +02:00

Merged #187 Parse age_recipients at config load and never echo the entry 2026-09-22 13:01:01 +02:00

Merged #186 Open the downloaded snapshot database read-only, on a private temp dir 2026-09-22 12:45:54 +02:00

Merged #185 Abort the run when packing fails, even under --skip-errors 2026-09-22 12:28:44 +02:00

Merged #184 Stop config set echoing secrets; reject credential-bearing storage URLs 2026-09-22 12:28:32 +02:00

Merged #183 Reconcile purge against remote by hashed key, not human ID 2026-09-22 12:11:49 +02:00

Merged #182 Restore files at 0600 and make the blob hash check unskippable (closes #163) 2026-09-22 11:45:53 +02:00

Merged #181 Reject a blob_size_limit below the largest possible chunk (closes #167) 2026-09-22 11:45:41 +02:00

Merged #180 Fail closed on unreadable manifests instead of losing blobs 2026-09-22 11:45:30 +02:00

Merged #178 Default a scheme-less s3.* endpoint to TLS 2026-09-22 11:11:34 +02:00

Merged #179 Scope the PID lock to mutating commands 2026-09-22 11:01:29 +02:00

Merged #176 Keep restore writes inside the target directory 2026-09-22 11:01:02 +02:00

Merged #175 Trust only uploaded blobs for deduplication (closes #148) 2026-09-22 10:29:22 +02:00

Merged #173 Add fault-injection tests for interruption and corruption (closes #72) 2026-09-22 09:46:47 +02:00

Merged #145 Quiet only the stdout UI under --json, not the log level (closes #112) 2026-09-22 09:05:53 +02:00

Merged #174 Reconcile docs with code across the accuracy-sweep items (closes #74) 2026-09-22 09:05:37 +02:00

Merged #147 Accept a remote key for restore and verify, and document it (closes #124) 2026-09-22 01:01:27 +02:00

Merged #144 Add tests for internal/storage URL parsing and the file backend (closes #66) 2026-09-22 00:58:27 +02:00

Merged #141 Stamp Docker image version from the host; flush profiles on error exit (closes #75) 2026-09-21 22:01:06 +02:00

Merged #146 Reconcile the schema/migration docs with the code (closes #68) 2026-09-21 21:58:37 +02:00

Merged #139 Report a prune count that could not be read as unknown, not 0 (closes #96) 2026-09-21 21:41:58 +02:00

Merged #143 Write file:// blobs atomically via temp file and rename (closes #130) 2026-09-21 21:24:42 +02:00

Merged #142 Map s3 not-found to storage.ErrNotFound in Get and Stat (closes #129) 2026-09-21 21:07:36 +02:00

Merged #140 Use one duration parser and fix the --older-than months example (closes #123) 2026-09-21 20:58:31 +02:00

Merged #135 Drop the lint-guard shell scanner, keep the Dockerfile.lint checks (closes #121) 2026-09-21 20:41:34 +02:00

Merged #138 Hash the plaintext, not the encrypted bytes, in verify --deep (closes #131) 2026-09-21 20:24:37 +02:00

Merged #132 Hash-verify the Go toolchain in the release workflow (closes #105) 2026-09-21 19:48:53 +02:00

Merged #136 VACUUM snapshot metadata through the sqlite driver, not a CLI (closes #120) 2026-09-21 19:41:29 +02:00

Merged #134 Delete dead code and stale fixtures, fix config set reindent 2026-09-21 19:25:01 +02:00

Merged #128 Correct remote layout and privacy docs for hashed snapshot keys (closes #67) 2026-09-21 19:24:45 +02:00

Merged #127 Trigger CI on next, not only main 2026-09-21 14:56:00 +02:00

Merged #126 Correct --cron flag help to name warnings as unsuppressed (closes #87) 2026-09-21 14:55:46 +02:00

Merged #111 Gate prune's local-cleanup prose on --json, and give make build a rule 2026-08-09 19:53:47 +02:00

Merged #109 Suppress the startup banner under --json (closes #106) 2026-08-09 19:18:36 +02:00

Merged #107 Send diagnostics to stderr and stop dropping log attributes (closes #82, closes #97) 2026-08-09 18:43:56 +02:00

Merged #104 Make the tagged-release path work on Gitea (closes #65) 2026-08-09 18:03:18 +02:00

Merged #102 Isolate the lint cache per worktree and context-gate the native lint path 2026-08-09 17:15:07 +02:00

Merged #98 Make the test gate unfakeable and stop test-integration lying (closes #93) 2026-08-09 16:29:27 +02:00

Merged #95 Record the stale-branch triage and advance TODO.md (closes #71) 2026-08-09 10:23:30 +02:00

Merged #92 Make a missing CHECK_EPOCH fail the build instead of faking it (closes #91) 2026-08-09 10:09:27 +02:00

Merged #89 Make script/cibuild unable to report an unearned green (closes #85) 2026-08-09 09:37:55 +02:00

Merged #86 Correct the Vaultik.UI doc comment about --cron (closes #84) 2026-08-09 07:43:46 +02:00

Merged #83 List remote snapshots without requiring the private key (closes #64) 2026-08-09 07:34:15 +02:00

Merged #79 Run the linter at the pinned version locally too (closes #78) 2026-08-09 04:52:22 +02:00

Merged #77 Finish the lint remediation: script/cibuild exits 0 (closes #61) 2026-08-09 04:25:11 +02:00

Merged #62 Update golangci-lint to v2.12.2 with canonical config 2026-08-07 23:22:49 +02:00

Merged #60 Add .editorconfig (refs #59) 2026-08-07 17:46:19 +02:00

Merged #58 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-30 21:41:12 +02:00

1 Pull request proposed by 1 user

Proposed #203 next: integrate accumulated work into main 2026-09-23 13:17:16 +02:00

80 Issues closed from 1 user

Closed #177 Interrupted metadata export leaves a snapshot silently treated as complete but unrestorable 2026-09-23 13:03:03 +02:00

Closed #113 Run all linting in Docker via Dockerfile.lint + script/lint 2026-09-23 13:03:03 +02:00

Closed #155 Check blob hashes, offsets and lengths read from the destination before using them 2026-09-23 13:03:03 +02:00

Closed #156 Restore and deep verify must check the decrypted database is the snapshot that was asked for 2026-09-23 13:03:03 +02:00

Closed #159 Ctrl-C during restore exits before cleanup, leaving decrypted data in the temp directory 2026-09-23 13:03:03 +02:00

Closed #90 golangci-lint deprecation: gomodguard replaced by gomodguard_v2 2026-09-23 02:14:47 +02:00

Closed #119 Review toward 1.0: identify and file all next steps 2026-09-23 01:49:09 +02:00

Closed #73 Security review of the crypto and blob-generation seams 2026-09-23 01:49:08 +02:00

Closed #101 REPO_POLICIES.md mandates a 30s test timeout that is too tight to be safe 2026-09-23 01:43:48 +02:00

Closed #76 Decide on renaming internal/log, internal/crypto and internal/types (revive var-naming) 2026-09-23 01:43:48 +02:00

Closed #149 Route direct-stdout command output through internal/ui 2026-09-22 20:28:51 +02:00

Closed #171 Correct the security claims in the docs and comments, and write down the accepted risks 2026-09-22 19:28:32 +02:00

Closed #152 A stream cut right after the age header reads as valid and empty, and restore then reports success 2026-09-22 18:11:58 +02:00

Closed #164 Bound what a downloaded object may expand to, and escape control characters from the destination before printing 2026-09-22 17:00:36 +02:00

Closed #165 Parse the age private key once, accept every identity in it, and stop showing it typed on the command line 2026-09-22 15:45:28 +02:00

Closed #169 Shallow snapshot verify ignores object sizes and reports more than it checked 2026-09-22 14:28:45 +02:00

Closed #170 Negative and boundary tests for internal/blobgen and internal/types (and internal/crypto if it survives) 2026-09-22 14:28:35 +02:00

Closed #151 Remove the unused second encryption path and unused secret types; write the blob-ID hash step once 2026-09-22 13:46:02 +02:00

Closed #172 config.example.yml carries a real-looking S3 key pair and internal host names 2026-09-22 13:45:52 +02:00

Closed #168 Give the local index and its export copy an explicit 0600 mode 2026-09-22 13:12:07 +02:00

Closed #153 Parse age_recipients when the config loads, and never print the entry in an error 2026-09-22 13:01:02 +02:00

Closed #162 Open the downloaded snapshot database read-only, keep it in a private temp directory, remove it on every path 2026-09-22 12:45:54 +02:00

Closed #161 Under --skip-errors a packing failure can record a file that cannot be restored 2026-09-22 12:28:44 +02:00

Closed #166 config set echoes secrets and keeps a loose file mode; a storage_url carrying credentials is accepted and echoed 2026-09-22 12:28:32 +02:00

Closed #160 snapshot purge deletes every local snapshot record and then purges nothing 2026-09-22 12:11:49 +02:00

Closed #163 Restore: create files 0600, remove partial files, and make the blob hash check impossible to skip 2026-09-22 11:45:53 +02:00

Closed #167 Reject a blob_size_limit below the largest possible chunk 2026-09-22 11:45:42 +02:00

Closed #157 Prune must delete nothing when a manifest cannot be read, and a manifest must never omit a blob 2026-09-22 11:45:30 +02:00

Closed #158 s3.use_ssl is documented as defaulting to true but the code defaults to plain HTTP 2026-09-22 11:11:34 +02:00

Closed #150 Scope the process-wide PID lock to mutating commands 2026-09-22 11:01:30 +02:00

Closed #154 Restore must keep every write inside the target directory 2026-09-22 11:01:02 +02:00

Closed #148 Interrupted blob upload leaves committed chunk rows; a retry silently produces an unrestorable snapshot 2026-09-22 10:29:22 +02:00

Closed #72 Fault-injection tests: prove backups survive interruption and corruption 2026-09-22 09:46:47 +02:00

Closed #112 Under --json, prune deletes local index rows with no signal in either stream 2026-09-22 09:05:53 +02:00

Closed #74 Documentation accuracy sweep: undocumented behavior and stale claims 2026-09-22 09:05:37 +02:00

Closed #137 S3 test credentials for ber1app1 remain in git history after the fixture was deleted 2026-09-22 08:39:46 +02:00

Closed #124 Document and test restoring on another machine 2026-09-22 01:01:27 +02:00

Closed #66 Add tests for internal/storage — the backend abstraction has zero coverage 2026-09-22 00:58:27 +02:00

Closed #75 Docker builds report unknown version, and profiling output is truncated on error 2026-09-21 22:01:06 +02:00

Closed #68 Reconcile the schema/migration story across code and four documents 2026-09-21 21:58:37 +02:00

Closed #96 getTableCount errors are discarded, so a failed query reports as a count of zero 2026-09-21 21:41:58 +02:00

Closed #130 Interrupted blob upload leaves a partial object the next run trusts as complete (file:// backend) 2026-09-21 21:24:43 +02:00

Closed #129 S3Storer.Get/Stat return the raw SDK error, not storage.ErrNotFound 2026-09-21 21:07:36 +02:00

Closed #123 Two duration parsers, and the documented --older-than example deletes almost every snapshot 2026-09-21 20:58:31 +02:00

Closed #121 Rework the lint-guard shell scanner in cmd/vaultik/lintdocker_test.go (second-review findings on the milestone PR) 2026-09-21 20:41:34 +02:00

Closed #131 verify --deep hashes encrypted bytes but compares to the plaintext blob ID, so it fails on healthy snapshots 2026-09-21 20:24:37 +02:00

Closed #105 The Go toolchain in the release workflow is version-pinned but not hash-verified 2026-09-21 19:48:53 +02:00

Closed #120 snapshot create fails on any host without the sqlite3 CLI: VACUUM shells out instead of using the driver 2026-09-21 19:41:29 +02:00

Closed #70 Delete dead code and stale fixtures before tagging 2026-09-21 19:25:01 +02:00

Closed #67 Docs misstate the remote layout and understate the privacy guarantee 2026-09-21 19:24:45 +02:00

Closed #122 CI never runs on next or on PRs targeting it 2026-09-21 14:56:00 +02:00

Closed #87 --cron flag help text misstates what it suppresses 2026-09-21 14:55:46 +02:00

Closed #118 Dockerfile.lint citation names an lll finding where the PR records revive 2026-09-05 11:32:57 +02:00

Closed #117 Guard scanner: assertLinterIsContainerised accepts a || host-linter fallback 2026-09-05 11:32:57 +02:00

Closed #116 Guard scanner: shellCode silently discards the rest of a file on an unterminated here-document 2026-09-05 11:32:57 +02:00

Closed #115 Host-lint guard scanner goes blind on a phantom heredoc and accepts a || host fallback 2026-09-03 23:56:36 +02:00

Closed #103 Two fail-closed defects in the new lint isolation 2026-08-11 13:55:41 +02:00

Closed #88 golangci-lint cache is shared across worktrees, so lint results can come from another tree 2026-08-11 13:55:40 +02:00

Closed #110 make build exits 0 without building anything 2026-08-09 19:53:48 +02:00

Closed #108 pruneLocalSnapshots writes prose to stdout unconditionally, so prune --json | jq still fails after the banner fix 2026-08-09 19:53:48 +02:00

Closed #106 Startup banner goes to stdout and --json does not suppress it, so every --json document is preceded by three lines of prose 2026-08-09 19:18:37 +02:00

Closed #97 TTYHandler silently discards log.With attributes, so diagnostics differ between terminal and CI 2026-08-09 18:43:56 +02:00

Closed #82 Logger writes to stdout, so any warning corrupts --json output 2026-08-09 18:43:56 +02:00

Closed #65 Make the tagged-release path actually work on Gitea 2026-08-09 18:03:18 +02:00

Closed #99 script/lint shares one golangci-lint cache across worktrees, so one tree's findings are served for another 2026-08-09 17:15:07 +02:00

Closed #80 Harden the pinned-linter gate: context-gate the native path, and make bootstrap yield a working machine 2026-08-09 17:15:07 +02:00

Closed #93 script/test omits -count=1, so Go's test cache can satisfy the gate without running tests 2026-08-09 16:29:27 +02:00

Closed #69 make test-integration is a silent no-op — no file carries the integration build tag 2026-08-09 16:29:27 +02:00

Closed #81 The unencrypted manifest publishes backup timestamps and a per-blob size profile 2026-08-09 16:10:17 +02:00

Closed #100 golangci-lint warns on every run: gomodguard is deprecated, replaced by gomodguard_v2 2026-08-09 12:13:33 +02:00

Closed #71 Triage the 15 stale remote branches; two may contain unlanded fixes 2026-08-09 10:23:30 +02:00

Closed #91 Adopt the remaining upstream CHECK_EPOCH hardening (expanded form, unset guard, unique epoch, script/docker) 2026-08-09 10:09:27 +02:00

Closed #85 script/cibuild reports a green it did not earn when the tree is unchanged 2026-08-09 09:37:55 +02:00

Closed #84 Vaultik.UI doc comment misdescribes how --cron suppresses output 2026-08-09 07:43:46 +02:00

Closed #64 snapshot list must list remote snapshots without requiring the private key 2026-08-09 07:34:15 +02:00

Closed #78 make lint does not use the pinned linter version, so local green does not mean CI green 2026-08-09 04:52:22 +02:00

Closed #59 Add .editorconfig and the standard .golangci.yml 2026-08-09 04:25:13 +02:00

Closed #61 Remediate lint findings surfaced by the standard .golangci.yml 2026-08-09 04:25:11 +02:00

Closed #57 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-30 21:41:13 +02:00

Closed #3 Daemon mode not implemented 2026-03-26 14:30:47 +01:00

82 Issues created by 1 user

Opened #57 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-25 02:22:03 +01:00

Opened #59 Add .editorconfig and the standard .golangci.yml 2026-07-26 20:12:23 +02:00

Opened #61 Remediate lint findings surfaced by the standard .golangci.yml 2026-08-07 18:29:24 +02:00

Opened #64 snapshot list must list remote snapshots without requiring the private key 2026-08-09 03:41:14 +02:00

Opened #65 Make the tagged-release path actually work on Gitea 2026-08-09 03:41:28 +02:00

Opened #66 Add tests for internal/storage — the backend abstraction has zero coverage 2026-08-09 03:41:40 +02:00

Opened #67 Docs misstate the remote layout and understate the privacy guarantee 2026-08-09 03:41:53 +02:00

Opened #68 Reconcile the schema/migration story across code and four documents 2026-08-09 03:42:24 +02:00

Opened #69 make test-integration is a silent no-op — no file carries the integration build tag 2026-08-09 03:42:34 +02:00

Opened #70 Delete dead code and stale fixtures before tagging 2026-08-09 03:42:52 +02:00

Opened #71 Triage the 15 stale remote branches; two may contain unlanded fixes 2026-08-09 03:43:10 +02:00

Opened #72 Fault-injection tests: prove backups survive interruption and corruption 2026-08-09 03:43:30 +02:00

Opened #73 Security review of the crypto and blob-generation seams 2026-08-09 03:43:47 +02:00

Opened #74 Documentation accuracy sweep: undocumented behavior and stale claims 2026-08-09 03:44:09 +02:00

Opened #75 Docker builds report unknown version, and profiling output is truncated on error 2026-08-09 03:44:22 +02:00

Opened #76 Decide on renaming internal/log, internal/crypto and internal/types (revive var-naming) 2026-08-09 03:45:00 +02:00

Opened #78 make lint does not use the pinned linter version, so local green does not mean CI green 2026-08-09 03:59:06 +02:00

Opened #80 Harden the pinned-linter gate: context-gate the native path, and make bootstrap yield a working machine 2026-08-09 04:52:49 +02:00

Opened #81 The unencrypted manifest publishes backup timestamps and a per-blob size profile 2026-08-09 04:57:02 +02:00

Opened #82 Logger writes to stdout, so any warning corrupts --json output 2026-08-09 05:16:09 +02:00

Opened #84 Vaultik.UI doc comment misdescribes how --cron suppresses output 2026-08-09 07:25:17 +02:00

Opened #85 script/cibuild reports a green it did not earn when the tree is unchanged 2026-08-09 07:41:30 +02:00

Opened #87 --cron flag help text misstates what it suppresses 2026-08-09 07:44:02 +02:00

Opened #88 golangci-lint cache is shared across worktrees, so lint results can come from another tree 2026-08-09 08:04:05 +02:00

Opened #90 golangci-lint deprecation: gomodguard replaced by gomodguard_v2 2026-08-09 08:17:48 +02:00

Opened #91 Adopt the remaining upstream CHECK_EPOCH hardening (expanded form, unset guard, unique epoch, script/docker) 2026-08-09 08:45:51 +02:00

Opened #93 script/test omits -count=1, so Go's test cache can satisfy the gate without running tests 2026-08-09 10:09:55 +02:00

Opened #94 Decide whether feature/daemon-mode is 1.0 scope 2026-08-09 10:13:00 +02:00

Opened #96 getTableCount errors are discarded, so a failed query reports as a count of zero 2026-08-09 10:23:50 +02:00

Opened #97 TTYHandler silently discards log.With attributes, so diagnostics differ between terminal and CI 2026-08-09 11:55:49 +02:00

Opened #99 script/lint shares one golangci-lint cache across worktrees, so one tree's findings are served for another 2026-08-09 12:12:09 +02:00

Opened #100 golangci-lint warns on every run: gomodguard is deprecated, replaced by gomodguard_v2 2026-08-09 12:12:16 +02:00

Opened #101 REPO_POLICIES.md mandates a 30s test timeout that is too tight to be safe 2026-08-09 16:13:06 +02:00

Opened #103 Two fail-closed defects in the new lint isolation 2026-08-09 17:15:23 +02:00

Opened #105 The Go toolchain in the release workflow is version-pinned but not hash-verified 2026-08-09 18:03:39 +02:00

Opened #106 Startup banner goes to stdout and --json does not suppress it, so every --json document is preceded by three lines of prose 2026-08-09 18:20:13 +02:00

Opened #108 pruneLocalSnapshots writes prose to stdout unconditionally, so prune --json | jq still fails after the banner fix 2026-08-09 19:03:16 +02:00

Opened #110 make build exits 0 without building anything 2026-08-09 19:19:10 +02:00

Opened #112 Under --json, prune deletes local index rows with no signal in either stream 2026-08-09 19:54:26 +02:00

Opened #113 Run all linting in Docker via Dockerfile.lint + script/lint 2026-08-10 13:14:26 +02:00

Opened #115 Host-lint guard scanner goes blind on a phantom heredoc and accepts a || host fallback 2026-08-11 13:54:29 +02:00

Opened #116 Guard scanner: shellCode silently discards the rest of a file on an unterminated here-document 2026-09-03 23:54:56 +02:00

Opened #117 Guard scanner: assertLinterIsContainerised accepts a || host-linter fallback 2026-09-03 23:55:18 +02:00

Opened #118 Dockerfile.lint citation names an lll finding where the PR records revive 2026-09-03 23:55:19 +02:00

Opened #119 Review toward 1.0: identify and file all next steps 2026-09-21 09:13:40 +02:00

Opened #120 snapshot create fails on any host without the sqlite3 CLI: VACUUM shells out instead of using the driver 2026-09-21 09:19:43 +02:00

Opened #121 Rework the lint-guard shell scanner in cmd/vaultik/lintdocker_test.go (second-review findings on the milestone PR) 2026-09-21 09:19:43 +02:00

Opened #122 CI never runs on next or on PRs targeting it 2026-09-21 09:19:43 +02:00

Opened #123 Two duration parsers, and the documented --older-than example deletes almost every snapshot 2026-09-21 09:19:44 +02:00

Opened #124 Document and test restoring on another machine 2026-09-21 09:19:44 +02:00

Opened #125 Decide the 1.0.0 release scope and cut the tag 2026-09-21 09:19:44 +02:00

Opened #129 S3Storer.Get/Stat return the raw SDK error, not storage.ErrNotFound 2026-09-21 09:41:28 +02:00

Opened #130 Interrupted blob upload leaves a partial object the next run trusts as complete (file:// backend) 2026-09-21 09:43:56 +02:00

Opened #131 verify --deep hashes encrypted bytes but compares to the plaintext blob ID, so it fails on healthy snapshots 2026-09-21 09:44:04 +02:00

Opened #133 CI runner mac-studio fails every job before the first step (docker network pools exhausted, disk full) 2026-09-21 14:58:26 +02:00

Opened #137 S3 test credentials for ber1app1 remain in git history after the fixture was deleted 2026-09-21 19:25:41 +02:00

Opened #148 Interrupted blob upload leaves committed chunk rows; a retry silently produces an unrestorable snapshot 2026-09-21 22:02:05 +02:00

Opened #149 Route direct-stdout command output through internal/ui 2026-09-21 22:03:28 +02:00

Opened #150 Scope the process-wide PID lock to mutating commands 2026-09-21 22:03:35 +02:00

Opened #151 Remove the unused second encryption path and unused secret types; write the blob-ID hash step once 2026-09-22 00:54:59 +02:00

Opened #152 A stream cut right after the age header reads as valid and empty, and restore then reports success 2026-09-22 00:54:59 +02:00

Opened #153 Parse age_recipients when the config loads, and never print the entry in an error 2026-09-22 00:54:59 +02:00

Opened #154 Restore must keep every write inside the target directory 2026-09-22 00:55:13 +02:00

Opened #157 Prune must delete nothing when a manifest cannot be read, and a manifest must never omit a blob 2026-09-22 00:55:13 +02:00

Opened #155 Check blob hashes, offsets and lengths read from the destination before using them 2026-09-22 00:55:13 +02:00

Opened #156 Restore and deep verify must check the decrypted database is the snapshot that was asked for 2026-09-22 00:55:13 +02:00

Opened #165 Parse the age private key once, accept every identity in it, and stop showing it typed on the command line 2026-09-22 00:55:14 +02:00

Opened #172 config.example.yml carries a real-looking S3 key pair and internal host names 2026-09-22 00:55:14 +02:00

Opened #171 Correct the security claims in the docs and comments, and write down the accepted risks 2026-09-22 00:55:14 +02:00

Opened #170 Negative and boundary tests for internal/blobgen and internal/types (and internal/crypto if it survives) 2026-09-22 00:55:14 +02:00

Opened #169 Shallow snapshot verify ignores object sizes and reports more than it checked 2026-09-22 00:55:14 +02:00

Opened #168 Give the local index and its export copy an explicit 0600 mode 2026-09-22 00:55:14 +02:00

Opened #167 Reject a blob_size_limit below the largest possible chunk 2026-09-22 00:55:14 +02:00

Opened #166 config set echoes secrets and keeps a loose file mode; a storage_url carrying credentials is accepted and echoed 2026-09-22 00:55:14 +02:00

Opened #164 Bound what a downloaded object may expand to, and escape control characters from the destination before printing 2026-09-22 00:55:14 +02:00

Opened #163 Restore: create files 0600, remove partial files, and make the blob hash check impossible to skip 2026-09-22 00:55:14 +02:00

Opened #162 Open the downloaded snapshot database read-only, keep it in a private temp directory, remove it on every path 2026-09-22 00:55:14 +02:00

Opened #161 Under --skip-errors a packing failure can record a file that cannot be restored 2026-09-22 00:55:14 +02:00

Opened #160 snapshot purge deletes every local snapshot record and then purges nothing 2026-09-22 00:55:14 +02:00

Opened #159 Ctrl-C during restore exits before cleanup, leaving decrypted data in the temp directory 2026-09-22 00:55:14 +02:00

Opened #158 s3.use_ssl is documented as defaulting to true but the code defaults to plain HTTP 2026-09-22 00:55:14 +02:00

Opened #177 Interrupted metadata export leaves a snapshot silently treated as complete but unrestorable 2026-09-22 09:37:46 +02:00