Skip to content

Plannotator

v0.16.0 Feature

This release adds 5 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 rbac deps

Summary

AI summary

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

Full changelog

Follow @plannotator on X for updates


Missed recent releases?

| Release | Highlights |
| -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| v0.15.5 | Custom display names, GitHub viewed file sync, expand/collapse all in file tree, search performance, WSL fix |
| v0.15.2 | Compound Planning skill, folder annotation, /plannotator-archive slash command, skill installation via platform installers |
| v0.15.0 | Live AI chat in code review, plan archive browser, folder file viewer, resizable split pane, Pi full feature parity |
| 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 |
| 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 |


What's New in v0.16.0

v0.16.0 adds GitHub Copilot CLI as Plannotator's fifth runtime, an external annotations API for integration (stay tuned...), bot callback URLs for Slack-style approval workflows, interactive plan checkboxes, print support, and configurable diff display options. 11 PRs, 3 from external contributors, 2 first-timers.

GitHub Copilot CLI Integration

Plannotator now works with GitHub Copilot CLI, contributed by @Yecats. Plan review, code review, and markdown annotation all function the same way they do in Claude Code. The Copilot plugin hooks into exit_plan_mode to intercept plans, and the same /plannotator-review, /plannotator-annotate, and /plannotator-last commands are available.

Install the binary, then in Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

A follow-up PR added environment-variable-based agent detection so the UI correctly identifies which agent launched Plannotator, fixing the badge display that was previously hardcoded to Claude Code.

External Annotations API

Any external program can now push annotations into a live Plannotator session. Linters, AI tools, or custom scripts send annotations via HTTP POST to /api/external-annotations, and they appear in the browser UI in real-time through Server-Sent Events. The API supports single and batch annotation creation, field updates via PATCH, deletion by ID or source, and version-gated polling as a fallback for environments where SSE isn't practical.

This is the foundation for integrating Plannotator with external toolchains. A linter could annotate code review diffs with warnings. A CI pipeline could push review comments. An AI assistant could highlight sections of a plan it has questions about.

All three server types (plan, review, annotate) expose the same endpoints, and the Pi extension has full parity.

Interactive Checkboxes

Task checkboxes in rendered plans are now clickable. Checking or unchecking a box creates a COMMENT annotation that captures the action, the section context, and the task text. Toggling back to the original state removes the override and deletes the annotation. This means your checkbox interactions become part of the feedback sent to the agent.

  • Authored by @Yecats in #423, closing #413

Print Support

Plans can now be printed directly from the review UI. An export dropdown menu in the toolbar offers a print option, and Ctrl+P / Cmd+P works as a keyboard shortcut. A dedicated print stylesheet produces clean white-paper output with A4 formatting, hiding the toolbar, sidebar, and interactive elements.

  • Authored by @Yecats in #420

Diff Display Options

The code review diff viewer now exposes display settings that were previously locked to defaults. You can configure overflow behavior (scroll vs word wrap), toggle diff indicators and line numbers, control inline diff granularity, and show or hide diff backgrounds. All settings are persisted via the ConfigStore system (cookies + ~/.plannotator/config.json) and accessible from a new Display tab in the review Settings dialog.

  • #428, closing #421 requested by @kanchev1

Bot Callback URL Parameters

Plannotator share URLs now support callback parameters for bot integrations. When a bot (e.g., a Slack bot) generates a plan and posts the Plannotator URL, it can embed ?cb=<callback_url>&ct=<auth_token> so the approval decision is sent back to the bot automatically. The user reviews and approves in Plannotator, and the bot receives the result without any copy-paste.

  • Authored by @aviadshiber in #416

Additional Changes

  • OpenCode startup performance. Replaced compile-time HTML embedding with lazy readFileSync getters and background preloading. Bundle size drops from 21.25 MB to 0.81 MB (96% reduction), cold-start module load from ~160ms to ~35ms (#411, closing #410 reported by @DRBragg)
  • Markdown parser fixes. Indented closing fences (inside list items), trailing text after fence closers, and false table detection on lines with pipes are all fixed (#429, closing #427 reported by @jhillyerd)
  • PR/MR platform test coverage. Regression tests for URL parsing, labels, display helpers, and CLI selection across GitHub and GitLab, including self-hosted GitLab (#426 by @sudorest)
  • Compound skill description fix. Trimmed to fit Claude Code 2.1.86's 250-character limit and added disable-model-invocation frontmatter (#430, closing #412 reported by @arogulin)
  • Copilot on marketing site. The landing page harness selector now includes a Copilot button with install instructions, in alphabetical order alongside the other five runtimes.

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".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

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: GitHub Copilot CLI integration by @Yecats in #409
  • perf(opencode): lazy-load HTML to fix plugin startup time by @backnotprop in #411
  • feat: bot callback URL params for seamless plan review by @aviadshiber in #416
  • fix: detect calling agent via env vars and centralize agent config by @Yecats in #418
  • feat: print support with export menu integration and keyboard shortcut by @Yecats in #420
  • feat: interactive checkboxes with annotation tracking by @Yecats in #423
  • test: cover PR/MR platform helpers by @sudorest in #426
  • feat(review): diff display options with ConfigStore integration by @backnotprop in #428
  • fix(parser): indented fences, trailing text, table detection, and escaped pipes by @backnotprop in #429
  • fix(skill): trim compound skill description under 250-char limit by @backnotprop in #430
  • feat: external annotations API with real-time SSE by @backnotprop in #400

New Contributors

  • @Yecats made their first contribution in #409
  • @aviadshiber made their first contribution in #416

Contributors

@Yecats authored four PRs in this release: GitHub Copilot CLI integration (#409), agent detection fix (#418), print support (#420), and interactive checkboxes (#423). First contribution to the project, and immediately one of the most prolific single-release contributors.

@aviadshiber authored the bot callback URL system (#416), enabling Plannotator integration with external bot workflows. First contribution.

@sudorest added PR/MR platform test coverage (#426), protecting the multi-platform review routing.

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

  • @DRBragg: #410 (OpenCode plugin startup time)
  • @kanchev1: #421 (word wrap toggle in diff viewer)
  • @jhillyerd: #427 (indented code block detection)
  • @arogulin: #412 (skill description character limit)

Full Changelog: https://github.com/backnotprop/plannotator/compare/v0.15.5...v0.16.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]