This website requires JavaScript.
e3e1f1c2e2
feat: per-name purge filtering for snapshot purge
feature/per-name-purge
user
2026-03-17 21:54:09 -07:00
d39d939c5b
feat: concurrent manifest downloads in ListSnapshots
fix/concurrent-manifest-downloads
user
2026-03-17 21:51:52 -07:00
1c72a37bc8
Remove all ctime usage and storage (#55 )
main
clawbot
2026-03-20 03:12:46 +01:00
ea8edd653f
fix: replace O(n²) duplicate detection with map-based O(1) lookups
fix/dedup-snapshot-ids-on2-to-o1
clawbot
2026-03-17 05:49:01 -07:00
60b6746db9
schema: add ON DELETE CASCADE to snapshot_files.file_id and snapshot_blobs.blob_id FKs (#46 )
clawbot
2026-03-19 14:03:39 +01:00
f28c8a73b7
fix: add ON DELETE CASCADE to uploads FK on snapshot_id (#44 )
clawbot
2026-03-19 13:59:27 +01:00
1c0f5b8eb2
Rename blob_fetch_stub.go to blob_fetch.go (#53 )
clawbot
2026-03-19 09:33:35 +01:00
689109a2b8
fix: remove destructive sync from ListSnapshots (#49 )
clawbot
2026-03-19 09:32:52 +01:00
ac2f21a89d
Refactor: break up oversized methods into smaller descriptive helpers (#41 )
clawbot
2026-03-19 00:23:45 +01:00
8c59f55096
fix: verify blob hash after download and decryption (closes #5 ) (#39 )
clawbot
2026-03-19 00:21:11 +01:00
25860c03a9
fix: populate ctime from actual filesystem stats instead of mtime fallback
fix/ctime-scanner-population
user
2026-03-17 13:49:51 -07:00
332ea26bce
fix: use deleteSnapshotFromLocalDB in syncWithRemote
fix/sync-snapshot-cleanup
clawbot
2026-03-17 13:42:23 -07:00
c24e7e6360
Add make check target and CI workflow (#42 )
clawbot
2026-03-17 12:39:44 +01:00
7a5943958d
feat: add progress bar to restore operation (#23 )
clawbot
2026-03-17 11:18:18 +01:00
ee161fb3a3
feat: add progress bar to restore operation
feature/restore-progress-bar
clawbot
2026-02-20 02:23:12 -08:00
d8a51804d2
Merge pull request 'feat: implement --prune flag on snapshot create (closes #4 )' (#37 ) from feature/implement-prune-flag-on-snapshot-create into main
Jeffrey Paul
2026-02-20 11:22:12 +01:00
76f4421eb3
Merge branch 'main' into feature/implement-prune-flag-on-snapshot-create
feature/implement-prune-flag-on-snapshot-create
Jeffrey Paul
2026-02-20 11:20:52 +01:00
53ac868c5d
Merge pull request 'fix: track and report file restore failures' (#22 ) from fix/restore-error-handling into main
Jeffrey Paul
2026-02-20 11:19:40 +01:00
8c4ea2b870
Merge branch 'main' into fix/restore-error-handling
fix/restore-error-handling
Jeffrey Paul
2026-02-20 11:19:21 +01:00
597b560398
Merge pull request 'Return errors from deleteSnapshotFromLocalDB instead of swallowing them (closes #25 )' (#30 ) from fix/issue-25 into main
Jeffrey Paul
2026-02-20 11:18:30 +01:00
1e2eced092
Merge branch 'main' into fix/issue-25
fix/issue-25
Jeffrey Paul
2026-02-20 11:18:06 +01:00
3e282af516
Merge branch 'main' into fix/sql-injection-whitelist
fix/sql-injection-whitelist
Jeffrey Paul
2026-02-20 11:16:27 +01:00
815b35c7ae
Merge pull request 'Disk-based blob cache with LRU eviction during restore (closes #29 )' (#34 ) from fix/issue-29 into main
Jeffrey Paul
2026-02-20 11:16:15 +01:00
9c66674683
Merge branch 'main' into fix/issue-29
fix/issue-29
Jeffrey Paul
2026-02-20 11:15:59 +01:00
49de277648
Merge pull request 'Add CompressStream double-close regression test (closes #35 )' (#36 ) from add-compressstream-regression-test into main
Jeffrey Paul
2026-02-20 11:12:51 +01:00
ed5d777d05
fix: set disk cache max size to 4x configured blob size instead of hardcoded 10 GiB
clawbot
2026-02-15 21:29:33 -08:00
76e047bbb2
feat: implement --prune flag on snapshot create (closes #4 )
clawbot
2026-02-15 21:34:46 -08:00
2e7356dd85
Add CompressStream double-close regression test (closes #35 )
add-compressstream-regression-test
clawbot
2026-02-15 21:08:46 -08:00
bb4b9b5bc9
fix: use whitelist for SQL table names in getTableCount (closes #7 )
user
2026-02-20 02:09:40 -08:00
70d4fe2aa0
Merge pull request 'Use v.Stdout/v.Stdin instead of os.Stdout for all user-facing output (closes #26 )' (#31 ) from fix/issue-26 into main
Jeffrey Paul
2026-02-20 11:07:52 +01:00
2f249e3ddd
fix: address review feedback — use helper wrappers, remove duplicates, fix scanStdin usage
fix/issue-26
clawbot
2026-02-20 00:26:03 -08:00
3f834f1c9c
fix: resolve rebase conflicts, fix errcheck issues, implement FetchAndDecryptBlob
clawbot
2026-02-19 23:44:15 -08:00
9879668c31
refactor: add helper wrappers for stdin/stdout/stderr IO
user
2026-02-15 21:20:45 -08:00
0a0d9f33b0
fix: use v.Stdout/v.Stdin instead of os.Stdout for all user-facing output
clawbot
2026-02-08 12:03:01 -08:00
df0e8c275b
fix: replace in-memory blob cache with disk-based LRU cache (closes #29 )
clawbot
2026-02-15 21:19:47 -08:00
ddc23f8057
fix: return errors from deleteSnapshotFromLocalDB instead of swallowing them
clawbot
2026-02-08 12:01:51 -08:00
cafb3d45b8
fix: track and report file restore failures
clawbot
2026-02-08 08:34:17 -08:00
d77ac18aaa
fix: add missing printfStdout, printlnStdout, scanlnStdin, FetchBlob, and FetchAndDecryptBlob methods
clawbot
2026-02-19 23:51:53 -08:00
825f25da58
Merge pull request 'Validate table name against allowlist in getTableCount (closes #27 )' (#32 ) from fix/issue-27 into main
Jeffrey Paul
2026-02-16 06:21:41 +01:00
162d76bb38
Merge branch 'main' into fix/issue-27
fix/issue-27
Jeffrey Paul
2026-02-16 06:17:51 +01:00
bfd7334221
fix: replace table name allowlist with regex sanitization
clawbot
2026-02-15 21:17:24 -08:00
9b32bf0846
fix: replace table name allowlist with regex sanitization
user
2026-02-15 21:15:40 -08:00
8adc668fa6
Merge pull request 'Prevent double-close of blobgen.Writer in CompressStream (closes #28 )' (#33 ) from fix/issue-28 into main
Jeffrey Paul
2026-02-16 06:04:33 +01:00
441c441eca
fix: prevent double-close of blobgen.Writer in CompressStream
fix/issue-28
clawbot
2026-02-08 12:03:36 -08:00
4d9f912a5f
fix: validate table name against allowlist in getTableCount to prevent SQL injection
clawbot
2026-02-08 12:03:18 -08:00
46c2ea3079
fix: remove dead deep-verify TODO stub, route to RunDeepVerify
clawbot
2026-02-08 08:33:18 -08:00
470bf648c4
Add deterministic deduplication, rclone backend, and database purge command
sneak
2026-01-28 15:50:17 -08:00
bdaaadf990
Add --quiet flag, --json output, and config permission check
sneak
2026-01-16 09:20:29 -08:00
417b25a5f5
Add custom types, version command, and restore --verify flag
sneak
2026-01-14 17:11:52 -08:00
2afd54d693
Add exclude patterns, snapshot prune, and other improvements
sneak
2026-01-01 05:42:56 -08:00
05286bed01
Batch transactions per blob for improved performance
sneak
2025-12-23 19:07:26 +07:00
f2c120f026
Merge feature/pluggable-storage-backend
sneak
2025-12-23 18:50:21 +07:00
bbe09ec5b5
Remove dangerous database recovery that deleted journal/WAL files
sneak
2025-12-23 09:16:01 +07:00
43a69c2cfb
Fix FK constraint errors in batched file insertion
sneak
2025-12-19 19:48:48 +07:00
899448e1da
Cache chunk hashes in memory for faster small file processing
feature/pluggable-storage-backend
sneak
2025-12-19 12:56:04 +07:00
24c5e8c5a6
Refactor: Create file records only after successful chunking
sneak
2025-12-19 12:40:45 +07:00
40fff09594
Update progress output format with compact file counts
sneak
2025-12-19 12:33:38 +07:00
8a8651c690
Fix foreign key error when deleting incomplete snapshots
sneak
2025-12-19 12:27:05 +07:00
a1d559c30d
Improve processing progress output with bytes and blob messages
sneak
2025-12-19 12:24:55 +07:00
88e2508dc7
Eliminate redundant filesystem traversal in scan phase
sneak
2025-12-19 12:15:13 +07:00
c3725e745e
Optimize scan phase: in-memory change detection and batched DB writes
sneak
2025-12-19 12:08:47 +07:00
badc0c07e0
Add pluggable storage backend, PID locking, and improved scan progress
sneak
2025-12-19 11:52:51 +07:00
cda0cf865a
Add ARCHITECTURE.md documenting internal design
sneak
2025-12-18 19:49:42 -08:00
0736bd070b
Add godoc documentation to exported types and methods
sneak
2025-12-18 18:51:52 -08:00
d7cd9aac27
Add end-to-end integration tests for Vaultik
sneak
2025-07-26 15:52:23 +02:00
bb38f8c5d6
Integrate afero filesystem abstraction library
sneak
2025-07-26 15:33:18 +02:00
e29a995120
Refactor: Move Vaultik struct and methods to internal/vaultik package
sneak
2025-07-26 14:47:26 +02:00
5c70405a85
Fix snapshot list to fail on manifest errors
sneak
2025-07-26 03:31:09 +02:00
a544fa80f2
Major refactoring: Updated manifest format and renamed backup to snapshot
sneak
2025-07-26 03:27:47 +02:00
c07d8eec0a
Fix snapshot list to not download manifests
sneak
2025-07-26 03:16:18 +02:00
0cbb5aa0a6
Update snapshot list to sync with remote
sneak
2025-07-26 03:14:20 +02:00
fb220685a2
Fix manifest generation to not encrypt manifests
sneak
2025-07-26 02:54:52 +02:00
1d027bde57
Fix prune command to use config file for bucket and prefix
sneak
2025-07-26 02:41:00 +02:00
bb2292de7f
Fix file content change handling and improve log messages
sneak
2025-07-26 02:38:50 +02:00
d3afa65420
Fix foreign key constraints and improve snapshot tracking
sneak
2025-07-26 02:22:25 +02:00
78af626759
Major refactoring: UUID-based storage, streaming architecture, and CLI improvements
sneak
2025-07-22 14:54:37 +02:00
86b533d6ee
Refactor blob storage to use UUID primary keys and implement streaming chunking
sneak
2025-07-22 07:43:39 +02:00
26db096913
Move StartTime initialization to application startup hook
sneak
2025-07-20 12:05:24 +02:00
36c59cb7b3
Set up S3 testing infrastructure for backup implementation
sneak
2025-07-20 11:09:59 +02:00
9c072166fa
Add blob manifest for pruning without decryption
sneak
2025-07-20 11:03:53 +02:00
8529ae9735
Implement SQLite index database layer
sneak
2025-07-20 10:56:30 +02:00
b2e85d9e76
Implement local SQLite index database with repositories
sneak
2025-07-20 10:26:15 +02:00
9de439a0a4
Move TODO list to separate file and update verify command
sneak
2025-07-20 09:49:10 +02:00
bcbc186286
Refactor CLI to use flags instead of positional arguments
sneak
2025-07-20 09:45:24 +02:00
3e8b98dec6
Implement CLI skeleton with cobra and fx dependency injection
sneak
2025-07-20 09:34:14 +02:00
0df07790ba
Document complete vaultik architecture and implementation plan
sneak
2025-07-20 09:04:31 +02:00
67319a4699
initial design
sneak
2025-07-20 08:51:38 +02:00