git-time-machine 0.2.0

🕰️ A beautiful TUI to undo ANY git mistake in 3 seconds
# 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!