github backnotprop/plannotator v0.11.0

4 hours ago

Follow @plannotator on X for updates


Missed recent releases?
Release Highlights
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
v0.8.5 Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix
v0.8.0 Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site
v0.7.0 TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking
v0.6.8 Mermaid diagram rendering, repo/branch info display
v0.6.7 Quick Comment mode, type-to-comment shortcut, smart agent detection

What's New in v0.11.0

Annotations are no longer a single-session gamble. Auto-save drafts persist your work in the background — if the server crashes, the browser refreshes, or you accidentally close the tab, your annotations are waiting when you come back. The comment writing experience was rebuilt around a proper popover with expandable dialog mode, solving the cramped single-line textarea that made long comments painful. Obsidian users get a new vault browser sidebar tab for browsing and annotating vault files directly during plan review. And a critical bug where Claude Code was silently ignoring deny feedback has been fixed — your "Request Changes" annotations now actually reach the model.

Auto-Save Annotation Drafts

Every annotation you make is now automatically saved in the background to ~/.plannotator/drafts/. If the Plannotator server crashes, Bun segfaults, the browser refreshes, or your SSH connection drops — your work survives. When you reopen the same plan, you're prompted to restore the draft or discard it.

Drafts are keyed by plan content hash so they match the right plan even across server restarts. They're cleaned up automatically on successful approve or deny. Both the plan review and code review UIs have independent draft systems.

This was the single most frustrating gap in the tool — losing 20 minutes of careful annotation feedback to a stray kill signal or browser reload. It should have shipped months ago.

Comment Popover

The comment textarea — previously a cramped inline input at the bottom of the annotation toolbar — is now a dedicated popover that appears near your text selection. It auto-focuses, auto-sizes, and supports image attachments inline. For longer comments, click the expand button to open a full dialog with more room to write.

The popover tracks the anchor element's position on scroll and resize, flips above the selection when there isn't enough space below, and handles click-outside dismissal correctly even when child portals (like the image annotator) are open. Keyboard shortcuts carry over: Cmd+Enter to submit, Escape to close.

Obsidian Vault Browser

A new sidebar tab lets Obsidian users browse their vault's markdown files directly during plan review. Enable it in Settings > Saving > Obsidian, and a vault icon tab appears alongside Table of Contents and Version Browser. Click any .md file to open and annotate it — the annotations are included in the feedback sent back to the agent.

Plans often reference existing docs, specs, or notes that live in your vault. Instead of switching to Obsidian or using /plannotator-annotate separately, you can now pull in relevant context and annotate it as part of the same review session.

Improved Deny Message Framing

The deny message — what Claude sees when you click "Request Changes" — has been rewritten to make your feedback harder to overlook. The previous framing was technically correct but easy for the model to skim past, especially with longer annotation lists. The new framing structures the feedback more assertively so Claude incorporates your annotations rather than re-entering plan mode with a surface-level revision.

OpenCode: Configurable Plan Review Timeout

The submit_plan tool in the OpenCode plugin had a hardcoded timeout that would reopen the browser window after 5-10 minutes if you hadn't reviewed the plan yet. After several cycles of this, the agent would give up and print the plan to the console. The timeout is now configurable — set it in your OpenCode config to match your workflow, whether you review plans immediately or let them queue up while you step away.

Additional Changes

  • Missing annotate command in install scripts — the /plannotator-annotate slash command wasn't included in the plugin install, so users who updated from pre-v0.8.0 couldn't use the annotate feature without manual setup (#218 by @maggiehe)
  • Pi extension: blocklist-only bash safety — the Pi extension now uses a blocklist approach for bash command safety instead of an allowlist, and the plan file path is interactive rather than hardcoded (#222)
  • Server modularization — extracted shared route handlers (image serving, file uploads, draft API) into reusable modules, reducing duplication across the plan, review, and annotate servers (#214)
  • CommentPopover image attachment fix — image attachments in the comment popover no longer cause the popover to close, fixed via a data-popover-layer convention for portal click-outside detection (#226)

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

  • feat: Obsidian vault browser sidebar tab by @backnotprop in #209
  • refactor: extract shared route handlers and modularize plan server by @backnotprop in #214
  • feat: auto-save annotation drafts to survive server crashes by @backnotprop in #217
  • fix: add missing /plannotator-annotate command to install scripts by @maggiehe in #218
  • feat: CommentPopover for better comment writing UX by @backnotprop in #220
  • feat(pi-extension): blocklist-only bash safety + interactive plan file path by @backnotprop in #222
  • fix: make OpenCode submit_plan timeout configurable by @backnotprop in #223
  • fix: improve deny message framing to prevent ignored feedback by @backnotprop in #224
  • feat: What's New v0.11.0 first-open dialog by @backnotprop in #225
  • fix: CommentPopover closes when adding image attachments by @backnotprop in #226

Contributors

Community members who reported issues and requested features that shaped this release:

Full Changelog: v0.10.0...v0.11.0

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.