Skip to content

Releases: TOMOSIA-VIETNAM/open-pr

v2.2.0 - Intel Macs, self-repair, and a watcher that never misses a request

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 24 Oct 07:01
4b1540c

Update

Claude Code (restart it afterwards):

claude plugin marketplace update open-pr
claude plugin update open-pr@open-pr

Codex:

codex plugin marketplace upgrade open-pr
codex plugin add open-pr@open-pr

Cursor, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

No config migration: your repo's settings keep their shape.

New

  • When a command fails in a way the plugin does not document, the agent diagnoses it, patches the installed copy once you approve, and offers to file the report with /open-pr:feedback.
  • Claude Code sessions are named after the PRs you give /open-pr:review or /open-pr:fix, e.g. review admin !1913, api #12. A name you chose is never replaced.
  • /open-pr:watch reads requests made before it started: each open PR's pending /open-pr is asked once, and the ones you skip stay skipped.
  • /open-pr:watch with no role asks Review, Fix, or both each time.
  • Once a requested review is posted, the watcher replies in the request's thread with its link.
  • A pending draft review of yours on the PR no longer fails the post: you choose to publish or discard it.
  • The plugin can edit or delete its own posted comments, and only those. It refuses a comment you wrote, even one quoting a finding.

Improved

  • The menu bar and toasts run on Intel Macs, and the watcher reports a toast only when it was actually shown.
  • jq 1.6 is supported.
  • A finding on a line outside the diff goes on the file when the file is in the diff, otherwise into the overview. The same rule applies on GitHub, GitLab and Bitbucket.
  • GitLab: a finding on an unchanged line no longer fails the publish with a 500. A publish cut off part-way resumes without posting any note twice.
  • A re-review confirms findings the developer answered by hand.
  • A review with line findings only opens with the Overview heading.
  • A finding's Fix label renders as its own paragraph.
  • Menu bar: a PR's fix row sits under its review row. Clicking a session brings forward the tab already attached to it instead of opening another. After a plugin update, the menu bar shows a restart line and restarts only when you click it.
  • Watched sessions no longer stall on a permission prompt from a chained shell command.

v2.1.0 - Reviews on request, fixes in one click, a menu bar for both

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 16 Oct 04:55
109cb0a

Update

Claude Code:

/plugin marketplace add TOMOSIA-VIETNAM/open-pr
/plugin install open-pr@open-pr

Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

No config migration: your repo's settings keep their shape. /open-pr:watch asks its own settings the first time it runs in a repo.

New

  • /open-pr:watch reviews a PR when someone comments /open-pr on it (or mentions you, if the repo picks that trigger): one review session per PR, on Claude Code, Codex, Gemini CLI, Cursor or Antigravity. Only authors with write access trigger it.
  • A question asked with /open-pr gets an answer in the comment's thread instead of a review.
  • Fix role: a new review on your own PR shows its findings with "Fix now"; one click runs /open-pr:fix in its own session, and after the fix it offers to request a re-review in the original thread.
  • A review watcher and a fix watcher run side by side; several machines can watch one repo, and the first to claim a request takes it.
  • /open-pr:menubar (macOS): every watcher on the machine in one menu — PRs per repo with their state, last poll, the host's API quota, Stop, snooze, and each repo's settings and doctor date behind a gear.
  • Toasts drawn as macOS banners, with no notification permission; a click goes where you act.
  • data_dirs keeps each workspace's review memory in its own data directory, so two clients' memory stays apart.

Improved

  • One poll every 3 minutes serves both roles; unchanged GitHub repos cost no API quota, rate limits back off up to 15 minutes, and an idle repo slows to 10 minutes.

v2.0.4 - Review data outside every repo

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 24 Sep 03:54
bd5b961

Update

Claude Code:

/plugin marketplace add TOMOSIA-VIETNAM/open-pr
/plugin install open-pr@open-pr

Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

No config migration: your repo's settings keep their shape.

New

  • Review memory, settings and worktrees live in one data directory outside every repo, so no reviewed repo needs a .gitignore line. The first command asks once where it goes, recommending notebooks/review in the directory just outside the repo, and stores the answer as data_dir in ~/.config/open-pr/config.json.
  • An existing notebooks/review/ under the directory you run from is copied into the data directory (worktrees excluded). The original stays until you delete it, along with its .gitignore line; then run git worktree prune in each reviewed repo.
  • A repo whose memory sits in another notebooks/review/ below the current directory is offered for import on its first review, instead of going through setup again.
  • open-pr.sh --help lists every subcommand, option and exit code the runtime takes.

