vaultik/TODO.md
sneak 417b25a5f5 Add custom types, version command, and restore --verify flag
- 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
2026-01-14 17:11:52 -08:00

2.6 KiB

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
  2. Implement FSEvents watcher for macOS

    • Watch source directories for changes
    • Track dirty paths in memory
  3. 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
  4. Add proper signal handling for daemon

    • Graceful shutdown on SIGTERM/SIGINT
    • Complete in-progress backup before exit
  5. Write tests for daemon mode

CLI Polish

  1. Add --quiet flag to all commands

    • Suppress non-error output
    • Useful for scripting
  2. 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
  3. 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
  2. Add tests for edge cases

    • Empty directories
    • Symlinks
    • Special characters in filenames
    • Very large files (multi-GB)
    • Many small files (100k+)
  3. 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
  2. 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
  2. Add config file permission check

    • Warn if config file is world-readable (contains secrets)
  3. Secure memory handling for secrets

    • Clear age_secret_key from memory after use

Final Polish

  1. Ensure version is set correctly in releases

  2. Create release process

    • Binary releases for supported platforms
    • Checksums for binaries
    • Release notes template
  3. Final code review

    • Remove debug statements
    • Ensure consistent code style
  4. Tag and release v1.0.0