My name is deff
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.
Quickstart
Choose one install method:
- Install from crates.io with Cargo:
- Run the installer script from this repository:
|
Installer 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:
This opens the side-by-side review so you can check exactly what changed in your working tree.
Features
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
Examples
Single-line change view:

Multi-line change view:

Usage
Show help:
Local Build and Usage Flow
Prerequisites:
- Rust toolchain (
cargo) git- Interactive terminal (TTY)
-
Build locally:
-
Optionally install it to your local Cargo bin path:
-
Run it inside any git repository you want to review:
# default: compare local branch commits vs upstream # explicit range # include uncommitted + untracked files
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.
GitHub Version Bump Workflow
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
Contributing
See CONTRIBUTING.md for local setup, commit message conventions, and release/versioning rules.
Architecture and Extension Guide
For a module-level map and extension plan, see docs/architecture.md.