github backnotprop/plannotator v0.15.0

10 hours ago

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
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
v0.11.3 Expandable diff context, hierarchical folder tree, redesigned worktree controls, supply chain hardening

What's New in v0.15.0

v0.15.0 adds live AI chat to code review, the ability to browse all your previous plans, a folder-based file viewer for referencing docs (e.g. Superpowers) during annotation, and full feature parity for the Pi extension. 11 PRs, 2 from external contributors, 1 first-time.

Live AI Chat in Code Review

You can now talk to an AI directly inside the code review UI. Select lines in a diff and click "Ask AI" to get context-aware explanations about what the code does and why it changed. Or open the AI sidebar tab to ask general questions about the changeset. Responses stream in real-time with full markdown rendering.

Plannotator works with the coding tools you already have installed. On startup, it checks which tools are available on your machine — Claude Code, Codex, Pi, OpenCode — and offers them as providers. You choose which one to use and which model to use with it in Settings. That choice persists across sessions. You can switch providers at any time. The only requirement is that the tool is installed and authenticated locally; Plannotator doesn't handle login or API keys itself.

Under the hood, each tool is accessed through a provider-agnostic layer (@plannotator/ai) that handles session lifecycle, streaming, and tool execution uniformly. Claude and Codex communicate via subprocess, Pi via RPC over JSONL/stdio, and OpenCode via HTTP + SSE. The OpenCode provider supports forked sessions, runtime permission approvals, and dynamic model discovery from connected providers.

Browse All Previous Plans

You can now view every plan you've approved or denied. The plannotator archive command opens a read-only browser of your plan history, with approved/denied badges and timestamps. During normal plan review, a new Archive sidebar tab gives you the same view without leaving the session, so you can reference past decisions while reviewing a new plan.

This replaces the old "Other Plans" UI and removes the dead /api/plan/history endpoint.

Attach Folders for Reference During Review

A new Files tab in the sidebar gives you access to all markdown files in your project. Click any file to open it as a linked document with full annotation support. If you have docs, specs, or notes in directories outside the project root, add them in Settings and they show up as additional sections. Useful for power users who want their full documentation library at hand while reviewing or annotating plans.

Works in both plan mode and annotate mode. Directory sections are collapsible, and common non-content directories (node_modules, .git, dist, build, etc.) are excluded.

Resizable Split Pane in Code Review

The split diff viewer now has a draggable divider between left and right panes. Drag to resize; the ratio is clamped to 20-80% and persisted via cookie storage. Double-click the handle to reset to 50/50. The implementation uses CSS custom properties that inherit into Pierre's shadow DOM, so resizing triggers zero re-renders of the diff component. The handle is hidden for add-only or delete-only files where Pierre renders a single column.

Pi Extension: Full Feature Parity

The Pi extension was missing a significant number of features that Claude Code and OpenCode users had access to. PR review, note-taking integrations (Obsidian, Bear, Octarine), plan saving with version history, editor annotations, the file browser, linked doc resolution with security checks, and the AI backbone were all absent or partially implemented. This release closes that gap entirely. Pi users now have access to every feature available on the other platforms.

The server was rewritten from a monolithic server.ts into a modular architecture split across domain-specific modules (serverPlan.ts, serverReview.ts, serverAnnotate.ts, plus shared handlers, reference resolution, annotations, integrations, PR support, and networking). A generated/ directory holds shared code copied from packages/shared/ at build time, so both Bun and Pi consume the same logic for storage, drafts, file resolution, and integrations.

A line-by-line parity audit then verified every endpoint, response shape, error case, and conditional across all three server types. This uncovered and fixed: missing error handling on several endpoints, a broken detectProjectNameSync that silently failed, a missing pasteApiUrl in Bun's annotate server that broke short URL sharing, and stale naming inconsistencies. An automated route parity test now runs in CI to prevent drift going forward.

Additional Changes

  • OpenPackage manifest. Adds openpackage.yml for installation via opkg install plannotator (#368 by @TiagoJacinto)
  • Duplicate code review header fix (Pi). The # Code Review Feedback heading appeared twice when the Pi extension submitted review feedback. The wrapper no longer adds a redundant header (#370 by @dmmulroy)
  • Duplicate code review header fix (OpenCode). Same issue in the OpenCode plugin (#375, closing #374 reported by @nulladdict)
  • Empty submit in annotate mode. The annotate UI no longer blocks submission when there are no annotations. Linked doc annotations are now counted in validation, fixing a case where annotations on linked documents couldn't be submitted (#376, closing #371 and #373 reported by @bman654)
  • Sidebar resize handle fix. The left sidebar handle was visible on hover but couldn't be grabbed due to a touch area regression from v0.14.5. Fixed with asymmetric positioning that avoids covering scrollbars.
  • Linked doc border styling. The border around linked documents (Obsidian files, project files, archive plans) is now thinner and more subtle — 1px at 40% opacity instead of the previous 2px solid primary.

Install / Update

macOS / Linux:

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

Windows:

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

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

OpenCode: Clear cache and restart:

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

Then in opencode.json:

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

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

What's Changed

New Contributors

Contributors

@TiagoJacinto added the OpenPackage manifest (#368), enabling installation via opkg. First contribution to the project.

@dmmulroy fixed the duplicate code review header in the Pi extension (#370), a follow-up to his paste URL wiring work in v0.14.4.

Community members who reported issues that drove changes in this release:

Full Changelog: v0.14.5...v0.15.0

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.