Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.7 | Codex Stop-hook plan review, Codex skills, sidebar auto-close, file tree context menu |
| v0.19.6 | Non-blocking Pi browser sessions, agent picker dropdown for OpenCode, annotate-last file resolution fix |
| v0.19.5 | All-files diff view, clickable code file paths, server-side hide whitespace, non-ASCII path support |
| v0.19.4 | All-files diff type, code file viewer, hide whitespace, quick-settings popover |
| v0.19.3 | Configurable feedback messages, hide merged PRs in stacked PR selector |
| v0.19.2 | Stacked PR review, source line numbers in feedback, diff type dialog re-show, ghost dot removal, docs cleanup |
| v0.19.1 | Hook-native annotation, custom base branch, OpenCode workflow modes, quieter plan diffs, anchor navigation |
| v0.19.0 | Code Tour agent, GitHub-flavored Markdown, copy table as Markdown/CSV, flexible Pi planning mode, session-log ancestor-PID walk |
| v0.18.0 | Annotate focus & wide modes, OpenCode origin detection, word-level inline plan diff, Markdown content negotiation, color swatches |
| v0.17.10 | HTML and URL annotation, loopback binding by default, Safari scroll fix, triple-click fix, release pipeline smoke tests |
| v0.17.9 | Hotfix: pin Bun to 1.3.11 for macOS binary codesign regression |
| v0.17.8 | Configurable default diff type, close button for sessions, annotate data loss fix, markdown rendering polish |
What's New in v0.19.8
v0.19.8 is a UI infrastructure release. Nine PRs introduce a 49-theme gallery with matched syntax highlighting, a declarative keyboard shortcut system, smart code-file path validation in plans, and several reliability fixes for remote sessions and the code review editor. One PR comes from a first-time contributor.
49 Themes with Matched Syntax Highlighting
The entire color system is now themeable. Settings includes a new Theme tab with 49 editor-grade themes ported from the VS Code ecosystem — dark, light, and dual-mode options including Tokyo Night, Nord, One Dark Pro, Poimandres, Everforest, Vesper, and more. Each theme pairs its UI palette with a matched syntax highlighting scheme, so code blocks in plan and code review render with consistent colors.
A preview mode lets you cycle through themes without committing: the selected theme applies instantly, and clicking away or pressing Escape reverts to your saved choice. Theme preference persists in cookies and travels across sessions on the same machine.
- #664 by @backnotprop
Keyboard Shortcut Registry
Plan review and code review now have a declarative keyboard shortcut system. Shortcuts are defined as scopes (annotation toolbar, comment popover, file tree, AI panel, etc.) with platform-aware bindings — Cmd on macOS, Ctrl elsewhere. Double-tap and hold modifiers are supported for power-user workflows.
The system auto-generates a reference page on the marketing site at build time, so documentation stays in sync with code without manual maintenance. A help modal (press ?) surfaces all available shortcuts in context.
- #652 by @backnotprop
Smart Code-File Path Validation
When plans reference file paths (e.g., src/components/App.tsx), Plannotator now validates them against the actual project tree. Paths that exist get clickable links to a code file viewer. Ambiguous paths (multiple matches) show a picker. Missing paths display a subtle indicator so you know the reference is stale or wrong before approving the plan.
Resolution is fuzzy — it handles relative paths, paths missing a leading directory, and common shorthand. The validation batches requests to avoid hammering the filesystem on large documents. This works across plan mode, annotate mode, and linked docs.
- #654 by @backnotprop
Remote Session URL Notifications for OpenCode and Pi
Remote users on OpenCode and Pi previously couldn't see the Plannotator URL when running over SSH or in containers. The server would start, but the URL was only passed to the browser-open function, which silently fails in headless environments.
Both plugins now explicitly surface the URL through their native notification APIs: client.app.log() for OpenCode and ctx.ui.notify() for Pi. The URL appears in the TUI/UI regardless of whether a browser actually opens.
- #663 by @backnotprop, closing #551 (reported by @ZoeImport) and #574 (reported by @ShineBreaker)
Ghost Session Detection for /plannotator-last
Running /clear in Claude Code creates a new session log file, but the previous file remains on disk without a registered session ID. When plannotator last resolved the most recent log by modification time, it would find the ghost file instead of the active session, causing it to always show the same stale message.
The fix checks whether a candidate log's session ID is registered in Claude Code's session metadata. Unregistered (ghost) files from /clear are skipped, and the resolver falls through to the next candidate. This restores correct behavior for users who clear their session mid-conversation.
- #661 by @backnotprop, closing #643 (reported by @ianmurrays)
Additional Changes
- Stop diff list re-rendering on every comment keystroke. The code review annotation toolbar's form state was lifting re-renders into the entire diff view, causing visible jank when typing comments. Moved toolbar state into an isolated component with imperative communication back to the parent. (#660 by @backnotprop)
bun linksupport for local development. Contributors can now runbun linkin a checkout to get a globalplannotatorcommand pointing at the local source. A thin Node wrapper inbin/plannotator.jsspawns Bun with the source entrypoint. (#656 by @codythatsme)plannotator-setup-goalskill. A new Claude Code skill that scaffolds project goals from a markdown template usingplannotator annotate --gatefor interactive review. Includes an OpenAI agent YAML definition and a Python scaffold script. (#665 by @backnotprop)- Co-authors and community contributors on homepage. The marketing site's contributor strip now pulls from a broader list including co-authors from commit trailers and community members who've contributed through issues, discussions, and feedback. (#662 by @backnotprop)
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
- feat(ui): shortcut registry foundation by @backnotprop in #652
- fix(ui): smart resolution + existence-validation for code-file paths by @backnotprop in #654
- feat: add bun link support for local CLI development by @codythatsme in #656
- fix(review): stop diff list re-rendering on every comment keystroke by @backnotprop in #660
- fix(session-log): detect ghost sessions from /clear to resolve correct log by @backnotprop in #661
- feat(marketing): include co-authors and community contributors on homepage by @backnotprop in #662
- fix(remote): notify URL in remote mode for OpenCode and Pi by @backnotprop in #663
- feat(ui): 49 themes with matched syntax highlighting + preview mode by @backnotprop in #664
- feat(skills): add plannotator-setup-goal skill by @backnotprop in #665
New Contributors
- @codythatsme made their first contribution in #656
Contributors
@codythatsme contributed bun link support for local development (#656), making it straightforward for contributors to test against a live source checkout without rebuilding the compiled binary. First contribution to the project.
Community members whose reports drove fixes in this release:
- @ZoeImport: #551 (remote UI not opening for code review)
- @ShineBreaker: #574 (submit_plan unavailable in OpenCode)
- @AnToHu0: participated in #551 discussion with environment details
- @ianmurrays: #643 (plannotator-last showing stale message after compound)
- @adrianocr: participated in #643 discussion confirming the issue
Full Changelog: v0.19.7...v0.19.8