Skip to content

dv v0.2.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:41
· 190 commits to master since this release
d544f14

Added

  • 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.