Skip to content

Releases: backnotprop/plannotator

v0.24.2

Choose a tag to compare

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

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.24.1 Annotate accepts parent-relative ../ file paths
v0.24.0 PR/MR artifact gallery, GitButler review support, port ranges, expanded comment editor, OpenCode + Pi fixes
v0.23.1 Startup no longer hangs on large or slow directory trees, Ask AI input stays visible after long responses
v0.23.0 Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only --minimal install, reviews post without attribution
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

What's New in v0.24.2

This release opens annotate to config files, adds XDG data-directory support, and gets ahead of OpenAI's July 23 model shutdowns. Twelve pull requests landed since v0.24.1. Four came from community members, and all three external authors are first-time contributors.

Annotate YAML, JSON, TOML, and other config files

plannotator annotate config.yaml used to fail with "File type not supported", even though the pipeline handles any plain text. Annotate now accepts .yaml, .yml, .json, .jsonc, .json5, .toml, .ini, .cfg, .conf, .properties, .csv, .tsv, .log, .xml, and .env.example, rendered as plain text the same way .txt is. The file browser lists them in folder mode across all runtimes.

Some details worth knowing. Multi-document YAML keeps its first document (the markdown parser no longer strips a leading --- pair as frontmatter for non-markdown files). Files over 2MB get a clear error instead of freezing the server; the same cap the code viewer has always had now protects every annotate read. .env is deliberately excluded, since annotate's version history copies file contents into the data directory and .env files commonly hold secrets. Code-file links inside plans keep their syntax-highlighted popout; only file-browser selections render as annotatable documents.

XDG data directory support

Plannotator stores everything under ~/.plannotator. Linux users who keep their home directory clean have asked for XDG Base Directory support several times, in two full pull requests and an issue. The answer used to be the PLANNOTATOR_DATA_DIR override; now placement is also automatic: if ~/.plannotator does not exist and $XDG_DATA_HOME is set to an absolute path, Plannotator uses $XDG_DATA_HOME/plannotator.

Nothing changes for existing users. An existing ~/.plannotator always wins, PLANNOTATOR_DATA_DIR remains the top-priority override, and macOS and Windows defaults are untouched. The resolution is honored across the Claude Code, OpenCode, Amp, Pi, and VS Code paths, and the install scripts resolve config.json the same way. PLANNOTATOR_DATA_DIR is now documented in the README.

Codex models: correct IDs, current catalog, Max and Ultra efforts

Selecting GPT-5.6 in the Agents tab launched Codex with the bare gpt-5.6 id, which Codex rejects on ChatGPT accounts. @rNoz fixed the catalog to the canonical gpt-5.6-sol and migrated saved selections, including per-model reasoning and fast-mode preferences, so existing users stop sending the broken id automatically.

A follow-up aligned the whole catalog with the current Codex CLI. OpenAI retires gpt-5.3-codex, gpt-5.2-codex, gpt-5.1-codex-max, and gpt-5.1-codex-mini at the API level on July 23, so those left the picker and saved picks migrate to OpenAI's recommended replacements. gpt-5.2 stays, since only the ChatGPT product retired it and API-key users still have it. Reasoning effort options are now per-model: minimal is gone (no current model supports it), and the GPT-5.6 family gains Max, with Ultra on Sol and Terra.

Cursor review engine works on NixOS and hardened Linux

Review jobs launch Cursor's agent CLI with --sandbox enabled as part of their read-only posture. On systems where Cursor's sandbox cannot start (NixOS, AppArmor-restricted Linux), every Guided Review with the Cursor engine failed outright, and the flag overrode the user's own agent sandbox disable configuration.

The default is unchanged. A new escape hatch, PLANNOTATOR_CURSOR_SANDBOX=0 (or "cursorSandbox": false in config.json), omits the flag entirely so the user's own Cursor configuration governs. Opting out means the review job's write protection relies on that configuration, which is why it stays opt-in.

Guided Review: viewed files collapse

Marking a file as viewed in a guided review now collapses its diff to the header, matching how the all-files view behaves, so long guides show your progress at a glance. Annotation jumps from the sidebar reopen a collapsed file before scrolling, so clicking a comment never lands on a folded diff.

Pi: review setup progress out of your typing area

