Skip to content

Releases: backnotprop/plannotator

v0.23.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 15:41
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.22.0 Git-status "All changes" default review view, Commits panel with per-commit diffs, Guided Review, Pi + GitHub Copilot CLI review engines
v0.21.4 Markdown math rendering, PR Overview panel with annotatable description and comments, agent instructions in code review, media parsing fixes
v0.21.3 File comments in code review, unified click-to-highlight comments, VS Code clipboard/keyboard bridge, Codex Ask AI on app-server transport, CLI subcommand help
v0.21.2 Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 Annotate-last blank-page fix on multi-message sessions
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker

What's New in v0.23.0

This is a community release: 22 PRs, seven of them authored by community contributors, five of whom are contributing for the first time. Plan approval works again on current Claude Code versions, annotate mode gains the version diff that plan mode has always had, the installer learns a binary-only mode, and a wave of Windows, OpenCode, and WebKit fixes lands. The whole changeset went through a multi-day adversarial QA pass — every commit audited, installers exercised end-to-end — before tagging.

Plan approval works again on Claude Code 2.1.199+

Claude Code 2.1.199 added a guard that discards a PermissionRequest allow decision for ExitPlanMode when updatedInput is absent. The result: clicking Approve in the plan review UI closed the page, but the built-in approval dialog reappeared in the terminal as if nothing happened. Deny was unaffected, which made the failure look like a Plannotator bug rather than a protocol change.

The hook now echoes the plan back as updatedInput alongside the allow decision, which satisfies the new guard on 2.1.199+ and is ignored harmlessly by older versions. If plan approval stopped working for you recently, this release fixes it.

PR #1008 by @flex-yj-kim, closing #995 reported by @axelboman277.

Annotate mode: version diff for your files

Plan mode has always shown a +N/-M badge when a plan is resubmitted, with a highlighted diff of what changed between versions. Annotate mode had the same diff UI sitting unused, because the annotate server never tracked history. Now it does: opening a .md or .html file saves a version keyed by file path, and re-opening the same file later shows exactly what changed since you last annotated it — same badge, same rendered diff, same Version Browser in the sidebar.

HTML files annotated with --render-html get the diff as the real rendered page with inline insertion/deletion highlights, not a wall of markup. History is stored under ~/.plannotator/history/; if you'd rather keep annotate sessions stateless, disable it with PLANNOTATOR_ANNOTATE_HISTORY=0 or { "annotateHistory": false } in ~/.plannotator/config.json. A follow-up hardening in this release also makes the history write best-effort: an unwritable data directory degrades to a normal no-diff session instead of failing to open.

PR #961 by @egouilliard-leyton, who also proposed the feature in #960.

Binary-only install with --minimal

The installer writes more than the binary: the sem semantic-diff sidecar, the agent-terminal runtime, and per-agent skills, hooks, and commands for Claude, Codex, OpenCode, Gemini, and Kiro. For users who want none of that, there was no way to opt out. Now there is:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --minimal

--minimal (alias --binary-only, env var PLANNOTATOR_MINIMAL=1) installs the plannotator binary and stops — no sidecars, no skills, no hooks, no config writes. It works identically across install.sh, install.ps1, and install.cmd, and --no-minimal overrides a persistently exported env var. The mode is non-destructive: running it over an existing full install upgrades the binary and leaves everything else alone.

PR #989 by @Staninna, closing #977 reported by @wauxhall.

Reviews post as you, without attribution

Submitting a PR review to GitHub or GitLab used to append "Review from Plannotator" to the review body. That text is gone. Your general comment and file-scoped feedback post exactly as you wrote them; when GitHub requires a top-level body for an inline-only comment review, a neutral "See inline comments." is used instead; approvals and GitLab inline-only discussions stay bodyless.

PR #1033 by @backnotprop, superseding #1026 by @leoreisdias, who pushed for the change.

Windows: hooks survive spaces in your install path, installers render cleanly

Two classes of Windows breakage are fixed. First, the generated Claude Code hook commands embedded the absolute exe path unquoted — on any machine whose profile path contains a space (C:\Users\John Smith\...), the hook command word-split and plan review silently never intercepted. Both Windows installers now quote the path, and the install test harness pins it.

Second, PR #1021 by @ShiroKSH fixed a broad set of Windows edge cases: the PowerShell installer now parses correctly under stock Windows PowerShell 5.1 (all non-ASCII characters removed, with a regression test), Amp workspace and binary paths normalize across platforms, Ask AI server turns abort cleanly when sessions reset, and Pi archive/config behaviors match Bun's. The same ASCII treatment was then applied to install.cmd, whose status messages rendered as mojibake on default Windows code pages.

Annotate folders: filter the file tree

