Follow @plannotator on X for updates
Missed recent releases?
| Release | Highlights |
|---|---|
| v0.17.7 | Fix "fetch did not return a Response" error in OpenCode web/serve modes |
| v0.17.6 | Bun.serve error handlers for diagnostic 500 responses, install.cmd cache fix |
| v0.17.5 | Fix VCS detection crash when p4 not installed, install script cache path fix |
| v0.17.4 | Vault browser merged into Files tab, Kanagawa themes, Pi idle session tool fix |
| v0.17.3 | Sticky lane repo/branch badge overflow fix |
| v0.17.2 | Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments |
| v0.17.1 | Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix |
| v0.17.0 | AI code review agents, token-level annotation, merge-base diffs |
| v0.16.7 | Gemini CLI plan review, install script skills directory fix |
| v0.16.6 | Perforce support, Pi shared event API, suggested code prefill, file tree expand fix |
| v0.16.5 | Resize handle scrollbar fix, VS Code Marketplace publish |
| v0.16.4 | Compound planning improvement hook, GitHub Enterprise + self-hosted GitLab, dockview workspace, new themes |
What's New in v0.17.8
v0.17.8 fixes a data loss bug in annotate mode, makes the default code review diff view configurable, adds a way to close a review session without killing the agent, and improves markdown rendering across the board. Four PRs in this release, including the first contribution from @gwynnnplaine and @githendrik.
Configurable Default Code Review Diff Type
The default diff view in code review used to be uncommitted, which combines staged and unstaged changes. That doesn't match git diff semantics — running git diff in your terminal shows only unstaged hunks. Users who stage hunks as they review them had no way to focus on just the unstaged remainder without manually toggling the dropdown every session.
This release switches the default to unstaged and makes it user-configurable. The first time you run a local code review session after upgrading, a setup dialog asks which view you'd prefer as your default. The choice is persisted to ~/.plannotator/config.json and can be changed any time from Settings > Display. P4 users keep their existing default (p4-default); the dropdown still works for one-off switches during a session.
- #531, inspired by #521 from @githendrik, related to #287 from @prashanth057
Close Button to Exit Review and Annotate Sessions
Once you opened a Pi PR review with /plannotator-review <pr-url>, there was no obvious way to end the session without killing the entire Pi agent. The review UI had no "Close" or "Done" affordance, so finishing meant either submitting feedback you didn't want to give or terminating the agent and losing context.
A Close button now lives in the review and annotate toolbars. When you have annotations queued, it flips to "Send Feedback" so the action always reflects what's about to happen. On the server side, a new /api/exit endpoint resolves the session cleanly without going through the feedback path. This works in both review and annotate flows.
- #523, closing #522 reported and fixed by @gwynnnplaine
Markdown Rendering Improvements
A handful of long-standing rough edges in the markdown renderer used by plan review and annotate mode are addressed in this release.
Bullet markers in multi-line list items used to float to vertical center; they're now pinned to the top of the first line so the marker sits where you'd expect. Bullet glyphs are consistent across nesting levels. Strikethrough (~~text~~) renders as <del>. Triple-asterisk ***bold italic*** parses correctly instead of getting eaten by the double-asterisk pass. Backslash escaping (\*, \_, \`, \[, \~) renders the literal character without showing the backslash. Autolinks (<https://url> and <email@domain.com>) become clickable links. Checkbox icons are nudged 3px down to align with the text baseline.
A test fixture covering all of these cases now lives at tests/test-fixtures/10-inline-gaps-and-bullets.md.
Annotate Data Loss Fix on Linked Document Submission
When running plannotator annotate on a markdown file with links to other files, annotations left on the original file were silently dropped if you clicked "Send Annotations" while viewing a linked document. The submission endpoint only sent annotations from the currently-viewed file, so a careful round of annotations on the original could disappear with no warning, no recovery path, and nothing persisted to disk.
The bug was in useLinkedDoc.open(): it stashed original-file annotations into a ref before swapping React state to the linked doc, but getDocAnnotations() only read from the doc cache and the active linked doc — never from the stashed state. The submission pipeline never saw the original file's annotations. The UI also showed the wrong count, because docAnnotationCount only updated on back() rather than on every navigation.
Both are fixed. The hook now exposes a sourceFilePath option so getDocAnnotations() can pull stashed annotations back into the submission payload, and the count updates immediately on navigation. Plan mode, folder mode, and annotate-last were never affected.
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows PowerShell:
irm https://plannotator.ai/install.ps1 | iexPin a specific version:
curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.8Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".
Copilot CLI:
/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator
Gemini CLI: The install script auto-detects ~/.gemini and configures hooks, policy, and slash commands.
OpenCode: Clear cache and restart:
rm -rf ~/.cache/opencode/packages/@plannotator ~/.bun/install/cache/@plannotatorThen in opencode.json:
{
"plugin": ["@plannotator/opencode@latest"]
}Pi: Install or update the extension:
pi install npm:@plannotator/pi-extensionVS Code Extension: Install from the VS Code Marketplace.
What's Changed
- fix(annotate): include original file annotations when submitting from linked doc view by @backnotprop in #536
- feat(review): configurable default diff type by @backnotprop in #531
- fix(review): add Close button to exit Pi review session by @gwynnnplaine in #523
- fix: improve markdown rendering and bullet alignment by @backnotprop in #530
New Contributors
- @gwynnnplaine made their first contribution in #523
Community
@gwynnnplaine filed #522 about being unable to end a review session without killing the Pi agent, then turned around and shipped the fix in #523 — issue and resolution from the same person, which is the kind of contribution that makes this project tick.
@gwtaylor filed a careful, well-reproduced bug report in #535 for the annotate data loss bug, including UI screenshots, reproduction steps, and root-cause analysis. That report made the fix in #536 straightforward to land.
@githendrik opened #521 asking for an unstaged-only review view to support a stage-as-you-review workflow, which became the configurable default diff type in #531. @prashanth057's earlier #287 on diff view options provided context for the broader design.
Full Changelog: v0.17.7...v0.17.8