Skip to content

Plannotator

v0.19.9 Feature

This release adds 3 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

Summary

AI summary

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

Full changelog

Follow @plannotator on X for updates


Missed recent releases?

| Release | Highlights |
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| 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 |
| 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 |


What's New in v0.19.9

v0.19.9 adds a user-managed workflow mode for OpenCode, fixes model switching in Pi's plan approval flow, and introduces a bypass-with-reminder permission mode for Claude Code. Five PRs total, two from first-time contributors.

User-Managed Workflow Mode for OpenCode

OpenCode's plugin previously offered two extremes: manual (slash commands only, no submit_plan tool) and plan-agent/all-agents (full automation with prompt injection and permission overrides). Users who wanted the submit_plan tool without Plannotator modifying their system prompts or agent configuration had no middle ground.

The new user-managed workflow mode fills that gap. It registers the submit_plan tool and all slash commands, but does not inject planning prompts, rewrite tool definitions, or modify OpenCode's agent configuration. Users manage their own prompts and permissions, and Plannotator stays out of the way. To enable it, set workflow: "user-managed" in your opencode.json plugin options.

Existing configurations are unaffected. The default remains plan-agent, and unknown workflow strings continue to fall back to it.

Pi Model Switch on Plan Approval

When Pi users configured separate models for planning and execution (e.g., think with one model, execute with another), approving a plan was supposed to switch to the execution model. It didn't. Pi snapshots its model selection at the start of each agent.prompt() call, so calling pi.setModel() mid-loop had no effect until the next user-initiated turn. The user had to manually prompt the agent after every approval to trigger the switch.

The fix terminates the current agent loop on plan approval by returning terminate: true from the tool response, then uses a deferred sendUserMessage in the agent_end handler to start a fresh turn that picks up the executing model. Execution now continues automatically on the correct model without manual intervention.

  • #677 by @backnotprop, closing #674 (reported by @snowmead)

Bypass Permissions with /clear Reminder

Claude Code's bypass-permissions mode skips the permission prompt on plan approval, but users often forget to run /clear afterward to reset context. A new "Bypass + /clear Reminder" option in the permission mode dropdown pairs bypass-permissions with a system message nudging the user to clear context after approval.

The mode is available in both the Settings dropdown and the Approve button's extra options. It decomposes to the standard bypassPermissions wire value plus a clearContextNudge flag, so the hook output format is unchanged. Cookie validation was also hardened in this PR: stale or invalid permission mode values now safely fall back to the default instead of flowing through unchecked.

  • #668 by @AgileInnov8tor

Additional Changes

  • Remove shimmer animation from clickable file paths. The repeating shimmer on .code-file-link elements was distracting while reading plans. File path links now render as normal inline code with cursor and hover cues only. (#676 by @backnotprop, closing #672 reported by @academo)
  • Install Plannotator command skills under Codex home. The installer now places command-overlap skills (plannotator-review, plannotator-annotate, plannotator-last) in ~/.codex/skills/ when Codex is detected, and keeps shared-agent skills in ~/.agents/skills/. Stale cross-scope copies are cleaned up, and a ~/.codex/skills/ directory created by a previous install no longer triggers false Codex detection. (#669 by @backnotprop)
  • Avoid Pi bundled skill conflicts. The installer configures Pi's settings.json to disable bundled Plannotator skills when shared global skills are already installed, eliminating "duplicate skill" warnings. BOM-free UTF-8 writes on Windows prevent encoding issues with Pi's JSON parser.

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(opencode-plugin): add user-managed workflow mode by @saksmt in #667
  • feat: expose bypass clear reminder permission mode by @AgileInnov8tor in #668
  • fix: install Plannotator command skills under Codex home by @backnotprop in #669
  • fix(ui): remove shimmer animation from clickable file paths by @backnotprop in #676
  • fix(pi): terminate agent loop on plan approval so model switch takes effect by @backnotprop in #677

New Contributors

  • @saksmt made their first contribution in #667
  • @AgileInnov8tor made their first contribution in #668

Contributors

@saksmt identified the gap between OpenCode's manual and automated workflow modes and contributed the user-managed option (#667), giving users fine-grained control over prompt injection and tool registration. First contribution to the project.

@AgileInnov8tor built the bypass-with-clear-reminder permission mode (#668), including the synthetic mode decomposition, cookie validation hardening, and the live settings sync fix. First contribution to the project.

Community members whose reports drove fixes in this release:

  • @snowmead: #674 (Pi model switch not taking effect on plan approval)
  • @academo: #672 (shimmer animation distracting on file path links)

Full Changelog: https://github.com/backnotprop/plannotator/compare/v0.19.8...v0.19.9

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]