github backnotprop/plannotator v0.28.62

2 hours ago

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
v0.28.61 Updates now update the Claude Code plugin too, an agent's chosen face shows on every icon of it, filter the Inbox list by pull request state, Modern dark shows section bands and the Reply button, one conversation no longer shows as two agents
v0.28.60 Click a word to highlight it, a one-time Themes dialog, Settings → Rows rebuilt, tell your agent how you want your rows, starred threads as pills above the list, a pill for new messages out of view, a half-circle face picker with ten Glass colours, a new phone sidebar and reply box
v0.28.59 A quieter Agents section in the sidebar, machine names only when agents run on more than one machine, agent icons that are always gently alive and lean toward your pointer
v0.28.58 Start Codex from New message, an Agents section in the sidebar, start an agent in a folder on any drive, play audio attachments and comment at a moment, Claude Code's Plannotator tools work on Windows
v0.28.57 Pin artifacts, and see every artifact on one page, filter the list by project, date or agent, a thread shows its pull requests and their state, choose what the sidebar shows, and in what order, Ask AI starts from Side in the selection bar
v0.28.56 Questions can show trade-offs and a prototype to try, a thread with many big pictures no longer crashes the tab, Escape closes New message and keeps your draft, read threads stop being bold and keep their place, agent messages that name no thread start a new one
v0.28.55 Floating reply drafts, now a setting under Experimental, open questions sit next to Reply again, a comment box that keeps unsent comments as Drafts, choose how your list looks: Minimal, Balanced or Detailed, update an older linked machine from this Inbox
v0.28.53 Start an agent in a new folder, or from a git URL, "+" on each project row starts a session there, a reaction tray, a thread's Links, Settings → Activity, New message offers the open thread's files, Bro mode: agents write to you in plain words
v0.28.52 Start agents from the Inbox, on by default, a new reply box, Ask AI for everyone, Insights in Settings → Decision data, Plannotator reloads itself after an update
v0.28.51 Starred threads, a note when an agent's session has ended, "Back from snooze", Ask about a past decision, expand arrows in guided reviews
v0.28.50 A faster, lighter Inbox, session names across the Inbox, initiatives on the Board, earlier comments on a file, global comments on Guided Reviews
v0.28.49 A checklist for each thread, a pill that shows who gets your reply, a calmer full screen, Inbox replies in T3 Code, --title for review and annotate

What's New in v0.28.62

TL;DR

  • Fixed: Agents started from the Inbox now work on Windows
  • New: Pick a model and effort when you start an agent
  • New: Rules for your agents, written in your own words
  • New: Post a thread's decisions on its pull request
  • Changed: The Inbox loads faster on a slow connection

0.28.62 is a large release. Starting agents from the Inbox now works on Windows, you can choose a model and effort for a new session, and you can give your agents your own rules. It has 57 PRs. Five come from external contributors, and three of those are first contributions: welcome @ilyaZar, @solatis and @tommyent.

Windows

Agents started from the Inbox work on Windows

On Windows, a session started from New message got an empty environment: no PATH, no user profile and no sign-in variables. Claude Code then showed "Not logged in" and never connected to the Inbox, even when the Inbox itself said Claude Code was signed in. Sessions now start with the Inbox's own environment, less Plannotator's own variables. Respawns get it too, and the settings file the Inbox writes for each launch carries PATH again. macOS and Linux are unchanged. #3154

New message's folder box now reads the paths people type and paste on Windows. C:\Users\me\code, c:/users/me/code, ~\code and a file:///C:/... link all work, and a pasted path keeps its backslashes. A folder outside your home folder, a system folder such as C:\Windows, or a folder Windows hides (such as AppData) now gets a plain note that says why it isn't offered, where before each one said "That isn't a full path." Folders on other drives are still not offered. #3156

No more console windows flashing up

A console window opened by itself every few minutes while the Inbox was running. It came from the gh and glab lookups behind pull request marks and hover cards. Every command Plannotator runs in the background now starts hidden: in the Inbox, plan review, code review, annotate, Pi, and the OpenCode, T3 Code and Amp plugins. Things that are meant to open a window, such as your browser, your editor or Explorer, still do. #3143

