github backnotprop/plannotator v0.28.31

3 hours ago

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.28.30 An Artifacts view in the Inbox, comments on part of an image, diagrams in code review, Ask AI keeps its conversation in annotate
v0.28.29 Plan review opens on OpenCode 2, a DOMPurify security update, closing a review stops the agent everywhere
v0.28.27 Jump to open questions, files side by side or full screen, image zoom in the Inbox, empty To field, text size for plan review and annotate
v0.28.26 Action items and reply drafts in the Inbox, one decision button for plan review, Enter to save a comment, a custom code font
v0.28.25 Re-ask open questions, delivery ticks on the list, a count of new messages on the tab, right-click a thread, click Inbox to refresh
v0.28.24 A new look for the Inbox, Send now, tag agents, comment on an agent's message, much smaller reads for agents, links in HTML pages
v0.28.23 Inbox replies reach sessions with background subagents, dictated text no longer goes missing, 👍 Looks good reaches the agent, notifications that never fail silently
v0.28.22 👍 Looks good, full view for files, one viewer for a thread's images and files, every session prints its URL, PLANNOTATOR_BROWSER=none opens nothing
v0.28.21 Message an agent from the Inbox, video attachments, Open in for attachments, Code / Tests / Generated in code review, writes from other websites refused
v0.28.20 Inbox search (⌘K), real folder names for projects, data files open in the code view, word-only replies leave questions open
v0.28.19 Ask this session in T3 Code, folder sessions load shared stylesheets and images, the agent note asked once per agent, Copy connect prompt
v0.28.18 plannotator inbox connects your agents, agents are told when to use the Inbox, rendered Markdown in code review, Inbox Settings in sections

What's New in v0.28.31

An onboarding tour for the Inbox, pinned threads, picture choices in questions, palettes in Inbox Settings, tailnet reviews from the Claude Code plugin tool, and the right gh account for a PR. 39 PRs, four of them from a first-time contributor, @utpalsinghdev.

Plannotator Inbox

An onboarding tour

A first run now opens on a screen explaining that the Inbox works beside the agents you already run, with two choices: take the tour or connect your agents. The tour replays a real thread from building the Inbox (a question with pictures, the reply, the next messages) and writes nothing to your Inbox. Returning users find it in Settings → General → Getting started.

The Inbox first-run screen

Pin threads

Pin a thread from its right-click menu or the pin in its header. Pinned threads sit in the sidebar above Projects with their state, keep their place in the list, and stay pinned when archived.

Pictures and stakes in questions

An agent can put a picture on each choice, and a question card shows them as tiles you pick from, with a zoom button. Optional Stakes:, Shows:, Why: and Reversible: lines show under the prompt and the choices. A recommendation that names the start of a choice (Recommended: Unpin it for - Unpin it: …) now marks that choice.

Skip questions from the open-questions list

Skip… at the foot of the "N open questions" list lets you tick the questions to skip, or Skip all. Skips wait in your draft until the next Send.

Palettes in Inbox Settings

Settings → General → Appearance → Colors picks the palette for the light and the dark half, the same setting plan review's Theme tab uses.

The palette picker in Inbox Settings

Step through files on a phone

Full screen on a phone has a 4/9 ⌄ pill for every file in the thread, and a sideways swipe steps to the next or previous file.

Smaller changes

  • The Inbox says which agents your reply wakes. Claude Code, Pi and OpenCode 2 get it as a new turn on their own; agents through MCP see it when they next check. Agents nothing wakes are told to call wait_for_reply. #2168

  • Every wake ends with a line naming the thread id, read_thread and plannotator inbox --help. #2143

  • The Claude Code mod never steers into or aborts another plugin's turn. A reply waiting on such a turn goes in when the session is idle. #2176

  • The Inbox reminder reaches Team/Enterprise Claude Code sessions and comes back after compaction. #2167, closing #2159

  • No more "hook was skipped" notice at every permission prompt on Team/Enterprise accounts. #2160

  • The first-run screen asks for notifications, so the first question can notify. Your own sent reply shows your words and a short list of your answers. #2148

  • A dot on the sidebar toggle when an update is waiting and the sidebar is closed. #2135

  • Cursor gets the agent note as text to paste into its Rules (plannotator inbox --notes cursor). #2153 by @utpalsinghdev, closing #1991

  • Agents are nudged to attach a screenshot for something visual. #2175

  • An image the Inbox cannot load shows as its alt text, not a broken icon. #2177

    An image the Inbox will not load, shown as its alt text

  • Images and code in a choice keep their corners; only the Recommended tag is a pill. #2179

  • Decision mode is experimental and off by default. It clears what agents ask across threads one decision at a time; turn it on in Settings → General → Experimental. #2141, #2154

Plannotator

Tailnet reviews from the plugin tool

The plannotator tool in Claude Code takes a tailscale option, so a review the agent opens can be read on your phone over Tailscale. Ask this session keeps working there for the Tailscale login that owns the machine; anyone else on the tailnet gets the separate Ask AI.

The gh account that can see the PR

With two accounts signed in to gh, plannotator review <PR URL> now uses the one that can read the PR, for that review only. Your gh setting is unchanged, and an invalid GH_TOKEN is named.

A fixed port for live app annotation

