Skip to content

Releases: backnotprop/plannotator

v0.17.7

09 Apr 16:38
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.6 Bun.serve error handlers for diagnostic 500 responses, install.cmd cache fix
v0.17.5 Fix VCS detection crash when p4 not installed, install script cache path fix
v0.17.4 Vault browser merged into Files tab, Kanagawa themes, Pi idle session tool fix
v0.17.3 Sticky lane repo/branch badge overflow fix
v0.17.2 Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.7

v0.17.7 fixes the "fetch(req) did not return a Response object" error that affected OpenCode users running opencode web, opencode serve, or any mode that starts the HTTP server (including --port or --hostname flags).

Fix: OpenCode Web/Serve Mode Compatibility

OpenCode recently added Node.js support alongside Bun. To bridge its Hono app to Node's HTTP server, OpenCode uses @hono/node-server, which includes a createAdaptorServer function. That function unconditionally patches global.Response with a polyfill class — a necessary step for Node.js, which lacks native web API globals.

The problem: in opencode web and opencode serve modes, this patch runs before plugins load. When the plannotator plugin calls Bun.serve() and the fetch handler returns new Response(...), it's constructing the hono polyfill, not Bun's native Response. Bun validates return types using internal type tags, not instanceof, so it rejects the polyfill and shows its default error page. The error() handler added in v0.17.6 also uses new Response(...), which is why it didn't fire either — the error handler's own response was also a polyfill.

Plain opencode TUI without --port or server config was never affected. In that mode, OpenCode routes requests through an internal RPC bridge instead of starting an HTTP server, so createAdaptorServer never runs and global.Response stays native.

The fix detects the polyfill by walking the prototype chain. Hono sets up Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype), so the parent prototype's constructor is the original native Response. The plugin recovers it and restores globalThis.Response before any server code runs. When Response hasn't been patched, the detection check fails safely and the fix is a no-op.


Install / Update

macOS / Linux:

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

Windows PowerShell:

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

Pin a specific version:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.7

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.

OpenCode: Clear cache and restart:

rm -rf ~/.cache/opencode/packages/@plannotator ~/.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.


What's Changed

  • fix: recover native Response when patched by hono node-server adapter by @backnotprop

Community

@Zengwenj reported the original issue in #528. @xxJava provided the p4 stack trace and confirmed cross-platform reproduction. @boris-gorbylev and @chocochu confirmed on macOS. @jehu-rodriguez confirmed 0.17.6's error handler didn't fire, which was the key clue that the issue was a non-Response return rather than an exception. The latest reporter confirmed opencode web as the specific trigger, which led directly to identifying the hono adapter's global.Response patch as the root cause.

Full Changelog: v0.17.6...v0.17.7

v0.17.6

09 Apr 15:08
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.5 Fix VCS detection crash when p4 not installed, install script cache path fix
v0.17.4 Vault browser merged into Files tab, Kanagawa themes, Pi idle session tool fix
v0.17.3 Sticky lane repo/branch badge overflow fix
v0.17.2 Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.6

v0.17.6 adds error handlers to all three Bun servers (plan, review, annotate) so that unhandled exceptions produce a diagnostic 500 response instead of Bun's opaque default error page. This release also adds OpenCode cache clearing to the Windows CMD install script, which was missing entirely.

Server Error Handlers

Several OpenCode users reported seeing Bun's default error page ("You're seeing this because fetch(req) did not return a Response object") when using submit_plan. The root cause remains under investigation, but the default Bun error page provides zero diagnostic information, making it impossible to identify the actual exception from user reports alone.

All three servers (plan review, code review, annotate) now register an error handler with Bun.serve(). When the fetch handler throws for any reason, the error handler catches it, logs the full exception to stderr, and returns a 500 response with the error message. Normal requests are unaffected. The only change in behavior is on error paths that were previously showing the opaque Bun page.

This gives us the diagnostic information we need. The next user who hits this issue will see the actual error message instead of the generic Bun page, and can include it in their report.