Paths with an apostrophe in Claude Code's slash commands

In Claude Code on Windows, a path with an apostrophe, such as C:\Users\me\O'Brien\plan.md, lost the apostrophe when passed to /plannotator-annotate or /plannotator-review, and the rest of the line ran into one word. On Windows a single quote is now an ordinary character, and only double quotes group words with spaces, as on a Windows command line. Git Bash and PowerShell get the same words. macOS and Linux are unchanged. #3161

Starting agents from the Inbox

Pick a model and effort

When New message starts a new session, the To line now ends with a quiet "Default model" button. If you leave it alone, nothing changes. Open it to pick a Model and an Effort for Claude Code or Pi; the lists come from the installed CLI's own help. Your choice is remembered per machine and agent, reused by Try again and respawn, and shown in the thread header (for example "· opus · high"). Settings → Agents → Claude Code has Model and Effort defaults.

Settings → Agents also has a Claude settings file. Its keys are merged into the settings the Inbox writes for each session it starts, so a Claude Code profile that points at a company gateway also applies to sessions started from the Inbox. A missing or invalid file is reported on the run line by its path only, and its contents are never logged or sent anywhere. #3097, closing #3064 by @rqres

A plugin turned on only in the project counts

If you turned on Plannotator's plugin only in a project's .claude/settings.json or .claude/settings.local.json, the Inbox refused to start Claude Code there and said the plugin was off. It now reads the settings for the folder it starts in, in Claude Code's own order: managed settings, then the project's local file, then its shared file, then your user settings. A project can turn the plugin on for itself, or off. #3144, closing #3065 by @Arobotmaster

The first agent on a new Inbox

On a new Inbox with no projects yet, New message said "No agent is running" and offered nothing to start, so the first agent could never be started from the Inbox, on any platform. It now offers to start a new session in a new scratch folder. #3159

Plannotator Inbox

Rules for your agents

Settings → Prompts has a new box at the top, Rules for your agents. Write how you want agents to use the Inbox in your own words, such as "Only message me when you are blocked or done" or "Keep messages under 10 lines", and choose who they are for: all agents, Claude Code, Pi or OpenCode. Plannotator's own reminder stays. Your rules come after it, with one line that tells the agent they come from you and win over the lines above. Agents get them at session start and again after a compaction. With no rules, agents get exactly the same text as before.

The long built-in reminder is now folded into one row, "Reminder text · Default", and replacing it works as before. A one-time "Set the rules" dialog points to the new box, once you have used the Inbox for two days and have ten threads. In config.json the rules are prompts.inbox.rules, or prompts.inbox.runtimes.<agent>.rules for one agent. #3145, toward #2194 by @zane668

Your Guided Review instructions, everywhere

Settings → Prompts also has a Guided reviews row for your standing instructions, the text added to every guided review, whether it starts from the Inbox, the review page or VS Code. Before, the Inbox could not show or edit them. #3134

A guide an agent writes through the Inbox now follows those instructions too. Before, only guides started from the review page or VS Code did. #2956 by @solatis

Export a thread's decisions, or post them on its pull request

A thread's ⋯ menu has Export decisions. It downloads every question in the thread with its state, as Markdown that reads well on GitHub or as one HTML file that makes no outside requests. Decisions come first, then the questions still open, skipped, set aside and so on. Session ids and machine names are left out, your home folder becomes ~, and local network addresses become "(local link)". #3080

From the same menu, or the Post decisions button on a pull request in the thread's PR card, one click puts the thread's decisions on that GitHub pull request or GitLab merge request. By default they go into the description as one section at the end; posting again replaces only that section and leaves the rest of the description as it was. You can choose a comment instead, or a short section with the full version in a comment. When you can't edit the description, it posts a comment and says so. Agents and scripts can do the same with plannotator inbox export-decisions --thread <id>. #3083

Your own agent icons

The agent face picker has two new places. Your own… takes a picture you pick, drop or paste, and shows it as that agent's icon everywhere its face shows. An animated GIF moves in the sidebar only. #3087

Sets offers four built-in icon sets you can search by name or number: Tiny Creatures, game-icons.net, Dungeon Crawl tiles and Noto Emoji 3D. More sets can be downloaded from the picker; your own Inbox fetches a set once and keeps it, so it works offline after that. #3090

Under your own picture, Animate it opens New message with the request and the picture filled in. Send it to an agent, and the animated result replaces the icon in every window. Use the original puts your picture back. #3105

The icon dialogs also got ten fixes from a phone, touch and slow-link pass. A tap now picks a face on an iPhone or iPad, and a still photo over 512 KB is shrunk instead of refused. #3122

Rows show the latest message, and which session

The grey line under a thread row now shows the thread's latest message instead of its subject, like a mail app: the newest unread agent message, your own reply as "You: …", "Asked: …" for a question and "You answered: …" for your answer. In Settings → Rows, "Subject preview" is now "Preview", and a saved choice carries over. #3006

In a project with two or more live sessions, each row now shows the session's name in place of the project name, so you can tell them apart. Projects with one session look as before. #3095

Mark read asks before setting questions aside

Mark read can close a thread's open questions and action items and tell the agent not to wait on them. It did that without a word. Now the Inbox asks first, but only when something would be set aside; otherwise Mark read stays instant. This covers every way to mark read, including E and a project's Mark all as read. "Don't show this again" can be turned back on in Settings → General → When an agent asks you. #3079

More in the Inbox

  • Click an agent to see its threads. A click on an agent in the sidebar's Agents section now filters the list to that agent's threads. Click it again to clear. Before, it opened the last thread the agent wrote in. #3081
  • Mark read and Snooze moved into the thread's ⋯ menu, to give the title more room. E and H work as before. #3126
  • Pictures on comments. Every comment box in the Inbox has the picture button Annotate has. The picture goes to the agent as an attachment of the reply that carries the comment. #3148
  • "Other" takes several lines. The "Other…" field under a question's choices grows with what you type, and the agent receives the lines as lines. #3078
  • Show a thread in the open window. plannotator inbox --open <thread> moves the Inbox window you used last on this computer to that thread, the same as a click on its row, or opens a new one. #3130, closing #2506 by @timmo001
  • Install the Inbox as an app with a sharp icon. The Inbox now has a web app manifest, so installing it from Chrome or Safari gives a sharp Dock icon in your favicon style. The unread count shows on the app's icon too, where the system allows it. #3056 by @tommyent, #3147
  • Tailscale publishes again by itself. With "Reach the Inbox over Tailscale" on, a publish that failed because Tailscale was off or still starting is now tried again until Tailscale is back, and Settings updates without a reload. #3128

Your phone and other devices

Fewer limits between your own devices

Plannotator treated your phone, iPad and other computers on your tailnet as strangers in many places. Now, over Tailscale, they get what the computer gets: you can pair a phone, link or unlink a Mac, change tailnet settings, see first-run prompts and What's new, see project pictures, and delete a launched agent from a phone-width page. Open in, Open in Terminal and Choose in Finder still stay on the computer, since they would open on its screen.

Several silent cuts are gone too. Long answers, long "Other" answers and long notes in a question arrive whole, a question keeps every choice, and agent names are no longer cut at 40 characters. Guided Review instructions can now be 12,000 characters (were 2,000) and the custom Inbox reminder 9,000 (was about 4,100), with a count near the limit. Ask AI reads up to 300,000 characters of a plan, document or diff.

Over SSH, a request that comes through your own tunnel or editor port forward now gets what a local session gets, such as Ask this session and link hover cards. PLANNOTATOR_REMOTE=1 still means remote mode for every request. #3121

