The overlay & GitHub
The Deltaview bar
The bar starts bottom-left. Drag it by its grip to move it; the position is remembered. It shows the ref, progress such as 3/12 reviewed, a toggle to hide the highlights, Next ▸ to jump to the next undecided item, and Mobile, which shows the current page at phone width (390px) in a frame with the same outlines. Expanded, it also shows:
- the test result and any new env vars;
- Items: every item grouped by page, with Backstage last. Click one to go to its page and open it. Items whose element isn't on the current page are marked not found on this page;
- Backstage: the drawer of items with no place on screen;
- Finish.
Keyboard shortcuts
| Key | Action |
|---|---|
j / k | Open the next / previous item |
n | Open the next undecided item |
a | Approve the open item |
r / c | Start a rejection / comment on the open item |
Esc | Close the panel or drawer |
Shortcuts never fire while you type in a text field, yours or the app's, or when Ctrl, Cmd or Alt is held.
Overlays
Each item on the current page gets an outline with a small DELTAVIEW/<ref> chip. Only the chip's button takes clicks, so a closed overlay never covers your app's controls. Once decided, the chip collapses to ✓, ✕ or 💬 and the outline takes the decision's colour. When an item's selector matches several instances of a shared component, the first gets the full outline and the others a dim one.
Opening an item shows a panel with:
- the title, and for indirect items the breadcrumb chain;
- the diff per file, with line numbers: added lines green, changed orange, deleted red, and the changed words within a changed line highlighted;
- a Changed since your last review tag or a carried over note on a re-review;
- Before ⇄ after, when the base version was started: the same page before the change, side by side, with the item outlined there too. The before view is read-only;
- the plain-language summary, plus Affects, How to reach and an appears unused warning where they apply;
- Approve, Reject and Comment, a comment box and Submit. Reject and Comment need text.
Click a diff line to anchor a rejection or comment on that line; click it again to go back to the item's first change. The anchored line goes into the manifest and the inline GitHub comment.
Decisions are written to the manifest immediately. Reset clears an item back to undecided. Press Esc or ✕ to close a panel.
Finishing
Finish makes the proxy, not the agent, post the review with gh, mark the manifest finished and exit. Claude is re-invoked when it exits and reports the outcome, then stops the dev server and removes the worktree. If posting fails, the error shows in the bar and you can click Finish again. Undecided items are allowed: the first click on Finish shows how many are left, and a second click posts anyway, listing them as not reviewed.
With no open PR, for example when reviewing a bare commit, nothing is posted and only the manifest is saved.
What gets posted
One GitHub review per session, on the reviewed head commit.
| Review event | When |
|---|---|
REQUEST_CHANGES | Any item is rejected. |
APPROVE | Every item is approved. |
COMMENT | Anything else, and always on your own PR, which GitHub won't let you approve or reject. |
Each rejected or commented item becomes one inline comment: on the line you picked, or else on its first changed hunk, on the added lines (or the deleted lines when nothing was added). If the item spans more files, the comment lists them under “Also covers”. Approved items get no inline comment; they're listed under Approved in the review body, so “reviewed and fine” is distinguishable from “nobody looked”.
- Rejected:
❌ Rejected: <reason> - Comment:
💬 <comment> - Backstage items add Not visually verified.
The review body summarises the counts, the test result, new env vars, approved items, rejections, items not reviewed, and items with no line changes (such as binary files) that can't take an inline comment. If the PR's head moved on while you were reviewing, the body says so: the review is still posted on the commit you reviewed, and its inline comments may show as outdated.
