Releases: backnotprop/plannotator
v0.19.20
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.18 | Edit-based submit_plan for OpenCode, Pi namespace migration, Codex annotate-last fix, OpenCode commands dir fix |
| 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 |
What's New in v0.19.20
v0.19.20 adds a visual goal setup UI, fixes the OpenCode edit-based submit_plan issues that caused the v0.19.19 hotfix, and makes Plannotator work correctly inside Claude Code's agent view (which previously caused the server to hang indefinitely). Four PRs, two from external contributors, one first-timer.
Interactive Goal Setup UI
The /plannotator-setup-goal skill now opens a dedicated browser UI for its interview and fact-review phases instead of running them as serial chat messages. The interview phase renders all questions in an accordion layout with keyboard shortcuts for navigation (Tab to advance, Ctrl+U/K/J to move between questions, number keys for multiple-choice). The fact-review phase shows each extracted fact as an editable card that can be accepted, edited, commented on, removed, or sent for auto-verification.
The UI runs on its own Plannotator server instance, separate from plan review and code review. It reuses the same compiled HTML shell but activates a distinct goal-setup mode that disables annotations, sharing, sidebar, and plan diff. Results are returned as structured JSON to the agent, which writes them to the goal package directory.
This replaces the old flow where the agent asked questions one at a time in the chat and opened separate Plannotator review gates for each document. The bundled UI is faster, lets users see all questions at once, and reduces the round trips from five review gates to two (interview, then facts).
OpenCode Edit-Based Submit Plan Fixes
v0.19.18 introduced the edit-based submit_plan interface for OpenCode, which replaced the old dual-mode (inline text or file path) approach. Two issues surfaced quickly after release.
First, validateEdits rejected the agent's initial plan submission when the backing file was empty. The validation checked end > lineCount, which failed on an empty file (lineCount = 0) even though applyEdits already handled this correctly via splice clamping. The fix skips the bounds check when the file is empty, since every edit on an empty file is a pure insert where end is meaningless.
Second, the backing file lived at .opencode/plans/_active-plan.md inside the workspace, which showed up in git status. OpenCode's auto-generated .gitignore doesn't cover that path, so users would see it as an untracked file. The backing file now lives at ~/.plannotator/active/{project}/_active-plan.md, alongside the existing version history. It is also cleaned up on plan approval, since it is no longer needed after the session ends.
Browser No-Op Sentinel Handling
Claude Code's agent view sets BROWSER=true in the process environment, a standard convention meaning "do not open a browser." Plannotator was treating this as a valid browser command, shelling out to true http://localhost:NNNN, which exits 0 without opening anything. The server then sat in waitForDecision() indefinitely with no visible URL and no way for the user to recover.
The fix recognizes documented no-op values (true, false, none, :, 0, 1) and treats them as if the variable were unset. This lets the VS Code IPC fallback fire in remote sessions and the platform default browser open in local sessions. Real browser paths like /usr/bin/firefox or macOS app names are unaffected.
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
- Add interactive goal setup UI by @backnotprop in #731
- fix(opencode): skip end bounds check on empty file in validateEdits by @rcdailey in #752
- fix(opencode): store active plan backing file outside workspace by @rcdailey in #743
- fix(browser): treat no-op BROWSER values as unset so headless sessions can fall back by @yonihorn in #756
New Contributors
Contributors
@rcdailey continued his work on the OpenCode edit-based submit_plan system. After identifying the empty-file validation bug that triggered the v0.19.19 hotfix, he shipped both the bounds check fix (#752) and the backing file relocation (#743). @yonihorn traced the headless browser hang to the BROWSER=true sentinel convention and implemented the sentinel detection with comprehensive test coverage.
Community members who reported and discussed the underlying issues:
- @TonyReg reported the submit_plan failure in plan-agent mode after v0.19.18 (#742)
- @NotMyself reported the Windows browser-opening failure and participated in the BROWSER sentinel discussion (#724)
- @jinhwan0724 reported the original non-TTY browser issue (#154) that established the pattern #756 completes
Full Changelog: v0.19.18...v0.19.20
v0.19.18
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.
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 correctcommands/(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/dompurifypackage an empty stub. Removed from both root and packages/ui devDependencies. — 1ec5243, contributed by @av1155
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(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: v0.19.17...v0.19.18
v0.19.17
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| 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 |
| v0.19.4 | All-files diff type, code file viewer, hide whitespace, quick-settings popover |
What's New in v0.19.17
v0.19.17 reworks the goal setup skill from the ground up and adds a --version flag to the CLI.
Reworked Goal Setup Skill
The plannotator-setup-goal skill has been substantially rewritten. The previous version ran a rigid 5-document pipeline with sequential Plannotator review gates on a brief, plan, verification checklist, blockers list, and goal prompt. Each gate required a round trip through the UI before the agent could proceed, making the process slow and interruptive.
The new version replaces all of that with an interview-driven flow. The agent rearticulates your objective, then asks targeted questions to surface constraints, dependencies, and acceptance criteria. The answers are distilled into a fact sheet, which is the single Plannotator review gate. Once you approve the facts, the agent drafts the plan and produces the /goal prompt. Five gates become one; the Python scaffold script is gone; the agent writes files directly.
The result is a faster, more conversational process that produces better goal packages. The interview phase captures context that the old brief-writing step often missed, and reviewing a fact sheet is more concrete than reviewing a plan outline.
CLI Version Flag
plannotator --version (or -v) now prints the version and exits. The version is injected at compile time from package.json via Bun's --define flag in the release workflow, so compiled binaries report the exact release version. Uncompiled dev runs show plannotator dev.
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: add --version / -v flag to CLI by @backnotprop in #725
- Simplify goal setup skill to interview-driven flow by @backnotprop in #727
Full Changelog: v0.19.16...v0.19.17
v0.19.16
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| 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 |
| 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 |
What's New in v0.19.16
v0.19.16 adds IDE-style code navigation to the review UI. Cmd/Ctrl+click any token in a diff to find its definition and references across the repo, displayed in a peek panel below the diff viewer.
Code Navigation with Peek View
During code review, understanding how a function is used or where a type is defined usually means switching to an IDE or running a grep. The review UI now handles this directly.
Cmd+click (or Ctrl+click on Linux/Windows) any token in a diff to search for its definition and references. Results appear in a VS Code-style peek panel that splits into two sections: a syntax-highlighted file preview on the left and a grouped reference list on the right. Click any reference to jump to it in the preview.
The search is powered by ripgrep on the server side. Language-aware definition patterns are built in for TypeScript, JavaScript, Python, Go, and Rust, with a generic fallback for other languages. Results are ranked by proximity: matches in the same file sort first, then the same directory, then the rest of the repo. Definition matches (function declarations, class definitions, type aliases) are separated from usage references so you can quickly distinguish where something is defined from where it's called.
The peek panel is integrated into the dockview layout and works in both single-file tab view and all-files view. It opens below the active diff and can be dismissed with Escape or by clicking the close button.
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: search-based code navigation with peek view by @backnotprop in #711
Community
@sushi30 requested IDE-like code navigation in #694, describing the use case of exploring related components during review without leaving the context.
Full Changelog: v0.19.15...v0.19.16
v0.19.15
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| 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 |
| 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 |
What's New in v0.19.15
v0.19.15 is a fixes and reliability release. It resolves GitLab pagination failures on large MRs, prevents OpenCode commands from blowing up agent context with auto-attached files, fixes loose list rendering, and addresses several smaller issues across the install scripts and port handling. On the feature side, the diff base picker now supports commit SHAs and jj gains an evolution history diff mode. Thirteen PRs in this release, four from external contributors including one first-timer.
Commit-Based Diff Base
The base branch picker now has a "Commits" tab that lists the last 20 commits on your branch. Click any commit to use it as the diff base instead of a branch. This lets you compare against a specific point in your branch history, which is useful for reviewing incremental progress or isolating a set of changes.
You can also type a commit SHA directly into the search box and press Enter to use it as the base. Both full and abbreviated SHAs work.
Jujutsu Evolution Diff
For jj users, the diff type picker now includes an "Evolution" option that shows the amendment history of the current change. This uses jj evolog to compare the working copy against its previous version, letting you see what changed since your last amend or squash. The option only appears when the current change has 2 or more evolog entries.
An evolution log picker in the toolbar lets you select which prior version to compare against when multiple amendments exist.
- Authored by @madhusudancs in #702
OpenCode Command Intercept Fix
OpenCode users running /plannotator-review, /plannotator-annotate, or /plannotator-archive on large codebases could hit context-blowing issues. The commands resolved file references before the handler could suppress them, causing large file contents to be auto-attached as context parts. The commands now intercept in command.execute.before instead of the post-LLM event handler, clearing output.parts before any file resolution occurs. This also fixes a latent bug where /plannotator-last could fail to suppress the LLM turn due to an array reassignment instead of in-place mutation.
- #718, closing #713 (reported by @pcfreak30)
GitLab Reliability
Two fixes for GitLab merge request reviews:
Concatenated JSON parsing. glab api --paginate returns concatenated JSON arrays ([...][...]) instead of a single merged array. Large MRs with many files, comments, or CI jobs would fail with a JSON parse error. The response parser now handles multi-page concatenation correctly.
Inline comment persistence. When posting inline review comments to GitLab, API timeouts or rate limits could silently drop comments. Failed comments are now saved to ~/.plannotator/failed-comments/ with the MR slug, and the UI distinguishes between partial failures (warns, avoids duplicates on retry) and total failures (surfaces the error).
Additional Changes
- Loose list continuation indent: Multi-paragraph list items now correctly indent continuation content under the parent bullet instead of rendering it flush-left. — #705, closing #704 (reported by @Thraka)
- File comment draft persistence: File-level comments in code review now survive closing and reopening the comment popover. Drafts are keyed by PR URL, diff scope, and file path. — Authored by @codythatsme in #721
- Hooks tab guidance: The Settings Hooks tab now shows the expected hook file path as a copyable button with creation instructions when the improvement hook file is not found. — #707
- PLANNOTATOR_PORT=0 accepted: Setting
PLANNOTATOR_PORT=0no longer logs a spurious "Invalid port" warning. Port 0 tells the OS to assign a random port, matching the default local behavior. — #716, closing #715 (reported by @hearkenmx) - Codex hooks feature flag: The install script now writes
hooks = trueinstead ofcodex_hooks = truein Codex config, matching the current Codex CLI flag name. — Authored by @leoreisdias in #708 - Codex install guidance: Install script output now includes Codex-specific setup instructions. — Authored by @leoreisdias in #720
- CI security: Scoped
id-token:writepermission to only the AWS OIDC deploy jobs that need it, removing it from the release workflow. — #706
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
- fix: indent loose list continuation content under parent bullet by @backnotprop in #705
- fix: scope id-token:write to only AWS OIDC deploy jobs by @backnotprop in #706
- feat(ui): copyable hook path + guidance in Settings Hooks tab by @backnotprop in #707
- fix: update Codex hooks feature flag by @leoreisdias in #708
- Add jj evolog diff mode to code review UI by @madhusudancs in #702
- fix: accept PLANNOTATOR_PORT=0 without spurious warning by @backnotprop in #716
- fix(gitlab): handle concatenated JSON pages from glab --paginate by @backnotprop in #717
- fix(opencode): intercept annotate/review/archive commands before LLM by @backnotprop in #718
- fix(gitlab): persist unposted inline comments + split browser-safe types by @backnotprop in #719
- chore: add Cod...
v0.19.14
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.12 | PFM code-file hover previews, Graphviz diagrams, visual explainer skill, 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.10 | Revert unreviewed bypass-clear-reminder permission mode |
| 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 |
| 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 |
What's New in v0.19.13
v0.19.13 adds Plannotator Flavored Markdown with code-file hover previews and Graphviz diagrams, a visual explainer skill for generating themed HTML plans and PR walkthroughs, configurable diff appearance controls, a hooks visibility system, and a fix for OpenCode users whose planning agents use display names or special characters. Nine PRs in this release, four from first-time external contributors.
Code Line Range References and Hover Previews
Plans can now reference specific lines in your codebase using file.ts:42 (single line) or file.ts:10-20 (range) syntax inside backtick code spans. These render as interactive badges in the plan viewer. Hovering a badge with line info shows a syntax-highlighted code snippet in a popover, fetched from disk with a 150ms delay. Clicking opens the full file in the code file viewer, scrolled to the referenced line.
The path validation system from v0.19.8 now handles line suffixes correctly, stripping :42 before filesystem resolution and passing the line metadata through to the hover preview.
Sketch-Style Graphviz Diagrams
DOT code blocks (graphviz` or dot`) in plans now render as SVG diagrams using Viz.js. The renderer produces a hand-drawn sketch aesthetic that fits naturally alongside plan text. The WASM runtime loads lazily on first use, so plans without diagrams pay no cost. Invalid DOT syntax displays a clear error card with the raw source for debugging.
PFM Reminder and Improvement Hooks
Two opt-in mechanisms let you shape how your planning agent writes plans.
The PFM Reminder (pfmReminder: true in ~/.plannotator/config.json) injects a static description of the renderer's capabilities into the planning prompt. It tells the agent about code-file links, callouts, tables, diagrams, task lists, and hex swatches, so plans arrive pre-formatted for the viewer's features.
The Improvement Hook reads corrective instructions from ~/.plannotator/hooks/compound/enterplanmode-improve-hook.txt. If the file exists (up to 50KB), its content is appended to the planning prompt alongside the PFM reminder. This lets you provide persistent feedback that applies to every plan, without re-typing it each session.
Both hooks work across all three runtimes: Claude Code (PreToolUse on EnterPlanMode), OpenCode (experimental.chat.system.transform), and Pi (before_agent_start). When neither is configured, the hook exits silently with no overhead.
Hooks Visibility Tab in Settings
A new "Hooks" tab in the plan review Settings dialog shows the current state of the improve-context system. You can toggle the PFM reminder on or off, see whether an improvement hook file is detected and how large it is, and preview the composed context that gets injected. This replaces the previous workflow of editing config.json by hand.
The tab only appears in plan review mode since the hooks only affect the planning prompt.
Diff Tab Size
The diff viewer previously hard-coded tab indentation at 2 spaces, which made Go files, Makefiles, and deeply nested code difficult to read. A new "Tab size" stepper in the diff options popover lets reviewers pick a width from 1 to 8. The choice persists across sessions via cookie and applies immediately.
- Authored by @skripalschikov in #685
Diff Line Background Intensity
On light themes especially, the default green/red line backgrounds in the diff viewer can be too subtle to scan quickly. A new intensity toggle in the diff options popover offers three levels: subtle (the existing default), normal, and strong. Higher intensity reduces the color-mix ratio so added/removed lines stand out more clearly.
- Authored by @skripalschikov in #691
Visual Explainer Skill and HTML Render-Annotate Mode
PR #687 ships two things that work together: new skills and a new rendering mode.
plannotator-visual-explainer is a new skill that generates self-contained HTML visualizations themed with Plannotator's design system. It wraps @nicobailon's visual-explainer skill with Plannotator CSS custom properties, so output uses the same color tokens and typography as the plan viewer. Use it for architecture diagrams, implementation plans with SVG mockups, PR walkthroughs with inline diffs and risk maps, data tables, slide decks, or any visual explanation of technical concepts.
Install it with:
npx skills add backnotprop/plannotator@plannotator-visual-explainer--render-html on plannotator annotate renders HTML files natively inside a sandboxed iframe instead of converting them to markdown via Turndown. This preserves the original layout, styling, and interactive elements while still supporting annotations through a postMessage bridge. Theme tokens are injected into the iframe, so content styled with Plannotator CSS properties adapts to light/dark mode automatically.
Together, these form a complete workflow: the skill generates themed HTML, and plannotator annotate output.html --render-html lets you review and annotate it with full visual fidelity. The skills directory also moved to the repo root for npx skills add compatibility.
Additional Changes
- Plan editor rendering optimization: Replaced
useState+useEffectblock derivations withuseMemo, cutting render cycles from 5-7 to 3 per markdown change. Migrated all 13 toast sites to Sonner's imperative API, removing timer state and simplifying the component tree. — #696 - jj default target fix: The jj compare target now resolves dynamically from
trunk()viajj loginstead of iterating a hardcoded list of bookmark names. — Authored by @graemefolk in #686 - Ask AI in all-files view: The "Ask AI" button now appears in the comment popover when using the all-files diff view. Previously it only showed in single-file tab mode.
- OpenCode planning agent display-name resolution: Planning agents configured with display names (e.g.
Prometheus - Plan Builder) or zero-width character prefixes now resolve correctly to their config keys, avoiding duplicate agent entries and preserving permissions during the deny pass. — Authored by @pysol-dev in #700
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 **plannotato...
v0.19.13
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.12 | PFM code-file hover previews, Graphviz diagrams, visual explainer skill, 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.10 | Revert unreviewed bypass-clear-reminder permission mode |
| 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 |
| 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 |
What's New in v0.19.13
v0.19.13 adds Plannotator Flavored Markdown with code-file hover previews and Graphviz diagrams, a visual explainer skill for generating themed HTML plans and PR walkthroughs, configurable diff appearance controls, a hooks visibility system, and a fix for OpenCode users whose planning agents use display names or special characters. Nine PRs in this release, four from first-time external contributors.
Code Line Range References and Hover Previews
Plans can now reference specific lines in your codebase using file.ts:42 (single line) or file.ts:10-20 (range) syntax inside backtick code spans. These render as interactive badges in the plan viewer. Hovering a badge with line info shows a syntax-highlighted code snippet in a popover, fetched from disk with a 150ms delay. Clicking opens the full file in the code file viewer, scrolled to the referenced line.
The path validation system from v0.19.8 now handles line suffixes correctly, stripping :42 before filesystem resolution and passing the line metadata through to the hover preview.
Sketch-Style Graphviz Diagrams
DOT code blocks (graphviz` or dot`) in plans now render as SVG diagrams using Viz.js. The renderer produces a hand-drawn sketch aesthetic that fits naturally alongside plan text. The WASM runtime loads lazily on first use, so plans without diagrams pay no cost. Invalid DOT syntax displays a clear error card with the raw source for debugging.
PFM Reminder and Improvement Hooks
Two opt-in mechanisms let you shape how your planning agent writes plans.
The PFM Reminder (pfmReminder: true in ~/.plannotator/config.json) injects a static description of the renderer's capabilities into the planning prompt. It tells the agent about code-file links, callouts, tables, diagrams, task lists, and hex swatches, so plans arrive pre-formatted for the viewer's features.
The Improvement Hook reads corrective instructions from ~/.plannotator/hooks/compound/enterplanmode-improve-hook.txt. If the file exists (up to 50KB), its content is appended to the planning prompt alongside the PFM reminder. This lets you provide persistent feedback that applies to every plan, without re-typing it each session.
Both hooks work across all three runtimes: Claude Code (PreToolUse on EnterPlanMode), OpenCode (experimental.chat.system.transform), and Pi (before_agent_start). When neither is configured, the hook exits silently with no overhead.
Hooks Visibility Tab in Settings
A new "Hooks" tab in the plan review Settings dialog shows the current state of the improve-context system. You can toggle the PFM reminder on or off, see whether an improvement hook file is detected and how large it is, and preview the composed context that gets injected. This replaces the previous workflow of editing config.json by hand.
The tab only appears in plan review mode since the hooks only affect the planning prompt.
Diff Tab Size
The diff viewer previously hard-coded tab indentation at 2 spaces, which made Go files, Makefiles, and deeply nested code difficult to read. A new "Tab size" stepper in the diff options popover lets reviewers pick a width from 1 to 8. The choice persists across sessions via cookie and applies immediately.
- Authored by @skripalschikov in #685
Diff Line Background Intensity
On light themes especially, the default green/red line backgrounds in the diff viewer can be too subtle to scan quickly. A new intensity toggle in the diff options popover offers three levels: subtle (the existing default), normal, and strong. Higher intensity reduces the color-mix ratio so added/removed lines stand out more clearly.
- Authored by @skripalschikov in #691
Visual Explainer Skill and HTML Render-Annotate Mode
PR #687 ships two things that work together: new skills and a new rendering mode.
plannotator-visual-explainer is a new skill that generates self-contained HTML visualizations themed with Plannotator's design system. It wraps @nicobailon's visual-explainer skill with Plannotator CSS custom properties, so output uses the same color tokens and typography as the plan viewer. Use it for architecture diagrams, implementation plans with SVG mockups, PR walkthroughs with inline diffs and risk maps, data tables, slide decks, or any visual explanation of technical concepts.
Install it with:
npx skills add backnotprop/plannotator@plannotator-visual-explainer--render-html on plannotator annotate renders HTML files natively inside a sandboxed iframe instead of converting them to markdown via Turndown. This preserves the original layout, styling, and interactive elements while still supporting annotations through a postMessage bridge. Theme tokens are injected into the iframe, so content styled with Plannotator CSS properties adapts to light/dark mode automatically.
Together, these form a complete workflow: the skill generates themed HTML, and plannotator annotate output.html --render-html lets you review and annotate it with full visual fidelity. The skills directory also moved to the repo root for npx skills add compatibility.
Additional Changes
- Plan editor rendering optimization: Replaced
useState+useEffectblock derivations withuseMemo, cutting render cycles from 5-7 to 3 per markdown change. Migrated all 13 toast sites to Sonner's imperative API, removing timer state and simplifying the component tree. — #696 - jj default target fix: The jj compare target now resolves dynamically from
trunk()viajj loginstead of iterating a hardcoded list of bookmark names. — Authored by @graemefolk in #686 - Ask AI in all-files view: The "Ask AI" button now appears in the comment popover when using the all-files diff view. Previously it only showed in single-file tab mode.
- OpenCode planning agent display-name resolution: Planning agents configured with display names (e.g.
Prometheus - Plan Builder) or zero-width character prefixes now resolve correctly to their config keys, avoiding duplicate agent entries and preserving permissions during the deny pass. — Authored by @pysol-dev in #700
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 **plannotato...
v0.19.12
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.11 | Jujutsu (jj) VCS backend, slimmer hunk separators, collapse viewed files, multi-line gutter selection fix |
| v0.19.10 | Revert unreviewed bypass-clear-reminder permission mode |
| 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 |
| 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 |
What's New in v0.19.12
v0.19.12 adds Plannotator Flavored Markdown with code-file hover previews and Graphviz diagrams, a visual explainer skill for generating themed HTML plans and PR walkthroughs, configurable diff appearance controls, and a hooks visibility system. Eight PRs in this release, three from a first-time external contributor.
Code Line Range References and Hover Previews
Plans can now reference specific lines in your codebase using file.ts:42 (single line) or file.ts:10-20 (range) syntax inside backtick code spans. These render as interactive badges in the plan viewer. Hovering a badge with line info shows a syntax-highlighted code snippet in a popover, fetched from disk with a 150ms delay. Clicking opens the full file in the code file viewer, scrolled to the referenced line.
The path validation system from v0.19.8 now handles line suffixes correctly, stripping :42 before filesystem resolution and passing the line metadata through to the hover preview.
Sketch-Style Graphviz Diagrams
DOT code blocks (graphviz` or dot`) in plans now render as SVG diagrams using Viz.js. The renderer produces a hand-drawn sketch aesthetic that fits naturally alongside plan text. The WASM runtime loads lazily on first use, so plans without diagrams pay no cost. Invalid DOT syntax displays a clear error card with the raw source for debugging.
PFM Reminder and Improvement Hooks
Two opt-in mechanisms let you shape how your planning agent writes plans.
The PFM Reminder (pfmReminder: true in ~/.plannotator/config.json) injects a static description of the renderer's capabilities into the planning prompt. It tells the agent about code-file links, callouts, tables, diagrams, task lists, and hex swatches, so plans arrive pre-formatted for the viewer's features.
The Improvement Hook reads corrective instructions from ~/.plannotator/hooks/compound/enterplanmode-improve-hook.txt. If the file exists (up to 50KB), its content is appended to the planning prompt alongside the PFM reminder. This lets you provide persistent feedback that applies to every plan, without re-typing it each session.
Both hooks work across all three runtimes: Claude Code (PreToolUse on EnterPlanMode), OpenCode (experimental.chat.system.transform), and Pi (before_agent_start). When neither is configured, the hook exits silently with no overhead.
Hooks Visibility Tab in Settings
A new "Hooks" tab in the plan review Settings dialog shows the current state of the improve-context system. You can toggle the PFM reminder on or off, see whether an improvement hook file is detected and how large it is, and preview the composed context that gets injected. This replaces the previous workflow of editing config.json by hand.
The tab only appears in plan review mode since the hooks only affect the planning prompt.
Diff Tab Size
The diff viewer previously hard-coded tab indentation at 2 spaces, which made Go files, Makefiles, and deeply nested code difficult to read. A new "Tab size" stepper in the diff options popover lets reviewers pick a width from 1 to 8. The choice persists across sessions via cookie and applies immediately.
- Authored by @skripalschikov in #685
Diff Line Background Intensity
On light themes especially, the default green/red line backgrounds in the diff viewer can be too subtle to scan quickly. A new intensity toggle in the diff options popover offers three levels: subtle (the existing default), normal, and strong. Higher intensity reduces the color-mix ratio so added/removed lines stand out more clearly.
- Authored by @skripalschikov in #691
Visual Explainer Skill and HTML Render-Annotate Mode
PR #687 ships two things that work together: new skills and a new rendering mode.
plannotator-visual-explainer is a new skill that generates self-contained HTML visualizations themed with Plannotator's design system. It wraps @nicobailon's visual-explainer skill with Plannotator CSS custom properties, so output uses the same color tokens and typography as the plan viewer. Use it for architecture diagrams, implementation plans with SVG mockups, PR walkthroughs with inline diffs and risk maps, data tables, slide decks, or any visual explanation of technical concepts.
Install it with:
npx skills add backnotprop/plannotator@plannotator-visual-explainer--render-html on plannotator annotate renders HTML files natively inside a sandboxed iframe instead of converting them to markdown via Turndown. This preserves the original layout, styling, and interactive elements while still supporting annotations through a postMessage bridge. Theme tokens are injected into the iframe, so content styled with Plannotator CSS properties adapts to light/dark mode automatically.
Together, these form a complete workflow: the skill generates themed HTML, and plannotator annotate output.html --render-html lets you review and annotate it with full visual fidelity. The skills directory also moved to the repo root for npx skills add compatibility.
Additional Changes
- Plan editor rendering optimization: Replaced
useState+useEffectblock derivations withuseMemo, cutting render cycles from 5-7 to 3 per markdown change. Migrated all 13 toast sites to Sonner's imperative API, removing timer state and simplifying the component tree. — #696 - jj default target fix: The jj compare target now resolves dynamically from
trunk()viajj loginstead of iterating a hardcoded list of bookmark names. — Authored by @graemefolk in #686 - Ask AI in all-files view: The "Ask AI" button now appears in the comment popover when using the all-files diff view. Previously it only showed in single-file tab mode.
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
- Add diff tab size option by @skripalschikov in #685
- fix(review): resolve ...
v0.19.11
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.19.10 | Revert unreviewed bypass-clear-reminder permission mode |
| 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 |
| 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 |
What's New in v0.19.11
v0.19.11 adds Jujutsu (jj) as a first-class VCS backend for code review and refines the review UI with slimmer separators, a cleaner header layout, and proper multi-line gutter selection. One of the two PRs in this release is from a first-time contributor.
Jujutsu (jj) Code Review
Plannotator's code review now works natively with Jujutsu, the Git-compatible VCS. When you run /plannotator-review in a jj workspace, the VCS is auto-detected and four jj-specific diff modes appear in the diff type picker:
- Current (
jj-current) shows the working-copy changes - Last (
jj-last) shows the previous change - Line (
jj-line) shows the full line of work from the current change back to the trunk bookmark - All (
jj-all) shows all local changes not yet on the remote
Compare-target selection adapts to jj's model. Instead of branch-based base selection, the picker offers remote bookmarks. The feedback exported to your agent includes jj-appropriate local diff instructions so it can reproduce the same view.
Under the hood, this required a significant refactor. Diff collection, compare-target semantics, and file-content retrieval were pulled into a provider-based VCS abstraction in packages/shared/vcs-core.ts. Git, jj, and P4 each implement the same provider interface. The review server and UI consume provider-supplied metadata instead of branching on VCS-specific flags. This abstraction makes adding future VCS backends straightforward.
For colocated repos (both .git and .jj present), jj takes priority. Pass --git to /plannotator-review to override.
- Authored by @graemefolk in #675
Review UI Refinements
Several quality-of-life improvements to the code review interface:
Slimmer hunk separators. The expand/collapse bars between diff hunks are now 24px (down from 32px), with semi-transparent theme-integrated backgrounds. Text and buttons fade with lower opacity for a subtler look that puts the focus on the code.
Cleaner header layout. Sidebar toggles (Annotations, AI, Agents) moved to the far right of the header bar, with the options menu to their left. A visual divider separates the file tree button from the repo label.
Collapse viewed files. Marking a file as viewed in all-files review mode now automatically collapses it, keeping only unreviewed files expanded.
Multi-line gutter selection fix. Click-and-drag on the gutter annotation button now correctly selects a range of lines. The previous implementation used a deprecated Pierre API that never entered the selection mode, so dragging always reported a single line.
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(review): add jj review workflows by @graemefolk in #675
- Review UI refinements: separator styling and header layout by @backnotprop in #683
New Contributors
- @graemefolk made their first contribution in #675
Community
@graemefolk built full jj support from scratch, implementing the VCS provider, diff modes, compare-target picker, and feedback export in a single well-structured PR. The VCS abstraction layer they introduced benefits the entire codebase.
@JohannesKlauss reported the multi-line gutter selection bug in #679, with a clear screen recording that made the root cause obvious.
@festive-onion requested the collapse-on-viewed behavior in #682, a small change that meaningfully improves the review workflow for large diffs.
Full Changelog: v0.19.10...v0.19.11
v0.19.10
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| 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 |
| 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 |
What's New in v0.19.10
v0.19.10 reverts an unreviewed permission mode change that shipped in v0.19.9. The bypass-with-clear-reminder feature (PR #668) relied on Claude Code surfacing systemMessage from hook output, which it does not currently support. That PR has been fully reverted. All other v0.19.9 changes remain intact.
Reverted: Bypass Permissions with /clear Reminder
PR #668 added a synthetic bypassPermissionsClearReminder permission mode that was supposed to emit a system message reminding users to run /clear after plan approval. Testing revealed that Claude Code does not surface systemMessage fields from hook output to the conversation, so the feature had no visible effect. The entire PR has been reverted to avoid shipping dead UI options.
Users on v0.19.9 who selected the "Bypass + /clear Reminder" mode in Settings will fall back to the default permission mode ("Accept Edits") after updating.
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
- revert: remove bypass clear reminder permission mode (#668) by @backnotprop in 49c55e6
Full Changelog: v0.19.9...v0.19.10