Windows CMD Install Script Cache Fix

The install.cmd script had no OpenCode cache clearing at all. Users who installed or updated via CMD on Windows kept running stale cached plugin versions indefinitely. The script now clears %USERPROFILE%\.cache\opencode\packages\@plannotator alongside the existing bun cache paths, matching the behavior already present in install.sh and install.ps1 since v0.17.5.


Install / Update

macOS / Linux:

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

Windows PowerShell:

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

Pin a specific version:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.6

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 ~/.cache/opencode/packages/@plannotator ~/.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

  • fix: add Bun.serve error handlers for diagnostic 500 responses by @backnotprop
  • fix: add OpenCode cache clearing to install.cmd by @backnotprop

Community

@Zengwenj, @xxJava, @boris-gorbylev, and @chocochu reported and confirmed #528. The error handler addition is a direct response to the difficulty of diagnosing the reported Bun error page without exception details.

Full Changelog: v0.17.5...v0.17.6

v0.17.5

09 Apr 14:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.4 Vault browser merged into Files tab, Kanagawa themes, Pi idle session tool fix
v0.17.3 Sticky lane repo/branch badge overflow fix
v0.17.2 Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.5

v0.17.5 is a hotfix for a server crash affecting plannotator review on systems without Perforce installed, plus a fix for stale OpenCode plugin caches that the install script failed to clear.

VCS Detection Crash When Perforce Is Not Installed

When running plannotator review, the server detects which version control system manages the current directory. The detection loop tries each provider in order: git first, then Perforce (p4). The Perforce provider calls Bun.spawn(["p4", "info"]) to check for a workspace. On systems where the p4 binary isn't installed, Bun.spawn throws an ENOENT error that was not caught. The unhandled exception crashed the Bun server process.

This affected every user who doesn't have Perforce installed and ran plannotator review. The git provider's detection had the same vulnerability — if git wasn't in $PATH (possible on some Windows configurations), the spawn would throw before Perforce detection even ran.

Both providers now catch spawn failures and return false, allowing the detection loop to continue to the next provider or fall back to git as the default. Perforce support continues to work for users who have it installed.

Install Script Cache Path Fix

The install script clears cached OpenCode plugin packages to force a fresh download on the next run. The cache-busting targeted ~/.cache/opencode/node_modules/@plannotator, but OpenCode actually stores plugin packages at ~/.cache/opencode/packages/@plannotator. Users who ran the install script to update were still running the old cached plugin version in OpenCode until the cache expired or was manually cleared.

Both install.sh and install.ps1 now clear the correct path.


Install / Update

macOS / Linux:

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

Windows:

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

Pin a specific version:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.5

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 ~/.cache/opencode/packages/@plannotator ~/.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

  • fix: catch VCS detection spawn failures when p4/git not in PATH by @backnotprop in #527
  • fix: correct OpenCode cache path in install scripts by @backnotprop in #527

Community

@Zengwenj reported the crash in #528 with a clear reproduction path and suspected cause. @xxJava confirmed the issue on both Windows and macOS and provided the full stack trace that pinpointed the exact line in p4.ts. @boris-gorbylev and @chocochu confirmed the issue on macOS with OpenCode.

Full Changelog: v0.17.4...v0.17.5

v0.17.4

08 Apr 23:23
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.3 Sticky lane repo/branch badge overflow fix
v0.17.2 Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.4

v0.17.4 ships three PRs: a sidebar consolidation that folds the Obsidian vault browser into the Files tab, three new Kanagawa themes, and a Pi regression fix from @dmmulroy.

Vault Browser Merged into Files Tab

The sidebar previously had separate "Files" and "Vault" tabs when an Obsidian vault was configured. The two tabs had identical tree UI but parallel state, and switching between them broke the mental model of "files are files."

The Vault tab is gone. Vault directories now appear as collapsible sections inside the Files tab, beneath project directories, marked with an Obsidian icon in the section header. Annotation count badges still appear per-directory. Disabling the vault in Settings removes the section without affecting project file browsing.

