lazyjj
Interactive TUI for Jujutsu/jj. Built in Rust with Ratatui. Wraps jj CLI.
Trit: 0 (ERGODIC) — Coordinator role: visual interface mediating between jj operations and user intent
Overview
lazyjj presents jj repository state as interactive panels — log, files, bookmarks — with keyboard-driven commands for all common operations. Think lazygit but for jj.
- Log tab — scroll commit graph, view diffs in side panel
- Files tab — current change's files with inline diff
- Bookmarks tab — manage bookmarks with track/untrack/rename
- Conflicts — view and navigate conflict markers
- Mouse support — clickable panels
Installation
# macOS (Homebrew)
brew install lazyjj
# Cargo
cargo install lazyjj
# From source
git clone https://github.com/Cretezy/lazyjj
cd lazyjj && cargo install --path .
Requires jj CLI installed and on PATH.
Usage
# Launch in current repo
lazyjj
# Specify repo path
lazyjj -p /path/to/repo
Keybindings
Global
| Key | Action |
|---|---|
1 / 2 / 3 |
Switch to Log / Files / Bookmarks tab |
q / Esc |
Back / Quit |
? |
Help |
j / k or ↓ / ↑ |
Navigate |
Enter |
Select / Expand |
Log Tab
| Key | Action |
|---|---|
n |
New change from selected |
e / E |
Edit selected change |
d |
Describe (set commit message) |
a |
Abandon change |
s / S |
Squash into selected |
b |
Set bookmark on selected |
r |
Change revset filter |
f |
Git fetch |
p |
Git push |
w |
Toggle color-word / git diff |
Enter |
View files of selected change |
Files Tab
| Key | Action |
|---|---|
w |
Toggle color-word / git diff |
Enter |
View file diff |
Bookmarks Tab
| Key | Action |
|---|---|
c |
Create bookmark |
r |
Rename bookmark |
d |
Delete bookmark |
t |
Track remote bookmark |
u |
Untrack bookmark |
f |
Forget bookmark |
n |
New change from bookmarked change |
Workflow Examples
Quick Review & Squash
lazyjj
→ Log tab: scroll to fixup commit
→ s to squash into parent
→ d to update description
→ p to push
Interactive Rebase-like Flow
lazyjj
→ Log tab: navigate to change
→ e to edit (jj edit)
→ make changes in editor
→ return to lazyjj
→ changes auto-snapshotted
Bookmark Management
lazyjj
→ 3 for Bookmarks tab
→ c to create, type name
→ f to fetch latest
→ t to track remote bookmark
Configuration
lazyjj reads jj's config. Custom diff tool:
# ~/.config/jj/config.toml
[ui]
diff.tool = ["delta", "--side-by-side"]
Triadic Composition
lazyjj (0) + jj (+1) + pijul (-1) = 0 ✓
Coordinator Generator Validator
lazyjj coordinates user interaction, jj generates changes, pijul validates patch-theoretic soundness.
References
- lazyjj on GitHub (970+ ★)
- lazyjj on Homebrew
- lazyjj on crates.io
- Ratatui — TUI framework
- jj skill
- pijul skill