github backnotprop/plannotator v0.28.20

6 hours ago

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
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
v0.28.9 Large Inbox messages through plannotator inbox mcp fixed, an Inbox sidebar you can close and resize, Edit Mode in reviews of several files, the new Pi logo
v0.28.8 The Plannotator Inbox (preview): messages, questions, files and guided reviews from your agents in one local window
v0.28.7 Ask this session keeps your drafts as drafts, image comments survive a reload, hostname check on every server

What's New in v0.28.20

The Inbox gets search: one box that finds threads, messages, answers, files and decisions, and opens a result on the exact message. Most of the rest comes from one exercise: we filled an Inbox with worst-case data (long and duplicate project names, right-to-left text, emoji, huge counts, old dates, panoramic screenshots, minified files, multi-megabyte logs) and looked at every screen at every width. That found 75 places where the Inbox broke, and two PRs fix most of them. The release also changes what happens when you reply to an agent with words only, and stops a hung agent command from outliving the Inbox. 7 PRs in all.

Search the Inbox

Search sits at the top of the Inbox sidebar, and ⌘K (macOS) or Ctrl+K (Windows and Linux) opens it from anywhere in the window, the reply box included. It is the Inbox's one keyboard shortcut. On macOS, Ctrl+K keeps its usual text-field meaning.

Results come back grouped: threads, messages, questions and your answers to them, your replies, file names, decisions and projects. Filters narrow them by project (it starts on the project you have open, and one click searches everywhere), by status, and by who wrote it. Opening a result lands on the exact message, unfolds it if the thread had folded it, and highlights your search words in it; a match in a question lands on its card. Back returns you to where you searched. ⌘/Ctrl+Enter opens a result in a new tab. The searches you opened come back as recent searches the next time, with a Clear button. On a phone, search is a full-screen sheet, reached from the sidebar or a search icon in the list header.

Search stays fast on large Inboxes. On a test Inbox of 4,000 threads and 30,000 messages, most searches take a few milliseconds, including searches for ids and log timestamps inside multi-megabyte logs. Short commit hashes of 7 characters or more find the full hash. Matching ignores case and accents (resume finds résumé) and works in scripts written without spaces, such as Chinese, Japanese and Thai. The index is built the first time you search (the window shows "Indexing N threads…" for a second or two on a large Inbox), kept in memory on your computer, and updated as messages arrive. Nothing is sent anywhere, and the search routes refuse requests from other websites.

The Inbox holds up with real-world data

Project names are now the folder's real name, taken from where the project lives, instead of the shortened tag used for storage. When two projects share a name, each also shows its parent folder ("api · work"), and the "N new in X" notice counts them as two. Plan history, the feedback archive and the stored project folders do not move.

Dates and text read correctly. A time from another day shows the day ("Oct 10, 8:22 PM"), a time from another year shows the year, and the full date is in the hover text. Names, subjects and message paragraphs in right-to-left scripts take their direction from their own text, while centered HTML in a message stays centered. Shortened text is never cut inside an emoji or a combined character, counts get thousands separators, and a name that is cut shows the whole name on hover.

File names are cut in the middle so the end and the extension stay visible, in tiles, the gallery caption, the stepping bar, the file header and the download card. Copying a cut name gives the plain name, and a screen reader hears the whole name. A changed tile says "Changed" with the day or time on one line, and keeps its annotation count.

Things that grow now stop growing: the reply box, the decision form, the New message picker and the "where should this reply go?" chooser each have a height limit, and their contents scroll inside it so Send and Back stay in view. Narrow windows got their own pass: Decisions switches to two-line rows under 960 px, the list header cuts its title and path with "…", the Storage table keeps size and Delete on one line, install commands wrap in full, and the update dialog lists five open sessions and then "and N more". On a phone, tables wrap at word boundaries, the "↓ N new" pill no longer pushes the reply area around, the Comments sheet covers the file in landscape, and tall images in a message are cropped from the top.

At 1280 and 1440 px with ordinary data, the list, threads, open files, Settings and Decisions are pixel-identical to the previous release.

Files, images and question cards

When an open file is beside a thread and the pane is narrower than 780 px, the comments panel now folds into a Comments button in the file header and opens over the file. Before, it squeezed the file at medium window widths. A guided review folds its panel the same way under 1,200 px; previously it was hidden at 900 px and below with no way to open it. A PDF or other download no longer shows an empty comments panel.

Behavior change: log, YAML, CSV, JSON and other data files now open in the code view in the Inbox, with line numbers, highlighting and line comments. .txt files keep the text view. Comments left on such files before this release were text comments, so they show as Unanchored; their text is kept and still goes out with your reply.

Files with a line over 1,000 characters (a minified bundle, a log line) wrap instead of scrolling sideways forever. A comment on a very long line stores an excerpt of the line instead of the whole thing. Panoramic screenshots crop to a 4:1 strip in a message's gallery and scroll sideways in the viewer, and an image smaller than its box is drawn at its own size.

Two fixes to question cards reach plan review and annotate as well as the Inbox. A choice question whose recommendation names none of its choices now shows the recommendation as a "Suggested" line instead of dropping it, and a read-only card no longer draws an empty "Other" row. In guided reviews, the "Everything else" card is no longer numbered, so the card count matches the header, and headings inside a section's text render as headings.

A reply with only words leaves the questions open

Behavior change. Since v0.28.16, a Send skipped every question it left unanswered unless you pressed Keep open. That made sense when you answered some questions and not others, but a reply with only words ("let me check with the team first") also closed every question as skipped, and the agent moved on without the answers.

The skip chip under the reply box now starts from what the Send carries. A Send with no answer in it (words, annotations or both) keeps the questions open. Once at least one question is answered in the Send, the chip switches to skipping the rest, as before. Clicking the chip still decides either way.

The agent gets your words followed by one line, such as "No questions answered yet; all 3 are still open. Don't re-ask them; the person will answer in the Inbox.", then any file comments. Replies that answer at least one question are unchanged.

A hung agent command no longer keeps running after the Inbox stops

Since v0.28.18, the Inbox can connect your agents by running their own CLIs (codex mcp add, gemini mcp add, amp mcp add and so on), each with a time limit. If one of those commands hung and the Inbox quit, restarted to update, or reached the overall time limit first, the command was left running in the background indefinitely. It is now stopped in each of those cases. A command that finished on its own is left alone.


What's new shows the notes for a version you installed yourself

The Inbox saved release notes only from its daily update check, so a version installed with the install script before that check ran showed a "What's new" link that opened to "No release notes for that version." The Inbox now fetches that version's notes once when they are missing, and shows the link only when there are notes to show. With update checks turned off it never contacts GitHub.

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

Full Changelog: v0.28.19...v0.28.20

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.