Starting a PR review in Pi printed clone and fetch progress straight to the terminal, where it smeared across the input box until the next repaint. Progress now renders on Pi's footer status line and clears when the review opens; warnings like a failed fetch go to the chat history where they leave a trace.

Additional Changes

  • Installer extras stay out of your project: the optional extra-skills step now passes --global to npx skills add, so running the installer inside a git repository can no longer write Plannotator skills into that repo's .agents/skills/. A parity test keeps every installer and doc command honest. By @rNoz in #1078, closing #1077.
  • Bug reports arrive with context: new issues use a minimal form — what happened, plannotator --version output, OS, agent, and surface, three of them single-click dropdowns. Feature requests keep the blank-issue path. In #1100.
  • Softer pinpoint hover feedback in the review UI. In #1097.
  • Quoted booleans in config.json now work: hand-editing ~/.plannotator/config.json with a quoted value like "cursorSandbox": "false" used to be silently ignored because the string never matched t...
Read more

v0.24.1

Choose a tag to compare

@github-actions github-actions released this 20 Jul 09:02
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.24.0 PR/MR artifact gallery, GitButler review support, port ranges, expanded comment editor, OpenCode + Pi fixes
v0.23.1 Startup no longer hangs on large or slow directory trees, Ask AI input stays visible after long responses
v0.23.0 Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only --minimal install, reviews post without attribution
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

What's New in v0.24.1

A one-fix patch. plannotator annotate now opens a file you point to with a ../ path.

v0.24.1 follows v0.24.0 by a few hours, so the full v0.24.0 notes are included below — most users updating now are getting both.

Annotate accepts parent-relative file paths

Running plannotator annotate ../docs/plan.md failed with File type not supported: .md, even though .md is supported. The path resolver rejected any relative path that pointed outside the current directory, so a ../ path never resolved. The command then found the file on disk and reported the resolver miss as a type error, which is why the message named a supported extension.

An explicit path you type is now honored when the file exists, including a ../ path that points to a parent directory. This matches how absolute paths already work. Bare filenames still resolve only within the current project, so typing notes.md cannot reach a same-named file in a parent directory.

Closing #1085, reported by @shulcsm.


What's New in v0.24.0

This release adds two review surfaces: a gallery for the images, videos, and documents inside PR conversations, and native GitButler workspace support. 25 pull requests landed since v0.23.1. Six came from community members, four of them first-time contributors. The release also brings port ranges, an expanded comment editor, and fixes across the OpenCode and Pi integrations.

PR and MR artifact gallery

Pull request conversations hold more than text: screenshots of the bug, GIFs of the fix, demo videos, HTML reports, attached markdown. The review UI ignored all of it.

When you review a GitHub pull request or GitLab merge request, Plannotator now collects images, GIFs, videos, HTML, and markdown files from the description and conversation into a gallery. Selecting a tile opens a focused viewer. Markdown and sandboxed HTML render inline, and everything is annotatable: select text in a document, drop a point note on an image, pin a note to a video timestamp, or comment on the artifact as a whole. These notes join your normal review feedback with their source attached, whether the feedback posts to GitHub/GitLab or returns to your local agent.

Conversation artifacts sort newest-first, and you can hide tiles you don't want to see again. The gallery appears only for hosted reviews, since local diffs have no conversation to collect from.

GitButler review support

GitButler users work in a virtual-branch workspace that ordinary Git tooling misreads: HEAD sits on a synthetic workspace commit, and several branches are applied at once. Running a code review there produced confusing diffs against internals GitButler manages for you.

Plannotator now detects an active GitButler workspace and reviews it natively. The default Workspace view shows everything applied, committed changes plus assigned and unassigned working-tree changes, against GitButler's reported merge base. You can also review a single stack or one branch within a stack as committed-only diffs. Detection requires both the workspace HEAD and GitButler's local target configuration, so a leftover branch or database from a past experiment cannot hijack an ordinary Git repo. An active workspace needs the but CLI (0.21.0 or newer). --gitbutler forces the provider and --git remains the escape hatch. Both the Bun and Pi runtimes support it.

The original GitButler effort came from @dansusman, whose work is preserved in the commit co-author credit.

Expanded comment editor in code review

