# CommitBrief v1.20.0

> remote pr now syncs its review threads instead of re-posting them, and the new --since-last-review flag reviews only the commits added since CommitBrief's last review of the PR.

Released October 19, 2026

Canonical URL: https://commitbrief.com/changelog/v1.20.0/

---

## Added

- **`remote pr --since-last-review`.** Every full-PR review `remote pr`
  submits now ends with a hidden `<!-- commitbrief:reviewed=<head sha> -->`
  marker. With the flag, the next run reads CommitBrief's newest marked review
  and, when the PR head only moved forward by plain commits, reviews just that
  range (`compare/<prev>...<head>` through `gh`; local git is never written).
  When the head did not move it says so and posts nothing. A missing marker, a
  force-push, a merge commit in the range, or any step that cannot establish
  the range safely (unreadable review history, a commit list too long to
  inspect, a failed compare or diff request) falls back to a full review with a
  one-line notice. With `--no-post` the flag is ignored (no review history is
  consulted) and an info line says so. Findings are still anchored against the
  full PR diff; an incremental run resolves a vanished finding's thread only
  when that thread is outdated and its file is in the new range, and never
  approves while one of CommitBrief's threads is still open. Only full-PR
  reviews advance the marker: a run narrowed with `--file`, `--dir`,
  `--exclude-file` or `--exclude-dir`, or one whose scope came out empty,
  posts no marker, so the next incremental run continues from the last full
  review. In an incremental run a finding on a line that exists only on the
  range's old side goes to the review body instead of an inline comment. See
  [Incremental review](/docs/1.x/remote-pr#incremental-review---since-last-review).
- **`since-last-review` input** on the GitHub Action's `comment` mode passes
  the flag through. See [GitHub Action](/docs/1.x/github-action/).

## Changed

- **`remote pr` now syncs instead of re-posting.** Each inline comment carries
  a hidden marker (`<!-- commitbrief:fp=<fingerprint> v=1 -->`) so the next
  run recognises its own threads: a finding that is still present is left
  alone (or its comment body is edited in place when the text changed), a new
  finding is posted once, and a finding that disappeared has its thread
  resolved. A finding that reappears reopens the thread CommitBrief resolved.
  Threads a human resolved or reopened are never touched, and duplicates of one
  fingerprint collapse into a single thread (occurrences are listed as
  `Also at:`).
- When CommitBrief cannot resolve a thread (no permission) it leaves a short
  `No longer present as of <sha>` / `Present again as of <sha>` reply instead,
  once per transition. Comments without a marker, written by someone else, or
  with an unknown marker version are never modified.
- Comments posted by earlier versions carry no marker, so the first run on a
  pull request that was already reviewed posts its findings once more; from
  then on threads are synced.
- `remote pr` prints a one-line sync summary on stderr:
  `Synced: N posted · M updated · K unchanged · R resolved · Q replied · H held`.
  If the review threads cannot be read, the run degrades to plain posting.
- With `--file`, `--dir`, `--exclude-file` or `--exclude-dir`, `remote pr`
  only syncs threads on the files it actually reviewed; threads on other files
  are left alone, and a filter that matches no file skips the sync (the verdict
  is still submitted).