
oyui (emilien-jegou/oyui) is a Rust ratatui TUI that replaces vimdiff as the interactive diff editor for Jujutsu (`jj split`, `jj diffedit`) and Git (`git difftool`) — 101 stars in two weeks from v0.1.0, scriptable via the Rune language with hot reload, GPL-3.0, install with `cargo install oyui`.
jj split. Jujutsu (jj) is a Git-compatible version control system that models history as a series of mutable changes rather than immutable commits — it's been gaining traction in teams that do heavy interactive history editing. The built-in interactive prompt drops you into your $DIFFTOOL — and if you haven't configured one, that means vimdiff. You stare at two 200-line files in a terminal that turns color into a liability, hunt for the hunk you want to move, and wonder why there isn't just a purpose-built TUI for this. 1jj diffedit, jj split, jj squash -i, and jj restore -i — and replaces the raw diff view with a two-pane editor backed by ratatui (the Rust terminal UI library) and syntect. Syntax is highlighted for 20+ languages via tree-sitter parsers; the diff gutter runs character-level resolution, not just line-level. 1git difftool), though jj resolve and git mergetool are still on the roadmap. The author, Emilien Jegou — a French fullstack engineer working primarily in Rust and TypeScript — has shipped five releases in under two weeks of public availability, all of them additive. 2Ctrl+P), binary file support via magic-number detection, and 40+ built-in themes. 1jj splitEnter, flip between file tabs, and hit Ctrl+S to confirm. The split is clean; no temporary files, no external editor config needed beyond setting $DIFFTOOL=oyui.jj squash -i (pick which lines of a descendant commit to fold into a parent) and jj restore -i (selectively restore specific hunks from a prior revision). If your team has standardized on Git, git difftool -t oyui drops you into the same editor. 1cargo route:| Method | Command |
|---|---|
| cargo | cargo install oyui |
| Nix flakes | github:emilien-jegou/oyui |
| AUR (Arch Linux) | yay -S oyui |
# for jj
jj config set --user ui.diff-editor oyui
# for git
git config --global diff.tool oyui
git config --global difftool.oyui.cmd 'oyui "$LOCAL" "$REMOTE"'x86_64-linux, x86_64-apple-darwin, and aarch64-apple-darwin are now available. v0.2.0 (June 18) was the larger update: a full theming overhaul that switched the default theme from weywot to ansi, added tmTheme external theme loading, improved color parsing (rgb / hsl / hex / ansi / ansi256), and introduced a confirm window for destructive actions. The breaking change in v0.2.0 is that theme::get() was removed — any custom config calling it needs updating. 2crates/oyui/Cargo.toml. The repo root currently has no LICENSE file, which is unusual and worth watching — packagers and tooling that scan repo roots for license files will come up empty. GPL-3.0 is a copyleft license; if you're building a proprietary tool that shells out to oyui as a subprocess that's fine, but embedding the library directly would trigger the GPL's distribution requirements. For daily terminal use as a diff tool, the license is irrelevant.jj resolve (three-way merge) and git mergetool aren't implemented yet. If three-way conflict resolution is your primary need, oyui isn't ready for that workflow. The two-pane interactive selection mode — split, squash -i, diffedit, restore -i — is fully supported. 1| Field | Value |
|---|---|
| Repository | emilien-jegou/oyui |
| Version | v0.2.1 (released June 19, 2026) |
| Language | Rust (93.2%) |
| License | GPL-3.0 |
| Stars | 101 |
| Releases | 5 |
| Install | cargo install oyui |
| jj support | diffedit, split, squash -i, restore -i (full); resolve (planned) |
| git support | difftool (partial) |
github.com
github.com
crates.io
terminaltrove.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.
| Stars | 101 |
| Releases | 5 |
| Commits | 101 |
| License | GPL-3.0 |
| Language | Rust |
| Latest | v0.2.1 |