Diff view
Grove has no standalone diff editor. Review happens inside the ordinary file viewer: the editor shows the worktree's live file, and the active task's changes are painted over it as an overlay in the task's color. You're reading the real file with full context — and it stays fully editable while you review it.
A true side-by-side diff exists in exactly one place: review-only PR tasks (below).
What you see
- Added and modified lines are tinted whole-line in the task's color.
- Deleted lines render as inline zones at the spot they were removed, so you can see what used to be there without leaving the file.
- Overview-ruler ticks mark changes so you can scan a long file at a glance.
- The rest of the file is just… the file. No
+/-hunks floating in space, no truncated three-line patches.
What counts as changed
- Diffs are computed against the merge-base of the base branch and the task's HEAD — commits that land on
mainafter the task forked don't pollute the diff until you rebase. - Uncommitted working-tree edits are included, and untracked files count as added. The overlay reflects what the agent is doing right now, not just what it committed.
- An unmaterialized (note-only) worktree shows no overlay — see Tasks and worktrees.
Live refresh
A background poller hashes each worktree's diff every 1.5 seconds — carefully, so it never takes git's index lock and never fights the agent. When the diff actually changes, the open file re-fetches its hunks. A burst of agent writes coalesces into the next tick instead of flickering.
Comments
The comment overlay mounts on the same editor. Select a line range, leave a comment, and it's anchored to the content — surviving rewrites, relocating when lines move, flagged when stale. The full protocol is in Comments.
Review-only PR diff
PR tasks opened "for review" skip the worktree entirely, so there's no live file to overlay. These render a genuine read-only side-by-side Monaco diff, pulled straight from git's object database. No LSP, no comments, no edits — upgrading the PR to a real worktree task gets you all three. See GitHub PR sync.
Current limitations
- The overlay is single-color (task-tinted), not a red/green word-level diff; word-level diffing exists only in the review-only side-by-side view.
- The review-only diff carries no comment layer.
- One base per task — no multi-base or N-way diffs. See Design philosophy.
Where this lives in the code
- Overlay paint, hunk fetch, refresh:
src/components/FileViewer.tsx. - The 1.5s per-worktree poller:
src-tauri/src/diff_poller.rs. - Diff computation (merge-base, untracked synthesis):
src-tauri/src/git.rs. - Review-only side-by-side:
src/components/ReviewDiffViewer.tsx.