Repository navigation
BetterPullReview v0.2.0
Pre-releaseBetterPullReview 0.2.0
Private macOS-only prerelease targeting macOS 13 or newer, universal Apple
Silicon and Intel. Windows and Ubuntu packages are not part of this release.
Version 0.1.10 was prepared but never released; 0.2.0 replaces it and includes
every change since 0.1.9, including the items drafted for 0.1.10. Distribution
builds retain the full agent and local automation capabilities.
Included
This release includes the 0.1.9 functionality and these changes.
Home and pull request lists
- Home names the author of every pull request that is not yours, shows each
row's age, green and red line totals and comment count, and counts waiting
reviewers on your authored rows. Overview keeps the reviewers' names. - A known pull request title now leads each Home row; repository and number
are secondary and omit what the row's group already names. - The Reviewer and Requested filters no longer hide a GitHub CLI account's
pull requests, and Repository grouping changes the list, persisting across
restarts. - An entry can be removed from Recently viewed through its menu or with
Delete or Backspace. Removal applies to every window of the profile and
persists across restarts. - Home and Overview describe waiting and merge requirements more calmly:
named reviewers replace generic counts, long lists end with "and N more",
and Overview lists each unmet condition and each outstanding reviewer on its
own line, with code owners marked and caveats in the details. - A pull request you had reviewed whose head has since changed stays under
Needs me on its first open after a restart.
Find and Search
- Find (Command+F) opens a floating find box at the top right of the current
pane, over the code, in the style of VS Code; the panes do not move or
shrink. Enter and Shift+Enter, F3 and Shift+F3, or the arrows step through
matches, shown as "N of M". Every match is lightly highlighted, the current
one more strongly, and matches are marked on the scroll track. Command+F
with a word selected starts at that occurrence. Esc closes it and returns to
the code. - The find box has Match Case, Whole Word and Regular Expression toggles inside
the query field, plus Find in Selection. Option+W toggles Whole Word and
Option+L Find in Selection while typing. An invalid regular expression is
marked on the field and explained in its tooltip. - Find in Files (Command+Shift+F) searches every changed file of the pull
request, on both sides of the comparison, from a Search view in the style of
VS Code. Left and Right filter chips choose which side's matches to show.
Results are grouped by file, with each file's match count and whether it was
added, removed or renamed. Each match row shows its side, line number and
the line in the code font, with the match highlighted. F4 and Shift+F4 step
through results, and opening a result goes to the exact file, side and
match. - Find in Files takes the same Match Case, Whole Word and Regular Expression
toggles (regular expressions through the RE2 library, with Unicode case
folding), and include and exclude path patterns behind its "…" button. It
reports partial or limited coverage instead of "No results".
Reviewing diffs
- Next file, Previous file, Next change and Previous change now enter Review
from Overview, Discuss or Threads. - View > Go to header/source (Option+O) jumps between a C++ source file and
its header when both are in the review, preferring the closest directory
match. - Touchpad scrolling moves the diff smoothly by fractions of a line, and
horizontal panning no longer slips a line vertically on small finger
movements. Keyboard navigation places a partly hidden selected line flush
with the nearest visible edge. - Moving down from a selected line far outside the view now scrolls the next
line into view. - The review title and Open on GitHub button appear as soon as the pull
request's content arrives, without visiting Home or resizing the window. - With enlarged system fonts, the review navigation keeps its full group
names and the overview controls stay usable when a scrollbar narrows the
sidebar. - C++ highlighting distinguishes namespaces and enum members, with their own
rows in the Appearance Syntax colours, and recognizes more identifier cases
that it previously misclassified. - Lines are counted as Git counts them, so a lone carriage return no longer
starts a new line. Comments placed after one in such a file now name the
correct line on GitHub. - Multi-line comment ranges are accepted across hunks that one unchanged line
separates, as GitHub accepts them. - The highlighting of what changed inside a line now uses the dtl library,
and marks changes in many lines it previously left unhighlighted. - Diff computation now uses Git's xdiff (Myers with the indent heuristic) as
its line matcher, so hunks agree more closely with GitHub's. xdiff ships as
its own separately replaceable LGPL-2.1 shared library,
libbpr_xdiff.dylib, in the same arrangement as Qt; its notice is in
THIRD-PARTY-NOTICES and its source is in the corresponding-source ZIP.
Comments and conversations
- Reopening a pull request from Recently viewed or a pasted link always reads
it fresh from GitHub, so comments published since the last visit appear. - After you submit a review or publish a comment or reply, the window rereads
the pull request by itself and keeps your place: modality, selected file and
open note are unchanged, and a file you pick while the reread lands stays
picked. - A comment whose publication outcome is unknown keeps its Retry across a
reread or Refresh. - On Discuss, the blue new-post counts line up whether or not a note is
resolved or carries an unsent reply. - Refreshing a comparison while private drafts are being restored no longer
leaves saved replies unable to be discarded. - The suggestion editor, which is also the Review Cycles file pane, moves,
deletes and draws by character as you see it, so wide CJK text, combining
accents, flags and emoji sequences are no longer split or overlapped.
GitHub CLI accounts and publishing
- The chosen GitHub CLI connection is remembered across launches for each
server, restoring the same host, login and account without asking again.
It can be replaced, signed out or forgotten. - Every GitHub CLI operation uses the chosen account's own credential and
stops with a named reason if that credential is unavailable, instead of
falling back to another account. - Publishing a review, inline comment or tour through the GitHub CLI no longer
shows a second warning dialog; the review form's account, repository and
head checks are the confirmation, and failures are reported by type.
Appearance and themes
- Importing an older theme fills colour roles it does not define, such as the
new namespace and enum-member colours, from its own base theme, so the
preview and contrast check use the imported theme's colours.
Local workspaces and Review Cycles
- Reading a local Git checkout follows Git's rules for repository format and
extensions, configuration syntax, ignore-file case folding and bracket
classes, index checks and symbolic references. A checkout Git's rules do not
allow, or one using reftable reference storage, is refused with a named
reason instead of being read approximately.
Reliability and performance
- Large pull requests load faster: conversation indexing reuses each file's
identity, Overview reuses receipt paths across refreshes, and diff line
pairing scores similarity with the rapidfuzz-cpp library. - Comment bodies counted in Overview's feedback tallies are fingerprinted off
the window thread. - JSON, Unicode, compressed review bundles and Git identity hashing now use
established libraries (glaze, utf8proc, zlib, sha1collisiondetection and
HACL* SHA-2) in place of hand-written code; their notices are in
THIRD-PARTY-NOTICES.
Package and verification
Distribution builds disable tests. The full normal macOS gate on release source
55f4a5a510f33802cd920baf8744a10226ffd87b passed 729 tests with zero failures and
one configured Debug-only skip. That cache-bytes row passed separately in Release
mode in 84.26 seconds. The notarization retry reused this unchanged passing evidence.
The universal macOS app and DMG passed Developer ID signature checks, Apple
notarization, stapling and Gatekeeper assessment. Exact packaged-runtime and
security-mechanics audits, source binding and checksums passed before publication.
The selected set supplies the macOS DMG and app ZIP, SPDX inventory, a
separate exact-version corresponding-source ZIP
(Source-BetterPullReview-0.2.0-macos-universal-corresponding-source.zip),
checksums and provenance. The corresponding source includes the source of the
separately replaceable xdiff shared library. Every binary
recipient must retain equivalent access to the exact corresponding-source
asset at no additional charge, including matching redistribution. Source
assets, source offers, digests and tags are retained immutably until the
distribution owner documents that all obligations have ended.
Known limitations
This prerelease does not complete RFC-BPR-0038 qualification. M8/M9
clean-account vault, native Intel/platform, crash privacy and vulnerability
qualification gaps remain open. The final Grype scan returned 33 raw matches (2 Critical, 8 High, 20 Medium
and 3 Low), exit 2. Source-backed applicability proposals remain without
independent security-owner acceptance. The release owner explicitly directed
publication of this private prerelease with the reported licensing/security
qualification gaps remaining open. This direction does not turn the scan into a
pass or establish independent legal/security qualification.
After the application restarts and reconnects through the GitHub CLI, a tour
draft written before the restart may not appear in the restored window. A
tour publication that was already saved still resumes.
Installed agents and GitHub CLI are separately configured capabilities.
Profile purge excludes shared updater and registry state and is not
uninstall. Tour publication depends on exact host and transport
qualification.
The release remains private and must be marked as a GitHub prerelease without
replacing the current stable Latest release. The macOS packages are Developer-ID signed and notarized. Windows and Ubuntu
packages follow separately.