# lazygitclj A lazygit-inspired TUI for Git written in Clojure, targeting Babashka for fast startup. ![Files Panel](screenshots/files-panel.png) ## Features - **Elm Architecture**: Clean Model-Update-View pattern for predictable state management - **Fast startup**: Runs on Babashka for sub-second launch times - **Familiar keybindings**: Vim-style navigation (j/k, h/l) matching lazygit - **Full Git workflow**: Stage, commit, branch, merge, stash, and more ## Panels ### Files Panel (2) View and manage staged/unstaged files with inline diffs. ![Files Panel](screenshots/files-panel.png) ### Branches Panel (3) Switch branches, create new branches, merge, and fast-forward. ![Branches Panel](screenshots/branches-panel.png) ### Commits Panel (4) Browse commit history, checkout commits, cherry-pick, and revert. ![Commits Panel](screenshots/commits-panel.png) ### Stash Panel (5) Manage stashes - apply, pop, drop, or create branches from stash. ![Stash Panel](screenshots/stash-panel.png) ### Help Menu (?) Press `?` to see all available keybindings. ![Help Menu](screenshots/help-menu.png) ## Installation Requires [Babashka](https://github.com/babashka/babashka). ```bash git clone https://github.com/yourusername/lazygitclj.git cd lazygitclj bb start ``` ## Keybindings | Key | Action | |-----|--------| | `q` | Quit | | `?` | Help | | `r` | Refresh | | `h/l` | Previous/Next panel | | `j/k` | Move down/up | | `2-5` | Jump to panel | | `space` | Stage/unstage (Files), Checkout (Commits/Branches), Apply (Stash) | | `c` | Commit | | `p/P` | Pull/Push | | `z/Z` | Undo/Redo | ## Development ```bash bb start # Run the TUI bb test # Run unit tests bb test:e2e # Run VHS tape tests ``` ## License MIT