Skip to content

Make a review pass reachable from the keyboard - #18

Merged
longvo92 merged 2 commits into
mainfrom
claude/tool-review-improvements-068e38
Jul 29, 2026
Merged

Make a review pass reachable from the keyboard#18
longvo92 merged 2 commits into
mainfrom
claude/tool-review-improvements-068e38

Conversation

@longvo92

Copy link
Copy Markdown
Owner

Five things that got in the way of an actual review pass over a real compare.

A report that could not be written looked like a normal run

Writing to a missing folder, or to a report still open in a browser, died with
a Python traceback and exit 1 — the same code a pipeline reads as "real
changes found". A run that produced no record was indistinguishable from an
ordinary one.

It is exit 2 (compare incomplete) now, with the reason in a sentence, and the
scan it could not write is still printed. --exit-zero cannot mask it.

The viewer

  • A finished scan opens on the first change. It used to leave the diff pane
    empty next to a tree full of results.
  • F7 / F8 walk the whole compare. They wrapped silently inside one file,
    so getting to the next file meant going back to the mouse. They now run off
    the end into the next (previous) file with something to review, and wrap at
    the end of the set. Ctrl+Home / Ctrl+End still mean "this file".
  • Ctrl+F finds text in the open file. Searches the rows, so a hit on
    either side counts once and both panes land on it. Every occurrence is marked
    amber, the current one brighter. F3 / Shift+F3 step, Esc closes. The
    query survives moving to another file — that is how an identifier gets chased
    across a compare.
  • Hide identical leaves only the files with a difference in the tree. A
    view, not a rule: verdicts, counts and the exported report do not notice it.

The find box needed the rows of a one-sided file, which also gave whole
added/deleted files a working reveal — scrolling is driven by the pane that
actually holds the text.

Notes

  • The second commit fixes a bug in the first: the search marks and the
    current-change overlay shared one selection list, so a query that stopped
    matching said "no match" while the old word stayed lit. They are separate
    layers now.
  • Docs updated in the same change: README, the built-in User guide (F1),
    CHANGELOG.md, and the exit-code table.
  • 378 tests pass (python -m unittest discover -s tests), 30 of them new.
    Every UI change was rendered and looked at, not only asserted on.

longvo92 added 2 commits July 28, 2026 23:42
Five things a reviewer hit on the way through a real compare:

- A report that could not be written died with a traceback and exit 1 --
  the same code a pipeline reads as "real changes found", so a run that
  produced no record looked like an ordinary one. It is exit 2 now, with
  the reason in a sentence, and the scan it could not write still prints.
- A finished scan left the diff pane empty next to a tree full of results;
  it opens on the first change instead.
- F7/F8 wrapped silently inside one file, so walking the compare meant
  going back to the mouse between every file. They now run off the end
  into the next (previous) file with something to review.
- No way to find an identifier in the open file. Ctrl+F searches the rows,
  so a hit on either side counts once and both panes land on it; the query
  survives moving to another file, which is how a name gets chased across
  the compare.
- A regenerated tree is mostly untouched files. `Hide identical` drops
  those rows -- a view only: verdicts, counts and the exported report do
  not notice it.

The find box needed the rows of a one-sided file, which also gave whole
added/deleted files a working _reveal: scrolling is now driven by the pane
that actually holds the text.
The search marks and the current-change overlay were sharing one
extraSelections list per editor, and only the "found something" path ever
rewrote it. Typing on past the last hit ("begin" -> "beginal") left the old
word lit while the bar said "no match" -- the pane contradicting its own
answer, on a tool whose whole claim is that what you see is what it found.

The two overlays are separate layers now, composited on every repaint, so
either can be rebuilt without wiping the other. Every path out of the find
box repaints: no query, no hits, bar closed, file changed.

While the layer existed, marking only the current hit was leaving "3 of 8"
unverifiable. All occurrences are marked now, the current one brighter.
@longvo92
longvo92 merged commit d1f94dc into main Jul 29, 2026
4 checks passed
@longvo92
longvo92 deleted the claude/tool-review-improvements-068e38 branch July 29, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant