Skip to content

Releases: backnotprop/plannotator

v0.16.7

02 Apr 22:36

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.6 Perforce support, Pi shared event API, suggested code prefill, file tree expand fix
v0.16.5 Resize handle scrollbar fix, VS Code Marketplace publish
v0.16.4 Compound planning improvement hook, GitHub Enterprise + self-hosted GitLab, dockview workspace, new themes
v0.16.3 Pi phase configuration, CLI help, untracked file discovery fix, review scroll reset
v0.16.2 Draggable comment popovers, cross-file annotation visibility, custom diff fonts, OpenCode verbose log fix
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring

What's New in v0.16.7

v0.16.7 adds Gemini CLI as a supported platform and fixes the agent skills install path. 2 PRs, 1 from an external contributor, 1 first-timer.

Gemini CLI Plan Review

Plannotator now works with Google's Gemini CLI. When you use /plan in Gemini CLI, the BeforeTool hook intercepts exit_plan_mode, reads the plan file from disk, and opens the browser review UI. Approve or deny with annotations, same as every other supported agent.

The integration required adapting how Plannotator reads plans. Gemini provides a plan_filename pointing to a file on disk rather than passing plan content inline like Claude Code does. The server reconstructs the full path from the session's transcript path and reads the file directly. Decision output is also format-specific: Gemini expects { decision: "deny", reason: "..." } while Claude Code uses its hookSpecificOutput wrapper.

A user policy file (plannotator.toml) grants allow for exit_plan_mode so the TUI confirmation dialog is skipped and the browser review becomes the sole approval gate. Slash commands for /plannotator-review and /plannotator-annotate are installed as Gemini command TOML files.

The install script (install.sh, install.ps1, install.cmd) now auto-detects Gemini CLI by checking for ~/.gemini and configures the policy, hook, and commands automatically. The marketing site's hero section includes Gemini in the agent selector.

Install Script: Agent Skills Directory Fix

The install scripts were writing agent skills to the wrong directory. Skills are now correctly installed to ~/.agents/skills/ instead of the previous incorrect path.


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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

Gemini CLI: The install script auto-detects ~/.gemini and configures hooks, policy, and slash commands. See apps/gemini/README.md for manual setup.

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

VS Code Extension: Install from the VS Code Marketplace. Tested with Claude Code running in VS Code's integrated terminal. Not currently compatible with Anthropic's official VS Code extension due to upstream hook bugs.


What's Changed

  • feat(gemini): add Gemini CLI plan review integration by @backnotprop in #384
  • fix: install agent skills to ~/.agents/skills/ directory by @nulladdict in #476

New Contributors

Community

  • @nulladdict reported the skills install directory bug in #471 and submitted the fix in #476. First contribution.

Full Changelog: v0.16.6...v0.16.7

v0.16.6

02 Apr 17:59

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.5 Resize handle scrollbar fix, VS Code Marketplace publish
v0.16.4 Compound planning improvement hook, GitHub Enterprise + self-hosted GitLab, dockview workspace, new themes
v0.16.3 Pi phase configuration, CLI help, untracked file discovery fix, review scroll reset
v0.16.2 Draggable comment popovers, cross-file annotation visibility, custom diff fonts, OpenCode verbose log fix
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign

What's New in v0.16.6

v0.16.6 adds Perforce support, an inter-extension event API for Pi, and two code review UX improvements. 5 PRs, 4 from external contributors, 2 first-timers.

Perforce (P4) Pending Changelist Diffs

Plannotator's code review now works in Perforce workspaces. The server auto-detects whether the current directory is a Git repo or a P4 workspace and routes diff, file content, and staging operations to the appropriate backend.

P4 support covers default and numbered pending changelists. The diff dropdown lists all changelists with pending files, and binary files are automatically excluded. Because Perforce has no staging concept, the staging UI is hidden when reviewing P4 diffs. The implementation introduces a VcsProvider interface with Git and P4 implementations behind a provider registry, so additional VCS backends can be added without modifying the existing code paths.

Existing Git behavior is unchanged.

Pi Shared Event API

