2026-02-12 - 2026-08-12

Overview

37 Active Pull Requests
71 Active Issues
Excluding merges, 2 authors have pushed 55 commits to main and 131 commits to all branches. On main, 174 files have changed and there have been 18239 additions and 8016 deletions.

36 Pull requests merged by 1 user

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

Merged #51 feat: per-name purge filtering for snapshot purge 2026-03-22 00:50:25 +01:00

Merged #50 feat: concurrent manifest downloads in ListSnapshots 2026-03-22 00:41:40 +01:00

Merged #45 fix: replace O(n²) duplicate detection with map-based O(1) lookups 2026-03-22 00:40:57 +01:00

Merged #55 Remove all ctime usage and storage 2026-03-20 03:12:47 +01:00

Merged #46 schema: add ON DELETE CASCADE to snapshot_files.file_id and snapshot_blobs.blob_id FKs 2026-03-19 14:03:40 +01:00

Merged #44 fix: add ON DELETE CASCADE to uploads FK on snapshot_id 2026-03-19 13:59:27 +01:00

Merged #53 Rename blob_fetch_stub.go to blob_fetch.go 2026-03-19 09:33:36 +01:00

Merged #49 fix: remove destructive sync from ListSnapshots 2026-03-19 09:32:53 +01:00

Merged #41 Refactor: break up oversized methods into smaller descriptive helpers 2026-03-19 00:23:45 +01:00

Merged #39 fix: verify blob hash after download and decryption (closes #5) 2026-03-19 00:21:11 +01:00

Merged #42 Add make check target and CI workflow 2026-03-17 12:39:44 +01:00

Merged #23 feat: add progress bar to restore operation 2026-03-17 11:18:19 +01:00

Merged #37 feat: implement --prune flag on snapshot create (closes #4) 2026-02-20 11:22:12 +01:00

Merged #22 fix: track and report file restore failures 2026-02-20 11:19:41 +01:00

Merged #30 Return errors from deleteSnapshotFromLocalDB instead of swallowing them (closes #25) 2026-02-20 11:18:31 +01:00

Merged #34 Disk-based blob cache with LRU eviction during restore (closes #29) 2026-02-20 11:16:16 +01:00

Merged #36 Add CompressStream double-close regression test (closes #35) 2026-02-20 11:12:52 +01:00

Merged #31 Use v.Stdout/v.Stdin instead of os.Stdout for all user-facing output (closes #26) 2026-02-20 11:07:53 +01:00

Merged #32 Validate table name against allowlist in getTableCount (closes #27) 2026-02-16 06:21:41 +01:00

Merged #33 Prevent double-close of blobgen.Writer in CompressStream (closes #28) 2026-02-16 06:04:33 +01:00

1 Pull request proposed by 1 user

Proposed #114 next: accumulated work for the upcoming release 2026-08-10 14:57:01 +02:00

53 Issues closed from 2 users

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

Closed #9 PurgeSnapshots operates across all snapshot names, no per-name filtering 2026-03-22 01:36:55 +01:00

Closed #14 Manifest is unencrypted — leaks blob count and sizes 2026-03-22 00:51:42 +01:00

Closed #17 No database migration support — schema changes require full re-backup 2026-03-22 00:50:56 +01:00

Closed #43 Add branch protection to main branch 2026-03-22 00:50:38 +01:00

Closed #8 ListSnapshots downloads manifests synchronously for unknown remote snapshots 2026-03-22 00:41:41 +01:00

Closed #12 RemoveAllSnapshots has O(n²) duplicate detection for snapshot IDs 2026-03-22 00:40:58 +01:00

Closed #10 syncWithRemote deletes snapshot records without cleaning up related tables 2026-03-20 06:57:51 +01:00

Closed #54 Remove all ctime usage and storage 2026-03-20 03:12:47 +01:00

Closed #19 snapshot_files FK on file_id lacks ON DELETE CASCADE 2026-03-19 14:03:41 +01:00

Closed #18 uploads table FK on snapshot_id lacks ON DELETE CASCADE 2026-03-19 13:59:29 +01:00

Closed #13 ctime is in schema and model but verify scanner populates it correctly 2026-03-19 13:59:28 +01:00

Closed #52 Rename blob_fetch_stub.go to blob_fetch.go 2026-03-19 09:33:36 +01:00

Closed #15 ListSnapshots has destructive side effect: deletes local snapshots not in remote 2026-03-19 09:32:54 +01:00

Closed #1 find bugs or incomplete functionality for 1.0 2026-03-19 00:23:46 +01:00

Closed #40 Refactor: break up oversized methods (>100-150 lines) 2026-03-19 00:23:46 +01:00

Closed #5 Restore: downloaded blob hash is not verified 2026-03-19 00:21:11 +01:00

Closed #16 PruneBlobs has O(n²) duplicate snapshot ID detection 2026-03-17 21:37:46 +01:00

Closed #11 Restore: blobCache grows unboundedly, will OOM with large backups 2026-03-17 13:47:06 +01:00

Closed #20 Restore has no progress bar for file restoration 2026-03-17 11:18:19 +01:00

Closed #6 deleteSnapshotFromLocalDB silently ignores all errors 2026-02-20 11:23:14 +01:00

Closed #4 --prune flag on snapshot create is a TODO 2026-02-20 11:22:12 +01:00

Closed #21 Restore silently continues when individual file restoration fails 2026-02-20 11:19:41 +01:00

Closed #25 deleteSnapshotFromLocalDB silently swallows all errors and always returns nil 2026-02-20 11:18:31 +01:00

Closed #7 getTableCount uses fmt.Sprintf for SQL table name — potential SQL injection 2026-02-20 11:17:48 +01:00

Closed #35 Add regression test for CompressStream double-close fix (#28) 2026-02-20 11:12:52 +01:00

Closed #26 Multiple methods write to os.Stdout instead of v.Stdout, breaking testability 2026-02-20 11:07:53 +01:00

Closed #29 Unbounded blob cache during restore can exhaust memory 2026-02-16 06:28:02 +01:00

Closed #27 SQL injection risk in getTableCount via fmt.Sprintf table name interpolation 2026-02-16 06:21:41 +01:00

Closed #28 CompressStream double-closes the blobgen.Writer causing potential errors 2026-02-16 06:04:33 +01:00

46 Issues created by 1 user

Opened #35 Add regression test for CompressStream double-close fix (#28) 2026-02-16 06:08:39 +01:00

Opened #40 Refactor: break up oversized methods (>100-150 lines) 2026-02-20 11:23:43 +01:00

Opened #43 Add branch protection to main branch 2026-02-20 11:59:57 +01:00

Opened #52 Rename blob_fetch_stub.go to blob_fetch.go 2026-03-19 00:22:57 +01:00

Opened #54 Remove all ctime usage and storage 2026-03-19 13:59:40 +01:00

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