Files
notevc/CHECKLIST.md
2025-11-06 11:23:40 -05:00

114 lines
3.2 KiB
Markdown

# Project Setup
- [x] Initialize Project
- [x] Configure `build.gradle.kts` with dependencies
- [x] Set up testing framework
# Core
- [x] Create `Repository.kt` class
- [x] Implement `.notevc` directory initialization
- [ ] Create `ObjectStore.kt` for content storage
- [ ] Implement content hashing `HashUtils.kt`
- [ ] Create `NoteSnapshot` data class
- [ ] Implement `Timeline.kt` for version tracking
- [ ] Add `RepoMetadata` and configuration
# File Operations
- [ ] Implement markdown file scanning
- [ ] Create file change detection logic
- [ ] Add file content reading/writing utilities
- [ ] Implement path resolution and validation
- [ ] Add file timestamp tracking
- [ ] Create backup and restore mechanisms
# Core Commands
## Init Command
- [ ] `notevc init` - Initialize repository
- [ ] Create `.notevc` directory structure
- [ ] Generate initial metadata file
- [ ] Handle existing repository detection
## Status Command
- [ ] `notevc status` - Show file changes
- [ ] Compare current files with last snapshot
- [ ] Display added/modified/deleted files
- [ ] Show clean working directory message
## Commit command
- [ ] `notevc commit "message"` - Create snapshot
- [ ] Validate commit message exists
- [ ] Store changed file contents
- [ ] Create snapshot with metadata
- [ ] Update repository head pointer
## Log Command
- [ ] `notevc log` - Show commit history
- [ ] Display snapshots in reverse chronological order
- [ ] Show commit hashes, messages, and timestamps
- [ ] add `--since` time filtering option
# Advanced Commands
## Diff Command
- [ ] `notevc diff` - Show current changes
- [ ] `notevc diff <file>` - Show changes for specific file
- [ ] `notevc diff <commit>` - Compare with specific commit
- [ ] Implement basic text diffing algorithm
## Restore Command
- [ ] `notevc restore <commit>` - Restore entire state
- [ ] `notevc restore <commit> <file>` - Restore specific file
- [ ] Add conformation prompts for destructive operations
- [ ] Handle file conflicts gracefully
## Show Command
- [ ] `notevc show <commit>` - Display commit changes
- [ ] Show commit metadata and file changes
- [ ] Display file contents at specific commit
# Utilities and Polish
- [ ] Add colored output for better UX
- [ ] Implement proper error handling messages
- [ ] Add input validation for all commands
- [ ] Create help system (`notevc --help`)
- [ ] Add version information (`notevc --version`)
- [ ] Implement configuration file support
# Testing
- [ ] Write unit tests for `ObjectStore`
- [ ] Test `Repository` initialization and operations
- [ ] Add integration tests for CLI commands
- [ ] Test file change detection logic
- [ ] Add edge case testing (empty repos, corrupted data)
- [ ] Performance testing with large note collections
# Build and Distribution
- [ ] Create fat JAR for distribution
- [ ] Add shell script wrapper for easy execution
- [ ] Test on different operating systems
- [ ] Create installation scripts
- [ ] Add build automation (GitHub Actions)
# Future Features
- [ ] Compression for stored content
- [ ] Garbage collection for unused objects
- [ ] Branch-like functionality for different contexts
- [ ] Automatic backup scheduling
- [ ] File watching for auto-commits
- [ ] Export/import functionality
- [ ] NeoVim Plugin