On a phone or tablet

  • "Transcribing…" stays in the reply box. While dictation transcribed, the "Transcribing…" marker could run past the box's edge and under the ⌄ button. It now stays inside the box, on the next line when needed. #3208
  • Hold a row for its menu. On a touch screen, holding a thread row opens the same menu a right-click opens on a desktop: as a bottom sheet on a phone, under the row on an iPad. A tap still opens the thread at once. #3131
  • One tap opens a row on an iPad. On an iPad, opening a thread from the list, or a project or starred thread from the sidebar, could take two taps. One tap now does it, and the sidebar's ⋯ and + buttons always show on a touch screen. #3129, #3137
  • The pull requests sheet. On a phone, a thread's pull request list was drawn as a narrow strip with cut titles. It is now a proper bottom sheet, like the thread's ⋯ sheet, and a tablet gets the card under the button. #3127

A faster Inbox on a slow connection

Compression and caching used to apply only over Tailscale. They now cover every way you reach the Inbox, including a plain proxy or an SSH tunnel. On a test link with 300 ms delay and 1 Mbit/s, the first load went from 71 s to 25 s and a reload from 20 s to under 1.5 s. #3088

The window also asks the server less. Typed answers save after a short pause instead of on every key, threads you click past are not loaded, and Mark read, Archive and Star show at once (on the same test link, Mark read went from 742 ms to 10 ms). When two windows answer the same question, the later click wins with no error. #3089

Code review

Call tree

Code review's Call flow tab has a new Call tree view, and it opens there by default: the change's calls drawn as one indented tree, with red and green bands for removed and added calls. Hunks that have a tree get a "Call tree" entry that opens it, rooted at the function around the hunk. In the tree, Enter opens the line and C adds a comment. Paths and Raw are one click away. #3086

Pictures and videos in a pull request open in Artifacts

In a PR description and the Comments tab, a click on a picture now opens the Artifacts panel at that picture, large, where you can comment on a point. Before, nothing happened. A video GitHub saved as a bare link opens in Artifacts too, plays through the server (private repositories too) and takes comments at a moment; Cmd/Ctrl-click still opens GitHub. Screenshots written as <img> tags inside a description's table now show as pictures instead of raw text. #3149

The server that fetches those pictures and videos now follows redirects only to GitHub's own hosts, sends your GitHub sign-in only to the first request's host, and serves only picture and video types. Nothing should change in what you see. #3166

GitLab: request changes, and approve your own MR

Request changes on a GitLab merge request now sets your reviewer state to "Requested changes", not only the comments. It also stays available on your own MR, since GitLab accepts it there. #2723 by @bendrucker

Approve was greyed out on your own GitLab merge request. GitLab accepts an author's approval unless the project forbids it, so Approve now stays on and GitLab decides. When GitLab refuses, the review says so and why it may have refused, and you can still comment or request changes. GitHub is unchanged. #3132

Plan review and annotate

  • Ctrl+C copies the highlight after the comment box opens. Once the comment box opened on a highlight, Ctrl+C / Cmd+C copied nothing. It now copies the highlighted text, in plan review, annotate, HTML documents, the version diff and code review's line comments. Text you select yourself, in the comment box or the page, still copies as usual. #2623 by @BenNewman100
  • Mod+Shift+Enter opens the note composer. In plan review and annotate, Mod+Shift+Enter opens "Send with a note" (or "Send a note") directly; Mod+Enter in it sends as before. #2913 by @ilyaZar, closing #2912 by @ilyaZar
  • A broken Mermaid diagram stays in its message. A failed render could leave a "Syntax error in text" graphic at the bottom of the page and make it scroll. Nothing is left outside the message now, and a diagram type that failed to load is tried once more before showing its source with a Reload line. This covers the Inbox, plan review, annotate, code review and the VS Code Guides. #3091

Installing and updating

A broken download now continues where it stopped instead of starting the large binary again from zero, on macOS, Linux and Windows. The checksum check is unchanged. The Claude Code plugin step also gets 10 minutes instead of Claude Code's own 2-minute limit, which slow links hit with "Git clone timed out after 120s". #3096