Improved

  • /open-pr:fix reads 1.1% less context per run (7,874 → 7,791 tokens, mean).
  • A hand-edited config.json that is not valid JSON stops with an error naming the file, and is never overwritten.

v2.0.3 - the review checks the PR against itself

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 18 Sep 11:02
d63525b

Update

Claude Code:

/plugin marketplace add TOMOSIA-VIETNAM/open-pr
/plugin install open-pr@open-pr

Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

No config migration: your repo's settings keep their shape.

New

  • The review cross-checks the PR against itself before concluding: two hunks editing the same function, a rule changed in one hunk and restated in another, or a definition edited in one hunk and called in another are compared with each other — staying silent requires the same check as raising a finding.
  • A finding whose fix touches shared code names the callers that fix must keep working, so applying the suggested fence cannot silently regress another call site.

Improved

  • Read spend during a review is the agent's own judgment: bounded reads around the hunk stay the default, wider reads happen when a conclusion needs them, grep comes before read. Measured on the e2e fixture: one more MUST FIX found, no extra file reads.
  • /open-pr:fix re-derives a suggested snippet against the surrounding code and checks the other call sites of anything it edits before committing — it never pastes a reviewer's fence blind.
  • A (Recommended) option is marked only after the case for the alternative is weighed; a genuine tie gets no mark.

v2.0.2 - multi-PR fix, post_lgtm, and a suite that sees across files

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 17 Sep 16:59
782af36

Update

Claude Code:

/plugin marketplace add TOMOSIA-VIETNAM/open-pr
/plugin install open-pr@open-pr

Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

No config migration: the field added here carries a read-time default.

New

  • .review.post_lgtm — false keeps a review that found nothing in the chat instead of on the PR. Default true, so an existing repo behaves as before. Asked at first-run setup.

Improved

  • /open-pr:fix takes several PR URLs in one command: each PR is a whole run of its own, a submodule PR ahead of the parent that bumps it, and the matching pass is bounded — a run can no longer loop until the rate limit stops it.
  • A re-review confirms a fix the fix command already replied to, and resolves that thread when auto_resolve_fixed_findings is on.
  • /open-pr:fix reuses what the session already established — the memory a review just wrote and the checkout already gated at the PR head — instead of asking for both again from a side worktree.
  • <op> settings finds the memory a review wrote at the workspace when the command runs from a linked worktree or a subdirectory.

Context per run vs v2.0.1: mean +2.9% over 17 scenarios, /open-pr:fix +5.3%.

v2.0.1 - Wrong-directory runs stop losing your configuration

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 17 Sep 02:57
62ee111

Update, if the plugin is already installed:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

Existing repos need no config migration — schema_version is unchanged.

Improved

  • Running from the wrong directory no longer silently discards your saved configuration: settings now report which memory directory was read and whether your settings were there, and both commands ask one question — first run here, or wrong directory — instead of re-running setup and reviewing with defaults in your saved language's place.
  • The code snippet inside a finding is now reviewed against the same criteria as the diff before it is posted — what runs once applied, whether the replaced path is really gone — and a snippet the reviewer cannot verify states the direction in prose instead of shipping unchecked code.
  • The installed plugin now carries its own LICENSE and SECURITY.md.

Context cost: +3.1% mean vs v2.0.0, all of it the two guards above — still ~26% below v1.4.3.

v2.0.0 - The CLI runtime: code does the mechanics, prompts do the judgment

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 16 Sep 08:16
1643f73

Update, if the plugin is already installed:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

Existing repos need no config migration — schema_version is unchanged.

New

  • The plugin now ships a small command-line runtime (bin/open-pr.sh) that performs every vendor and git mechanic — fetching PR context, checking out the PR into its worktree, verifying line numbers against the real file, posting and publishing through each vendor's own flow, and pushing fixes. The review prompts keep only the judgment.
  • Every reviewed tree is verified against the PR's head commit by code, not by instruction — a wrong or stale checkout stops the run instead of producing a review of the wrong code, on all three vendors.
  • /open-pr:fix works from any starting point: on the PR's branch it fixes in place; anywhere else it offers a fresh, gated worktree and never touches your checkout. Its push goes to the remote matching the PR's host — a clone with several vendor remotes no longer risks pushing to the wrong one.
  • FILE-level findings are now visible to /open-pr:fix on GitLab and Bitbucket, where they live as top-level comments.

