Riffle 2.0: it writes back
Riffle 1.0 could show you anything and change nothing. Every review ended the same way: you read the diff, you knew which three hunks were ready, and then you went to a terminal to say so. Riffle 2.0 is the release where that trip stops being necessary.
A working-tree review can now change the index. Stage, unstage or discard whole files from the file list, or one hunk at a time from the footer of the diff. The unit is git's own hunk rather than Riffle's change block, so what gets staged is exactly what git add -p would have staged. The same thing, from a window where you can actually see it. Discarding always asks first, and sends the file to the Trash rather than deleting it.
The file list grew up to meet that. Files group by directory (flat, grouped, or a full tree) with the common root named once above the list instead of repeated down every row. There is a filter, per-status counts, and a dot on each row saying whether it is staged, unstaged, or partly both. Ninety-eight changed files is a list you can work through now instead of a wall.
History arrived too. Every commit that touched the file you are reading sits beside its diff, newest first. Click one to load that revision into the left pane and read the file as it was against the file as it is. A blame column shows who last touched each line, with consecutive lines from one commit drawn as a single block labelled once, and clicking it opens the commit behind it. And a branch or pull request review has a Files ⇄ History toggle of its own, listing the commits in the range, any of which opens as a review in its own right.
Three smaller things that change how a long review feels. ⌘↓ no longer stops at the end of a file. It carries on into the next one, and the footer says where you are: "File 3 of 12 · Change 2 of 5". A review left Live can tell you when the repository moves while you are somewhere else, and a burst of a hundred changes is one notification rather than a hundred. And image comparisons got a pixel inspector: hover anywhere for both sides' colour, the per-channel difference, and a ΔE00 that says whether the difference is one a person could actually see, along with the colour space each file declares, which is very often the entire reason two identical-looking images differ in every pixel.
Riffle 2.0 also has a new icon. Same riffled fan of cards, but the front card is split down the middle now, with a column of lines either side. It reads as a diff rather than as a stack of paper, and it is drawn on Apple's real continuous-corner tile, with a layered version for macOS 26.
If you already own Riffle, 2.0 is free. Lifetime Access means lifetime access. There is no paid upgrade and nothing to re-enter. Riffle will offer the update the next time it checks, or you can grab it from the Riffle page. New here? It is $29.99 once, with a 14-day full-feature trial and a free tier that keeps unlimited 2-way diff forever. Homebrew works too: brew install --cask skulkworks/tap/riffle.