After an update, when open Claude Code sessions will not pick up the new plugin by themselves, the installer shows one system notification and opens a short help page with the steps. It shows only while a Claude Code session is open and never on a fresh install, in CI or over SSH. PLANNOTATOR_INSTALL_NOTIFY=0 turns it off. #3074, #3073

Inbox storage on SQLite: early, and off by default

This release lays the ground for keeping the Inbox's records in SQLite. It changes nothing about where anyone's Inbox data lives: every Inbox, new installs included, keeps using its files as before. #3106, #3107

There is an early, optional switch to try it: inboxSqlite in config.json, or PLANNOTATOR_INBOX_SQLITE=1. It is off unless you set it, and has no Settings row. When on, the next start moves your records into inbox.db after checking that it reads the same, and keeps your original files as a dated backup. Turn it off again and the next start moves everything back into files, including messages written in between. #3114

Fixes

  • A stuck gh or glab no longer freezes the Inbox. Hovering a pull request mark could show "Loading…" forever, and after a few hovers no thread would open until the tab was closed. Lookups now end at their time limit, and the hover answers with what the Inbox already knows. #3082
  • A list read with nothing new no longer redraws the whole window. #3104

Additional Changes

  • Smaller repository download. The site's demo videos are served from the site's storage instead of being kept in the repository. #3092
  • Site pictures for posted decisions. #3084, #3085
  • Test upkeep. #3094, #3125, #3164

Install / Update

macOS / Linux:

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

Windows:

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

Claude Code Plugin: The install script above also updates the plugin when claude is on your PATH. Otherwise, in a terminal:

claude plugin marketplace update plannotator
claude plugin update plannotator@plannotator --scope user

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

Pi:

pi update npm:@plannotator/pi-extension

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

