diff --git a/.gitignore b/.gitignore index 20ae152..f43e8ec 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,6 @@ target/ *.jar # Generated test outputs -*.gif -*.png test/e2e/output/ +test/e2e/*.gif +test/e2e/*.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..d5f43ba --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ +# 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 diff --git a/screenshots/branches-panel.png b/screenshots/branches-panel.png new file mode 100644 index 0000000..068dd6a Binary files /dev/null and b/screenshots/branches-panel.png differ diff --git a/screenshots/commits-panel.png b/screenshots/commits-panel.png new file mode 100644 index 0000000..1f81306 Binary files /dev/null and b/screenshots/commits-panel.png differ diff --git a/screenshots/files-panel.png b/screenshots/files-panel.png new file mode 100644 index 0000000..8d17bfa Binary files /dev/null and b/screenshots/files-panel.png differ diff --git a/screenshots/help-menu.png b/screenshots/help-menu.png new file mode 100644 index 0000000..5d08230 Binary files /dev/null and b/screenshots/help-menu.png differ diff --git a/screenshots/stash-panel.png b/screenshots/stash-panel.png new file mode 100644 index 0000000..ca982b9 Binary files /dev/null and b/screenshots/stash-panel.png differ