# 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.