2025-03-22 - 2026-03-22
Overview
20 Pull requests merged by 1 user
Merged
#51 feat: per-name purge filtering for snapshot purge
Merged
#50 feat: concurrent manifest downloads in ListSnapshots
Merged
#45 fix: replace O(n²) duplicate detection with map-based O(1) lookups
Merged
#55 Remove all ctime usage and storage
Merged
#46 schema: add ON DELETE CASCADE to snapshot_files.file_id and snapshot_blobs.blob_id FKs
Merged
#44 fix: add ON DELETE CASCADE to uploads FK on snapshot_id
Merged
#53 Rename blob_fetch_stub.go to blob_fetch.go
Merged
#49 fix: remove destructive sync from ListSnapshots
Merged
#41 Refactor: break up oversized methods into smaller descriptive helpers
Merged
#39 fix: verify blob hash after download and decryption (closes #5)
Merged
#42 Add make check target and CI workflow
Merged
#23 feat: add progress bar to restore operation
Merged
#37 feat: implement --prune flag on snapshot create (closes #4)
Merged
#22 fix: track and report file restore failures
Merged
#30 Return errors from deleteSnapshotFromLocalDB instead of swallowing them (closes #25)
Merged
#34 Disk-based blob cache with LRU eviction during restore (closes #29)
Merged
#36 Add CompressStream double-close regression test (closes #35)
Merged
#31 Use v.Stdout/v.Stdin instead of os.Stdout for all user-facing output (closes #26)
Merged
#32 Validate table name against allowlist in getTableCount (closes #27)
Merged
#33 Prevent double-close of blobgen.Writer in CompressStream (closes #28)
30 Issues closed from 2 users
Closed
#9 PurgeSnapshots operates across all snapshot names, no per-name filtering
Closed
#14 Manifest is unencrypted — leaks blob count and sizes
Closed
#17 No database migration support — schema changes require full re-backup
Closed
#43 Add branch protection to main branch
Closed
#8 ListSnapshots downloads manifests synchronously for unknown remote snapshots
Closed
#12 RemoveAllSnapshots has O(n²) duplicate detection for snapshot IDs
Closed
#10 syncWithRemote deletes snapshot records without cleaning up related tables
Closed
#54 Remove all ctime usage and storage
Closed
#19 snapshot_files FK on file_id lacks ON DELETE CASCADE
Closed
#18 uploads table FK on snapshot_id lacks ON DELETE CASCADE
Closed
#13 ctime is in schema and model but verify scanner populates it correctly
Closed
#52 Rename blob_fetch_stub.go to blob_fetch.go
Closed
#15 ListSnapshots has destructive side effect: deletes local snapshots not in remote
Closed
#1 find bugs or incomplete functionality for 1.0
Closed
#40 Refactor: break up oversized methods (>100-150 lines)
Closed
#5 Restore: downloaded blob hash is not verified
Closed
#16 PruneBlobs has O(n²) duplicate snapshot ID detection
Closed
#11 Restore: blobCache grows unboundedly, will OOM with large backups
Closed
#20 Restore has no progress bar for file restoration
Closed
#6 deleteSnapshotFromLocalDB silently ignores all errors
Closed
#4 --prune flag on snapshot create is a TODO
Closed
#21 Restore silently continues when individual file restoration fails
Closed
#25 deleteSnapshotFromLocalDB silently swallows all errors and always returns nil
Closed
#7 getTableCount uses fmt.Sprintf for SQL table name — potential SQL injection
Closed
#35 Add regression test for CompressStream double-close fix (#28)
Closed
#26 Multiple methods write to os.Stdout instead of v.Stdout, breaking testability
Closed
#29 Unbounded blob cache during restore can exhaust memory
Closed
#27 SQL injection risk in getTableCount via fmt.Sprintf table name interpolation
Closed
#28 CompressStream double-closes the blobgen.Writer causing potential errors
Closed
#2 Shallow verify path: deep verification is a TODO stub
31 Issues created by 1 user
Opened
#1 find bugs or incomplete functionality for 1.0
Opened
#2 Shallow verify path: deep verification is a TODO stub
Opened
#3 Daemon mode not implemented
Opened
#4 --prune flag on snapshot create is a TODO
Opened
#5 Restore: downloaded blob hash is not verified
Opened
#6 deleteSnapshotFromLocalDB silently ignores all errors
Opened
#7 getTableCount uses fmt.Sprintf for SQL table name — potential SQL injection
Opened
#8 ListSnapshots downloads manifests synchronously for unknown remote snapshots
Opened
#9 PurgeSnapshots operates across all snapshot names, no per-name filtering
Opened
#10 syncWithRemote deletes snapshot records without cleaning up related tables
Opened
#11 Restore: blobCache grows unboundedly, will OOM with large backups
Opened
#12 RemoveAllSnapshots has O(n²) duplicate detection for snapshot IDs
Opened
#13 ctime is in schema and model but verify scanner populates it correctly
Opened
#14 Manifest is unencrypted — leaks blob count and sizes
Opened
#15 ListSnapshots has destructive side effect: deletes local snapshots not in remote
Opened
#16 PruneBlobs has O(n²) duplicate snapshot ID detection
Opened
#17 No database migration support — schema changes require full re-backup
Opened
#18 uploads table FK on snapshot_id lacks ON DELETE CASCADE
Opened
#19 snapshot_files FK on file_id lacks ON DELETE CASCADE
Opened
#20 Restore has no progress bar for file restoration
Opened
#21 Restore silently continues when individual file restoration fails
Opened
#25 deleteSnapshotFromLocalDB silently swallows all errors and always returns nil
Opened
#26 Multiple methods write to os.Stdout instead of v.Stdout, breaking testability
Opened
#27 SQL injection risk in getTableCount via fmt.Sprintf table name interpolation
Opened
#28 CompressStream double-closes the blobgen.Writer causing potential errors
Opened
#29 Unbounded blob cache during restore can exhaust memory
Opened
#35 Add regression test for CompressStream double-close fix (#28)
Opened
#40 Refactor: break up oversized methods (>100-150 lines)
Opened
#43 Add branch protection to main branch
Opened
#52 Rename blob_fetch_stub.go to blob_fetch.go
Opened
#54 Remove all ctime usage and storage