Improved

  • 22–42% less context per review run and 17–35% less per fix run (per-scenario, measured against v1.4.3); mean across all scenarios −26%.
  • Line comments are confirmed against the real file before posting — the old side reads the merge-base blob, so a moved base branch cannot shift an anchor.
  • A stored false in settings stays false (one boolean used to flip to its true default), and settings read the memory directory the review actually created.
  • Credentials never enter command arguments; request bodies travel via files. A failed push or missing credential stops with the exact instructions to fix it, per OS.
  • install.sh --ref <tag> now installs exactly that tag into Claude Code instead of silently following main.

Breaking

  • Requires git and jq alongside gh/glab. On Windows everything runs in Git Bash (Claude Code already requires Git for Windows); install jq with winget install jqlang.jq.
  • The per-vendor prompt files (src/vendors/) are gone; anything that referenced them directly should use bin/open-pr.sh subcommands (src/core/cli.md is the contract).

v1.4.3 - Cross-file assumptions checked before a review concludes

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 27 Aug 07:07
5bb39c7

Update, if the plugin is already installed:

/plugin marketplace update open-pr
/plugin update open-pr@open-pr

then /reload-plugins. Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

Existing repos need no config migration — schema_version is unchanged.

New

  • A review checks the code around the diff before it concludes: when raising a finding — or staying silent on one — turns on how a caller or a capability outside the diff behaves, it takes one targeted Grep first, max 3 per PR, and what that grep cannot settle arrives as a 🔵 naming the symbol and the assumption. Costs +104 tokens per review run (+0.7% to +1.3%).

v1.4.2 - Model-invocable commands + branch-pinned installs

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 27 Aug 04:59
2df84cc

Update

/plugin marketplace update open-pr
/plugin update open-pr@open-pr

then /reload-plugins. Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

Existing repos need no config migration — schema_version is unchanged.

New

  • review, fix, clean, feedback, upgrade can now be invoked straight from conversation, not only via /open-pr:<cmd>.
  • --ref <branch-or-tag> on install pins to a specific branch or tag instead of the release channel; --update then stays on it. --ref latest goes back to the release channel.

Improved

  • --update no longer asks which platform twice, and no longer runs the update twice through install.sh.

v1.4.1 - Reviews verified against the PR's real code

Choose a tag to compare

@tms-minhtang1 tms-minhtang1 released this 21 Aug 16:34
228cb78

Update, if the plugin is already installed:

/plugin marketplace update open-pr
/plugin update open-pr@open-pr

then /reload-plugins. Cursor, Codex, Gemini CLI, Antigravity:

curl -fsSL https://raw.githubusercontent.com/TOMOSIA-VIETNAM/open-pr/main/install.sh | bash -s -- --update

Existing repos need no config migration — schema_version is unchanged.

Improved

  • Every review is verified to be looking at the PR's real code: the worktree — and a submodule's checkout on a bump — must match the PR's head commit before any finding is written, and a failed checkout stops the run instead of reviewing the wrong tree.
  • Reviewing a PR whose branch is checked out in your own clone now works — the checkout fetches the PR ref directly instead of gh pr checkout, which exited 128 there.
  • Line comments land on the line they describe: a LINE finding must sit inside a diff hunk, and its line number is confirmed against the real file (the merge-base blob for the old side) before posting.
  • A push landing mid-review no longer wastes the run: the review posts anchored to the commit that was read, with a note that a newer commit is unreviewed.
  • Submodule reviews read the submodule's own tree for line checks, old-finding comparison and merge base — not the parent repo's file at the same path — and anchor their post to the commit they reviewed.
  • The overview's assessment is capped at three sentences, one conclusion each.
  • /open-pr:feedback writes the tracker's real form headings, so the issue body matches the forms exactly.
  • A post failure on your own PR is no longer declared unworkaroundable, and a rejected commit_id is explained as a force-push with the fix (call the review again).
  • Context cost: mean +4.4% (+403 tokens per run), all of it spent on the verification gates above; fix, upgrade and clean are unchanged.