Skip to content

Plannotator

v0.19.18 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ 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

breaking_upgrade

Summary

AI summary

Updates Additional Changes, https://github.com/backnotprop/plannotator/pull/730, and https://github.com/backnotprop/plannotator/pull/729 across a mixed release.

Full changelog

Follow @plannotator on X for updates


Missed recent releases?

| Release | Highlights |
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| v0.19.17 | Reworked goal setup skill (interview-driven flow), CLI --version flag |
| v0.19.16 | Code navigation with peek view (Cmd/Ctrl+click tokens in diffs) |
| v0.19.15 | Commit-based diff base, jj evolution diffs, GitLab reliability fixes, OpenCode command intercept fix |
| v0.19.14 | Visual explainer skill update, PFM code-file hover previews, Graphviz, diff tab size and line bg intensity, hooks settings tab |
| v0.19.11 | Jujutsu (jj) VCS backend, slimmer hunk separators, collapse viewed files, multi-line gutter selection fix |
| v0.19.9 | OpenCode user-managed workflow, Pi model switch fix, Codex skill install, shimmer removal |
| v0.19.8 | 49 themes with syntax highlighting, keyboard shortcut registry, smart code-file path validation, remote URL notifications |
| 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 |


What's New in v0.19.18

v0.19.18 brings an overhaul to OpenCode's plan submission system, migrates the Pi extension to its new package namespace, and fixes bugs in Codex and OpenCode. All four PRs in this release come from external contributors, with two first-timers.

Edit-Based Plan Submission for OpenCode

OpenCode's submit_plan tool previously offered two modes: the agent could pass inline markdown or a file path, and the plugin auto-detected which one was used. That design created a prompt-engineering dependency where the agent had to be steered toward the right mode, and when the prompt changed the agent would silently fall back to inline markdown, losing the token efficiency of file-based plans.

This release replaces both modes with a single edit-based interface. The agent submits an array of line-range edits applied against a plugin-managed backing file at .opencode/plans/_active-plan.md. On first submission, the full plan arrives as one edit. On subsequent rounds after denial, the agent receives the plan back with line numbers and can target surgical revisions instead of resubmitting the entire document.

The result is one deterministic path with no mode ambiguity. The agent always knows what to do, and revisions after denial are token-efficient by default. Tested across three denial rounds with Opus, including structural reorders and targeted insertions, with accurate line tracking throughout.

  • #730 refs #365, contributed by @rcdailey

Pi Extension Namespace Migration

The Pi coding agent moved from @mariozechner to @earendil-works when Mario joined the Earendil team. This release updates all Pi extension imports, peer dependencies, and dev dependencies to the @earendil-works/* packages at v0.74.0. The old @mariozechner packages still work via npm deprecation redirects, but this puts the extension on the canonical namespace going forward.

This is a breaking change for Pi users on versions older than 0.74.0. Users should update Pi to 0.74.0 or later before installing this release.

  • #729, contributed by @nulladdict

Codex Annotate-Last Message Selection Fix

Running /plannotator-last in Codex could open the agent's own acknowledgement message from the current turn instead of the previous completed response the user intended to review. This happened because the agent emits a short status message before running plannotator last, and the message selector would pick that up as the most recent assistant message.

The fix filters out assistant messages from the currently active turn, so /plannotator-last consistently opens the previous completed response.

  • #740 closing #739, contributed by @mu-hashmi

Additional Changes

  • OpenCode commands directory fix — The install script used command/ (singular) for OpenCode's custom commands directory instead of the correct commands/ (plural), preventing slash commands from being discovered. — #736, contributed by @lfox91
  • Drop stub @types/dompurify — dompurify ships its own TypeScript types since v3.x, making the @types/dompurify package an empty stub. Removed from both root and packages/ui devDependencies. — 1ec52434, contributed by @av1155

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(submit-plan): replace dual-mode with edit-based interface by @rcdailey in #730
  • migrate pi extension from mariozechner to earendil-works by @nulladdict in #729
  • Fix Codex annotate-last message selection by @mu-hashmi in #740
  • Fix directory name for OpenCode commands by @lfox91 in #736
  • chore(deps): drop stub @types/dompurify by @av1155 in 1ec52434

New Contributors

  • @mu-hashmi made their first contribution in #740
  • @lfox91 made their first contribution in #736

Contributors

@rcdailey has been one of the most engaged community members around OpenCode's plan mode, tracking the dual-mode issue through multiple releases and documenting the pain points in detail across #365 and #328. This release ships his solution to the problem he identified. @nulladdict, who previously contributed the agent skills directory fix in #476, returned to handle the Pi namespace migration after the Earendil transition.

@mu-hashmi found and fixed the Codex annotate-last regression, filing the issue and shipping the fix with a regression test. @lfox91 caught the singular/plural typo in the OpenCode commands directory that was silently breaking slash command discovery. @av1155 submitted a thorough dependency audit in #726 covering the Pi migration and stale type packages — while we went with #729 for the migration, the @types/dompurify cleanup was pulled in with author credit.

Full Changelog: https://github.com/backnotprop/plannotator/compare/v0.19.17...v0.19.18

Breaking Changes

  • Pi extension imports, peer dependencies, and devDependencies migrated from `@mariozechner/*` to `@earendil-works/*` packages at v0.74.0; users on Pi <0.74.0 must upgrade before installing this release.

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]