- Add internal/types package with type-safe wrappers for IDs, hashes, paths, and credentials (FileID, BlobID, ChunkHash, etc.) - Implement driver.Valuer and sql.Scanner for UUID-based types - Add `vaultik version` command showing version, commit, go version - Add `--verify` flag to restore command that checksums all restored files against expected chunk hashes with progress bar - Remove fetch.go (dead code, functionality in restore) - Clean up TODO.md, remove completed items - Update all database and snapshot code to use new custom types
2.6 KiB
2.6 KiB
Vaultik 1.0 TODO
Linear list of tasks to complete before 1.0 release.
Restore Command
- Write integration tests for restore command
Daemon Mode
-
Implement inotify file watcher for Linux
- Watch source directories for changes
- Track dirty paths in memory
-
Implement FSEvents watcher for macOS
- Watch source directories for changes
- Track dirty paths in memory
-
Implement backup scheduler in daemon mode
- Respect backup_interval config
- Trigger backup when dirty paths exist and interval elapsed
- Implement full_scan_interval for periodic full scans
-
Add proper signal handling for daemon
- Graceful shutdown on SIGTERM/SIGINT
- Complete in-progress backup before exit
-
Write tests for daemon mode
CLI Polish
-
Add
--quietflag to all commands- Suppress non-error output
- Useful for scripting
-
Add
--jsonoutput flag to more commandssnapshot verify- output verification results as JSONsnapshot remove- output deletion stats as JSONprune- output pruning stats as JSON
-
Improve error messages throughout
- Ensure all errors include actionable context
- Add suggestions for common issues
Testing
-
Write end-to-end integration test
- Create backup
- Verify backup
- Restore backup
- Compare restored files to originals
-
Add tests for edge cases
- Empty directories
- Symlinks
- Special characters in filenames
- Very large files (multi-GB)
- Many small files (100k+)
-
Add tests for error conditions
- Network failures during upload
- Disk full during restore
- Corrupted blobs
- Missing blobs
Documentation
- Add man page or --help improvements
- Detailed help for each command
- Examples in help output
Performance
-
Profile and optimize restore performance
- Parallel blob downloads
- Streaming decompression/decryption
- Efficient chunk reassembly
-
Add bandwidth limiting option
--bwlimitflag for upload/download speed limiting
Security
-
Audit encryption implementation
- Verify age encryption is used correctly
- Ensure no plaintext leaks in logs or errors
-
Add config file permission check
- Warn if config file is world-readable (contains secrets)
-
Secure memory handling for secrets
- Clear age_secret_key from memory after use
Final Polish
-
Ensure version is set correctly in releases
-
Create release process
- Binary releases for supported platforms
- Checksums for binaries
- Release notes template
-
Final code review
- Remove debug statements
- Ensure consistent code style
-
Tag and release v1.0.0