Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.14.2 | OpenCode plan mode prompt replacement, Windows non-ASCII path fix, Pi link fix |
| v0.14.1 | Single submit_plan with auto-detect, viewed-file draft persistence, Bear nested tag fix |
| v0.14.0 | PR review via GitHub URL, /plannotator-last for annotating agent messages, OpenCode plan mode permissions fix, VS Code SSH proxy fix
|
| v0.13.1 | OpenCode plan mode rewrite, Obsidian save fix |
| v0.13.0 | Built-in themes, annotatable plan diffs, file-scoped code review comments, Octarine integration, unified review core, Pi remote sessions |
| v0.12.0 | Quick annotation labels, mobile compatibility, Graphviz rendering, markdown images with lightbox, linked doc navigation in annotate mode |
| v0.11.4 | Git add from code review, bidirectional scroll navigation, clipboard paste for annotation images, VS Code IPC port stability |
| v0.11.3 | Expandable diff context, hierarchical folder tree, redesigned worktree controls, supply chain hardening |
| v0.11.2 | Git worktree support in code review, VS Code editor annotations in review, Obsidian auto-save & separator settings, session discovery, smart file resolution |
| v0.11.1 | VS Code extension for in-editor plan review, Pinpoint mode for point-and-click annotations, untracked files in code review |
| v0.11.0 | Auto-save annotation drafts, comment popover, Obsidian vault browser, deny message framing fix, configurable OpenCode timeout |
What's New in v0.14.3
v0.14.3 brings two major additions to the code review UI and a community bug fix for OpenCode permissions. The review panel now surfaces PR context directly alongside the diff, and a search system lets you find text across all changed files. 4 PRs, 2 from external contributors.
See the new PR features with:
codex: !plannotator review <github-pr-url>
others: /plannotator-review <github-pr-url>
PR Context Panel in Code Review
When reviewing a GitHub PR, the review panel now shows three additional tabs: Summary, Comments, and Checks. These appear as icon buttons in the panel header and load lazily on first click.
The Summary tab displays the PR description with full markdown rendering, labels as colored badges, linked issues, and the PR's state (open, draft, merged, closed). The Comments tab shows the full conversation thread in chronological order, merging regular comments and review comments with state badges indicating whether a review approved, requested changes, or just commented. The Checks tab shows merge readiness, CI check results grouped by workflow, and review approval status.
All GitHub-authored HTML content is sanitized through DOMPurify before rendering. The data layer uses a runtime-agnostic provider in @plannotator/shared that abstracts gh CLI calls, so the same fetching logic works across Bun and Node runtimes.
These tabs only appear when reviewing a PR URL. Local diff reviews are unchanged.
Diff Search in Code Review
The file tree sidebar now includes a search input. Type a query (or press Cmd+F / Ctrl+F) to search across all changed files in the diff. Results replace the file tree, grouped by file with match count badges. Clicking a result navigates to that file and scrolls to the matching line.
The search engine parses unified diff patches into searchable lines, handling additions, deletions, and context lines separately. Each match gets a stable identifier tied to file, side, and line number, so highlights survive re-renders. Active matches highlight in amber; passive matches in yellow. The highlight system traverses shadow DOM boundaries to reach into the diff renderer's internals.
Keyboard navigation works throughout: Enter and F3 step forward through matches, Shift+Enter steps backward, and Escape clears the search and restores the file tree. For single-file diffs (which have no sidebar), Cmd+F falls through to the browser's native find.
The search engine and highlight utilities were originally written by @sercantor in #344. The sidebar integration and DiffViewer wiring are new in this PR.
- #347, closing #343 filed by @sercantor
OpenCode Permission Normalization Fix
When OpenCode users configure the deprecated tools field on the plan agent (e.g., "tools": { "edit": false }), OpenCode's config resolver converts it to permission.edit = "deny" as a plain string. Plannotator's config hook then spreads that value to merge additional rules. Spreading a string in JavaScript produces { "0": "d", "1": "e", "2": "n", "3": "y" }, which corrupts the permission ruleset and triggers four zod validation errors at startup.
The fix adds a normalizeEditPermission() step that converts string values to wildcard objects ("deny" becomes { "*": "deny" }) before the spread. Object values pass through unchanged. This handles both the deprecated tools path and users who write permission: { edit: "deny" } directly.
- #345 by @rockneurotiko, fixing #338 reported by @rockneurotiko
Additional Changes
- Landing page revamp for plannotator.ai with editorial column layout, interactive terminal demos simulating plan review and code review workflows, agent-specific install commands, a capabilities grid, and a build-time contributor strip via GitHub's GraphQL API. All screenshots converted to WebP (42MB down to 620KB). #349
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: normalize permission.edit string on opencode plugin by @rockneurotiko in #345
- feat(review): VS Code-style diff search in file tree sidebar by @backnotprop in #347
- feat: landing page revamp by @backnotprop in #349
- feat(review): PR context panel — summary, comments, and checks by @backnotprop in #350
Contributors
@rockneurotiko reported the OpenCode permission corruption bug in #338 with a clear reproduction case showing the zod validation errors, then wrote the fix in #345 with full test coverage for all permission input shapes.
@sercantor filed the diff search feature request in #343 and built the search engine, highlight system, and React hook in #344. Those utilities were integrated into the sidebar in #347.
Full Changelog: v0.14.2...v0.14.3