You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
dv reloads the diff when the working tree changes under it (Claude making changes, a save in
hx, anything else), about once a second, keeping the cursor where it is; and right after a
background Claude run.
Mouse support: the wheel scrolls (the view, a popup, a picker's selection), a click moves
the cursor there (code, comment margin, either split side) or folds on a fold arrow, a drag
selects; in pickers and dv list a click picks and a second click opens. --no-mouse leaves
the mouse to the terminal (most terminals select text with Shift held either way).
Space u updates the checkout: to the PR's head (fast-forward only, keeping local commits),
or git pull --ff-only without a PR, then refreshes.
Comments in the right margin: in single-pane view on a wide window (room for 80 columns of
code beside the margin: a third of the window, 60–80 columns, or all beyond 200 columns of
code side; thread tags on a line of their
own under the header), review threads sit beside their lines instead of between
them. A box that would overlap the one before goes just below it; code only gets blank
rows where a file's comments need more room than its code. Ctrl-w l / Ctrl-w h move
between code and comments; the box about the cursor's line (or the line a box is about) is
lit. Ctrl-w c switches to inline comments and back.
In the same layout, the PR's conversation (and Claude's summary) sits beside the
description: whole comments, while there's description beside them; the rest follows full
width below.
One Claude Code session per PR, kept next to its review file: every run (background or in a
pane, from any dv and any worktree) continues the same conversation about that PR.
Claude's notes on the repo (notes.md in dv's directory, shared by worktrees): the skill reads them
before each task and keeps them up to date (conventions, subtle code, your review
preferences), so what it learns carries over to the next PR. Space a opens them in hx.
Approving a PR (S, Approve) starts the summary as ACK <the PR's head commit>.
a on code lines leaves Claude a comment there (a question or a request), in the review file;
Claude answers right away, and r continues the thread. Nothing goes to GitHub.
"Ask Claude to make the changes" acts on the review's open comments, Claude's and the ones
you left it, and works with none too: then what you write is the request ("Ask Claude to
make a change"). It's checked whether Claude can take it before the editor opens, and if
it still can't, what you wrote is saved to a file.
Background Claude runs may run cargo check, cargo build, cargo test and cargo clippy,
to check a change they made.
Space a → "Dismiss Claude's outdated comments": all of Claude's comments whose code has
changed, after a confirmation (your own comments for Claude stay).
]p / [p step through your pending review's comments (replies too), wrapping around.
Ctrl-d in the pending comments picker (Space p) deletes the selected comment (after a
confirmation); the review thread key popup lists Space d.
Changed
dv's files for a repo (Claude's reviews, sessions, notes) move from .git/dv to ~/.local/share/dv/<repo>/ (or $XDG_DATA_HOME), on first use: Claude Code refuses to edit
anything inside .git, so background Claude runs couldn't write the review there. Claude
runs get access to that directory (--add-dir), from worktrees too.
When a Claude run is refused something, dv says what (in the status bar, and keeps one log
per run) instead of "done"; replies made meanwhile wait rather than hit the same refusal.
Approving pre-fills ACK <PR head> even when your checkout has diverged from it, with a hint
above it (not posted) that it isn't what you have checked out.
Inside zellij, Enter reuses dv's hx pane while it's open (:open + :goto there) instead of
opening another, and dv reloads as you save in it, not only when hx exits.
Claude resolves a thread once it's settled (it made the change asked for, or you agree it
doesn't apply), after replying; answering a question leaves it open. Reopen with Space r.
Inside zellij, a PR's Claude Code pane is reused: when it's open, Space a puts the request
in its input (pasted, focused; you press Enter) instead of opening another pane, and leaves
it alone while it's asking you something. Replies are answered in the background on a fork
of its session, so nothing is typed into a pane behind your back.
Claude Code sessions are kept per checkout directory (as Claude Code stores them), and one it
doesn't have isn't resumed.
Inside zellij, hx, the comment editor and Claude Code open in a pane to the right instead of
a floating one.
Fixed
dv no longer freezes while hx is open beside it: hx runs in its own pane and dv reloads when
it exits.
dv N for a PR that has a <repo>-N worktree opens it there (its branch couldn't be checked
out in the main checkout too).
A PR branch with local commits that aren't on the PR (unpushed work, a local rebase) opens
as it is, with a note, instead of failing to fast-forward; -f still resets it to the PR.