Annotating a folder now gives you a filter row above the file tree. Type any set of words and they AND-match against file names and paths; matching folders expand automatically while you type, and Escape clears the filter before it closes the browser. Behind it, the folder scan is capped at 5,000 files (configurable via PLANNOTATOR_FILE_BROWSER_MAX_FILES) so a giant monorepo can't hang the browser — and your own modified and untracked files are seeded into the tree first, so the files you just edited always appear no matter how large the folder is.

PRs #1027 and #1022 by @backnotprop.

OpenCode: session URLs you can actually see

Remote OpenCode users (SSH, devcontainers) periodically hit the same wall: the plan or review server starts, but the URL to open it never appears anywhere visible. The root cause turned out to be structural — every URL was routed through client.app.log, which OpenCode writes to its server log file, never the TUI. Session URLs now also surface as TUI toast notifications, delivered through the SDK's visible channel, deduplicated per session, and harmless on older OpenCode hosts that predate the toast endpoint.

Two more OpenCode fixes ride along: model dropdown labels are disambiguated by provider (#1024 by @yusufemreboyraz, closing #988 reported by @ak64th), so deepseek-v4-pro from DeepSeek and OpenRouter are tellable apart — and annotate version history is now scoped per project on...

Read more

PR #957 automated browser-test recordings

Choose a tag to compare

@backnotprop backnotprop released this 06 Jul 21:04
Immutable release. Only release title and notes can be modified.

Playwright recordings of the parity suite run against the compiled plannotator binary from PR #957 head 849fda4. Hosted here because PR comments cannot take file attachments via API. Safe to delete after #957 merges.

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 19:03
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.21.4 Markdown math rendering, PR Overview panel with annotatable description and comments, agent instructions in code review, media parsing fixes
v0.21.3 File comments in code review, unified click-to-highlight comments, VS Code clipboard/keyboard bridge, Codex Ask AI on app-server transport, CLI subcommand help
v0.21.2 Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 Annotate-last blank-page fix on multi-message sessions
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer

What's New in v0.22.0

This release rebuilds the code review left panel around how a review actually starts: a git-status view of everything since your base branch is now the default, a Commits panel gives you the branch's history with per-commit diffs, and Guided Review turns any changeset into an agent-organized, chaptered walkthrough with live annotatable diffs. Pi and GitHub Copilot CLI join Cursor and OpenCode as review engines. Five PRs and four direct fixes land, all from the core team, verified by a 24-point QA pass before tagging.

The review now opens on "All changes"

Code reviews used to open on unstaged changes, which answers "what did I just edit" but not the question most reviews start with: "what would a PR show if I pushed right now?" The new default diff answers exactly that. All changes compares the merge base with your base branch against the working tree and includes untracked files — committed work, uncommitted edits, and brand-new files in one view.

It renders as a Git status panel with three sections that mirror git status: Committed, Changes, and Untracked. Each row carries viewed tracking, a stage/unstage button, the change-type letter, and +/- counts, so you can stage files as you review without leaving the app. If the base branch has moved on GitHub since your last fetch, a banner offers a one-click fetch so you're reviewing against the real base.

A first-run dialog lets you pick your default view and diff type (with live previews), and both remain changeable in Settings → Git or from the review header menu. On repos where a base branch can't be resolved, the review falls back to uncommitted changes rather than hiding committed work.

PR #990, by @backnotprop.

Commits panel

The panel toggle gained a third view: Commits, a linear history rail of your branch, newest first, with author avatars and an "In origin/main" divider where your work meets the base. Clicking a commit opens that commit's own diff against its parent — git show, but annotatable — headed by the full commit message rendered as markdown.

The toggle is session-scoped: glancing at Commits (or Tree) mid-review never silently changes your saved default, and a review always opens on files, never on a historical commit. Avatars resolve by author email through the repo's forge and fall back to initials when there's no remote or CLI to ask.

PR #994, by @backnotprop.

Guided Review

Large changesets are hard to review top-to-bottom in file order. A Guided Review has an agent organize the current changeset — any PR or local diff — into importance-ordered chapters: the heart of the change first, its consequences next, glue last. Each section pairs a prose overview and per-file summaries with the live diffs it covers, and those diffs are the real diff viewer — annotations made inside a guide land in the same review state and export in the same feedback as everywhere else.

Open it with the Guide button in the review header or Mod+Shift+G, pick an engine and model, and generate. Sections track their own reviewed state so you can work through a big change across sittings. Guides run on Claude or Codex natively, and on Cursor, OpenCode, Pi, or GitHub Copilot CLI when installed. Every changed file is validated against the real diff server-side, so a guide can never invent files or drop them silently.

A one-time intro dialog announces the feature on first open, and the Guide button carries a subtle hint until the first time you use it.

PRs #993, #997, and #1000, by @backnotprop.

Pi and GitHub Copilot CLI as review engines

The review and guide launchers gained two engines. Pi rides your existing Pi login (OAuth subscription or keys) with live model discovery and thinking-level control — and the Pi extension can launch Pi, so Pi users get agent reviews with zero extra setup. GitHub Copilot CLI runs in a locked-down non-interactive posture: no write access, a shell allowlist limited to git-family commands, and clean auto-denial for anything else.

That brings the engine roster to Claude, Codex, Cursor, OpenCode, Pi, and Copilot — and the engine layer was refactored so the next one is a two-edit change.

PRs #993 and #997, by @backnotprop.

Additional Changes

  • Filenames stay visible in the Git status panel — long paths now truncate in the directory portion (ellipsis before the final slash) so the filename always shows; a pathologically long filename truncates at its own end.
  • Commit-diff annotations stay anchored to their commit — annotations made on a historical commit's diff are stamped with that commit, and the exported feedback labels any annotation whose anchor doesn't match the diff being sent, so an agent never reads a commit's line numbers against the working tree.
  • Avatar lookups can't delay the commit list — forge avatar resolution now has a hard 4-second ceiling; on a hanging network the Commits panel loads immediately with initials and picks up avatars once they arrive.
  • Code review reference docs updated — the docs page now describes the since-base default, the three panel views, Guided Review, the full engine roster, and the current server API.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the [v0.20.0 release notes](https://github.com/backnotprop/plannotator/rel...

Read more

v0.21.4

Choose a tag to compare

@github-actions github-actions released this 01 Jul 18:39
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.21.3 File comments in code review, unified click-to-highlight comments, VS Code clipboard/keyboard bridge, Codex Ask AI on app-server transport, CLI subcommand help
v0.21.2 Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 Annotate-last blank-page fix on multi-message sessions
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix

What's New in v0.21.4

This release adds Markdown math rendering and continues the code-review pass from v0.21.2 and v0.21.3. The PR review experience is consolidated into a single Overview panel where the description and individual comments are now annotatable, and the "Copy agent instructions" onboarding reaches code review at parity with plan mode. Five PRs land, including one from returning contributor @ishowman.

Markdown Math Rendering

Plans, annotated documents, and PR content now render LaTeX math. Inline math written as $…$ or \(…\) and display math written as $$…$$ or \[…\] typeset through KaTeX, with the fonts bundled into the app so equations render offline. Rendered formulas are also first-class annotation targets: you can drag-select across prose and a formula together, or redline a whole equation, and the selection is captured like any other annotation.

Because the same renderer handles arbitrary plan text and untrusted PR descriptions, it is deliberate about what counts as math. A stray or unterminated $$ (or an informal amount like $$100k) no longer runs on and swallows the rest of a document — an unclosed delimiter is treated as ordinary text, so headings and paragraphs below it keep their structure and stay annotatable. Dollar amounts in prose such as $5-$10, $50,000-$100,000, or $5/mo … $10/mo are left as literal text rather than being mistaken for inline math.

PR #878 closing #831, by @ishowman — requested by @XxxXMil.

PR Overview Panel

Reviewing a pull request used to mean three separate dock tabs — Summary, Comments, and Checks — behind three header buttons. They are now one PR Overview panel: the description and checks stack on the left, comments fill the right, and checks collapse into a progressive-disclosure section with a colored progress label. The comments view gained author avatars, a single-row toolbar with search and filters, a "hide bots" toggle, and background refresh so the discussion and check state stay current while you review.

The description and comments are also annotatable. Select text in the PR description and leave a comment, or click "Annotate" on any comment card to attach a note to the whole comment. These notes show in the Annotations sidebar under their own groups, count toward the review, and ship to the agent — with the full comment body quoted alongside your note, since the agent can't see the PR discussion on its own. Prose notes stay bound to the PR they were made on: switching to another PR in place hides them from view and export rather than carrying them onto the new PR, and switching back brings them right back. The description renders through the full shared block renderer, so tables, callouts, code, and embedded media (images, <video>, and <picture>) all display inline.

PR #981, by @backnotprop.

Copy Agent Instructions in Code Review

Plan mode has a "Copy agent instructions" action that hands an agent the exact clipboard contract for posting annotations back into Plannotator. That onboarding now exists in code review too, at parity with plan mode: the review header menu offers "Agent Instructions" in a live session, and the copied payload documents how to read the changeset, derive line numbers from the diff, and POST line-, file-, and general-scoped comments (including code suggestions). The backend already accepted these; this closes the missing on-ramp.

PR #983, by @backnotprop — suggested by @hakunin on X.

Additional Changes

  • Immediate feedback when launching a review agent — clicking Run in Review Agents now shows a pending launch row and a "Starting" state right away, surfaces server-side launch failures instead of silently clearing the request, and hands off cleanly to the real job once it starts. PR #980, by @backnotprop.
  • Annotation count badge in the plan and annotate header — the annotations toggle in the shared plan/annotate header now shows a numeric count badge, matching the code-review header. PR #979, by @backnotprop.
  • Sturdier media and delimiter parsing — the shared markdown parser no longer lets an unclosed <video>/<picture> tag or a multi-line <img> swallow or garble the rest of a document, and <picture>/<source> and responsive <img> now render correctly. This hardens the same renderer the math and PR Overview work rely on.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the v0.20.0 release notes first; that release changed how skills install.


What's Changed

  • feat(ui): render markdown math by @ishowman in #878
  • feat(review): PR Overview panel + description/comment annotations + media by @backnotprop in #981
  • feat(review): add "Copy agent instructions" for external review comments by @backnotprop in #983
  • fix(review): show pending agent job launches by @backnotprop in #980
  • feat(annotate): show annotation count badge in plan/annotate header by @backnotprop in #979
  • fix(ui): stop unclosed <video>/<picture> from swallowing the document by @backnotprop
  • fix(review): scope PR description/comment note...
Read more

v0.21.3

Choose a tag to compare

@github-actions github-actions released this 28 Jun 18:43
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.21.2 Custom reviews as Agent Skills, Cursor + OpenCode review engines, whole-file/general findings, deleted-annotation fix, Codex Ask AI outside git repos
v0.21.1 Annotate-last blank-page fix on multi-message sessions
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator

What's New in v0.21.3

A follow-up to the code-review work in v0.21.2. The headline is file-scoped comments in code review with a reworked comment experience, and the rest of the release is fixes and polish: a new contributor fixed clipboard and keyboard handling in the VS Code extension, the CLI now prints help for its subcommands, Codex Ask AI moved onto a more reliable transport, and the Ask AI sidebar got a few rough edges sanded down. Eight changes land in total, including a first contribution from @rushelex.

File Comments in Code Review

Until now a code-review comment always attached to a line range. This release adds file-scoped comments — a comment that belongs to a whole file rather than any single line. In the single-file view it renders as a full-text banner directly below the file path; in the all-files view it sits in the file header for expanded files. Guided reviews that produce file-level findings now anchor them where they belong instead of forcing them onto a line.

The comment experience was also unified. Clicking a comment — whether the inline card in the diff, the sidebar entry, or the file banner — replays its stored line range as a controlled highlight, and clicking it again clears the highlight. Scrolling the viewport to a comment is reserved for the sidebar and findings list, so clicking a comment inside the diff highlights it without yanking the page around. The inline, sidebar, and file-banner cards now share a single identity row (badges, author, timestamp), a single action row (edit, copy, delete), and a consistent file-name chip, replacing three separately built layouts that had drifted apart.

PR #973, by @backnotprop.

VS Code Clipboard and Keyboard Handling

The VS Code extension renders Plannotator inside a webview, and two long-standing problems made that webview feel second-class. Copy and paste didn't work — clipboard content never crossed the webview boundary — and standard VS Code keybindings like Cmd+P stopped responding while a Plannotator tab was focused. This release bridges the clipboard so copy, cut, and paste work inside the webview, and forwards keystrokes to VS Code so its keybindings resolve as expected.

PR #970 closing #864 and #969, by @rushelex — who both reported the bugs and contributed the fix.

Codex Ask AI on the App-Server Transport

Codex Ask AI no longer drives codex exec through the @openai/codex-sdk package. It now runs a long-lived codex app-server process over JSON-RPC, which respects the user's and enterprise-managed approval policy and supports interactive Allow/Deny approvals surfaced as cards in the UI. The provider id stays codex-sdk so existing saved preferences keep working. A startup edge case is also fixed: if the app-server process spawned but stalled on its initialize handshake, it was left running and every later question hung until an idle timer reaped it. The process is now killed on a failed handshake, so the next question starts cleanly.

PR #971, by @backnotprop.

CLI Subcommand Help

Running plannotator review --help (and the same for other subcommands) launched the review UI instead of printing help text. The CLI now resolves --help and -h for each subcommand before dispatching, so the help flag prints usage and exits without starting a server.

PR #974 closing #964, reported by @rrei.

Clickable Ask AI Announcement Cards

The first time Ask AI appears, an announcement dialog presents the available providers as cards. Those cards were missing their click handler, so selecting a provider from the announcement did nothing. They are clickable now and select the provider as expected.

PR #975 closing #972, reported by @Duo-Huang.

Ask AI Sidebar Polish

Two smaller fixes in the code-review Ask AI sidebar. The per-file chat groups used to start collapsed, so every file you had asked about had to be opened by hand; they now default to expanded, while manual collapse still works and persists. And clicking a sidebar comment that no longer matches the active PR or diff scope — for example after switching PRs in place — used to do nothing at all; it now clears the current selection so the click gives visible feedback instead of appearing broken.

Additional Changes

  • Dependency maintenance — GitHub Actions used by the build and release workflows were updated (actions/checkout to v7, softprops/action-gh-release to v3, and others). PR #791, by @renovate.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the v0.20.0 release notes first; that release changed how skills install.


What's Changed

  • feat(review): file comments in the diff + unified click-to-highlight comment UX by @backnotprop in #973
  • fix(vscode): bridge clipboard and forward keystrokes in webview by @rushelex in #970
  • fix(annotate): make Ask AI announcement provider cards clickable by @backnotprop in #975
  • fix(cli): print per-subcommand help instead of launching the UI by @backnotprop in [#974](h...
Read more

v0.21.2

Choose a tag to compare

@github-actions github-actions released this 25 Jun 13:17
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.21.1 Annotate-last blank-page fix on multi-message sessions
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs

What's New in v0.21.2

Six PRs land in this release, with most of the work going into code review. You can now run your own Agent Skills as review profiles, and the review engine picker gains two new options — Cursor and OpenCode — alongside the existing Claude and Codex paths. A draft-persistence bug that resurrected deleted annotations is fixed, and Codex users get two improvements from a first-time contributor.

Custom Reviews as Agent Skills

Until now the code review engine ran a fixed review prompt. This release lets you point a review at any Agent Skill you already have installed. Enable a skill as a review profile and the agent runs that skill's instructions against your diff instead of the built-in prompt, so a security skill, a style-guide skill, or any review methodology you've written becomes a one-click review.

Findings also gained two new shapes. A review can now attach a finding to an entire file rather than a specific line, and it can raise a general finding that applies to the whole changeset instead of any single location. Whole-file and general findings render in their own sections and flow through to the exported feedback the agent receives, so nothing a reviewer raises gets dropped because it didn't map to a line.

PR #955, by @backnotprop. Requested by @gwynnnplaine in #897.

Cursor and OpenCode Review Engines

The review engine selection now includes Cursor and OpenCode in addition to Claude and Codex. Both run through a unified "marker" protocol: the agent runs its own CLI (agent for Cursor, opencode run for OpenCode) against your changes and returns findings in a delimited block that Plannotator parses back into annotations. The engines are opt-in and only appear when their CLI is installed, and they share the same finding pipeline as the existing engines, so whole-file and general findings work across all four.

PR #959, by @backnotprop.

Deleted Review Annotations Stay Deleted

In code review, deleting an annotation and then refreshing the page brought it back. The draft autosave kept the last saved copy, and a deletion wasn't being persisted as a real edit, so the next load restored the annotation the user had removed. This release records deletions with a generation tombstone so they survive a refresh and a late autosave can't revive them, while leaving genuine drafts intact.

PR #951 closing #948, reported by @alexanderkreidich.

Codex Ask AI Outside Git Repos

Ask AI on the Codex provider assumed it was running inside a git repository and failed when it wasn't. It now probes for a working tree and skips the git-repo check when there isn't one, so Ask AI works in plain directories that aren't under version control.

PR #965, by @ericclemmons.

Codex Desktop Review URL Surfacing

When Plannotator runs inside the Codex desktop app, the session URL wasn't easy to find. It now prints the review URL to the terminal when it detects the Codex desktop host, so the link is visible instead of buried.

PR #966, by @ericclemmons.

Additional Changes

  • Landing page section order — the capabilities section now sits above the demos on the marketing site. PR #953, by @backnotprop.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the v0.20.0 release notes first; that release changed how skills install.


What's Changed

  • fix(review): persist annotation deletions so they don't resurrect on refresh by @backnotprop in #951
  • feat(marketing): restructure landing page section order by @backnotprop in #953
  • feat(review): custom reviews as Agent Skills + whole-file/general findings by @backnotprop in #955
  • feat(review): Cursor + OpenCode review engines (unified marker-review) by @backnotprop in #959
  • Allow Codex Ask AI outside git repos by @ericclemmons in #965
  • Improve Codex App review URL discoverability by @ericclemmons in #966

New Contributors

Contributors

@ericclemmons landed two Codex improvements in his first contributions to the project: making Ask AI work outside git repositories in #965, and surfacing the review URL when running inside the Codex desktop app in #966.

Thanks to @alexanderkreidich, who reported in #948 that deleted review annotations reappeared after a refresh — the bug this release fixes.

Full Changelog: v0.21.1...v0.21.2

v0.21.1

Choose a tag to compare

@github-actions github-actions released this 22 Jun 12:32
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.21.0 Direct document editing in annotate mode, live git-status file tree, in-app agent terminal, open files in external apps, HTML renders as HTML
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults

What's New in v0.21.1

A single-fix patch release. Annotating the last assistant message could open a blank page in any conversation with more than one response. This release fixes that.

Annotate-Last No Longer Blanks on Multi-Message Sessions

Running /plannotator-last (or plannotator last) opened a blank page whenever the session had two or more recent assistant messages. With zero or one message it worked, so it looked intermittent, but it was deterministic: the failure tracked message count. It was most visible on the Pi extension, where multi-turn sessions are the norm.

The cause was a React rendering bug. When the annotate UI assembled the feedback payload during render, it reached a helper that wrote component state as a side effect. Because that state was a freshly built map on each pass, React never settled, hit its re-render limit, and threw before drawing anything, leaving an empty page. The fix makes that render-path helper a pure read of the same data, so the work that belongs at submit time no longer fires during render. The exported feedback is unchanged; the page renders.

PR #950 closing #949, reported, diagnosed, and fixed by @emmaneugene.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the v0.20.0 release notes first; that release changed how skills install.


What's Changed

  • fix(editor): stop setState-during-render loop in multi-message annotate by @backnotprop in #950

Community

Thanks to @emmaneugene, who reported the blank-page regression in #949, traced it to the exact render-path state write, and supplied the fix that this release ships.

Full Changelog: v0.21.0...v0.21.1

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 18:16
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.20.3 Annotations no longer lost when clicking away, off-screen indicator for open comments
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents

What's New in v0.21.0

This is a large release for the annotate experience. Seventeen pull requests landed since v0.20.3, five of them from external contributors, including first contributions from four new community members. The headline is a set of features that turn annotate mode into a place where you can read, edit, run an agent, and jump into your own tools without leaving the document. Alongside that, several reliability fixes harden the paths that remote and CI users depend on.

Edit Documents Directly in Annotate Mode

Until now, annotation was a one-way conversation: you highlighted text, wrote a comment, and the agent received your notes. If you wanted to change a sentence yourself, you described the change instead of making it.

This release adds a real markdown editor to annotate and plan mode. You can switch a document into edit mode, change the text directly, and the difference between the original and your edits is captured as a clean diff that travels to the agent alongside your annotations. The edit controls were reworked so the state is always legible: a clear Edits label, Save emphasis when there are unsaved changes, and a Save/Cancel pair where Cancel discards your changes after a confirmation rather than silently keeping them.

Saved source-file edits now survive a refresh. When you edit a file in annotate-folder mode and save it, the right-side Edits card is persisted in the annotation draft and restored after a reload. Restored edits are validated against the file's current contents on disk, so stale context is dropped rather than resurfaced, and the edit context is never sent to the agent if it no longer matches the file.

PR #890, #928, #936 by @backnotprop.

A Live File Tree for Annotated Folders

When you annotate a folder, the file tree on the left is now live. It uses a server-side file watcher rather than polling, so the tree updates as files change on disk. Git status drives per-file badges and folder totals, showing which files are modified, added, or deleted, with line counts for changes. Direct source-file edits made inside Plannotator show their save state in the tree as well: clean, dirty, saving, saved, or conflict.

Two follow-up rounds hardened this. Nested ignored folders like node_modules and dist are now pruned by path segment so the watcher never walks into them, watcher teardown is identity-safe so reconnects can't orphan old watchers, and git status reads run asynchronously with timeouts and request coalescing so a slow repository can't block the server. A startup-latency fix ensures the tree's first snapshot renders before the live watcher subscribes, so the tree no longer sits on a loading state while the watcher sets up.

PR #931, #933, #935 by @backnotprop.

An Agent Terminal Inside Annotate Mode

Annotate mode now includes an optional agent terminal panel. You can run a coding agent in a real terminal next to the document you're annotating, so the back-and-forth happens in one place instead of a separate window.

The terminal is backed by a PTY hosted in a small Node sidecar, since the compiled Plannotator runtime can't load native terminal bindings directly. On a normal install the runtime is provisioned automatically, and where it isn't available the panel disables itself cleanly rather than failing the session. Requires Node.js 20 or newer on your PATH.

PR #941 by @backnotprop.

Open Files in Your Editor, Terminal, or File Manager

A new "open in" control lets you launch the file you're looking at directly in an external application: VS Code, Cursor, Zed, Ghostty, iTerm2, Warp, Sublime Text, Xcode, Android Studio, or reveal it in Finder or Explorer. Only applications you actually have installed appear in the menu, the last one you used becomes the default, and copy-path and copy-diff actions are always available. The control hides itself in remote sessions where opening a local app wouldn't make sense.

This release also includes a pass on the code-review UI. The semantic diff moved from a separate docked panel into an inline accordion in the all-files view, file headers and the file tree were reworked, and the diff-freshness check was tidied.

PR #942 by @backnotprop.

HTML Files Render as HTML

Annotating an .html file now renders the page as HTML by default instead of converting it to markdown. For most HTML — rendered reports, exported documents, generated pages — this is what you actually want to look at. If you need the old behavior, pass --markdown to convert the page to text with Turndown. The serving path for raw HTML and its assets was also hardened against symlink escapes.

This is a behavior change for anyone who ran plannotator annotate file.html expecting a markdown view. The conversion is one flag away.

PR #924, #927 by @backnotprop.

Additional Changes

  • Remote sessions always show a reachable URL. The session URL is now printed to the terminal for remote sessions regardless of whether URL sharing is enabled, and local sessions print the URL as a fallback when the browser can't be opened (a headless box or devcontainer). This closes a long-standing gap where remote and headless users could be left with no link and a hung review. PR #929, #945 by @backnotprop.
  • Ask AI works on Bedrock and Vertex. Bare model aliases were being rejected with a 400 on Amazon Bedrock and Google Vertex; model ids are now resolved to the correct provider-specific identifiers, with a safe fallback when none is configured. PR #939 closing #938 by @masterpavan.
  • Release binaries ignore caller bunfig.toml. Compiled binaries no longer autoload a bunfig.toml from the directory they're run in, so a stray or hostile config in a project folder can't alter or crash the binary. PR #937 by @jrpat.
  • Light-mode contrast fix in code hover previews. Code hover previews used a dark-mode color in light mode, making text hard to read. PR #934 by @hl662.
  • Turn URL sharing off via config. URL sharing can now be disabled through ~/.plannotator/config.json ({ "share": "disabled" }) in addition to the environment variable. PR [#921](#92...
Read more

v0.20.3

Choose a tag to compare

@github-actions github-actions released this 16 Jun 07:38
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.20.2 Pierre CodeView all-files review, large-PR pipeline and instant-open checkout, unified agent engine selection, Pi programmatic plan mode
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents
v0.19.18 Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix

What's New in v0.20.3

v0.20.3 is a small patch of two PRs, both focused on the comment popover used in plan review and annotate mode. The first stops in-progress annotation text from being thrown away, and stops the annotation panel from forcing itself open. The second adds a way to find a comment box again after it scrolls out of view. Both came out of community feature requests.

Annotations No Longer Lost When You Click Away

The comment popover used to close on any click outside it, which discarded whatever you had typed but not yet saved. A misplaced click meant retyping the annotation. Now a popover that holds text or an attached image stays open when you click elsewhere, so your in-progress work survives a stray click. Empty popovers still close on an outside click, and Escape and the X button still cancel explicitly, so nothing changes about how you dismiss a box you actually want to discard.

The same release stops annotations from forcing the right annotation panel open. If you had closed the panel, adding a plan annotation or a code-file popout annotation used to reopen it and pull focus away from what you were reading. The panel now stays in whatever state you left it, and you can open it from the header toggle when you want it. The annotation itself is still selected and still shows its highlight, so it is never lost or hidden.

Off-Screen Indicator for an Open Comment

Because an open comment box now persists when you click or scroll away, it became possible to leave one open above or below the visible area and lose track of it. When that happens, a small pill appears pinned to the top or bottom of the viewport with a chevron pointing toward the box and an "Open comment" label. Clicking it scrolls back to the comment. The indicator only appears for a box that has actually left the viewport and disappears as soon as it returns, so it stays out of the way the rest of the time.

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, launch with:

kiro-cli chat --agent plannotator

Upgrading from before v0.20.0? Read the v0.20.0 release notes first; that release changed how skills install.


What's Changed

  • Keep annotation panel closed when adding annotations by @backnotprop in #919
  • feat(annotate): off-screen indicator for open comment popover by @backnotprop in #920

Community

Both changes in this release answer feature requests from the community. @8bitjoey asked for the annotation input to keep its text instead of closing on an outside click (#821), and @jj-valentine asked for annotations to be saved rather than lost (#888). @SyahrulBhudiF and @gwynnnplaine joined the discussion on #821 that shaped the behavior.

Full Changelog: v0.20.2...v0.20.3

v0.20.2

Choose a tag to compare

@github-actions github-actions released this 14 Jun 07:57
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.20.1 Pi extension install hotfix (pinned @pierre/diffs after a broken upstream release)
v0.20.0 Multi-repo workspace reviews, semantic diff overview, UI 2.0 themes and plan look chooser, leaner single-source skill install
v0.19.27 Kiro CLI integration, Glimpse native window, annotate-last message picker
v0.19.26 Amp plugin production fixes, Mermaid rendering fix, Settings flicker fix, update notification toast and shimmer
v0.19.24 Amp integration, configurable data directory, Auto Mode permission option, Pi plan approval fix
v0.19.23 Droid integration, Windows Pi AI fix, quieter update indicator
v0.19.22 Safari copy fix in plan viewer, CLAUDE_CONFIG_DIR support for session logs
v0.19.21 Ask AI in plan review and annotate mode, shared AI runtime, origin-aware provider defaults
v0.19.20 Interactive goal setup UI, OpenCode submit_plan fixes, browser no-op sentinel handling for Claude agents
v0.19.18 Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix
v0.19.17 Reworked goal setup skill (interview-driven flow), CLI --version flag

What's New in v0.20.2

v0.20.2 is a code-review-heavy release of nine PRs, two of them from first-time contributors. The largest work rebuilds the all-files review view on Pierre's CodeView and adds a pipeline that keeps very large pull requests fast and complete instead of failing or rendering empty. Agent engine selection is unified across review and tour modes, the Pi extension gains a programmatic plan-mode control event, and several reliability fixes land across review cleanup, annotate error messaging, and markdown rendering.

All-Files Code Review on Pierre CodeView

The all-files code review surface was rebuilt on Pierre's CodeView renderer, replacing the previous custom diff view and its lazy-mounting layer. The new foundation virtualizes large diffs, renders change-type status in file headers and the file tree, and presents renames as old/path → new/path rather than as a blank change. The annotation model, drafts, feedback export, and keyboard shortcuts carry over unchanged, so the way you review and send feedback is the same.

Large Pull Request Pipeline, Instant-Open Checkout, and Scroll Performance

Reviewing very large pull requests previously hit several walls: GitHub refused oversized diffs outright, the local checkout blocked the review from opening, and some files came back from the platform with no patch content and rendered as empty stubs. This release addresses all three.

When a platform refuses an oversized diff, Plannotator now pages through the per-file API and stitches the result into a unified diff, so the review still loads. When the platform withholds per-file content on a truncated diff, an amber "Partial diff · Load full diff" notice offers to recompute the exact diff locally, and a staleness check surfaces a refresh prompt when the underlying files change mid-review. The --local checkout no longer blocks startup: the review server opens as soon as the platform diff arrives and the checkout warms in the background, with agent jobs, full-stack diff, and code navigation waiting on it only when they need real files.

Scrolling the all-files view was also reworked. Syntax highlighting moved off the main thread into a worker pool, lazy full-content augmentation no longer hitches mid-scroll, and visibility tracking was coalesced to once per frame. The result is smoother scrolling on large diffs, with a clean fallback to unhighlighted text if the worker pool is unavailable.

Unified Agent Mode Engine Selection

The agent panel's engine selection was reworked so review and tour modes share one consistent model. Previously the selection conflated provider and mode in a single setting; it now separates the active mode from the engine choice (Claude or Codex) for each, with existing settings migrated forward. The change makes it clearer which engine runs for review versus tour and removes a class of confusing defaults.

Programmatic Plan Mode for Pi

The Pi extension gained a plan-mode event so other extensions and automation can drive Plannotator's plan mode programmatically. A request can enter, exit, toggle, or query plan mode, and receives the resulting phase (idle, planning, or executing) in return. This opens the plan workflow to scripted and multi-extension setups on Pi without requiring a manual command or shortcut.

Review Cleanup and PR Feedback Fixes

Two reliability fixes for the review path. First, the standalone server now routes SIGINT and SIGTERM through its normal shutdown so the existing cleanup runs on interrupt or termination. Aborting a review while a large pull request was still checking out in the background previously left clone and fetch processes running and stale git worktree registrations behind; those are now cleaned up, with a second interrupt still forcing an immediate quit.

Second, the review feedback sent to the agent on "Send Feedback" now includes the triage instruction (review the feedback, verify it against the code, and discuss before changing anything) for pull request reviews, not just local diffs. The instruction is appended whenever you send annotations and is correctly omitted for platform actions that post an approval or comment directly to the host. The behavior is consistent across Claude Code, OpenCode, and Pi.

Clearer Annotate and Markdown Behavior

Running plannotator annotate on a file type it does not support (for example a .cs or .pdf file) reported a misleading "File not found" even when the file was present. It now reports that the type is unsupported, lists the supported extensions, and points to plannotator review for code. Separately, custom angle-bracket autolinks are kept literal instead of having their contents parsed for markdown styling, so links that contain markdown-like characters render correctly.

Additional Changes

  • README redesign. The project README was rebuilt around a feature table with a centered note on AI assistance and refreshed styling. #891 and #892

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Extra skills (compound, setup-goal, visual-explainer), opt-in:

npx skills add backnotprop/plannotator/apps/skills/extra

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

OpenCode: Clear cache and restart:

rm -rf ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

Droid: Install via the plugin marketplace:

droid plugin marketplace add backnotprop/plannotator
droid plugin install plannotator@plannotator

Amp: Install the CLI first, then copy the plugin:

mkdir -p ~/.config/amp/plugins
curl -fsSL https://raw.githubusercontent.com/backnotprop/plannotator/main/apps/amp-plugin/plannotator.ts \
  -o ~/.config/amp/plugins/plannotator.ts

Kiro CLI: The installer auto-detects Kiro and installs skills automatically. After installing the CLI, ...

Read more