# Version 1.1 - Bug Fixes & Improvements
## Critical Security Fixes
### ✅ Command Injection Prevention
- Added hex-only validation for commit hashes before passing to git commands
- Prevents potential shell injection attacks via malicious reflog entries
### ✅ Fixed repo_path Usage
- All `Command::new("git")` calls now use `.current_dir(&self.repo_path)`
- Ensures git commands run in the correct repository directory
## UX Improvements
### ✅ Fixed Diff Update on Navigation
- Diff pane now refreshes when navigating up/down while diff is visible
- Previously showed stale diff from old selection
### ✅ Removed Wrap-Around Navigation
- Up/Down now clamps at first/last entry instead of wrapping
- Less disorienting for users
### ✅ Added Keyboard Shortcuts
- `Home` - Jump to first entry
- `End` - Jump to last entry
- `PgUp` - Jump up 10 entries
- `PgDn` - Jump down 10 entries
- Makes navigating 50+ entries much easier
### ✅ Conditional Confirmation Message
- Confirmation dialog only mentions "discard uncommitted changes" when there actually are uncommitted changes
- More accurate messaging
### ✅ Added --help Examples
- CLI now shows usage examples and control reference
- Run `git-time-machine --help` to see them
## Code Quality Fixes
### ✅ Removed Duplicate State
- Removed `selected_index` field from App struct
- Now uses `list_state.selected()` as single source of truth
- Prevents potential desync bugs
### ✅ Fixed String Clone in UI
- Changed `app.diff_content.clone()` to `&app.diff_content`
- Eliminates unnecessary string allocation every frame
- Better performance
## Known Limitations (Future Work)
### Diff Pane Scrolling
- Large diffs are cut off (Paragraph widget doesn't scroll)
- Future: Implement scrollable widget or scroll offset
### Search/Filter
- No search functionality yet
- Future: Add `/` search like vim
### Stash Support
- Doesn't show stash entries from reflog
- Future: Add `git stash list` integration
### Safe Restore Option
- Only offers `git reset --hard`
- Future: Add option for `git checkout -b recovery-<hash>` to preserve current state
## Testing Checklist
- [x] Builds without errors
- [x] Hash validation works
- [x] Diff updates on navigation
- [x] No wrap-around navigation
- [x] Home/End/PgUp/PgDn keys work
- [x] Conditional confirmation message
- [x] --help shows examples
## Version Bump
Ready to publish v1.1.0 to crates.io with these fixes!