Other Pi extensions can now invoke Plannotator's review flows without importing internal code. The extension listens on the plannotator:request event channel and supports six actions: plan review, review status, code review, markdown annotation, annotate-last, and archive browsing.

Plan review is asynchronous. A caller sends a request and gets back a reviewId immediately. When the user approves or rejects in the browser, Plannotator emits plannotator:review-result with the decision, feedback, and metadata. Callers can also query review-status with the reviewId to recover from session restarts. The other actions are standard request/response flows.

Browser and server startup logic was extracted into a dedicated plannotator-browser.ts module to keep the main entry point focused on the state machine.

Additional Changes

  • Suggested code prefill. Clicking "Add suggested code" in the annotation toolbar now pre-fills the textarea with the selected code instead of starting empty. The cursor is positioned at the end so you can edit from the original rather than retyping it (#470 by @sylvainDNS)
  • File tree folders expanded by default. The review file tree now initializes with all folders expanded on first render, matching the expected behavior when opening a diff with nested files (#474 by @blimmer, closing #473)
  • Annotation toolbar hidden during suggestion modal. The toolbar no longer stacks on top of the expanded suggestion editor, preventing overlapping dialogs (#469 by @sylvainDNS)

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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

VS Code Extension: Install from the VS Code Marketplace. The extension opens plan review and code review directly in VS Code editor tabs instead of a browser window. Tested with Claude Code running in VS Code's integrated terminal. Not currently compatible with Anthropic's official VS Code extension due to upstream hook bugs.


What's Changed

  • feat: add Perforce (P4) pending changelist diff support by @rtsummit in #472
  • feat(pi): add shared signal/event API for inter-extension review flows by @stk-code in #468
  • feat(review): prefill suggested code textarea with selected code by @sylvainDNS in #470
  • fix(review): expand file tree folders by default on initial render by @blimmer in #474
  • fix(review): hide annotation toolbar when suggestion modal is open by @sylvainDNS in #469

New Contributors

Contributors

@rtsummit contributed Perforce support (#472), bringing Plannotator's code review to teams that use P4 for version control. First contribution.

@stk-code returned with the Pi shared event API (#468), building on the phase configuration work from v0.16.3. This opens Plannotator's review flows to the broader Pi extension ecosystem.

@sylvainDNS contributed two code review fixes in a single day: suggested code prefill (#470) and the annotation toolbar overlap fix (#469). Both include before/after screenshots in the PR. First contribution.

@blimmer identified and fixed the file tree folder collapse bug (#473, #474), continuing from the untracked file discovery fix in v0.16.4.

Full Changelog: v0.16.5...v0.16.6

v0.16.5

02 Apr 05:15

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.4 Compound planning improvement hook, GitHub Enterprise + self-hosted GitLab, dockview workspace, new themes
v0.16.3 Pi phase configuration, CLI help, untracked file discovery fix, review scroll reset
v0.16.2 Draggable comment popovers, cross-file annotation visibility, custom diff fonts, OpenCode verbose log fix
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix

What's New in v0.16.5

v0.16.5 is a patch release fixing a scrollbar regression in the review UI and shipping two VS Code extension improvements. 3 PRs, all internal.

Resize Handle Scrollbar Fix

In v0.16.2, the sidebar resize handle's invisible touch area was widened to make dragging easier. The right-side handle extended 8px leftward into the content panel, covering the 6px scrollbar. Users could see the scrollbar but couldn't click it because the resize handle's hit area intercepted the click. This was a regression from the touch area change in commit 3ac3d5b.

The fix zeroes out the left encroachment on right-side handles and shifts the full touch target into the sidebar panel instead. The scrollbar is now fully accessible on both plan review and code review views.

VS Code Extension

The extension README icon now uses an absolute URL so the VS Code Marketplace renders it correctly. Previously, the marketplace resolved the relative image path against the repo root rather than the extension subdirectory, resulting in a broken icon on the listing page.

The extension is also now published to the VS Code Marketplace as backnotprop.plannotator-webview. The .vscodeignore was tightened from 548 packaged files down to 12, the README was rewritten with CloudFront-hosted screenshots, and the marketing site gained a VS Code tab in the hero agent selector with install instructions and a marketplace link.


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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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

VS Code Extension: Install from the VS Code Marketplace. The extension opens plan review and code review directly in VS Code editor tabs instead of a browser window. Tested with Claude Code running in VS Code's integrated terminal. Not currently compatible with Anthropic's official VS Code extension due to upstream hook bugs.


What's Changed

Community

  • @dillonoconnor reported the scrollbar regression in #354 and followed up with reproduction details
  • @7tg requested VS Code extension installation documentation in #258
  • @jedzill4 opened the original VS Code extension request in #462

Related issues now addressed by the VS Code marketplace publish:

Full Changelog: v0.16.4...v0.16.5

v0.16.4

01 Apr 22:10

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.3 Pi phase configuration, CLI help, untracked file discovery fix, review scroll reset
v0.16.2 Draggable comment popovers, cross-file annotation visibility, custom diff fonts, OpenCode verbose log fix
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix

What's New in v0.16.4

v0.16.4 introduces a hook mechanism for continuously improving your plans based on compound planning insights, adds GitHub Enterprise and self-hosted GitLab support for code review, restructures the review UI around a dockview workspace, and ships three new themes. 11 PRs, 3 from external contributors, 2 first-timers.

GitHub Enterprise and Self-Hosted GitLab Support

Plannotator's code review now works with GitHub Enterprise and self-hosted GitLab instances. Previously, PR review only supported github.com and gitlab.com URLs. Now any host with a /pull/ or /merge_requests/ path pattern is recognized. The --hostname flag is threaded through all gh CLI calls for GitHub Enterprise, and self-hosted GitLab MR diffs use the glab api endpoint instead of glab mr diff (which doesn't support --hostname on self-hosted instances).

Compound Planning: Continuous Improvement Hook

The compound planning skill now closes the loop between analysis and action. After analyzing your plan archive and generating a report, the skill can write corrective planning instructions to ~/.plannotator/hooks/compound/enterplanmode-improve-hook.txt. A PreToolUse hook on EnterPlanMode then injects these instructions into Claude's context every time plan mode starts. The result: insights from your compound planning analysis automatically shape how Claude writes future plans.

This release also adds incremental reports that detect previous runs and only analyze new files since the last report, saving tokens on large projects. Extraction (Phase 2) now uses Haiku agents for speed, while reduction (Phase 3) uses Sonnet for analytical reasoning with two-stage reduce for large datasets.

For users without a Plannotator archive, a Claude Code fallback mode activates when ~/.plannotator/plans/ is absent or has no denied plans. A bundled Python script (extract_exit_plan_mode_outcomes.py) extracts plan outcomes directly from Claude Code conversation logs, so the compound skill works even without Plannotator history.

Review UI Improvements

The code review center area has been restructured around a Dockview workspace. PR detail views and agent panels now open as center dock tabs instead of overlaying the diff, and diff navigation is simplified to a single dedicated tab. This lays the groundwork for upcoming AI-powered review features that need flexible panel management.

New Themes

Three new color themes: Clean Contrast (dark-only), Code Fork (dark + light), and Midnight (dark-only). All three are derived from Cursor's color palettes and registered with preview swatches in the theme picker.

Additional Changes

  • Pi phase configuration. Pi users can now define phase behavior (model, tools, prompt) in plannotator.json, scoped to project or global ~/.pi/agent (#446 by @stk-code)
  • CLI help. Running plannotator with no arguments now prints a usage message instead of hanging. --help lists available subcommands (#448 by @foxytanuki, closing #447)
  • Untracked file discovery fix. Code review now resolves the repo root so untracked files outside the agent's CWD are included (#450 by @blimmer, closing #449)
  • Review scroll reset. The diff viewport resets to the top-left when switching files (#452, closing #451 reported by @UberMouse)

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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

  • feat: agentic review — background job runner with SSE streaming by @backnotprop in #443
  • feat(pi): support phase config files by @stk-code in #446
  • cli: clarify no-arg usage and add top-level help by @foxytanuki in #448
  • fix(review): resolve repo root for untracked file discovery by @blimmer in #450
  • fix(review): reset scroll on file switch by @backnotprop in #452
  • feat(review): add dockview center workspace by @backnotprop in #453
  • feat: add Clean Contrast, Code Fork, and Midnight themes by @backnotprop in #454
  • feat(skill): compound planning — incremental reports, agent routing, improvement hook by @backnotprop in #455
  • feat(hook): improvement hook context injection for planning by @backnotprop in #459
  • feat(review): support GitHub Enterprise and fix self-hosted GitLab MR diffs by @backnotprop in #460
  • feat(skill): add Claude Code fallback to compound planning skill by @backnotprop in #461

New Contributors

Read more

v0.16.3

01 Apr 04:30

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.2 Draggable comment popovers, cross-file annotation visibility, custom diff fonts, OpenCode verbose log fix
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix

What's New in v0.16.3

v0.16.3 brings Pi phase configuration, a CLI help message, and two code review fixes that address missing untracked files when the agent runs from a subdirectory and scroll position persisting across file switches. 4 PRs, 3 from external contributors, 2 first-timers.

Pi Phase Configuration

Pi users can now customize Plannotator's phase behavior (model, tools, prompt) through configuration files. Phase settings can be defined in a project-level plannotator.json, in .pi/agent, or globally in ~/.pi/agent. This lets you tailor Plannotator's planning workflow per project or globally without modifying the extension itself.

CLI Help and No-Arg Usage

Running plannotator directly in a terminal with no arguments previously hung waiting for stdin, giving no indication of what it expected. Now it prints a short clarification message and exits. plannotator --help shows a top-level usage message listing available subcommands. The existing hook contract (stdin-fed JSON from Claude Code) is unchanged.

Untracked File Discovery Fix

When an agent's working directory was a subdirectory of the repo (e.g., after cd packages/foo/), git ls-files --others would only find untracked files within that subtree, silently dropping files elsewhere in the repo. Paths in the diff output were also CWD-relative instead of root-relative, causing mismatches with tracked file diffs. The fix resolves the repo root and uses it as the CWD for both git ls-files and git diff --no-index. A regression test verifies the fix from a subdirectory.

Additional Changes

  • Review scroll reset. The code review diff viewport now resets to the top-left when switching files, instead of preserving the scroll position from the previous file (#452, closing #451 reported by @UberMouse)

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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

New Contributors

Contributors

@stk-code contributed Pi phase configuration support (#446), bringing per-project customization to the Pi extension.

@foxytanuki returned for a second contribution with the CLI help message (#448), after the SSE timeout fix in v0.16.1.

@blimmer identified and fixed the untracked file discovery bug (#449, #450), including a regression test. First contribution.

@UberMouse reported the scroll position issue in code review (#451).

Full Changelog: v0.16.2...v0.16.3

v0.16.2

31 Mar 04:51

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.1 SSE stream idle timeout fix for external annotations API
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix

What's New in v0.16.2

v0.16.2 focuses on annotation UX. Comment popovers are now draggable, annotation counts surface across sidebar tabs, and the code review diff viewer supports custom fonts. 4 PRs.

Draggable Comment Popovers

Comment popovers in both plan review and code review can now be repositioned by dragging their header bar. Previously, popovers near viewport edges or at the bottom of long documents would clip or overlap content, forcing users to scroll to work around them. A shared useDraggable hook handles the drag mechanics with a 3px movement threshold that prevents interfering with header button clicks. Once dragged, auto-positioning pauses so the popover stays where you put it. Position resets when a new annotation is selected.

The same drag behavior applies to the annotation toolbar in code review line comments.

Cross-File Annotation Visibility

Annotations are now visible across sidebar tabs. The Files and Vault browsers show per-file annotation count badges, with folders displaying aggregate counts from descendants. A summary header reports "N annotations in M files" when any file has annotations. Dot indicators appear on the Files and Vault tab icons when annotated files exist, even when the sidebar is collapsed.

The table of contents badge was redesigned from a heavy accent circle to a lighter muted rounded badge, and the same component is reused across all sidebar trees. Navigation back buttons now adapt based on context, returning to the correct sidebar tab when navigating between files.

Custom Diff Fonts

The code review diff viewer now supports custom monospace fonts and font size adjustments. A Code Font dropdown and font size slider appear in the Display settings tab. Nine fonts are available: Fira Code, Hack, IBM Plex Mono, Inconsolata, JetBrains Mono, Red Hat Mono, Roboto Mono, Source Code Pro, and Atkinson Hyperlegible Mono. Fonts load on demand from Google Fonts and jsDelivr CDN. The overrides apply to the diff shadow DOM, annotations, suggestions, and AI chat code blocks. Settings persist via the ConfigStore system.

Additional Changes

  • OpenCode verbose log fix. Removed writeRemoteShareLink stderr output that flooded the TUI on remote sessions, and stripped leftover debug logs from the PR viewed files feature (#440, closing #435 reported by @h4rvey-g)

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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(opencode): remove verbose logs that flood the TUI by @backnotprop in #440
  • feat(review): custom diff font family and size overrides by @backnotprop in #441
  • feat(ui): draggable comment popover and annotation toolbar by @backnotprop in #442
  • feat(ui): cross-file annotation visibility and adaptive navigation by @backnotprop in #444

Community

@h4rvey-g reported the OpenCode TUI flooding issue in #435, which led to the verbose log cleanup in #440.

Full Changelog: v0.16.1...v0.16.2

v0.16.1

30 Mar 16:17

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.0 GitHub Copilot CLI, external annotations API, bot callback URLs, interactive checkboxes, print support, diff display options
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 OpenCode plan mode rewrite, Obsidian save fix

What's New in v0.16.1

v0.16.1 fixes SSE connection stability for the external annotations API introduced in v0.16.0. 1 PR from an external contributor, 1 first-timer.

SSE Stream Idle Timeout Fix

Bun's default idle timeout of 10 seconds was killing the external annotations SSE stream (/api/external-annotations/stream) before the first 30-second heartbeat could fire. The browser's EventSource auto-reconnected, but each reconnect triggered a full snapshot resend and produced a [Bun.serve]: request timed out after 10 seconds warning in the console.

The fix uses Bun's per-request server.timeout(req, 0) to disable the idle timeout only on SSE stream requests. Normal HTTP requests keep the default 10-second safety net. The change applies to all three server types (plan, review, annotate).


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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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(server): keep external annotation SSE streams alive by @foxytanuki in #439

New Contributors

Community

@foxytanuki filed #438 with a thorough root cause analysis identifying the mismatch between Bun's 10-second idle timeout and the 30-second heartbeat interval, then followed up with the fix in #439.

@j-huang-rj independently identified the same issue and submitted a fix in #433. The targeted per-request approach from #439 was chosen, but both contributors spotted the problem within hours of v0.16.0 shipping.

Full Changelog: v0.16.0...v0.16.1

v0.16.0

30 Mar 05:16

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.15.5 Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions

What's New in v0.16.0

v0.16.0 adds GitHub Copilot CLI as Plannotator's fifth runtime, an external annotations API for integration (stay tuned...), bot callback URLs for Slack-style approval workflows, interactive plan checkboxes, print support, and configurable diff display options. 11 PRs, 3 from external contributors, 2 first-timers.

GitHub Copilot CLI Integration

Plannotator now works with GitHub Copilot CLI, contributed by @Yecats. Plan review, code review, and markdown annotation all function the same way they do in Claude Code. The Copilot plugin hooks into exit_plan_mode to intercept plans, and the same /plannotator-review, /plannotator-annotate, and /plannotator-last commands are available.

Install the binary, then in Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

A follow-up PR added environment-variable-based agent detection so the UI correctly identifies which agent launched Plannotator, fixing the badge display that was previously hardcoded to Claude Code.

External Annotations API

Any external program can now push annotations into a live Plannotator session. Linters, AI tools, or custom scripts send annotations via HTTP POST to /api/external-annotations, and they appear in the browser UI in real-time through Server-Sent Events. The API supports single and batch annotation creation, field updates via PATCH, deletion by ID or source, and version-gated polling as a fallback for environments where SSE isn't practical.

This is the foundation for integrating Plannotator with external toolchains. A linter could annotate code review diffs with warnings. A CI pipeline could push review comments. An AI assistant could highlight sections of a plan it has questions about.

All three server types (plan, review, annotate) expose the same endpoints, and the Pi extension has full parity.

Interactive Checkboxes

Task checkboxes in rendered plans are now clickable. Checking or unchecking a box creates a COMMENT annotation that captures the action, the section context, and the task text. Toggling back to the original state removes the override and deletes the annotation. This means your checkbox interactions become part of the feedback sent to the agent.

Print Support

Plans can now be printed directly from the review UI. An export dropdown menu in the toolbar offers a print option, and Ctrl+P / Cmd+P works as a keyboard shortcut. A dedicated print stylesheet produces clean white-paper output with A4 formatting, hiding the toolbar, sidebar, and interactive elements.

Diff Display Options

The code review diff viewer now exposes display settings that were previously locked to defaults. You can configure overflow behavior (scroll vs word wrap), toggle diff indicators and line numbers, control inline diff granularity, and show or hide diff backgrounds. All settings are persisted via the ConfigStore system (cookies + ~/.plannotator/config.json) and accessible from a new Display tab in the review Settings dialog.

Bot Callback URL Parameters

Plannotator share URLs now support callback parameters for bot integrations. When a bot (e.g., a Slack bot) generates a plan and posts the Plannotator URL, it can embed ?cb=<callback_url>&ct=<auth_token> so the approval decision is sent back to the bot automatically. The user reviews and approves in Plannotator, and the bot receives the result without any copy-paste.

Additional Changes

  • OpenCode startup performance. Replaced compile-time HTML embedding with lazy readFileSync getters and background preloading. Bundle size drops from 21.25 MB to 0.81 MB (96% reduction), cold-start module load from ~160ms to ~35ms (#411, closing #410 reported by @DRBragg)
  • Markdown parser fixes. Indented closing fences (inside list items), trailing text after fence closers, and false table detection on lines with pipes are all fixed (#429, closing #427 reported by @jhillyerd)
  • PR/MR platform test coverage. Regression tests for URL parsing, labels, display helpers, and CLI selection across GitHub and GitLab, including self-hosted GitLab (#426 by @sudorest)
  • Compound skill description fix. Trimmed to fit Claude Code 2.1.86's 250-character limit and added disable-model-invocation frontmatter (#430, closing #412 reported by @arogulin)
  • Copilot on marketing site. The landing page harness selector now includes a Copilot button with install instructions, in alphabetical order alongside the other five runtimes.

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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

Read more

v0.15.5

27 Mar 05:36

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.15.2 Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring, file header gap fix
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions
v0.12.0 Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode

What's New in v0.15.5

v0.15.5 is a community release. 8 PRs, 5 from external contributors, 4 of them first-timers.

GitHub Viewed File Sync

When reviewing a PR, Plannotator now syncs with GitHub's native "Viewed" checkmarks. On load, the file tree fetches each file's viewerViewedState via GraphQL and pre-populates the viewed checkboxes. Toggling a file's viewed state in Plannotator fires a background mutation to mark or unmark it on GitHub. Your progress carries over between Plannotator and GitHub's PR page.

GitLab PRs are unaffected — GitLab's viewed state is localStorage-only with no API.

Custom Display Name

Previously, annotations were attributed to an auto-generated tater identity (e.g., "Rustic Potato"). You can now set a custom display name in the settings panel. A "Use git name" button pulls from git config user.name for quick setup.

This release also introduces ~/.plannotator/config.json as a persistent configuration file. Settings written here take precedence over cookies, giving a stable config layer that survives port changes and browser sessions.

Expand/Collapse All in File Tree

The code review file tree sidebar now has expand all and collapse all buttons in the header. Useful when reviewing PRs with deeply nested directory structures.

Search Performance in Code Review

Typing in the diff search bar previously rebuilt every <mark> highlight on every keystroke. For large diffs this caused visible lag. Highlights are now debounced by 100ms, and stepping through matches (Enter/Shift+Enter) swaps two elements' styles in O(1) instead of rebuilding the entire set.

Additional Changes

  • WSL update command fix. The update banner now detects WSL and shows the Unix install command instead of the Windows one (#395 by @alexandresilvestri)
  • Project slug fix for dots and underscores. projectSlugFromCwd() now matches Claude Code's actual algorithm, replacing all non-alphanumeric characters (not just /) with -. This fixes annotate-last failures for working directories with dots or underscores in the path (#401 by @aletar89)
  • Pi tool-scope import fix. The published Pi package was missing tool-scope.ts, causing a load failure. Fixed the import extension and added the file to the package manifest (#392 by @jasonodonnell, closing #391 reported by @iefnaf)
  • Pi compound planning skill. The compound planning skill is now bundled in the published Pi package, so Pi users get it automatically on install
  • Diff type switcher docs. Documented all five diff type options in the code review docs (#398, closing #397 reported by @UberMouse)

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

New Contributors

Community

@rockneurotiko contributed the GitHub viewed file sync (#393), bridging Plannotator's review UI with GitHub's native progress tracking. @yonihorn added the expand/collapse all buttons to the file tree (#403). @alexandresilvestri fixed the update banner for WSL users (#395). @aletar89 fixed project slug derivation for paths with dots and underscores (#401). @jasonodonnell fixed the Pi tool-scope import (#392).

On the issue side:

Read more

v0.15.2

25 Mar 07:36

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.15.0 Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity
v0.14.5 GitLab merge request review, login page image fix, Windows install path fix
v0.14.4 GitHub review submission, repo identifier in tab title, nested code fence parser fix, Pi paste URL wiring, file header gap fix
v0.14.3 PR context panel, diff search in code review, OpenCode permission normalization, landing page redesign
v0.14.2 OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix
v0.14.1 Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix
v0.14.0 PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
v0.13.1 OpenCode plan mode rewrite, Obsidian save fix
v0.13.0 Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions
v0.12.0 Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode
v0.11.4 Git add from code review, bidirectional scroll navigation, clipboard paste for annotation images, VS Code IPC port stability

What's New in v0.15.2

v0.15.2 introduces Compound Planning, adds folder annotation, the /plannotator-archive slash command, and fixes Pi's plan tool scoping. 5 PRs, 1 from an external contributor.

Compound Planning: Learn From Your Own Planning Patterns

Skill: /plannotator-compound

Demo: https://x.com/plannotator/status/2036607307979886984

Compound Planning is a new skill that surfaces your own insights: what kinds of plans get denied, what feedback you give most often, how your planning has evolved over time. The goal is to consistently refine and optimize the planning that works best for you, and eventually create an automated feedback loop between your review patterns and your agent's planning behavior.

This is the first step toward a system where your agent gets better at planning for you specifically, based on your actual history of approvals, denials, and annotations.

The platform install scripts now install Plannotator's skill (just 1 for now) automatically alongside the binary.

Annotate Entire Folders

plannotator annotate now accepts a directory path. Instead of opening a single file, it starts the annotate server with the sidebar Files tab pre-loaded, showing all markdown files in that directory. The viewer starts empty with a prompt to select a file. This lets you review and annotate an entire folder of docs, specs, or notes in one session.

Works in both the Bun hook and the Pi extension.

/plannotator-archive Slash Command

The plan archive browser was previously only accessible via the CLI (plannotator archive) and the Pi extension. This release adds /plannotator-archive as a slash command for Claude Code and OpenCode, so all three runtimes can browse saved plan decisions the same way. The archive is read-only: it opens the browser, you browse your plans, and it closes when you're done.

Additional Changes

  • Pi plan tool scoping. The Pi extension's plan submission tool was renamed to plannotator_submit_plan and is now hidden outside of planning mode. Previously, the tool was visible globally, which could confuse the agent. The fix also properly restores the pre-plan tool set when planning ends (#387 by @dmmulroy, closing #386)
  • Pi AI backbone bundling. The @plannotator/ai package was missing from published Pi packages because it's a private workspace dependency. AI files are now copied into generated/ai/ at build time, matching the existing pattern for shared utilities. Pi users installing from npm now get AI features in code review.

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

Community

@dmmulroy authored the Pi plan tool scoping fix (#387), which he also reported in #386. This is his third contribution to the project.

Full Changelog: v0.15.0...v0.15.2