eazygit 0.2.0

A fast TUI for Git with staging, conflicts, rebase, and palette-first UX
# Eazygit vs Lazygit Feature Comparison

## Current Status: Eazygit as Internal Product

### **Features Already Implemented**

#### Core Git Operations
- ✅ Stage/unstage files (`s`/`u`)
- ✅ Stage/unstage hunks and lines
- ✅ Commit with message (`c`)
- ✅ Amend commit (`A`)
- ✅ Push (`P`)
- ✅ Pull with ff-only and rebase options
- ✅ Fetch with auto-fetch toggle

#### Branch Management
- ✅ View branches (local/remote)
- ✅ Create branch (`B`)
- ✅ Checkout branch
- ✅ Merge branch
- ✅ Rebase branch
- ✅ Delete branch
- ⚠️ **TODO**: Ahead/behind display (noted in code)

#### Advanced Operations
- ✅ Cherry-pick commits
- ✅ Revert commits
- ✅ Interactive rebase (todo editing)
- ✅ Rebase continue/abort/skip
- ✅ Reset (soft/mixed/hard)
- ✅ Stash list, apply, pop
- ✅ Reflog view
- ✅ Tags view

#### UI/UX Features
- ✅ Command palette (⌘K) with fuzzy search
- ✅ Multi-character shortcuts
- ✅ Theme support (dark, light, nord, dracula, gruvbox, everforest, onedark)
- ✅ Custom themes via TOML
- ✅ Conflicts navigation and guided resolution
- ✅ Diff view (working/staged)
- ✅ Side-by-side diff (when delta available)
- ✅ PR helper for GitHub/GitLab
- ✅ File watcher for auto-refresh

#### Safety Features
- ✅ FF-only enforcement
- ✅ Pull/push timeouts
- ✅ Force push with lease
- ✅ Merge status checks
- ✅ Reset confirmations

---

## **Missing Features (Compared to Lazygit)**

### High Priority

1. **Stash Creation**
   - ❌ No way to create a new stash from UI
   - Current: Only list, apply, pop
   - Impact: Users must use CLI to stash changes

2. **Stash Management**
   - ❌ Cannot delete/drop stashes
   - ❌ Cannot rename stashes
   - Impact: Stash list can grow indefinitely

3. **Blame View**
   - ❌ No file blame view
   - Impact: Cannot see who changed each line and when
   - Lazygit: Press `b` on a file to see blame

4. **File History**
   - ❌ No file-specific commit history
   - Impact: Cannot see how a file changed over time
   - Lazygit: Press `n` to see file history

5. **Branch Ahead/Behind Display**
   - ⚠️ Partially implemented (data exists, not displayed)
   - TODO comment in `branches.rs:163`
   - Impact: Cannot see sync status at a glance

### Medium Priority

6. **Submodule Support**
   - ❌ No submodule management
   - Impact: Repos with submodules are harder to work with

7. **Custom Commands**
   - ❌ No way to define custom git commands
   - Lazygit: Supports custom commands in config
   - Impact: Less flexible for team-specific workflows

8. **Better Visual Feedback**
   - ⚠️ Some operations lack progress indicators
   - Impact: Users unsure if operation is running

9. **Commit Message Templates**
   - ❌ No commit message templates
   - Impact: Less consistent commit messages

10. **Diff Statistics**
    - ⚠️ Log stats exist but not file-level stats
    - Impact: Cannot see insertions/deletions per file easily

### Low Priority / Nice-to-Have

11. **Worktree Support**
    - ❌ No git worktree management
    - Impact: Advanced users might need CLI

12. **Bisect Integration**
    - ❌ No visual bisect helper
    - Impact: Debugging regressions harder

13. **Filter Branch Helper**
    - ❌ No filter-branch UI
    - Impact: Advanced history rewriting requires CLI

14. **Patch Management**
    - ⚠️ Can apply patches but not create them
    - Impact: Sharing changes requires CLI

15. **Branch Comparison View**
    - ❌ No side-by-side branch diff
    - Impact: Harder to see what changed between branches

---

## 🎯 **Recommendations for Internal Product**

### Immediate Additions (High Value, Low Effort)

1. **Stash Creation** (`git stash push -m "message"`)
   - Add to command palette: "Create stash"
   - Shortcut: `S` (capital S)
   - Input modal for stash message

2. **Stash Delete**
   - Add delete action in stash pane
   - Shortcut: `D` in stash view

3. **Branch Ahead/Behind Display**
   - Complete the TODO in `branches.rs`
   - Show `[+5 -2]` next to branch names

### Medium-Term Enhancements

4. **Blame View**
   - New pane or overlay showing `git blame` output
   - Accessible from file context menu or shortcut

5. **File History**
   - New view showing commits affecting selected file
   - Accessible from status pane

6. **Better Progress Indicators**
   - Spinner/loading states for long operations
   - Progress bars for large operations

### Long-Term Considerations

7. **Submodule Support**
   - Only if your team uses submodules
   - Can be deferred if not needed

8. **Custom Commands**
   - Add config section for custom commands
   - Allow binding to shortcuts

---

## 📊 **Standing Assessment**

### Strengths vs Lazygit

1. **Command Palette** - More discoverable than keybindings
2. **Multi-character Shortcuts** - More flexible than single keys
3. **Theme System** - More customizable
4. **PR Integration** - Built-in GitHub/GitLab support
5. **Safety Features** - Better safeguards (ff-only, timeouts)

### Weaknesses vs Lazygit

1. **Stash Management** - Missing create/delete
2. **Blame/History** - Missing file-level views
3. **Visual Feedback** - Less polished progress indicators
4. **Submodules** - Not supported
5. **Custom Commands** - Less extensible

### Overall Assessment

**For Internal Use**: Eazygit is **production-ready** for most workflows. The missing features are:
- **Non-blocking** for daily use (stash creation can use CLI)
- **Nice-to-have** rather than essential (blame, file history)
- **Advanced features** that many users don't need (submodules, worktrees)

**Recommendation**: Add stash creation and branch ahead/behind display to match lazygit's core feature set. The rest can be prioritized based on actual team needs.

---

## 🚀 **Quick Wins to Implement**

1. **Stash Creation** (30 min)
   - Add `StashCreateCommand`
   - Add to palette with shortcut `S`
   - Input modal for message

2. **Stash Delete** (20 min)
   - Add delete action in stash component
   - Use existing `git stash drop` command

3. **Branch Ahead/Behind** (1 hour)
   - Complete TODO in `branches.rs:163`
   - Use existing `ahead_behind` data from state

These three additions would bring eazygit to feature parity with lazygit for 90% of use cases.