Releases: backnotprop/plannotator
v0.16.7
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.
- #476 by @nulladdict, closing #471
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionVS 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
- @nulladdict made their first contribution in #476
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
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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionVS 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
- @rtsummit made their first contribution in #472
- @sylvainDNS made their first contribution in #469
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
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.
- #465, closing #354 reported by @dillonoconnor
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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionVS 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
- fix(ui): right resize handle no longer covers scrollbar by @backnotprop in #465
- fix(vscode): use absolute URL for README icon by @backnotprop in #464
- feat(vscode): marketplace publish + marketing VS Code tab by @backnotprop in #463
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:
- @jchapuis: #99 (VS Code hook integration)
- @jinhwan0724: #154 (non-TTY browser open)
- @GunitBindal: #192 (remote session UI access)
Full Changelog: v0.16.4...v0.16.5
v0.16.4
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).
- #460, closing #348 and #457 reported by @charlozard
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
plannotatorwith no arguments now prints a usage message instead of hanging.--helplists 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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat'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
v0.16.3
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.
- Authored by @foxytanuki in #448, closing #447
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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat's Changed
- 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
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
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
writeRemoteShareLinkstderr 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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat'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
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).
- Authored by @foxytanuki in #439, closing #438
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat's Changed
- fix(server): keep external annotation SSE streams alive by @foxytanuki in #439
New Contributors
- @foxytanuki made their first contribution in #439
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
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.
- Authored by @aviadshiber in #416
Additional Changes
- OpenCode startup performance. Replaced compile-time HTML embedding with lazy
readFileSyncgetters 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-invocationfrontmatter (#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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat's Changed
- feat: GitHub Copilot CLI integration by @Yecats in #409
- perf(opencode): lazy-load HTML to fix plugin startup time by @backnotprop in #411
- feat: bot callback URL params for seamless plan review by @aviadshiber in [#416](https://github.com/backnotprop/plannota...
v0.15.5
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.
- #399, closing #396 reported by @MarceloPrado
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.
- #407, closing #405 reported by @dillonoconnor
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 fixesannotate-lastfailures 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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".
OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat's Changed
- fix: Pi plan tool scoping import by @jasonodonnell in #392
- feat: sync GitHub viewed files by @rockneurotiko in #393
- fix: Unix update command for WSL users by @alexandresilvestri in #395
- docs: document diff type switcher in code review by @backnotprop in #398
- feat: custom display name + config file foundation by @backnotprop in #399
- fix: project slug derivation for paths with dots and underscores by @aletar89 in #401
- feat(review): add expand/collapse all buttons to file tree sidebar by @yonihorn in #403
- perf(review): debounce search highlights and O(1) active match swap by @backnotprop in #407
New Contributors
- @jasonodonnell made their first contribution in #392
- @alexandresilvestri made their first contribution in #395
- @aletar89 made their first contribution in #401
- @yonihorn made their first contribution in #403
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:
- @iefnaf reported the missing
tool-scope.tsin #391 - @gwynnnplaine and @marandaneto confirmed the issue and provided additional context
- @MarceloPrado requested custom display names in #396
- @UberMouse requested diff type documentation in #397
- @dillonoconnor reported the sear...
v0.15.2
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_planand 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/aipackage was missing from published Pi packages because it's a private workspace dependency. AI files are now copied intogenerated/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 | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".
OpenCode: Clear cache and restart:
rm -rf ~/.bun/install/cache/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionWhat's Changed
- fix: Pi plan tool scoping by @dmmulroy in #387
- feat: add /plannotator-archive slash command by @backnotprop in #388
- feat: support folder annotation via plannotator annotate <folder/> by @backnotprop in #389
- feat: install skills via git sparse-checkout in platform install scripts by @backnotprop in #390
- fix(pi): bundle AI backbone into generated/ for published package by @backnotprop in 1175ef6
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