My name is deff
deff is a Rust TUI: interactive, side-by-side file review for git diffs with per-file navigation, vertical and horizontal scrolling, syntax highlighting, and added/deleted line tinting.
Choose one install method:
- Install from crates.io with Cargo:
cargo install deff- Run the installer script from this repository:
curl -fsSL https://raw.githubusercontent.com/flamestro/deff/main/install.sh | bashInstaller script source: https://github.com/flamestro/deff/blob/main/install.sh
The script checks for cargo, clones this project into a temporary directory, installs it, and removes the temporary checkout.
Bundled syntax grammars are compiled into the binary, so removing the checkout does not affect highlighting.
If you have local edits (including untracked files) and want to review them before committing, run:
deff --include-uncommittedThis opens the side-by-side review so you can check exactly what changed in your working tree.
upstream-aheadstrategy (default) to compare local branch changes against its upstreamrangestrategy for explicit--base/--headcomparison- Optional
--include-uncommittedmode to include working tree and untracked files - Side-by-side panes with independent horizontal scroll offsets
- Keyboard and mouse navigation (including wheel + shift-wheel)
- Vim-like motion navigation (
h/j/k/l,g/G,Ctrl+u/Ctrl+d) - In-diff search (
/+ Enter, thenn/Nto navigate matches) - Per-file reviewed toggles (
r) with local persistence under.git - Language-aware syntax highlighting and line-level add/delete tinting
Single-line change view:
Multi-line change view:
deff
deff --strategy upstream-ahead
deff --strategy range --base origin/main --head HEAD
deff --strategy range --base origin/main --include-uncommitted
deff --theme darkShow help:
deff --helpPrerequisites:
- Rust toolchain (
cargo) git- Interactive terminal (TTY)
-
Build locally:
cargo build --release --locked ./target/release/deff --help
-
Optionally install it to your local Cargo bin path:
cargo install --path . deff --help -
Run it inside any git repository you want to review:
cd /path/to/your/repo # default: compare local branch commits vs upstream deff # explicit range deff --base origin/main --head HEAD # include uncommitted + untracked files deff --base origin/main --include-uncommitted
If your branch has no upstream configured, use the explicit --base flow.
Theme selection:
- By default,
deffprefers a dark syntax theme (better for black/dark terminals). - Use
--theme auto|dark|lightto control rendering for your terminal. --themetakes precedence overDEFF_THEME=dark|light.
Custom syntax grammars:
deffloads syntect defaults, bundled deff grammars, plus any extra.sublime-syntaxfiles found in:assets/syntaxes(current working directory).deff/syntaxes(current working directory)
- Any
*.sublime-syntaxfile added under this repo'sassets/syntaxesis auto-bundled at build time.
Search and reviewed workflow:
- Press
/to enter a search query for the current file (searches both panes). - Press
Enterto apply the query, then usen/Nto jump matches. - Press
rto mark the current file reviewed/unreviewed. - Reviewed state is persisted locally in
.git/deff/reviewed/and keyed by comparison scope + file content hash.
This repo ships with .github/workflows/bump-version.yml.
- Trigger: push to
main(excluding commits authored bygithub-actions[bot]) - Computes the next version from commit prefixes (
feat:-> next minor,fix:/chore:/docs:-> next patch) and updatesCargo.toml/Cargo.lockwhen needed - Publishes new crate versions to crates.io and then creates/pushes the matching
vX.Y.Ztag and GitHub release
See CONTRIBUTING.md for local setup, commit message conventions, and release/versioning rules.
For a module-level map and extension plan, see docs/architecture.md.