What's Changed

  • Site: a help page for a Claude Code plugin left behind by an update by @backnotprop in #3073
  • Installers: tell the person when open Claude Code sessions need a manual step by @backnotprop in #3074
  • Site: host the Decisions banner pictures by @backnotprop in #3084
  • Site: Decisions banner sits flush left, shorter, no background by @backnotprop in #3085
  • Inbox: export a thread's decisions as Markdown or HTML by @backnotprop in #3080
  • Let a question's Other answer take several lines by @backnotprop in #3078
  • Inbox: clicking a sidebar agent filters the list to its threads by @backnotprop in #3081
  • Inbox: warn before Mark read sets open questions aside by @backnotprop in #3079
  • Code review: Call tree (phase 1) by @backnotprop in #3086
  • e2e: the thread menu's expected items include Export decisions by @backnotprop in #3094
  • Marketing videos are served from the site's storage, not kept in the repository by @backnotprop in #3092
  • Inbox: a thread row's grey line shows its latest message by @backnotprop in #3006
  • fix(inbox): a list read with nothing new sets no state, so it never draws by @backnotprop in #3104
  • Inbox: post a thread's decisions on its pull request by @backnotprop in #3083
  • Inbox: your own picture as an agent's icon by @backnotprop in #3087
  • Inbox: icon sets for agent icons by @backnotprop in #3090
  • Inbox: Animate it, for your own agent icon by @backnotprop in #3105
  • Inbox: a stuck gh or glab can no longer freeze the window by @backnotprop in #3082
  • Inbox e2e: measured times for the untimed specs by @backnotprop in #3125
  • Updates resume a broken download, and the plugin step gets more time by @backnotprop in #3096
  • feat(review): request changes on GitLab MRs by @bendrucker in #2723
  • feat: Mod+Shift+Enter opens the send-with-a-note composer by @ilyaZar in #2913
  • Diagrams: a failed Mermaid render never leaks outside its message by @backnotprop in #3091
  • Let authors approve their own GitLab MR; show GitLab's refusal by @backnotprop in #3132
  • Inbox: show a thread in the open window (plannotator inbox --open <thread>) by @backnotprop in #3130
  • Inbox icon dialogs: ten fixes from the phone, touch and slow-link sweep by @backnotprop in #3122
  • Feature: apply guide standing instructions in get_guide_brief by @solatis in #2956
  • Inbox: a web app manifest with the studio's large icons, and the count on the Dock icon by @tommyent in #3056
  • Inbox: Mark read and Snooze move into the thread header's ⋯ menu by @backnotprop in #3126
  • Inbox Settings → Prompts: Guided reviews row by @backnotprop in #3134
  • fix(ui): Ctrl+C copies the highlighted text once the comment box is open by @BenNewman100 in #2623
  • Inbox: on a touch screen the first tap on a row opens it by @backnotprop in #3129 (landed with #3137)
  • Inbox: on a touch screen the sidebar's ⋯ and + buttons always show by @backnotprop in #3137
  • Inbox: publish over Tailscale by itself once Tailscale is back by @backnotprop in #3128
  • Inbox: on a phone the thread's pull requests open as a bottom sheet like the ⋯ sheet by @backnotprop in #3127
  • Settings: the Favicon row mentions the installed app by @backnotprop in #3147
  • Windows: start agents with the Inbox's own environment by @backnotprop in #3154
  • Inbox: on a touch screen, hold a thread row for its menu by @backnotprop in #3131
  • Inbox e2e: the iPhone scroll-return case presses the tile where it is by @backnotprop in #3164
  • Keep a Windows path's apostrophe in slash-command arguments by @backnotprop in #3161
  • Review: the PR picture and video proxy follows only GitHub's own redirects by @backnotprop in #3166
  • Inbox launch: a plugin enabled in the project's settings counts as on by @backnotprop in #3144
  • Remove defensive limits: the same Inbox on every device, and no silent cuts by @backnotprop in #3121
  • Inbox: pictures on comments, sent with the reply as attachments by @backnotprop in #3148
  • Inbox: compress and cache on every listener by @backnotprop in #3088
  • Windows: the Inbox's background commands no longer flash a console window by @backnotprop in #3143
  • Let a fresh Inbox start its first agent in a scratch folder by @backnotprop in #3159
  • Inbox: pick a model and effort when starting an agent, and a Claude settings file by @backnotprop in #3097
  • Inbox: Rules for your agents (#2194) by @backnotprop in #3145
  • Code review: pictures and videos in PR text open in Artifacts by @backnotprop in #3149
  • Inbox: list rows tell sessions in one folder apart by @backnotprop in #3095
  • Read Windows folder paths in New message's folder box by @backnotprop in #3156
  • Inbox window on a slow link: fewer reads, writes show at once by @backnotprop in #3089
  • Inbox store: one interface in front of the record log by @backnotprop in #3106
  • Inbox: keep "Transcribing…" inside the reply box on a phone by @backnotprop in #3208
  • Inbox store: a SQLite log behind the interface (not used by anyone yet) by @backnotprop in #3107
  • Inbox store: import to SQLite, export back, behind an off switch by @backnotprop in #3114

New Contributors

Contributors

@BenNewman100 kept running into a copy that did nothing: select words, open the comment box, press Ctrl+C, get nothing. He fixed it in all five places it happened, with tests for each and a check on Windows 11.

@bendrucker made Request changes on GitLab set the reviewer state GitLab shows, and tested it against a real merge request.

@ilyaZar asked for a shortcut to send with a note in #2912, then built it.

@solatis wanted to shape the guided reviews agents write through the Inbox, found that the Inbox ignored the standing instructions file, and fixed it.

@tommyent gave the installed Inbox app a manifest, sharp icons and an unread count on its Dock icon, and checked it in Chrome and Safari.

Thanks also to the people whose issues shaped this release:

  • @rqres asked to change how the Inbox starts Claude Code sessions (#3064), which led to the Claude settings file
  • @Arobotmaster reported that a plugin turned on only in a project was refused (#3065)
  • @timmo001 asked for a way to show a thread in an open Inbox window (#2506)
  • @zane668 asked to customize how agents use the Inbox and write to it (#2194)

Full Changelog: v0.28.61...v0.28.62

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.