diffier
A live diff feed for Claude Code. Run it in a second pane and every Edit, Write, MultiEdit, and NotebookEdit shows up as a full diff the moment it lands, rendered through delta when it is installed.
Install
delta is optional; without it diffs render in a plain built-in style.
cargo binstall diffier downloads the prebuilt binary for your platform from
the releases page instead of
compiling; the tarballs there can also be unpacked by hand. To build from the
development branch, use cargo install --git https://github.com/spencerjireh/diffier.
The binary lands in ~/.cargo/bin. If diffier is not found afterwards, add
that directory to your PATH.
diffier install registers diffier hook in ~/.claude/settings.json by the
absolute path of the binary, preserving everything else in that file and
writing a one-time settings.json.bak. Restart any running Claude Code session
so the hooks load. Run it again if you move the binary; it also removes the
~/.claude/hooks/diffier.sh script that versions before 0.2 installed.
Use
Run diffier in any second terminal, in the repository you run claude in. A
tmux pane is one way to get that terminal; a separate window, tab, or editor
terminal panel works the same, because the monitor reads a spool file and does
not talk to the multiplexer.
It follows every session in the git repository it started in, including other
worktrees and subdirectories, replaying their recent edits before following new
ones. Once a second session has made an edit, each card carries a session tag
(the last six characters of the session id, prefixed with the worktree name
when it differs). Outside a repository, or with --cwd-only, it follows only
sessions whose working directory matches its own.
| Key | Action |
|---|---|
j / k, arrows, wheel |
scroll |
Ctrl-d / Ctrl-u, PgDn / PgUp |
half page / page |
g / G |
top / bottom, and resume follow |
p |
toggle follow |
v |
toggle side-by-side / unified |
Tab |
cycle the session filter: all, then each session |
q, Esc, Ctrl-c |
quit |
Diffs are side by side by default and unified with --unified. Side by side
needs about 100 columns; below that the feed draws unified until the terminal
is wide enough again. Scrolling up pauses follow. Mouse capture is on for the wheel, so select text
with tmux copy mode or shift-drag.
The hook records edits whether or not a monitor is running, so you can also skip the live view and print the cards after the fact:
diffier --help covers the rest.
More
- docs/design.md — how the hook, spool, and snapshots fit together
- CONTRIBUTING.md — running the checks CI runs
- MIT licensed. See LICENSE.