Skip to content

Plannotator

v0.14.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agents claude-code code-review codex obsidian opencode
+3 more
pi-mono plan-mode skills

Affected surfaces

auth deps

Summary

AI summary

Broad release touches Additional Changes, fix, feat, and https://github.com/backnotprop/plannotator/pull/324.

Full changelog

Follow @plannotator on X for updates


Missed recent releases?

| Release | Highlights |
| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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 |
| v0.11.3 | Expandable diff context, hierarchical folder tree, redesigned worktree controls, supply chain hardening |
| v0.11.2 | Git worktree support in code review, VS Code editor annotations in review, Obsidian auto-save & separator settings, session discovery, smart file resolution |
| v0.11.1 | VS Code extension for in-editor plan review, Pinpoint mode for point-and-click annotations, untracked files in code review |
| v0.11.0 | Auto-save annotation drafts, comment popover, Obsidian vault browser, deny message framing fix, configurable OpenCode timeout |
| v0.10.0 | Short URL sharing with E2E encryption, code suggestions in review UI, CJK input method support, customizable Obsidian filenames, XDG install fix |
| v0.9.3 | Linked document navigation & annotation, VS Code diff integration, toolbar dismiss fix, automated npm publishing |
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |


What's New in v0.14.0

v0.14.0 adds PR review via GitHub URL, a new /plannotator-last command for annotating agent messages, and a batch of fixes for OpenCode plan mode, the VS Code extension over SSH, and the review server. Seven of the nine PRs address user-reported issues. Three external contributors authored fixes, two of them first-time.

PR Review via GitHub URL

/plannotator-review now accepts a GitHub pull request URL. Run /plannotator-review https://github.com/owner/repo/pull/123 and the review UI opens with the PR's diff, metadata badge (title, number, link back to GitHub), and full annotation support. Authentication goes through the gh CLI, so private repos work if you're already authenticated. Expandable file context fetches from the GitHub API using the PR's base and head SHAs.

In PR mode, the diff switcher and staging buttons are hidden since you're reviewing a remote PR, not local changes. Everything else works the same: annotate lines, leave file-level comments, send feedback back to the agent.

The implementation introduces a runtime-agnostic PR provider (packages/shared/pr-provider.ts) that follows the same interface pattern as the existing ReviewGitRuntime, with a Bun wrapper in packages/server/pr.ts.

Annotate Last Agent Message

/plannotator-last extracts the last rendered assistant message from the current session and opens it in the annotation UI. Select text, add comments, mark deletions, attach images, and send structured feedback back to the agent. This works across all four harnesses:

| Harness | How it finds the message |
|---------|--------------------------|
| Claude Code | Parses ~/.claude/projects/{slug}/*.jsonl session logs |
| Pi | ctx.sessionManager.getEntries() API |
| OpenCode | client.session.messages() SDK |
| Codex | Parses ~/.codex/sessions/ rollout JSONL files |

The UI adapts to the annotate-last context: the copy button reads "Copy message," the completion overlay says "annotations on the message," and the feedback export is titled "Message Feedback."

OpenCode Plan Mode Permissions and Prompt Fixes

v0.13.1 rewrote OpenCode plan mode, but OpenCode's upstream prompt and permission system fought the plugin at several points. The agent would get PermissionDeniedError when writing .md files in the plan directory. OpenCode's "STRICTLY FORBIDDEN" plan mode directive confused models into refusing file edits even when explicitly allowed. The submit_plan tool appeared outside of plan mode, leading to confusing agent behavior.

This release fixes all of that. The plugin now grants per-agent edit permission for *.md scoped to the plan agent only. It strips OpenCode's conflicting plan mode prompt from synthetic user message parts. It overrides the todowrite tool description to redirect to submit_plan, and injects a <system-reminder> reinforcing plan mode behavior on every turn. The validatePlanPath directory restriction is disabled so plans can be written anywhere the agent chooses within the XDG data path.

  • #329, fixing #328 reported by @linxi-1214

VS Code SSH Remote: Proxy Race Condition and IPC Discovery

Two issues prevented the VS Code extension from working reliably over SSH Remote. First, the cookie proxy connected to the upstream Bun server before it was ready, showing "proxy error" on first load. The fix adds retry with exponential backoff (200/400/800ms) in the proxy, plus a silent auto-reload fallback in the webview wrapper.

Second, background processes spawned by Claude Code hooks don't inherit VS Code's PLANNOTATOR_BROWSER environment variable, so openBrowser() had no way to reach the extension. The fix introduces a file-based IPC registry at ~/.plannotator/vscode-ipc.json. The extension writes its IPC port keyed by workspace path, and openBrowser() reads it as a fallback. Multi-window setups are handled via longest-prefix workspace matching.

  • Authored by @7tg in #322, closing #321 which @7tg also reported

Additional Changes

  • Review server CWD context flow — In tmux/server/attach setups, the OpenCode review server could use the wrong working directory for diff commands. The review flow now carries cwd as explicit session context via GitContext, so all endpoints (/api/diff, /api/file-content, /api/git-add) use the correct project directory. Authored by @jwyce in #323
  • Disable external diff in git commands — Review-related git diff calls now include --no-ext-diff so external diff tools configured in the user's git config don't corrupt the output. Authored by @BruceChen7 in #320
  • /plannotator-last documentation — Docs and install scripts updated for the new command (#327)

Install / Update

macOS / Linux:

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

Windows:

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

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

OpenCode: Clear cache and restart:

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

Then in opencode.json:

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

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

What's Changed

  • fix(review): disable external diff in git commands by @BruceChen7 in #320
  • fix: proxy race condition + IPC discovery for VS Code SSH Remote by @7tg in #322
  • fix: opencode review cwd context flow by @jwyce in #323
  • feat: PR review support via GitHub URL by @backnotprop in #324
  • feat: /plannotator-last — annotate the last agent message by @backnotprop in #325
  • feat: add release process skill by @backnotprop in #326
  • docs: add /plannotator-last to docs and install scripts by @backnotprop in #327
  • fix: OpenCode plan mode permissions and prompt conflicts by @backnotprop in #329
  • fix: comment out failing validatePlanPath containment tests by @backnotprop in #330

New Contributors

  • @jwyce made their first contribution in #323
  • @BruceChen7 made their first contribution in #320

Contributors

@7tg continues improving VS Code's remote experience. After fixing SSH browser launch in v0.12.0 (#274), this release tackles the proxy race condition and IPC discovery gap that caused "proxy error" on webview open (#322). Both the bug report (#321) and the fix came from @7tg, with a thorough diagnosis of the startup timing and environment variable inheritance issues.

@jwyce authored the review CWD context fix (#323), ensuring the review server uses the correct project directory in tmux and server-attach workflows. First contribution.

@BruceChen7 fixed external diff tool interference in review git commands (#320). First contribution.

Community members who reported issues and participated in discussions that shaped this release:

  • @linxi-1214: #328 (submit_plan not appearing after plan mode, with screenshots comparing expected vs actual behavior)
  • @ilmpc: #328 (confirmed the issue and identified OpenCode's changed plan prompt as the root cause)
  • @rcdailey: #328 (reported submit_plan visible outside plan mode, confusing the agent)

Full Changelog: https://github.com/backnotprop/plannotator/compare/v0.13.1...v0.14.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Plannotator

Get notified when new releases ship.

Sign up free

About Plannotator

All releases →

Related context

Beta — feedback welcome: [email protected]