Follow @plannotator on X for updates
Missed recent releases?
Release
Highlights
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
v0.28.17
The Inbox on iPads and narrow windows, the reply bar no longer cuts off "Keep open", a Pi crash on /reload fixed
v0.28.16
The Inbox on a phone, a doorbell for new questions, Mark read, step through a thread's files, replies when the asking session ended
v0.28.15
Long Inbox threads fold to what is new, "Skipped N questions" replies, Inbox list and sidebar fixes
v0.28.14
Agents can replace an earlier question, comment on a guided review in the Inbox, issue numbers link to the repository
v0.28.12
Update notices and plannotator update, attach any file to an Inbox message, questions with context, links to attached files
v0.28.11
plannotator inbox --help prints a full guide for agents, and the plannotator.ai/inbox install prompt
v0.28.10
The Inbox over your tailnet with plannotator inbox --tailscale, images in agent messages load, click anywhere on an attachment tile
What's New in v0.28.23
The main fix: Claude Code sessions that run background subagents get their Inbox replies again. Also in this release: dictated text no longer goes missing on Chrome 155-156 for macOS, 👍 Looks good now reaches the agent, Inbox notifications that never fail silently, and a run of Inbox improvements. 16 PRs, all by @backnotprop.
Inbox replies reach Claude Code sessions with background subagents
When a Claude Code session started a subagent (a background one included), the Plannotator mod counted the subagent's turn as the session's own and never saw it end. The session then read as busy for good, so Inbox replies to it waited forever and "Ask this session" said the session was busy. The mod now ignores subagent turns. Verified live on Claude Code 2.1.302.
The fix is in the Claude Code plugin, which updates separately from the binary. The install script updates a user-scope plugin for you; otherwise run claude plugin update plannotator@plannotator --scope user, then restart Claude Code.
Dictated text lands where you are typing
On Chrome 155 and 156 for macOS, text from dictation apps such as Hex (and text expanders) often failed to appear: the first dictation after a page load worked, later ones inserted nothing. This is a Chrome bug (crbug 568453825), fixed upstream for Chrome 157. Until then, Plannotator inserts plain-text pastes itself in the Inbox, plan review, annotate and code review. The workaround runs only on Chrome 155-156 on macOS and turns itself off at 157; Safari, Firefox and other browsers keep their own paste.
In the Inbox, a dictated paste also lands in the field you were writing in after a click moved focus away from it (a choice on a question card, the message text, a chip in the reply box, or a word you double-clicked).
👍 Looks good reaches the agent
👍 Looks good used to stay in the Inbox until the agent next read the thread. Now, once the 10-second Undo window passes, it goes to the agent that wrote the message, the same way a reply does: "The person marked your message 👍 Looks good. No reply needed unless you have a question." If you reply or the agent writes again inside the window, nothing is sent. The line under the message says whether it is queued, saved or delivered.
Inbox notifications never fail silently
Chrome grants notification permission per address, so an Inbox opened at 127.0.0.1 and later at localhost (or on a new port) quietly had none. The Inbox now always answers at http://localhost:<port>/, and when the address you are on has no permission it says so on every load with an Allow button. Settings → General shows whether notifications reach you right now, and through which tab, and has Send a test notification. A tab whose connection dropped also catches up on the notices it missed.
Thread names for threads you start
A thread you start from New message gets a short subject (the first sentence, with greetings and filler dropped) and a thread-name chip like the agents' threads. Type a name in the chip, or leave it and Plannotator suggests one from your message. Otherwise the agent that answers names it in its first reply; a name you typed is never replaced.
First run: one next step
The empty Inbox screen now shows one next step at a time, starting with Plannotator's own connections (Claude Code, Pi, OpenCode), which bring replies back into the session by themselves. It turns on a Pi or OpenCode Inbox tool with one click, gives the exact install command for a missing plugin, and moves on by itself once you install it. It also handles disabled plugins, a Claude Code mod that is turned off, OpenCode 1 and PLANNOTATOR_INBOX_TOOL=0 correctly. The Inbox tool's definition on Pi and OpenCode is about 40% smaller (7 KB instead of 11.7 KB per request).
Paste images into replies and new messages
Paste an image or a file into New message or the reply box and it attaches, with the same tiles and progress as the paperclip. Screenshots get a dated name. The agent gets the files with the reply.
Message images load from anywhere
An image an agent shows in a message now loads from any folder you can read, not only from the project, as attachments already did. Hidden folders outside the project and .env files are still refused. send_message now tells the agent which images will not show and why.
Search results name their thread
Every Inbox search result now shows the thread it belongs to, as the same chip the list uses: the thread's name, or its subject when it has none.
Additional Changes
- The "↓ N new" pill goes away once you have read the message, and does not come back when you scroll up (#1978)
- A thread you start shows in Sent at once, even while another thread is open (#1978)
- Thread header order: Mark read comes first and Archive sits beside the close (#1957)
- A cleaner What's new page with a sticky header, an "Update to X.Y.Z" button, and the releases you skipped still listed after you update (#1952)
- Copy prompt sits above What's new in the sidebar (#1951)
Install / Update
macOS / Linux:
curl -fsSL https://plannotator.ai/install.sh | bashWindows:
irm https://plannotator.ai/install.ps1 | iexClaude 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@plannotatorThen restart Claude Code. Inside Claude Code, run /plugin marketplace update plannotator, then open /plugin → Installed → plannotator → Update now.
Pi:
pi update --extensionsOpenCode: Re-run the install script above. It now also clears the OpenCode 2 plugin cache.
What's Changed
- Inbox: Copy prompt above What's new in the sidebar by @backnotprop in #1951
- Inbox: a cleaner What's new header (approved Toolbar design) by @backnotprop in #1952
- Inbox: paste images into New message and the reply box by @backnotprop in #1953
- Inbox: message images load from anywhere; send_message says which won't show by @backnotprop in #1954
- Inbox: dictated (pasted) text no longer goes missing in the reply box by @backnotprop in #1955
- Inbox: short names, a project badge, and agents name threads you start by @backnotprop in #1956
- Inbox: Archive next to close, Mark read first by @backnotprop in #1957
- Inbox paste: a selected word no longer stops the dictation by @backnotprop in #1959
- Inbox first run: one next step, Plannotator's own connections first; the Inbox tool's cost measured and cut by 40% by @backnotprop in #1962
- Inbox search: every result shows its thread as the list's chip by @backnotprop in #1965
- Inbox notifications never fail silently: one origin, a re-allow that stays, live status, test, reach by @backnotprop in #1967
- Text fields: insert plain-text pastes ourselves (Chrome 155-156 macOS dictation workaround) by @backnotprop in #1970
- Inbox first run: say the right thing on every Claude Code / Pi / OpenCode computer by @backnotprop in #1974
- Inbox: the new pill stays gone once read; a thread you start shows in Sent with a thread open by @backnotprop in #1978
- Claude Code mod: a subagent's turn no longer leaves the session busy for good by @backnotprop in #1979
- Inbox: 👍 Looks good is sent through to the agent by @backnotprop in #1980
Contributors
Every PR in this release is by @backnotprop. No linked issues this time; the fixes came from day-to-day use of the Inbox.
Full Changelog: v0.28.22...v0.28.23