Two server-side gaps accompany this change. The annotate server (both Bun and Pi) was missing the /api/obsidian/vaults, /api/reference/obsidian/files, and /api/reference/obsidian/doc endpoints — vault files were unreachable when opening linked docs via plannotator annotate ./. Those endpoints are now present on all three servers (plan, review, annotate).

The sticky header lane was also incorrectly suppressed whenever a linked doc was active. That gate has been removed. The sticky bar now follows scroll behavior consistently regardless of mode.

Net change is -334 lines: one Files tab handles all directory types uniformly.

#526

Kanagawa Themes

Three Kanagawa variants join the theme picker as dark-only themes, placed alphabetically after Gruvbox:

  • Kanagawa Dragon — warmest variant, ash-black base (#181616) with muted teal accent
  • Kanagawa Wave — the classic Kanagawa, cool blue-purple base (#1f1f28) with purple accent
  • Kanagawa Bones — same base as Wave, earthier character, cyan-blue primary with brighter purple accent

Colors are mapped directly from the official Ghostty Kanagawa palette.

#524

Additional Changes

  • Pi: planning tool stripped on fresh sessions. PR #446 refactored the Pi session_start handler to use applyPhaseConfig() but left the idle branch calling only restoreSavedState(), which no-ops when there's no saved state. On fresh sessions that had never entered planning mode, plannotator_submit_plan remained in the active tool set — a regression from #387. The idle branch now explicitly strips planning-only tools when there is no saved state to restore. (#525 by @dmmulroy)

Install / Update

macOS / Linux:

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

Windows:

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

Pin a specific version:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.4

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(sidebar): merge vault browser into files tab + UX polish by @backnotprop in #526
  • fix(pi): strip planning-only tools on fresh idle sessions by @dmmulroy in #525
  • feat(themes): add Kanagawa Dragon, Wave, and Bones themes by @backnotprop in #524

Contributors

@dmmulroy tracked down and fixed a regression in the Pi tool-scoping logic he originally authored in #387 (#525). This is his fourth contribution to the project.

Full Changelog: v0.17.3...v0.17.4

v0.17.3

08 Apr 14:42
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.3

v0.17.3 is a substantial release covering ten PRs — supply-chain hardening with SLSA build attestations, a major plan header overhaul with sticky toolstrip and badges, overlay scrollbars across the entire app, inline highlighting for external annotations, Conventional Comments in code review, and several smaller fixes from the community. Two contributors from outside the core team shipped changes this cycle.

Sticky Toolstrip and Badges

The stickyActionsEnabled setting previously only pinned the right-side action buttons. The annotation toolstrip (selection mode + editor mode toggles) and the left-side badges (repo, branch, plan diff) scrolled away with the document, forcing you back to the top to switch modes or jump into a diff.

A new ghost sticky lane fades in once you scroll past the original toolstrip, pinning the toolstrip and badges on the same horizontal plane as the action buttons. The compact bar uses a row layout for badges and hides label text on inactive toolstrip modes to leave room. Top-of-document rendering is unchanged. The lane stays hidden in plan-diff mode, archive mode, linked-doc mode, and when sticky actions is off. Honors prefers-reduced-motion.

#510

Conventional Comments in Code Review

The code review annotation toolbar now has an optional Conventional Comments label picker — suggestion, issue, nitpick, question, and others, with an inline blocking/non-blocking toggle per label. Annotations export in conventional format (**label** (decoration): text) as plain markdown, compatible with GitHub PRs and any text-based review system.

A dedicated Comments settings tab houses the master toggle (off by default), a label editor for adding/editing/deleting/reordering custom labels, per-label blocking decorator toggle, an educational "how it works" section linking to the spec, and live example output. Drafts persist label and decoration state across file switches.

#501

Unified Plan Header Dropdown and Agent Instructions

Plan mode's header has been consolidated. The sprawled desktop toolbar (mode toggle, standalone Settings button, custom export sub-dropdown) and the separate mobile menu are now a single PlanHeaderMenu rendered at all breakpoints, modeled on the existing review header menu. The version number and release notes link moved into the dropdown footer.

A new "Agent Instructions" item copies a clipboard payload teaching external agents (Claude Code, Codex, custom scripts) how to POST annotations into the live session via /api/external-annotations. The instruction body lives in packages/ui/utils/planAgentInstructions.ts so it can be edited independently of UI code.

The PR also fixes a long-standing bug where the Send Annotations / Approve cluster was hidden whenever a linked doc was active, blocking submission for users running plannotator annotate ./ once they opened a file.

#515

Header Polish: Coordinated Shrinking, Share/Copy Cleanup

Sticky header label shrinking is now driven by measured geometry instead of fixed pixel reserves. A ResizeObserver on the wrapper plus another on the action button cluster computes exactly how much room is available; both sides of the header shrink in lockstep so they stay horizontally aligned as long as possible. Below ~340px of plan area the ghost bar stacks below the action buttons.

"Quick Share" and "Quick Copy" are now plain "Share" and "Copy". Share opens the existing export modal so it benefits from the short-link path for large payloads instead of dumping a 50KB hash URL straight to the clipboard.

The sidebar rail no longer pushes the background grid pattern 30px to the right — it floats over the document area, and the grid paints edge-to-edge under the sidebar flags.

#519

Overlay Scrollbars

Wide, translucent, full-length overlay scrollbars across plan mode and code review, replacing the 6px WebKit rail that was hard to grab. Click the track to page-animate toward the click; drag the thumb smoothly; no layout shift; Firefox parity; respects prefers-reduced-motion; disappears in print.

Backed by overlayscrollbars-react wrapped in a new OverlayScrollArea component. Native scroll semantics stay on the viewport element so existing scrollIntoView and scrollTo calls still work. Wrapped containers include the main plan viewer, annotation panel, sidebar tabs, settings and export modals, file tree, review sidebar, AI chat tab, PR comments timeline, and PR summary/checks dock panels.

#509, closing #354

Inline Highlighting for External Annotations

External annotations posted via POST /api/external-annotations can now optionally highlight the matching originalText span inline in the rendered plan — COMMENT renders yellow, DELETION renders strikethrough. Annotations without originalText or of type GLOBAL_COMMENT continue to render sidebar-only.

No protocol or schema change. Tools choose inline vs global purely by what they supply. If originalText doesn't match anywhere in the rendered DOM, the annotation degrades gracefully to sidebar-only with a console warning. PATCH and DELETE through the API correctly remove and reapply highlights as state changes.

#511

Supply-Chain Hardening

The release pipeline now generates SLSA build provenance attestations for every released binary. Each of the twelve cross-compiled binaries (six Plannotator targets, six paste-service targets) is signed via Sigstore and recorded in Rekor through actions/attest-build-provenance. Top-level workflow permissions have been tightened to contents: read with per-job overrides.

Installers now accept a --version v0.X.Y flag (and positional form), so you can pin to a specific version instead of always pulling latest. The default behavior is unchanged.

Attestation verification is opt-in via three mechanisms with documented precedence: a --verify-attestation CLI flag, a PLANNOTATOR_VERIFY_ATTESTATION=1 environment variable, or { "verifyAttestation": true } in ~/.plannotator/config.json. Off by default to match how rustup, brew, bun, deno, and helm handle attestation — turning it on hard-fails the install if gh isn't available, so opt-in is never silently skipped. Anyone can still verify any release manually with gh attestation verify.

The same PR fixes a Windows installer crash where cmd.exe's enabledelayedexpansion was eating the ! characters in an embedded node -e script during Gemini settings merge.

[#512](https://github.com/back...

Read more

v0.17.2

08 Apr 14:10
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.1 Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.2

v0.17.2 is a substantial release covering ten PRs — supply-chain hardening with SLSA build attestations, a major plan header overhaul with sticky toolstrip and badges, overlay scrollbars across the entire app, inline highlighting for external annotations, Conventional Comments in code review, and several smaller fixes from the community. Two contributors from outside the core team shipped changes this cycle.

Sticky Toolstrip and Badges

The stickyActionsEnabled setting previously only pinned the right-side action buttons. The annotation toolstrip (selection mode + editor mode toggles) and the left-side badges (repo, branch, plan diff) scrolled away with the document, forcing you back to the top to switch modes or jump into a diff.

A new ghost sticky lane fades in once you scroll past the original toolstrip, pinning the toolstrip and badges on the same horizontal plane as the action buttons. The compact bar uses a row layout for badges and hides label text on inactive toolstrip modes to leave room. Top-of-document rendering is unchanged. The lane stays hidden in plan-diff mode, archive mode, linked-doc mode, and when sticky actions is off. Honors prefers-reduced-motion.

#510

Conventional Comments in Code Review

The code review annotation toolbar now has an optional Conventional Comments label picker — suggestion, issue, nitpick, question, and others, with an inline blocking/non-blocking toggle per label. Annotations export in conventional format (**label** (decoration): text) as plain markdown, compatible with GitHub PRs and any text-based review system.

A dedicated Comments settings tab houses the master toggle (off by default), a label editor for adding/editing/deleting/reordering custom labels, per-label blocking decorator toggle, an educational "how it works" section linking to the spec, and live example output. Drafts persist label and decoration state across file switches.

#501

Unified Plan Header Dropdown and Agent Instructions

Plan mode's header has been consolidated. The sprawled desktop toolbar (mode toggle, standalone Settings button, custom export sub-dropdown) and the separate mobile menu are now a single PlanHeaderMenu rendered at all breakpoints, modeled on the existing review header menu. The version number and release notes link moved into the dropdown footer.

A new "Agent Instructions" item copies a clipboard payload teaching external agents (Claude Code, Codex, custom scripts) how to POST annotations into the live session via /api/external-annotations. The instruction body lives in packages/ui/utils/planAgentInstructions.ts so it can be edited independently of UI code.

The PR also fixes a long-standing bug where the Send Annotations / Approve cluster was hidden whenever a linked doc was active, blocking submission for users running plannotator annotate ./ once they opened a file.

#515

Header Polish: Coordinated Shrinking, Share/Copy Cleanup

Sticky header label shrinking is now driven by measured geometry instead of fixed pixel reserves. A ResizeObserver on the wrapper plus another on the action button cluster computes exactly how much room is available; both sides of the header shrink in lockstep so they stay horizontally aligned as long as possible. Below ~340px of plan area the ghost bar stacks below the action buttons.

"Quick Share" and "Quick Copy" are now plain "Share" and "Copy". Share opens the existing export modal so it benefits from the short-link path for large payloads instead of dumping a 50KB hash URL straight to the clipboard.

The sidebar rail no longer pushes the background grid pattern 30px to the right — it floats over the document area, and the grid paints edge-to-edge under the sidebar flags.

#519

Overlay Scrollbars

Wide, translucent, full-length overlay scrollbars across plan mode and code review, replacing the 6px WebKit rail that was hard to grab. Click the track to page-animate toward the click; drag the thumb smoothly; no layout shift; Firefox parity; respects prefers-reduced-motion; disappears in print.

Backed by overlayscrollbars-react wrapped in a new OverlayScrollArea component. Native scroll semantics stay on the viewport element so existing scrollIntoView and scrollTo calls still work. Wrapped containers include the main plan viewer, annotation panel, sidebar tabs, settings and export modals, file tree, review sidebar, AI chat tab, PR comments timeline, and PR summary/checks dock panels.

#509, closing #354

Inline Highlighting for External Annotations

External annotations posted via POST /api/external-annotations can now optionally highlight the matching originalText span inline in the rendered plan — COMMENT renders yellow, DELETION renders strikethrough. Annotations without originalText or of type GLOBAL_COMMENT continue to render sidebar-only.

No protocol or schema change. Tools choose inline vs global purely by what they supply. If originalText doesn't match anywhere in the rendered DOM, the annotation degrades gracefully to sidebar-only with a console warning. PATCH and DELETE through the API correctly remove and reapply highlights as state changes.

#511

Supply-Chain Hardening

The release pipeline now generates SLSA build provenance attestations for every released binary. Each of the twelve cross-compiled binaries (six Plannotator targets, six paste-service targets) is signed via Sigstore and recorded in Rekor through actions/attest-build-provenance. Top-level workflow permissions have been tightened to contents: read with per-job overrides.

Installers now accept a --version v0.X.Y flag (and positional form), so you can pin to a specific version instead of always pulling latest. The default behavior is unchanged.

Attestation verification is opt-in via three mechanisms with documented precedence: a --verify-attestation CLI flag, a PLANNOTATOR_VERIFY_ATTESTATION=1 environment variable, or { "verifyAttestation": true } in ~/.plannotator/config.json. Off by default to match how rustup, brew, bun, deno, and helm handle attestation — turning it on hard-fails the install if gh isn't available, so opt-in is never silently skipped. Anyone can still verify any release manually with gh attestation verify.

The same PR fixes a Windows installer crash where cmd.exe's enabledelayedexpansion was eating the ! characters in an embedded node -e script during Gemini settings merge.

[#512](https://github.com/back...

Read more

v0.17.1

07 Apr 01:16

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.17.0 AI code review agents, token-level annotation, merge-base diffs
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.1

v0.17.1 is a patch release that fixes PR review in the Pi extension and addresses several cross-platform bugs found during an exhaustive parity audit of every server endpoint between Bun and Pi runtimes.

Pi PR Review

The Pi extension's plannotator-review command was completely ignoring PR URL arguments and always falling back to local git diffs. v0.17.1 implements the full PR review flow: URL parsing, authentication checks, PR metadata fetch, and local worktree creation for both same-repo and cross-repo PRs. Same-repo PRs use git worktree add --detach with the PR's head ref; cross-repo forks use a shallow clone with tracking refs for both branches.

Beyond the missing PR flow, an audit of all 27 review server feature areas uncovered 12 parity gaps in the Pi server. These ranged from missing diagnostic logging on PR actions to incorrect access guards that would have allowed diff switching in PR mode. All have been fixed.

Remote URL Parsing

parseRemoteUrl has been rewritten to handle the full range of git remote formats. The previous regex incorrectly matched HTTPS URLs with non-standard ports (e.g., https://gitlab.example.com:8443/group/project.git) as SSH, and failed on multi-segment GitLab paths like group/subgroup/project. The new implementation handles SSH, SSH with port (ssh://git@host:22/path), standard HTTPS, and HTTPS with custom ports as separate cases. This fix applies to both Bun and Pi runtimes.

Cross-Repo Clone Fixes

Cross-repo PR clones (forks from different organizations) had two issues. The gh repo clone and glab repo clone commands don't accept a --hostname flag, so self-hosted GitHub Enterprise and GitLab instances would fail. The fix uses GH_HOST and GITLAB_HOST environment variables instead, which both CLIs respect. The shallow fetch depth has also been increased from 50 to 200 commits to handle PRs with longer histories.

Additional Changes

  • Git Add button hidden in PR mode. The staging button was incorrectly visible during PR reviews because the server returned diffType: undefined and the client defaulted to "uncommitted". The client now disables staging when PR metadata is present
  • Diff viewer theme flash fix. Switching files in the diff viewer caused a brief flash of the wrong theme. The Pierre diff library's theme was being computed asynchronously via requestAnimationFrame; the initial state now reads CSS custom properties synchronously so the correct background appears on the first frame
  • Resolved/Outdated filters in PR comments. The PR comments tab now has toggle buttons to hide resolved or outdated review threads. Filters use the same green and amber color tokens as the existing status badges and integrate with the existing Clear Filters control

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

Full Changelog: v0.17.0...v0.17.1

v0.17.0

06 Apr 20:13

Choose a tag to compare

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
v0.16.7 Gemini CLI plan review, install script skills directory fix
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

What's New in v0.17.0

v0.17.0 introduces AI-powered code review agents, token-level annotation in diffs, and merge-base diffs for PR-accurate comparisons. Three of the six PRs in this release came from external contributors, one of them a first-timer.

AI Code Review Agents

Codex and Claude Code can now run as background review agents directly from the Plannotator code review UI. Select an agent, launch it, and watch live log output stream into a detail panel while the agent works. When it finishes, its findings appear as external annotations in the diff viewer, tagged by severity.

Codex agents use their built-in codex-review command and produce priority-level findings (P0 through P3). Claude agents use a custom multi-agent prompt covering bug detection, security, code quality, and guideline compliance, with each finding classified as important, nit, or pre-existing. Both agents' findings include reasoning traces that explain the logic behind each annotation.

For PR reviews, the server automatically creates a local worktree so agents have full file access without affecting your working directory. Same-repo PRs use git worktree; cross-repo forks use a shallow clone with tracking refs for both branches. Pass --no-local to skip the worktree if you don't need file access.

The Pi extension has full agent review parity: stdin/stdout/stderr handling, live log streaming, result ingestion, and vendored review modules with import rewriting.

Token-Level Code Selection

The diff viewer now supports clicking individual syntax tokens to annotate them. Hover a token to see it underlined; click to open the annotation toolbar with the token's text and position as context (e.g., "Line 47: processOrder"). Token metadata is stored on the annotation and surfaced in sidebar badges and exported feedback.

Gutter-based line selection continues to work independently. The two selection modes don't interfere with each other.

Merge-Base Diffs

A new "Current PR Diff" option in the diff type selector uses git merge-base to find the common ancestor between your branch and the default branch, then diffs from that point. This produces the same diff you'd see on a GitHub pull request page. The existing "vs main" option (git diff main..HEAD) is still available but includes upstream changes that arrived after you branched, which can be noisy.

Additional Changes

  • @ file reference support in annotate. OpenCode-style @file.md references now resolve correctly in /plannotator-annotate. The resolver strips the leading @ as a fallback when the literal filename doesn't exist, while still preferring real files named @something.md if present (#488 by @Exloz)
  • Markdown hard line breaks and list continuations. Two-trailing-space and backslash hard breaks now render as <br> elements. Indented continuation lines after list items merge into the preceding bullet instead of becoming orphan paragraphs (#483, closing #482)
  • Explicit local mode override. Setting PLANNOTATOR_REMOTE=0 or false now forces local mode, bypassing SSH auto-detection. Previously only 1/true had explicit meaning (#481 by @foxytanuki, closing #480)
  • PR file content merge-base fix. File contents for expandable diff context are now fetched at the merge-base commit instead of the base branch tip. When the base branch has moved since the PR was created, the old file contents didn't match the diff hunks, causing crashes in the diff renderer. The fix fetches the merge-base SHA via GitHub's compare API and falls back gracefully if unavailable

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(review): token-level code selection for annotations by @backnotprop in #500
  • feat(review): AI review agents, local worktree, and UI polish by @backnotprop in #491
  • fix(annotate): support @ markdown file references by @Exloz in #488
  • feat(review): add merge-base diff option for PR-style diffs by @yonihorn in #485
  • fix: handle markdown hard line breaks and list continuations by @backnotprop in #483
  • fix(remote): support explicit local override by @foxytanuki in #481
  • fix(review): use merge-base SHA for PR file contents by @backnotprop

New Contributors

Contributors

@Exloz contributed the @ file reference fix for OpenCode's annotate mode (#488), includ...

Read more

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