Long review comments were cramped in the compact inline toolbar. A new expand control opens a full-size dialog that edits the same comment, so you can draft multi-paragraph findings and submit through the familiar flow. The compact composer stays the default for quick notes and gains vertical resize.

Port ranges

PLANNOTATOR_PORT now accepts an inclusive range like 19432-19463. Plannotator tries each port in order and binds the first available one, in both the Bun and Pi runtimes. Fixed single ports and the random-port default behave as before. This helps devcontainer and SSH setups where you forward a block of ports and run several sessions side by side.

OpenCode: cancelling a plan review now cleans up

Cancelling a submit_plan call in OpenCode left the review server running, so the next plan submission could not bind its port. Cancellation now flows through OpenCode's tool-abort contract: the server shuts down, timers and child processes are released, and the plan is kept so a resubmitted revision reuses the same fixed port.

Pi: faster startup and honest error reporting

The extension added about two seconds to every pi launch because its full module graph loaded at registration. The heavy browser and server graph now loads on first use, and the large UI bundles are read only when you open a review or annotate session.

Separately, when a review engine failed (for example, out of API credits mid-review), Guided Review reported a generic parse failure instead of the real cause. Provider errors now surface as themselves.

Background git checks can no longer freeze the terminal

Plannotator periodically checks whether your review baseline is behind its remote. On repos whose remote needs interactive authentication, that background git ls-remote could open a credential or passphrase prompt with nowhere to render. On Pi it froze the TUI. Background discovery now runs without interaction: credential prompts are disabled, SSH runs in batch mode, and timed-out processes are cleaned up as a group. Explicit actions like the "Fetch" button keep the normal interactive authentication path.

#...

Read more

v0.24.0

Choose a tag to compare

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

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.23.1 Startup no longer hangs on large or slow directory trees, Ask AI input stays visible after long responses
v0.23.0 Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only --minimal install, reviews post without attribution
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)

What's New in v0.24.0

This release adds two review surfaces: a gallery for the images, videos, and documents inside PR conversations, and native GitButler workspace support. 25 pull requests landed since v0.23.1. Six came from community members, four of them first-time contributors. The release also brings port ranges, an expanded comment editor, and fixes across the OpenCode and Pi integrations.

PR and MR artifact gallery

Pull request conversations hold more than text: screenshots of the bug, GIFs of the fix, demo videos, HTML reports, attached markdown. The review UI ignored all of it.

When you review a GitHub pull request or GitLab merge request, Plannotator now collects images, GIFs, videos, HTML, and markdown files from the description and conversation into a gallery. Selecting a tile opens a focused viewer. Markdown and sandboxed HTML render inline, and everything is annotatable: select text in a document, drop a point note on an image, pin a note to a video timestamp, or comment on the artifact as a whole. These notes join your normal review feedback with their source attached, whether the feedback posts to GitHub/GitLab or returns to your local agent.

Conversation artifacts sort newest-first, and you can hide tiles you don't want to see again. The gallery appears only for hosted reviews, since local diffs have no conversation to collect from.

GitButler review support

GitButler users work in a virtual-branch workspace that ordinary Git tooling misreads: HEAD sits on a synthetic workspace commit, and several branches are applied at once. Running a code review there produced confusing diffs against internals GitButler manages for you.

Plannotator now detects an active GitButler workspace and reviews it natively. The default Workspace view shows everything applied, committed changes plus assigned and unassigned working-tree changes, against GitButler's reported merge base. You can also review a single stack or one branch within a stack as committed-only diffs. Detection requires both the workspace HEAD and GitButler's local target configuration, so a leftover branch or database from a past experiment cannot hijack an ordinary Git repo. An active workspace needs the but CLI (0.21.0 or newer). --gitbutler forces the provider and --git remains the escape hatch. Both the Bun and Pi runtimes support it.

The original GitButler effort came from @dansusman, whose work is preserved in the commit co-author credit.

Expanded comment editor in code review

Long review comments were cramped in the compact inline toolbar. A new expand control opens a full-size dialog that edits the same comment, so you can draft multi-paragraph findings and submit through the familiar flow. The compact composer stays the default for quick notes and gains vertical resize.

Port ranges

