github backnotprop/plannotator v0.19.8

7 hours ago

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.

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.

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.

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.

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.

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 link support for local development. Contributors can now run bun link in a checkout to get a global plannotator command pointing at the local source. A thin Node wrapper in bin/plannotator.js spawns Bun with the source entrypoint. (#656 by @codythatsme)
  • plannotator-setup-goal skill. A new Claude Code skill that scaffolds project goals from a markdown template using plannotator annotate --gate for 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 | 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(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

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:

Full Changelog: v0.19.7...v0.19.8

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.