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 Codex install guidance by @leoreisdias in #720
- fix(review): persist file comment drafts across close/reopen by @codythatsme in #721
- feat(review): pick a commit as the diff base by @backnotprop in #723
New Contributors
- @madhusudancs made their first contribution in #702
Community
@madhusudancs built the jj evolution diff mode from scratch, adding a new diff type, the evolog parser, and the evolution log picker UI.
@codythatsme contributed file comment draft persistence, a small change that removes the friction of accidentally closing a comment popover mid-thought.
@leoreisdias contributed two Codex improvements: updating the hooks feature flag name to match the current CLI, and adding setup guidance to the install script output.
Issue reporters who drove fixes in this release:
- @sushi30 requested commit-based diff comparison in #709
- @pcfreak30 reported the OpenCode context-blowing issue in #713
- @xjme reported the GitLab JSON pagination failure in #714
- @nohzafk reported lost GitLab inline comments in #680
- @Thraka reported the loose list indentation bug in #704
- @hearkenmx reported the PLANNOTATOR_PORT=0 warning in #715
Full Changelog: v0.19.14...v0.19.15