- 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
108 lines
2.6 KiB
Markdown
108 lines
2.6 KiB
Markdown
# Vaultik 1.0 TODO
|
|
|
|
Linear list of tasks to complete before 1.0 release.
|
|
|
|
## Restore Command
|
|
|
|
1. Write integration tests for restore command
|
|
|
|
## Daemon Mode
|
|
|
|
1. Implement inotify file watcher for Linux
|
|
- Watch source directories for changes
|
|
- Track dirty paths in memory
|
|
|
|
1. Implement FSEvents watcher for macOS
|
|
- Watch source directories for changes
|
|
- Track dirty paths in memory
|
|
|
|
1. 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
|
|
|
|
1. Add proper signal handling for daemon
|
|
- Graceful shutdown on SIGTERM/SIGINT
|
|
- Complete in-progress backup before exit
|
|
|
|
1. Write tests for daemon mode
|
|
|
|
## CLI Polish
|
|
|
|
1. Add `--quiet` flag to all commands
|
|
- Suppress non-error output
|
|
- Useful for scripting
|
|
|
|
1. Add `--json` output flag to more commands
|
|
- `snapshot verify` - output verification results as JSON
|
|
- `snapshot remove` - output deletion stats as JSON
|
|
- `prune` - output pruning stats as JSON
|
|
|
|
1. Improve error messages throughout
|
|
- Ensure all errors include actionable context
|
|
- Add suggestions for common issues
|
|
|
|
## Testing
|
|
|
|
1. Write end-to-end integration test
|
|
- Create backup
|
|
- Verify backup
|
|
- Restore backup
|
|
- Compare restored files to originals
|
|
|
|
1. Add tests for edge cases
|
|
- Empty directories
|
|
- Symlinks
|
|
- Special characters in filenames
|
|
- Very large files (multi-GB)
|
|
- Many small files (100k+)
|
|
|
|
1. Add tests for error conditions
|
|
- Network failures during upload
|
|
- Disk full during restore
|
|
- Corrupted blobs
|
|
- Missing blobs
|
|
|
|
## Documentation
|
|
|
|
1. Add man page or --help improvements
|
|
- Detailed help for each command
|
|
- Examples in help output
|
|
|
|
## Performance
|
|
|
|
1. Profile and optimize restore performance
|
|
- Parallel blob downloads
|
|
- Streaming decompression/decryption
|
|
- Efficient chunk reassembly
|
|
|
|
1. Add bandwidth limiting option
|
|
- `--bwlimit` flag for upload/download speed limiting
|
|
|
|
## Security
|
|
|
|
1. Audit encryption implementation
|
|
- Verify age encryption is used correctly
|
|
- Ensure no plaintext leaks in logs or errors
|
|
|
|
1. Add config file permission check
|
|
- Warn if config file is world-readable (contains secrets)
|
|
|
|
1. Secure memory handling for secrets
|
|
- Clear age_secret_key from memory after use
|
|
|
|
## Final Polish
|
|
|
|
1. Ensure version is set correctly in releases
|
|
|
|
1. Create release process
|
|
- Binary releases for supported platforms
|
|
- Checksums for binaries
|
|
- Release notes template
|
|
|
|
1. Final code review
|
|
- Remove debug statements
|
|
- Ensure consistent code style
|
|
|
|
1. Tag and release v1.0.0
|