Releases: backnotprop/plannotator
v0.11.0
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.10.0 | Short URL sharing with E2E encryption, code suggestions in review UI, CJK input method support, customizable Obsidian filenames, XDG install fix |
| v0.9.3 | Linked document navigation & annotation, VS Code diff integration, toolbar dismiss fix, automated npm publishing |
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
What's New in v0.11.0
Annotations are no longer a single-session gamble. Auto-save drafts persist your work in the background — if the server crashes, the browser refreshes, or you accidentally close the tab, your annotations are waiting when you come back. The comment writing experience was rebuilt around a proper popover with expandable dialog mode, solving the cramped single-line textarea that made long comments painful. Obsidian users get a new vault browser sidebar tab for browsing and annotating vault files directly during plan review. And a critical bug where Claude Code was silently ignoring deny feedback has been fixed — your "Request Changes" annotations now actually reach the model.
Auto-Save Annotation Drafts
Every annotation you make is now automatically saved in the background to ~/.plannotator/drafts/. If the Plannotator server crashes, Bun segfaults, the browser refreshes, or your SSH connection drops — your work survives. When you reopen the same plan, you're prompted to restore the draft or discard it.
Drafts are keyed by plan content hash so they match the right plan even across server restarts. They're cleaned up automatically on successful approve or deny. Both the plan review and code review UIs have independent draft systems.
This was the single most frustrating gap in the tool — losing 20 minutes of careful annotation feedback to a stray kill signal or browser reload. It should have shipped months ago.
Comment Popover
The comment textarea — previously a cramped inline input at the bottom of the annotation toolbar — is now a dedicated popover that appears near your text selection. It auto-focuses, auto-sizes, and supports image attachments inline. For longer comments, click the expand button to open a full dialog with more room to write.
The popover tracks the anchor element's position on scroll and resize, flips above the selection when there isn't enough space below, and handles click-outside dismissal correctly even when child portals (like the image annotator) are open. Keyboard shortcuts carry over: Cmd+Enter to submit, Escape to close.
Obsidian Vault Browser
A new sidebar tab lets Obsidian users browse their vault's markdown files directly during plan review. Enable it in Settings > Saving > Obsidian, and a vault icon tab appears alongside Table of Contents and Version Browser. Click any .md file to open and annotate it — the annotations are included in the feedback sent back to the agent.
Plans often reference existing docs, specs, or notes that live in your vault. Instead of switching to Obsidian or using /plannotator-annotate separately, you can now pull in relevant context and annotate it as part of the same review session.
- Inspired by @TomLucidor's discussion on Obsidian integration (#181)
Improved Deny Message Framing
The deny message — what Claude sees when you click "Request Changes" — has been rewritten to make your feedback harder to overlook. The previous framing was technically correct but easy for the model to skim past, especially with longer annotation lists. The new framing structures the feedback more assertively so Claude incorporates your annotations rather than re-entering plan mode with a surface-level revision.
- Thanks to @injun-choi-0914 for reporting this (#215)
OpenCode: Configurable Plan Review Timeout
The submit_plan tool in the OpenCode plugin had a hardcoded timeout that would reopen the browser window after 5-10 minutes if you hadn't reviewed the plan yet. After several cycles of this, the agent would give up and print the plan to the console. The timeout is now configurable — set it in your OpenCode config to match your workflow, whether you review plans immediately or let them queue up while you step away.
Additional Changes
- Missing annotate command in install scripts — the
/plannotator-annotateslash command wasn't included in the plugin install, so users who updated from pre-v0.8.0 couldn't use the annotate feature without manual setup (#218 by @maggiehe) - Pi extension: blocklist-only bash safety — the Pi extension now uses a blocklist approach for bash command safety instead of an allowlist, and the plan file path is interactive rather than hardcoded (#222)
- Server modularization — extracted shared route handlers (image serving, file uploads, draft API) into reusable modules, reducing duplication across the plan, review, and annotate servers (#214)
- CommentPopover image attachment fix — image attachments in the comment popover no longer cause the popover to close, fixed via a
data-popover-layerconvention for portal click-outside detection (#226)
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: Obsidian vault browser sidebar tab by @backnotprop in #209
- refactor: extract shared route handlers and modularize plan server by @backnotprop in #214
- feat: auto-save annotation drafts to survive server crashes by @backnotprop in #217
- fix: add missing /plannotator-annotate command to install scripts by @maggiehe in #218
- feat: CommentPopover for better comment writing UX by @backnotprop in #220
- feat(pi-extension): blocklist-only bash safety + interactive plan file path by @backnotprop in #222
- fix: make OpenCode submit_plan timeout configurable by @backnotprop in #223
- fix: improve deny message framing to prevent ignored feedback by @backnotprop in #224...
v0.10.0
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.9.3 | Linked document navigation & annotation, VS Code diff integration, toolbar dismiss fix, automated npm publishing |
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
What's New in v0.10.0
Sharing plans got a ground-up rethink. The hash-based URLs that Slack and email clients kept truncating are now replaced by short links backed by a dedicated paste service — with end-to-end encryption so plan content never touches the server in readable form. The code review UI gained GitHub-style code suggestions with inline editing and syntax-highlighted diffs. And a batch of community-driven fixes landed: CJK input method support, empty file display in reviews, XDG-compliant install paths, customizable Obsidian export filenames, and proper error handling when shared links fail to load.
Short URL Sharing with End-to-End Encryption
Share URLs used to embed the entire plan as a compressed hash fragment. That worked for small plans, but anything substantial produced 10-40KB URLs that Slack, WhatsApp, and email clients would silently truncate — and the recipient would see the demo plan instead of the shared content with no indication anything went wrong (#142, #187).
Short URLs solve both problems. Click "Create short link" and the plan is encrypted in your browser using AES-256-GCM, uploaded to the paste service as an opaque blob, and you get back a ~50-character URL like share.plannotator.ai/p/a1T8a4Ey#key=.... The decryption key lives only in the URL fragment — it's never sent in HTTP requests, never stored on the server, and the paste service has zero ability to read your plan content.
The paste service runs as a Cloudflare Worker with KV storage (7-day TTL). Self-hosters can deploy their own instance and point to it with PLANNOTATOR_PASTE_URL. The existing hash-based URLs continue to work as a fallback for offline use or environments without network access.
If a short URL fails to load — expired paste, missing encryption key, network error — the portal now shows an explicit warning dialog explaining the failure instead of silently falling back to the demo plan. An amber "Demo" badge remains visible in the header so it's always clear when you're looking at demo content rather than shared data.
- Thanks to @GunitBindal for building the paste service and short URL integration (#188), and for filing the feature request (#187)
- Thanks to @uqarni for reporting the silent truncation fallback (#142)
Code Suggestions in Code Review
The code review UI now supports GitHub-style code suggestion blocks. When annotating a diff, you can write a fenced suggestion that renders as a syntax-highlighted before/after comparison — the reviewer sees exactly what you're proposing, not a prose description of it. Suggestions include copy buttons for quick application.
Annotation editing is also inline now. Click an existing annotation to modify its text directly in place rather than deleting and recreating. The DiffViewer component was decomposed from 615 lines down to 200 in the process, with logic extracted into focused subcomponents for the code modal, suggestion renderer, and inline editor.
- Thanks to @flex-yj-kim for the contribution (#198)
Customizable Obsidian Export Filenames
The Obsidian integration now supports a configurable filename template with 12 variables: {title}, {YYYY}, {MM}, {DD}, {HH}, {mm}, {ss}, {date}, {time}, {datetime}, {project}, and {agent}. Set your preferred format in Settings and see a live preview of the generated filename. The default is {title} (same behavior as before). Filesystem-unsafe characters are automatically sanitized.
CJK Input Method Support
Pressing Enter during CJK character composition (Chinese, Japanese, Korean input methods) no longer triggers form submission. The fix adds isComposing guards to all five Enter-key handlers in the plan review UI so the Enter key confirms the IME candidate as expected, and a second Enter submits the form.
- Thanks to @eromoe for reporting the issue (#191)
- Thanks to @flex-yj-kim for the review-editor side fix in #198
Review UI: Empty Files and Diff Error Handling
The code review UI could show an empty file list when the user's git config had diff.mnemonicPrefix enabled, because the diff parser expected standard a//b/ prefixes. The fix forces standard prefixes via --no-prefix fallback logic. Git diff errors (e.g., from detached HEAD or corrupted index) are now surfaced in the UI instead of silently showing "No changes."
- Thanks to @flex-yj-kim for the fix (#200)
- Thanks to @zhuscat for reporting the empty file list issue (#189)
XDG Base Directory Fix
The install script now correctly places the binary in ~/.local/bin rather than deriving the path from XDG_DATA_HOME. Per the XDG Base Directory Specification, XDG_DATA_HOME is for data files — not executables.
OpenCode: Remote URL Notification and Decision Timeout
OpenCode users in remote/SSH sessions now see the Plannotator URL logged directly in the TUI, since there's no local browser to open. A 10-minute decision timeout was also added — if no approve/deny action is taken, the session auto-denies and releases the port to prevent permanent port occupation.
- Thanks to @codeg-dev for the contribution (#197)
- Thanks to @GunitBindal for reporting the remote session UX gap (#192)
Additional Fixes
- Diff view clears on sidebar tab switch — switching from the Version Browser tab back to Table of Contents now properly clears the diff overlay (#199 by @flex-yj-kim)
- Import merge fix — importing a teammate's share URL now correctly merges annotations with your existing ones instead of replacing them (#205)
- Paste service CORS — the paste service now accepts requests from any localhost port, since the hook server uses random ports
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 short URL sharing via paste service to fix URL truncation by [@GunitBindal](https://github.com/GunitBin...
v0.9.3
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.9.2 | Fix version history logging noise in OpenCode TUI |
| v0.9.1 | Plan Diff marketing dialog viewport fix |
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.9.3
Other Markdown files that your plan references can now be opened and annotated directly inside the viewer — useful for document-heavy or spec-driven approaches. Click a link, review the doc, leave feedback, and it all gets included when you approve or deny. Plan Diff also gained a "VS Code" button that opens the diff in VS Code's native side-by-side editor (or whatever code aliases to such as Cursor). Plus a toolbar dismissal fix and automated npm publishing for the OpenCode and Pi packages.
Linked Document Navigation & Annotation
When a plan references a local .md file (e.g., [see architecture](./docs/ARCHITECTURE.md)), clicking the link now opens it directly inside the Plannotator viewer — no new tabs, no context switching. The document swaps in place with a "Back to plan" button in the sidebar, and the Table of Contents updates to reflect the linked document's headings.
More importantly, you can annotate linked documents the same way you annotate the plan itself. Highlight text, leave comments, suggest replacements — all the usual annotation tools work. When you approve or deny, annotations from every linked document you visited are aggregated into the feedback payload sent to the agent, organized by filepath under a "Linked Document Feedback" section.
Annotation state is cached per filepath within a session. Navigate to a doc, annotate it, go back to the plan, revisit the doc later — your annotations are still there.
The server resolves paths using a multi-strategy approach: absolute paths, paths relative to the project root, and bare filename search via glob. Path traversal outside the project root is blocked. Ambiguous filenames (multiple matches) return a list of candidates so you can pick the right one.
- Thanks to @dgrissen2 for building the initial linked document viewer and
/api/docendpoint (#184)
Open Diff in VS Code
The Plan Diff viewer now has a "VS Code" button that opens the current diff in VS Code's native side-by-side diff editor. If you're comparing your plan against a previous version and want a more familiar diff environment, one click gets you there. Uses code --diff under the hood with the version history files — no temp file juggling.
- Inspired by a suggestion from @alexrosenberg_tube on Discussion #110
Toolbar Dismiss on Outside Click and Escape
Annotation toolbars in both the plan review and code review UIs now dismiss when you click outside them or press Escape. Previously, toolbars could get stuck open after making a selection, requiring another text selection to clear them. The fix consolidates dismissal behavior into a shared useDismissOnOutsideAndEscape hook used by both UIs.
- Thanks to @flex-yj-kim for the contribution (#182)
Automated npm Publishing
The release pipeline now publishes @plannotator/opencode and @plannotator/pi-extension to npm automatically when a version tag is pushed. Uses npm's OIDC trusted publishing for provenance — no long-lived secrets. Pull requests run a dry-run build to catch packaging issues before merge. All GitHub Action versions are pinned to full SHAs for supply chain hardening.
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
- ci(release): add npm publishing with OIDC provenance and dry-run mode by @rcdailey in #170
- Add "Open in VS Code Diff" button to plan diff viewer by @backnotprop in #180
- fix(ui): dismiss annotation toolbars on outside click and Escape by @flex-yj-kim in #182
- feat: open linked .md files in read-only tabs with TOC navigation by @dgrissen2 in #184
Contributors
- @rcdailey
- @flex-yj-kim
- @dgrissen2 made their first contribution in #184
Full Changelog: v0.9.2...v0.9.3
v0.9.2
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.9.1 | Plan Diff marketing dialog viewport fix |
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.9.2
Patch: Removed version history logging from the shared server that was filling the OpenCode TUI input box with red [History] Saved v1 for ... messages on every plan submission (#178).
What's New in v0.9.0
When your coding agent revises a plan after feedback, you no longer have to re-read the whole thing to figure out what changed. Plan Diff shows exactly what's different — with two view modes, automatic version history, and a sidebar for browsing past iterations. This was the most requested feature from the community (#138, #111, Discussion #110).
Plan Diff
After you deny a plan and the agent resubmits, a +N/-M badge appears below the document card showing how many lines were added and removed. Click it to toggle into diff view.
Two view modes, switchable with one click:
-
Rendered diff — the plan renders as usual, but with color-coded left borders. Green for added sections, red with strikethrough for removed content, yellow for modified lines. Scan the plan visually and immediately spot where the changes landed.
-
Raw diff — a monospace, git-style view with
+and-prefixed lines. Useful when you need precise, line-level detail about what changed in the markdown source.
Both views work from the same underlying diff. The engine computes line-level changes using the diff npm package and groups consecutive add/remove pairs into "modified" blocks so you see intent, not noise.
- Thanks to @khrome83 for requesting plan versions and diffs (#138)
- Thanks to @PetrBrabec for requesting plan iteration diffs (#111, Discussion #110)
Version History
Every time a plan arrives, Plannotator automatically saves it to ~/.plannotator/history/ before you see the UI. Plans are versioned sequentially — first submission is version 1, revision after feedback is version 2, and so on. Same plan heading on the same day means the same plan being iterated on. Identical resubmissions are deduplicated.
The sidebar now has two tabs: Table of Contents (existing) and Version Browser (new). From the Version Browser, select any previous version to diff against. The default comparison is always the immediately prior version, but you can jump back further if the plan has gone through several rounds.
Version history is scoped by project (git repo or working directory) and stored independently of the plan-save-on-decision setting.
Sidebar Redesign
The Table of Contents panel from v0.7.0 has been promoted to a shared left sidebar with tabs. The first tab is the existing TOC; the second is the new Version Browser. The sidebar opens by default on the TOC tab if you have "Auto-open Sidebar" enabled in Settings — the Version Browser tab never auto-opens, so the diff workflow stays opt-in.
Terminology Cleanup
The plan review UI previously labeled annotation exports as "diffs," which was confusing now that actual diffs exist. Exported annotation files are now called "annotations" throughout — exportAnnotations(), .annotations.md filenames, and "Download Annotations" in the toolbar. The code review flow (which works with real git diffs) is unchanged.
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-extensionFull Changelog: v0.9.1...v0.9.2
v0.9.1
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.9.0 | Plan Diff with two view modes, version history, sidebar redesign, terminology cleanup |
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.9.1
Patch: The Plan Diff marketing dialog now handles smaller viewports gracefully — the content area scrolls while the header and dismiss button stay pinned, so you're never trapped in a dialog you can't close.
What's New in v0.9.0
When your coding agent revises a plan after feedback, you no longer have to re-read the whole thing to figure out what changed. Plan Diff shows exactly what's different — with two view modes, automatic version history, and a sidebar for browsing past iterations. This was the most requested feature from the community (#138, #111, Discussion #110).
Plan Diff
After you deny a plan and the agent resubmits, a +N/-M badge appears below the document card showing how many lines were added and removed. Click it to toggle into diff view.
Two view modes, switchable with one click:
-
Rendered diff — the plan renders as usual, but with color-coded left borders. Green for added sections, red with strikethrough for removed content, yellow for modified lines. Scan the plan visually and immediately spot where the changes landed.
-
Raw diff — a monospace, git-style view with
+and-prefixed lines. Useful when you need precise, line-level detail about what changed in the markdown source.
Both views work from the same underlying diff. The engine computes line-level changes using the diff npm package and groups consecutive add/remove pairs into "modified" blocks so you see intent, not noise.
- Thanks to @khrome83 for requesting plan versions and diffs (#138)
- Thanks to @PetrBrabec for requesting plan iteration diffs (#111, Discussion #110)
Version History
Every time a plan arrives, Plannotator automatically saves it to ~/.plannotator/history/ before you see the UI. Plans are versioned sequentially — first submission is version 1, revision after feedback is version 2, and so on. Same plan heading on the same day means the same plan being iterated on. Identical resubmissions are deduplicated.
The sidebar now has two tabs: Table of Contents (existing) and Version Browser (new). From the Version Browser, select any previous version to diff against. The default comparison is always the immediately prior version, but you can jump back further if the plan has gone through several rounds.
Version history is scoped by project (git repo or working directory) and stored independently of the plan-save-on-decision setting.
Sidebar Redesign
The Table of Contents panel from v0.7.0 has been promoted to a shared left sidebar with tabs. The first tab is the existing TOC; the second is the new Version Browser. The sidebar opens by default on the TOC tab if you have "Auto-open Sidebar" enabled in Settings — the Version Browser tab never auto-opens, so the diff workflow stays opt-in.
Terminology Cleanup
The plan review UI previously labeled annotation exports as "diffs," which was confusing now that actual diffs exist. Exported annotation files are now called "annotations" throughout — exportAnnotations(), .annotations.md filenames, and "Download Annotations" in the toolbar. The code review flow (which works with real git diffs) is unchanged.
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 plan version history backend and API by @backnotprop in #175
- feat: plan diff UI with sidebar and dual view modes by @backnotprop in #176
- feat: Plan Diff marketing dialog, Pi origin support, and docs by @backnotprop in #177
- refactor: rename diff -> annotations in plan review context by @backnotprop in #173
- docs: add UI settings reference to marketing site docs by @backnotprop in #171
- docs: add blog post about local diff review for coding agents by @backnotprop in #166
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.8.5 | Pi coding agent support, auto-close countdown, image endpoint security fix, OpenCode package fix |
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.9.0
When your coding agent revises a plan after feedback, you no longer have to re-read the whole thing to figure out what changed. Plan Diff shows exactly what's different — with two view modes, automatic version history, and a sidebar for browsing past iterations. This was the most requested feature from the community (#138, #111, Discussion #110).
Plan Diff
After you deny a plan and the agent resubmits, a +N/-M badge appears below the document card showing how many lines were added and removed. Click it to toggle into diff view.
Two view modes, switchable with one click:
-
Rendered diff — the plan renders as usual, but with color-coded left borders. Green for added sections, red with strikethrough for removed content, yellow for modified lines. Scan the plan visually and immediately spot where the changes landed.
-
Raw diff — a monospace, git-style view with
+and-prefixed lines. Useful when you need precise, line-level detail about what changed in the markdown source.
Both views work from the same underlying diff. The engine computes line-level changes using the diff npm package and groups consecutive add/remove pairs into "modified" blocks so you see intent, not noise.
- Thanks to @khrome83 for requesting plan versions and diffs (#138)
- Thanks to @PetrBrabec for requesting plan iteration diffs (#111, Discussion #110)
Version History
Every time a plan arrives, Plannotator automatically saves it to ~/.plannotator/history/ before you see the UI. Plans are versioned sequentially — first submission is version 1, revision after feedback is version 2, and so on. Same plan heading on the same day means the same plan being iterated on. Identical resubmissions are deduplicated.
The sidebar now has two tabs: Table of Contents (existing) and Version Browser (new). From the Version Browser, select any previous version to diff against. The default comparison is always the immediately prior version, but you can jump back further if the plan has gone through several rounds.
Version history is scoped by project (git repo or working directory) and stored independently of the plan-save-on-decision setting.
Sidebar Redesign
The Table of Contents panel from v0.7.0 has been promoted to a shared left sidebar with tabs. The first tab is the existing TOC; the second is the new Version Browser. The sidebar opens by default on the TOC tab if you have "Auto-open Sidebar" enabled in Settings — the Version Browser tab never auto-opens, so the diff workflow stays opt-in.
Terminology Cleanup
The plan review UI previously labeled annotation exports as "diffs," which was confusing now that actual diffs exist. Exported annotation files are now called "annotations" throughout — exportAnnotations(), .annotations.md filenames, and "Download Annotations" in the toolbar. The code review flow (which works with real git diffs) is unchanged.
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 plan version history backend and API by @backnotprop in #175
- feat: plan diff UI with sidebar and dual view modes by @backnotprop in #176
- feat: Plan Diff marketing dialog, Pi origin support, and docs by @backnotprop in #177
- refactor: rename diff -> annotations in plan review context by @backnotprop in #173
- docs: add UI settings reference to marketing site docs by @backnotprop in #171
- docs: add blog post about local diff review for coding agents by @backnotprop in #166
Full Changelog: v0.8.5...v0.9.0
v0.8.5
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.8.5
This release adds Pi coding agent support, a configurable auto-close countdown, and a security fix for the image serving endpoint. It also fixes a packaging regression in v0.8.3 where the @plannotator/opencode npm package shipped with an unresolvable workspace:* dependency.
Pi Coding Agent Support
Plannotator's third platform integration. Pi is a coding agent by Mario Zechner that supports extensions via its plugin API, and Plannotator now ships a first-class extension for it.
The Pi extension introduces a file-based plan mode where the agent writes plans to a PLAN.md file on disk — git-trackable and visible in your editor at all times. When the agent calls exit_plan_mode, the browser-based review UI opens for you to annotate, approve, or deny the plan, just like on Claude Code and OpenCode.
What's included:
- Plan review with the full annotation UI — text selection, comments, deletions, replacements, image attachments
- Code review via
/plannotator-review— opens git diffs in the review editor - Markdown annotation via
/plannotator-annotate <file.md>— annotate any markdown file - Bash safety gating — during planning, the agent is restricted to read-only commands. Destructive operations like
rm,mv,git push, andnpm installare blocked until you approve the plan - Progress tracking — a status line widget shows checklist completion as the agent executes (
3/5), with live strikethrough on completed items - State persistence — the current phase (idle, planning, executing) survives session restarts via Pi's entry API
Ctrl+Alt+Pkeyboard shortcut and/plannotatorcommand to toggle plan mode
The extension uses Node.js HTTP servers instead of Bun.serve(), since Pi loads extensions via jiti.
pi install npm:@plannotator/pi-extension
pi --plan # Start a session in plan mode(#168)
Auto-Close Countdown
The auto-close behavior introduced in v0.8.0 now supports a configurable delay. Instead of a binary on/off toggle, you can choose from four options: Off (default), Immediately, After 3 seconds, or After 5 seconds. When a delay is set, the completion overlay shows a live countdown before the tab closes.
More importantly, the feature is now discoverable. When auto-close is off, the completion overlay surfaces an opt-in checkbox — right at the moment you'd benefit from it most. One click enables it with a 3-second default, and you can fine-tune the delay in Settings whenever you like.
The implementation also handles browser restrictions gracefully. Since window.close() only works on tabs opened by script (and Plannotator opens via OS commands), a failed close now shows a friendly fallback message instead of silently doing nothing.
Under the hood, the duplicated completion overlay code from both the plan editor and review editor has been extracted into a shared CompletionOverlay component with a useAutoClose hook, cleaning up both apps.
- Thanks to @flex-yj-kim for the contribution (#162)
Image Endpoint Security Fix
The /api/image endpoint in all three servers (plan, review, annotate) previously served files from the local filesystem based on a user-provided path query parameter with no validation. Since the HTTP server runs on localhost without authentication, any process or browser tab could read arbitrary files — including SSH keys, AWS credentials, and other sensitive data. The server's 4-day hook timeout made the exposure window particularly wide.
This is now locked down with a shared validation module applied across all three servers:
-
Image extension allowlist — only known image formats are served (
png,jpg,gif,webp,svg, and others) -
Path normalization —
path.resolve()eliminates../traversal sequences -
Upload validation — the
/api/uploadendpoint now enforces the same allowlist -
Thanks to @dor-tzur-lmnd for identifying and fixing this vulnerability (#164)
OpenCode Package Fix
The @plannotator/opencode npm package in v0.8.3 included @plannotator/server as a runtime dependency using workspace:*, which is unresolvable outside the monorepo and caused install failures for all consumers. The dependency has been moved to devDependencies — the build already bundles it into dist/index.js, so consumers never need to resolve it at install time.
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(server): prevent arbitrary file read via /api/image endpoint by @dor-tzur-lmnd in #164
- feat: Add auto-close countdown delay to completion overlay by @flex-yj-kim in #162
- feat: add Pi coding agent extension by @backnotprop in #168
- fix(opencode): move @plannotator/server to devDependencies to fix npm install by @rcdailey in #169
New Contributors
- @dor-tzur-lmnd made their first contribution in #164
Full Changelog: v0.8.2...v0.8.5
v0.8.4
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.8.3 | Pi coding agent support, auto-close countdown, image endpoint security fix |
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.8.4
This is a patch release for v0.8.3. The @plannotator/opencode npm package in v0.8.3 shipped with a workspace:* dependency on @plannotator/server, which caused install failures for all consumers. The dependency has been moved to devDependencies — this is safe because the build already bundles it into dist/index.js. All features below were introduced in v0.8.3.
Pi Coding Agent Support
Plannotator's third platform integration. Pi is a coding agent by Mario Zechner that supports extensions via its plugin API, and Plannotator now ships a first-class extension for it.
The Pi extension introduces a file-based plan mode where the agent writes plans to a PLAN.md file on disk — git-trackable and visible in your editor at all times. When the agent calls exit_plan_mode, the browser-based review UI opens for you to annotate, approve, or deny the plan, just like on Claude Code and OpenCode.
What's included:
- Plan review with the full annotation UI — text selection, comments, deletions, replacements, image attachments
- Code review via
/plannotator-review— opens git diffs in the review editor - Markdown annotation via
/plannotator-annotate <file.md>— annotate any markdown file - Bash safety gating — during planning, the agent is restricted to read-only commands. Destructive operations like
rm,mv,git push, andnpm installare blocked until you approve the plan - Progress tracking — a status line widget shows checklist completion as the agent executes (
3/5), with live strikethrough on completed items - State persistence — the current phase (idle, planning, executing) survives session restarts via Pi's entry API
Ctrl+Alt+Pkeyboard shortcut and/plannotatorcommand to toggle plan mode
The extension uses Node.js HTTP servers instead of Bun.serve(), since Pi loads extensions via jiti. Install from npm once published, or from git today:
pi install npm:@plannotator/pi-extension
pi --plan # Start a session in plan mode(#168)
Auto-Close Countdown
The auto-close behavior introduced in v0.8.0 now supports a configurable delay. Instead of a binary on/off toggle, you can choose from four options: Off (default), Immediately, After 3 seconds, or After 5 seconds. When a delay is set, the completion overlay shows a live countdown before the tab closes.
More importantly, the feature is now discoverable. When auto-close is off, the completion overlay surfaces an opt-in checkbox — right at the moment you'd benefit from it most. One click enables it with a 3-second default, and you can fine-tune the delay in Settings whenever you like.
The implementation also handles browser restrictions gracefully. Since window.close() only works on tabs opened by script (and Plannotator opens via OS commands), a failed close now shows a friendly fallback message instead of silently doing nothing.
Under the hood, the duplicated completion overlay code from both the plan editor and review editor has been extracted into a shared CompletionOverlay component with a useAutoClose hook, cleaning up both apps.
- Thanks to @flex-yj-kim for the contribution (#162)
Image Endpoint Security Fix
The /api/image endpoint in all three servers (plan, review, annotate) previously served files from the local filesystem based on a user-provided path query parameter with no validation. Since the HTTP server runs on localhost without authentication, any process or browser tab could read arbitrary files — including SSH keys, AWS credentials, and other sensitive data. The server's 4-day hook timeout made the exposure window particularly wide.
This is now locked down with a shared validation module applied across all three servers:
-
Image extension allowlist — only known image formats are served (
png,jpg,gif,webp,svg, and others) -
Path normalization —
path.resolve()eliminates../traversal sequences -
Upload validation — the
/api/uploadendpoint now enforces the same allowlist -
Thanks to @dor-tzur-lmnd for identifying and fixing this vulnerability (#164)
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(opencode): move @plannotator/server to devDependencies to fix npm install (#169)
- fix(server): prevent arbitrary file read via /api/image endpoint by @dor-tzur-lmnd in #164
- feat: Add auto-close countdown delay to completion overlay by @flex-yj-kim in #162
- feat: add Pi coding agent extension by @backnotprop in #168
New Contributors
- @dor-tzur-lmnd made their first contribution in #164
Full Changelog: v0.8.2...v0.8.4
v0.8.3
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.8.2 | BROWSER env var fix for macOS and WSL devcontainers |
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.8.3
Plannotator now supports a third coding agent. Pi users get full plan review, code review, and markdown annotation — the same browser-based workflow available on Claude Code and OpenCode, adapted for Pi's extension API. This release also brings a configurable auto-close countdown and a security hardening fix for the image serving endpoint.
Pi Coding Agent Support
Plannotator's third platform integration. Pi is a coding agent by Mario Zechner that supports extensions via its plugin API, and Plannotator now ships a first-class extension for it.
The Pi extension introduces a file-based plan mode where the agent writes plans to a PLAN.md file on disk — git-trackable and visible in your editor at all times. When the agent calls exit_plan_mode, the browser-based review UI opens for you to annotate, approve, or deny the plan, just like on Claude Code and OpenCode.
What's included:
- Plan review with the full annotation UI — text selection, comments, deletions, replacements, image attachments
- Code review via
/plannotator-review— opens git diffs in the review editor - Markdown annotation via
/plannotator-annotate <file.md>— annotate any markdown file - Bash safety gating — during planning, the agent is restricted to read-only commands. Destructive operations like
rm,mv,git push, andnpm installare blocked until you approve the plan - Progress tracking — a status line widget shows checklist completion as the agent executes (
3/5), with live strikethrough on completed items - State persistence — the current phase (idle, planning, executing) survives session restarts via Pi's entry API
Ctrl+Alt+Pkeyboard shortcut and/plannotatorcommand to toggle plan mode
The extension uses Node.js HTTP servers instead of Bun.serve(), since Pi loads extensions via jiti. Install from npm once published, or from git today:
pi install npm:@plannotator/pi-extension
pi --plan # Start a session in plan mode(#168)
Auto-Close Countdown
The auto-close behavior introduced in v0.8.0 now supports a configurable delay. Instead of a binary on/off toggle, you can choose from four options: Off (default), Immediately, After 3 seconds, or After 5 seconds. When a delay is set, the completion overlay shows a live countdown before the tab closes.
More importantly, the feature is now discoverable. When auto-close is off, the completion overlay surfaces an opt-in checkbox — right at the moment you'd benefit from it most. One click enables it with a 3-second default, and you can fine-tune the delay in Settings whenever you like.
The implementation also handles browser restrictions gracefully. Since window.close() only works on tabs opened by script (and Plannotator opens via OS commands), a failed close now shows a friendly fallback message instead of silently doing nothing.
Under the hood, the duplicated completion overlay code from both the plan editor and review editor has been extracted into a shared CompletionOverlay component with a useAutoClose hook, cleaning up both apps.
- Thanks to @flex-yj-kim for the contribution (#162)
Image Endpoint Security Fix
The /api/image endpoint in all three servers (plan, review, annotate) previously served files from the local filesystem based on a user-provided path query parameter with no validation. Since the HTTP server runs on localhost without authentication, any process or browser tab could read arbitrary files — including SSH keys, AWS credentials, and other sensitive data. The server's 4-day hook timeout made the exposure window particularly wide.
This is now locked down with a shared validation module applied across all three servers:
-
Image extension allowlist — only known image formats are served (
png,jpg,gif,webp,svg, and others) -
Path normalization —
path.resolve()eliminates../traversal sequences -
Upload validation — the
/api/uploadendpoint now enforces the same allowlist -
Thanks to @dor-tzur-lmnd for identifying and fixing this vulnerability (#164)
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(server): prevent arbitrary file read via /api/image endpoint by @dor-tzur-lmnd in #164
- feat: Add auto-close countdown delay to completion overlay by @flex-yj-kim in #162
- feat: add Pi coding agent extension by @backnotprop in #168
New Contributors
- @dor-tzur-lmnd made their first contribution in #164
Full Changelog: v0.8.2...v0.8.3
v0.8.2
Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.8.1 | Devcontainer BROWSER fallback, mermaid clipping fix, annotation toolbar focus guard |
| v0.8.0 | Open source (MIT/Apache-2.0), annotate command, self-hosted share portal, resizable panels, mermaid controls, auto-close on approval, documentation site |
| v0.7.0 | TOC sidebar, sticky actions, save to notes without approving, import teammate reviews, viewed file tracking |
| v0.6.8 | Mermaid diagram rendering, repo/branch info display |
| v0.6.7 | Quick Comment mode, type-to-comment shortcut, smart agent detection |
| v0.6.6 | OpenCode sub-agent fix, CVE-2026-22812 security update |
| v0.6.5 | Cmd+C shortcut, newline preservation, hook timeout fix |
| v0.6.4 | Cmd+Enter keyboard shortcut |
| v0.6.3 | OpenCode npm package fix, cache path fix |
| v0.6.2 | OpenCode title generation fix, WSL browser detection |
What's New in v0.8.2
A targeted fix for the BROWSER environment variable handling introduced in v0.8.1. The devcontainer browser-opening feature now works correctly on macOS and WSL.
BROWSER Environment Variable Fix
v0.8.1 added support for the standard BROWSER environment variable so devcontainer users get automatic browser opening without any Plannotator-specific configuration. However, the implementation treated BROWSER the same as PLANNOTATOR_BROWSER across all platforms — which broke on macOS (where open -a expects an application name, not a script path) and WSL (where cmd.exe /c start can't execute Linux paths).
PLANNOTATOR_BROWSER and BROWSER now have distinct semantics. PLANNOTATOR_BROWSER is a platform-native application reference: an app name for open -a on macOS, a Windows executable for cmd.exe /c start on WSL. BROWSER is always executed directly as $BROWSER <url>, matching the Unix convention that VS Code and other tools expect.
- Thanks to @rerorero for the fix (#163)
- Original feature request by @siomporas (#119)
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"]
}What's Changed
New Contributors
Full Changelog: v0.8.1...v0.8.2