PLANNOTATOR_PORT now accepts an inclusive range like 19432-19463. Plannotator tries each port in order and binds the first available one, in both the Bun and Pi runtimes. Fixed single ports and the random-port default behave as before. This helps devcontainer and SSH setups where you forward a block of ports and run several sessions side by side.

OpenCode: cancelling a plan review now cleans up

Cancelling a submit_plan call in OpenCode left the review server running, so the next plan submission could not bind its port. Cancellation now flows through OpenCode's tool-abort contract: the server shuts down, timers and child processes are released, and the plan is kept so a resubmitted revision reuses the same fixed port.

Pi: faster startup and honest error reporting

The extension added about two seconds to every pi launch because its full module graph loaded at registration. The heavy browser and server graph now loads on first use, and the large UI bundles are read only when you open a review or annotate session.

Separately, when a review engine failed (for example, out of API credits mid-review), Guided Review reported a generic parse failure instead of the real cause. Provider errors now surface as themselves.

Background git checks can no longer freeze the terminal

Plannotator periodically checks whether your review baseline is behind its remote. On repos whose remote needs interactive authentication, that background git ls-remote could open a credential or passphrase prompt with nowhere to render. On Pi it froze the TUI. Background discovery now runs without interaction: credential prompts are disabled, SSH runs in batch mode, and timed-out processes are cleaned up as a group. Explicit actions like the "Fetch" button keep the normal interactive authentication path.

Workspace mode discovers symlinked repos

Multi-repo workspace review walked real directories only, so a child repo reachable through a symlink was skipped. Symlinked and junction-linked repos are now discovered, deduplicated by real path, and labeled by their workspace-relative alias. This release also caps the discovery walk with the PLANNOTATOR_FILE_BROWSER_MAX_FILES budget, so a stray symlink into a huge unrelated tree cannot stall startup.

Additional Changes

  • JSON 404 for unknown API routes: a nonexistent /api/* path used to return the full app HTML with a 200. All six servers (Bun and Pi) now return a JSON 404, while SPA routes still serve HTML. By @buihongduc132 in #748, their first contribution.
  • System theme everywhere: the System option now appears in every theme menu through a shared mode list. By @gwynn...
Read more

v0.23.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:43
Immutable release. Only release title and notes can be modified.

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.23.0 Plan approval fix for Claude Code 2.1.199+, annotate mode version diff, binary-only --minimal install, reviews post without attribution
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

What's New in v0.23.1

A two-fix patch. Startup no longer hangs when Plannotator is launched from inside a very large or slow directory tree, and the Ask AI input box stays put after long responses.

Startup no longer hangs on large or slow directory trees

On launch, Plannotator warms a cache of the code files under your working directory so it can resolve file links in plans and annotations. That walk was synchronous and unbounded, and it ran before the server started listening. On an ordinary repo you never noticed. On a very large tree, or a slow one like a FUSE-mounted monorepo with millions of files, the walk never finished — so plannotator annotate and the plan flow hung indefinitely with no browser, no output, and no server.

The walk is now bounded by the same PLANNOTATOR_FILE_BROWSER_MAX_FILES limit the file browser already uses, it runs asynchronously so it yields between directories, and it starts only after the server is listening. The review UI opens immediately and the file list fills in the background. The same limit now also bounds the command-line markdown and folder discovery paths, so resolving a bare filename can't stall on a huge tree either. Direct file paths in plans still resolve exactly as before; only bare-filename lookups on repositories past the limit are affected, and the limit is configurable.

PR #1036 by @backnotprop, closing #978 reported by @DGroundD.

Ask AI input stays visible after long responses

In the document sidebar, a long completed Ask AI response could push the follow-up input box below the bottom of the panel, so you had to scroll to find it. The chat panel now sizes to the space left under the sidebar header, so only the message list scrolls and the provider bar and text box stay in view.

PR #1035 by @dmmulroy.


Install / Update

macOS / Linux:

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

Windows:

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

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

What's Changed

  • fix: bound startup file discovery so launches don't hang on large or slow trees by @backnotprop in #1036
  • fix: keep Ask AI input visible after responses by @dmmulroy in #1035

Community

  • @DGroundD reported the startup hang on a FUSE-mounted monorepo in #978, with a clear reproduction that pinned it to the working-directory file walk

Full Changelog: v0.23.0...v0.23.1

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