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: side by side, with syntax colors, word-level highlights, and line numbers.
Install
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.
Edits to files in Claude Code's temp directories (/tmp/claude-*, the
scratchpad) are hidden by default; the status bar counts them and o shows
them. Files outside the repository anywhere else stay visible.
| 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 |
n / N |
next / previous card |
Enter |
collapse / expand the current card |
z |
collapse / expand every card |
v |
toggle side-by-side / unified |
w |
toggle wrapping of long lines |
o |
show / hide edits in Claude Code temp directories |
Tab |
cycle the session filter: all, then each session |
? |
key reference |
q, Esc, Ctrl-c |
quit |
The current card is the one at the top of the view; its header stays pinned
while its body scrolls. 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. Colors assume a dark
terminal background. 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.