PLANNOTATOR_LIVE_PORT sets the live app proxy's port (or a range), so live annotation works over an SSH port forward.

Plannotator Graphite

A new palette with a lighter, near-neutral dark half that stays readable in a bright room. Pick it in Settings → Theme.

Smaller changes

  • A broken config.json is no longer overwritten. A settings save refuses, says how to fix the file, and leaves it as it was. #2178
  • Session secrets no longer reach child processes. The Ask this session token and the decision-file paths stay out of git, gh and the agent CLIs a review starts. #2169
  • A new release shows within minutes. Update checks read GitHub's latest-release link, and the review-window toast shows at most once a day. #2133, #2135
  • Cursor review jobs never start another program named agent. #2173
  • Linux folder watches no longer exhaust inotify on large repositories. #2155 by @utpalsinghdev, #2163, closing #1439
  • Replacing an Ask AI question in Pi no longer stops the running turn. #2126 by @utpalsinghdev, closing #2038
  • Back in a multi-file annotate session keeps your place. #2129, closing #2128
  • The image viewer says how to zoom when the wheel starts scrolling. #2131, closing #2127
  • The diff shows again after switching through an empty diff in code review. #2180
  • Guided Review viewer uploads retry and publish the entry last, so a failed deploy cannot leave exported guides unstyled. #2150
  • Dependency updates, including Mermaid 12.2. #2152

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows:

irm https://plannotator.ai/install.ps1 | iex

Claude Code Plugin: The plugin and the plannotator binary update separately, so run the install script above as well. In a terminal:

claude plugin marketplace update plannotator
claude plugin update plannotator@plannotator

Then restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.

Pi:

pi update --extensions

OpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.

What's Changed

  • fix: preserve Pi turn when replacing an Ask AI question by @utpalsinghdev in #2126
  • fix: Back in a multi-file annotate session keeps the reader's place by @backnotprop in #2129
  • Image viewer: say how to zoom when the wheel starts scrolling by @backnotprop in #2131
  • Inbox: skip a question from the open-questions list by @backnotprop in #2132
  • Update notices: check GitHub's latest-release link often by @backnotprop in #2133
  • Update notices: toast once a day, dot on the sidebar toggle by @backnotprop in #2135
  • Inbox: skip from the questions list with a select mode by @backnotprop in #2136
  • Add the Plannotator Graphite dark palette by @backnotprop in #2137
  • Inbox: choose light and dark palettes in Settings → Appearance by @backnotprop in #2138
  • Question cards: match a recommendation to the choice it begins by @backnotprop in #2139
  • Inbox: pin threads to the sidebar by @backnotprop in #2140
  • Inbox: decision mode (experimental, off by default) by @backnotprop in #2141
  • Usage counts for experimental features, phase 1 (nothing is recorded or sent yet) by @backnotprop in #2142
  • Inbox wake: a closing line with the thread id, read_thread and --help by @backnotprop in #2143
  • Question blocks: optional Stakes, Shows, Why, Reversible and picture choices by @backnotprop in #2144
  • fix: support fixed ports for live app proxies by @utpalsinghdev in #2145
  • Inbox first run: notifications ask on the first-run screen; your sent reply in your own words by @backnotprop in #2148
  • guides.show: retry viewer uploads, publish entries last, verify every file by @backnotprop in #2150
  • Live proxy port: tests for PLANNOTATOR_LIVE_PORT, one-line errors for EACCES by @backnotprop in #2151
  • chore(deps): bun minor and patch group by @backnotprop in #2152
  • fix: offer manual Inbox notes for Cursor by @utpalsinghdev in #2153
  • Decision mode: the agent contract lines on the Queue card by @backnotprop in #2154
  • fix: watch directories instead of files on Linux by @utpalsinghdev in #2155
  • Inbox: the onboarding tour by @backnotprop in #2156
  • fix(mod): only take ExitPlanMode PermissionRequest events by @backnotprop in #2160
  • feat: use the gh account that can see the PR by @backnotprop in #2161
  • fix: Linux folder watches keep working past the cap and unreadable folders by @backnotprop in #2163
  • Inbox: step files on a phone with the toolbar pill and a swipe by @backnotprop in #2164
  • Inbox reminder reaches Team/Enterprise sessions and survives compaction by @backnotprop in #2167
  • Inbox: say plainly which agents a reply wakes by @backnotprop in #2168
  • fix: scrubbed env vars no longer reach child processes by @backnotprop in #2169
  • Tailnet reviews from the plugin tool, with Ask this session for the machine's owner by @backnotprop in #2170
  • Code review: Cursor agent jobs never start another program named agent by @backnotprop in #2173
  • Inbox: nudge agents to attach a screenshot for something visual by @backnotprop in #2175
  • Claude Code mod: never steer into or abort another plugin's turn by @backnotprop in #2176
  • Inbox: draw an image the window cannot load as its alt text by @backnotprop in #2177
  • Inbox tour: fix the QA findings; never write over an unreadable config.json or pins.json by @backnotprop in #2178
  • Inbox: keep the pill on the Recommended tag, not on images or code in a choice by @backnotprop in #2179
  • Code review: show the diff after a switch through an empty diff; name a rejected GH_TOKEN by @backnotprop in #2180

New Contributors

Community

Full Changelog: v0.28.30...v0.28.31

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.