github backnotprop/plannotator v0.28.52

4 hours ago

Follow @plannotator on X for updates

Missed recent releases?
Release Highlights
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
v0.28.48 Reply attachments that follow the draft, links to any web page on Board cards, instant theme switches, a daily anonymous ping, a faster Inbox
v0.28.47 Board lanes, Settings → Rows, a new thread header, a "Make it yours" tour step, Request guided review, Jira links on Board cards
v0.28.46 Snooze a thread, Settings → Accounts, long pastes become file tiles, HTML pages on a phone, hide the repository owner
v0.28.45 Plannotator Modern theme, a thread panel view, session names in the To picker, thread links open in place, comment on diagram parts
v0.28.44 The iPhone keyboard no longer moves the Inbox, pictures stay clear of the option card, What's new over your tailnet
v0.28.43 Voice dictation, combine and rename projects, Mark unread, full-screen threads, Q for open questions, search by type
v0.28.42 Choose how your Inbox list looks, contents for long documents, link the Inboxes on two computers, clearer search, documents outside the project open from your own machine
v0.28.40 Update works with update checks off, the thread bar shows the thread's name, agents before the project in list rows
v0.28.39 Reply from full screen, thread names lead the Inbox list, one project per Claude Code session, a redesigned code review sidebar, Call flow as cards

What's New in v0.28.52

You can now start Claude Code and Pi from the Inbox's New message, on this computer or a linked one, and it is on by default. The Inbox also has a new reply box, a checklist in the thread's bottom bar, Ask AI for everyone, new keyboard keys, Insights in Settings → Decision data, and an agent note it writes by itself. Claude Code and Pi now reload Plannotator by themselves after an update. 100 PRs: 96 from @backnotprop and 4 from three community contributors, two of them first-timers.

Plannotator Inbox

Start agents from the Inbox, on by default

New message can now start an agent for you. In To, pick New Claude Code session or New Pi session, choose a project or New scratch folder, write, and press Send. The agent starts in the background in that folder, with your own setup, and its replies land in the thread like any other agent's. A quiet line under the latest message shows what it is doing ("Claude Code is working · 3 min"), with Stop. A permission prompt from the session shows up in the thread as a card you can answer, so you don't have to go to a terminal. Your reply continues the session, and Delete ends it. A folder Claude Code doesn't trust yet offers Trust folder and Try again on the run line.

Starting agents is now on by default on macOS and Linux. To turn it off, use the new first row in Settings → Agents, "Start agents from New message". When it is off, New message only messages sessions that are already running. Claude Code needs version 2.1.314 or newer. Pi needs pi 0.79.1 or newer on your PATH, with Plannotator's Pi extension in Pi's settings. Pi has no background host, so a Pi session started this way runs only while the Inbox runs. After an Inbox restart, the line says so, and your next reply continues the same session with the whole conversation. Starting agents is not offered on Windows. #2891, #2412

Start an agent on a linked machine

If you have linked the Inboxes on two computers, New message can start an agent on the other one. The folder menu groups projects by machine, with the machine you last used first. To then reads "in infra · Mac mini", and the agent starts there with that machine's Claude Code, folder and trust. Each machine group ends with Another folder on Mac mini…, which opens a folder browser under that machine's home folder. It lists one level at a time and never shows hidden folders. The folder you start in becomes a project on that machine.

If the agent can't start there, the menu says why, in that machine's name, for example "Claude Code isn't signed in on Mini. Run claude on Mini once to sign in, then try again." When there is a fix, the line has a command to copy. If the machine is asleep, Send reads "Start when Mac mini is back" and the message waits; a toast offers Cancel, which puts your words back in Drafts. Stop, Try again, Trust folder and Delete reach the other machine. A permission prompt that only Claude Code's own dialog can approve says so and offers Deny. Only a press in the Inbox window can start an agent on another machine. An agent's own call is refused. Each machine's Settings → Agents switch decides for that machine. Files can't go with a new session on another machine yet, and compose says so before you send. #2740, #2742, #2744, #2748, #2751, #2754

The agent note writes itself

The Inbox no longer asks before it adds its short note to an agent's instructions file. For Claude Code, Codex, Gemini CLI, Pi and OpenCode, it writes the note when the Inbox starts and after each connect run, once per agent. OpenCode gets it only when ~/.config/opencode/AGENTS.md already exists. In place of the dialog, one quiet line above the list says what happened, for example "Added the Inbox note to Claude Code's instructions." Hover an agent's name to see the file. Got it hides the line.

Earlier answers still count. If you chose Not now or Don't add a note before, no note is written. PLANNOTATOR_INBOX_NOTES=0 still turns notes off, and turning a note off in Settings → Agents keeps it off. A write that fails is tried again next time. For Codex, the note goes to AGENTS.override.md only when that file has text in it, and otherwise to AGENTS.md. For Gemini CLI, it goes above the ## Gemini Added Memories section. Qwen Code and Cursor keep the dialog. The note's text is unchanged. #2903

A new reply box

The open reply box is now one card, with your words first and one row of controls inside it. On a computer, the row has Send, the paperclip, Skills (it types /) and the mic at the left, then what goes with the reply and who gets it, then the bin at the right. On a phone, the paperclip and Skills sit at the left and the mic and Send at the right, all 44 px targets. Discard there is on the "Draft · Saved" line above the box. A chevron at the top right closes the box and keeps the draft, as Esc does, so Cancel is gone.

The box stops growing at about half the window and scrolls inside, so Send is always in view. From 7 files, the row says "N files". A failed Send shows one plain line, with the details behind Details. While you record, the status covers the middle of the row and nothing else moves.

The closed reply bar is calmer too. On a phone it is three buttons: Send, ✎ Draft N and ? N open. The questions button counts only questions you haven't answered, and an answer in your draft counts under Draft. Skip moved into the questions list, as "N stay open when you send · Skip them". #2824, #2749

The checklist in the thread's bottom bar

A thread's checklist button sits in the bottom bar next to Reply and now looks like Reply, in your theme's colours. It shows the current step's mark and the count, such as "1/4": an amber pause while a step waits on you, a spinner while a step is being worked on, and otherwise a pie. The spinner turns only while the session works. When the session ends it goes grey, and the button says "· as of 2:40 PM". With two sessions, the button shows the list that waits on you, or the newest, with "+1". The list opens as before, with new marks for each step.

Agents also got clearer words about the checklist: it is for multi-step work you have agreed on, with a few high-level steps, and never the agent's own to-do list. #2847, #2839

Ask AI for everyone

Ask AI now shows in every Inbox thread whose agent can answer. You ask about a thread, and the agent that owns it answers in a floating window, outside the thread. You no longer need PLANNOTATOR_INBOX_ASK_AI, which now does nothing. Ask stays off in the tour, for tailnet guests, and on a linked machine's threads. #2878

"Stopped" for a reply a stopped session holds

When you stop a Claude Code session (Esc, or a remote interrupt), Claude Code refuses the plugin's prompts until you type in that session again. Before, the Inbox could mark a reply "Delivered to Claude Code" even though no turn started. Now the reply waits, and its line reads "Stopped: goes in when you type in that session". The row's tooltip and the decisions strip say the same. After you type in that session, the reply goes in and the line reads "Delivered to Claude Code". Review and plan decisions are no longer marked delivered in this case either.

The Claude Code mod also keeps polling the Inbox when a fork, side session or subagent ends, so an idle session's replies no longer wait until you type. #2833, #2780, #2787

New keyboard keys

All of these appear in the ? map and do nothing while you type in a field.

  • Shift+O opens the thread's Artifacts grid, and pressing it again goes back. In the grid, the arrow keys, Home and End move between tiles.
  • Shift+E archives the thread, and Z undoes it.
  • H opens the Snooze times. It never snoozes by itself.
  • C opens New message from any page.
  • G D goes to Drafts.
  • On the Board, the arrow keys, Home and End move between cards and lanes.
  • Shift+F10 or the context-menu key on a message head opens that message's ⋯ menu.
  • ⌘⇧A / Ctrl+Shift+A switches Annotate and Interact from anywhere in an open HTML file.
  • A "Skip to the list" link is the first Tab stop on the Inbox page.

Letter keys now also work on Cyrillic, Greek and Hebrew keyboard layouts. All file keys are in one Files group in the ? map. Two fixes from the same keyboard review: Escape in a "Can't do it" reason box returns focus to the button, and the New message session picker now works with the arrow keys, Home, End and type-to-find. #2843, #2841

More ways to set up list rows

Settings → Rows (⋮ → Customize rows…) has new options. They are all off by default, so your list looks the same until you turn one on.

  • Time position: Under the preview puts the time on its own line under the preview, so the preview keeps its full width.
  • Dividers draws a thin line between rows.
  • Status mark shows one small mark in place of counts. A done row shows a tick.
  • Bold names makes every thread name bold, read or not.
  • Letter marks gives threads, projects or both a small mark made from the first and last letter of the name, as Inline, Avatar or Dot. Logo from the repo and GitHub pictures can show a project's logo or owner picture in place of the letters. The Detailed preset now turns on letter marks.

Smaller thread names are now on for anyone who hasn't chosen a look. A look you saved before keeps its name size. #2872, #2867, #2729

Simple list view

The ⋮ menu at the top of the list has a new View group: Smart groups (the default) and Simple list. Simple list is one list, newest first, with the same rows and badges and no group headers. Your browser remembers the choice. Once per browser, on a list with 5 or more threads, the Inbox asks which you prefer.

With no thread open, actions such as Mark read, Archive and Send now update their row in place, and new messages keep waiting behind "N new · Show" so the list doesn't jump. Every group in the grouped list now opens and closes with a click on its header, and ↑ ↓ stop on every header. #2716, #2752

Long threads open 20 at a time

Before, opening a long thread's "N earlier messages" fold drew every hidden message and moved you up to the oldest one. The fold now reads "↑ Show 20 earlier · N hidden", with a quiet "Show all". Each press brings in the 20 messages just above, and the newest messages stay where they are on screen. Focus goes to the nearest new message. #2818

Closing a file keeps your comment as a draft

Closing a file while you write a comment no longer asks whether to save, discard or keep writing. Every way of closing a file (×, Escape, ⌘⇧X, the phone's back gesture, the browser's Back) closes it on the first press. Your words, and what they are on, are kept as that file's draft and are back in the comment box when you open the file again. Moving to another file or another thread keeps them too. Discard is still on the comment itself. #2822

Insights in Settings → Decision data

Settings → Decision data now shows what your decisions add up to: up to three trends (the last 30 days against the 30 before), Decisions by day, Who asks, and a CSV download. A few short lines show only when there is enough data behind them. The counting runs only while you have this section open. When you delete a thread or project, the Inbox keeps one line per question with none of its words, so the totals don't change. uninstall --purge removes that file. #2682

Clearer errors for unreadable agent tool calls

A long-running agent once failed to send to the Inbox several times in a row. Its calls arrived as JSON Claude Code could not parse, often a bare "supersedes": msg_…/q-… with no quotes, and the tool answered "action must be one of …", so the agent retried the same call. Now, when the only problem is an unquoted Inbox id or action name, the call runs and the result tells the agent what was fixed and to quote every string. Otherwise the error names the spot, such as "this call's JSON couldn't be read at character 37 … this value needs double quotes". A call the host cut short is never fixed. The error says how long it was and suggests a shorter body with the rest attached as a file. This applies in Claude Code, Pi and OpenCode.

Questions are read more forgivingly too. A short label such as id: sd-approach before the question no longer becomes the question: it shows as a small grey line under it. A question with no choices, or with all its pictures in the text above the choices, gets advice in the send result. The message still goes out as written. #2888, #2727

Cline in New message

A new @plannotator/cline plugin lets Cline sessions show up in New message, with their project, like Claude Code, Pi and OpenCode sessions. Install it with cline plugin install npm:@plannotator/cline, then turn on its tool in the Inbox. Replies and new messages start a turn in an idle Cline session, and a prompt that Cline doesn't take goes back to the Inbox and is tried again. #2795

Search

Once you type in search, a Best match | Newest switch shows at the right end of the filter chips, and your browser remembers the choice. Result rows are smaller. The words that matched are now highlighted in every result, including the thread name, the project and the agent's name, and these show in full instead of being cut off with "…". #2731, #2733

Guided reviews open in the full window

A guided review an agent sends now opens in the full window, with the agent's intent as the heading and the sender in the header ("from Claude Code in , sent 3:41 PM"). Your comments sit behind a Comments button with their count. When the agent isn't waiting for a verdict, Write the reply takes you back to the thread with the reply box open, and your comments go with your next Send, as before.

Other changes to guided reviews:

  • Every file on screen now draws, at any window size. Before, a review with many small files could leave some blank. Far jumps land at once on their file.
  • On a phone, Comments takes the whole screen.
  • Each file's name sits above its code box and sticks to the top while you scroll.
  • The Split / Unified button, Collapse all and the diff display gear sit before Close. Your diff display choices are shared with code review.
  • The comments column is called Comments everywhere in the Inbox, no longer Annotations.

#2737, #2684, #2702, #2769, #2730, #2863

Attached HTML pages

An attached HTML page can now show pictures from outside its folder, anywhere on this computer (../shots/a.png, /Users/me/a.png, file://…). Only image files are served, never from a hidden folder or a dotenv name, and each gets its own unguessable link. Pictures from the web (https://…) load too, straight from their site. An SVG opened by itself runs no script.

A self-contained prototype that writes its own address (history.replaceState) or reads localStorage while it starts no longer opens as a blank page. #2722, #2895

Add a file already in the Inbox to your reply

Every attachment (a tile, a big preview, a picture in a message, an Artifacts card, the file pane and full screen's toolbar) has a paperclip-plus button on hover or focus. One click adds that file to the reply you are writing, without uploading it again. A second click takes it out. On a phone, the button is in the viewer's toolbar. The agent gets its own read-only copy, so deleting the original changes nothing. #2655

Smaller changes

  • In full screen on a computer, the comments panel floats over the right side of the page instead of narrowing it, and it hides and comes back with the other floating tools. #2709
  • A question's picture choices now fit the card: two wide screenshots side by side, phone screenshots in narrow columns, and no jump when pictures load. #2736
  • Delete is back in the toolbar when you select words in an agent's message. #2781
  • A button beside the Projects heading sorts projects A to Z or by most recent. Your order stays the same until you press it. #2692
  • Board cards name their project when the Board spans more than one project. #2708 by @uvw
  • Settings → Accounts is quieter: one block per machine, each login with one bar and its percentage. #2739
  • The Inbox's one-time dialogs now follow one schedule: at most one a day, never on two page loads in a row, never while a question waits or you are typing, and each at a moment that fits it. #2726
  • A reply's message to the agent now says how many messages, open questions and action items the thread holds, and which message you answered. #2676
  • Re-ask comes back once the session writes again after answering a Re-ask note. #2711
  • A reply stuck on a session whose delivery was cut off can now move to another session with Send to another session. It is never delivered twice. #2717, #2757
  • A transcription failure the page doesn't know now keeps the clip with Retry, instead of crashing the reply box. #2819
  • Each agent session's plannotator inbox mcp process no longer reads the whole Inbox page into memory, which saves about 24 MB per process. #2689
  • The Inbox server stays responsive when the computer is busy: repeated list reads reuse the last answer, and slow checks no longer block other requests. #2789
  • Layout fixes: a phone row's time stays on one line, the sidebar's sections are evenly spaced, the selected project's outline is no longer clipped, and the panes no longer end up 1 px off after Escape. #2700, #2696, #2728, #2697
  • GET /api/inbox/health now reports a window-controls hook, so a desktop app that wraps the Inbox can place its window buttons without depending on Inbox class names. #2691

Plannotator

Plannotator reloads itself after an update

Claude Code: after Plannotator updates, an open Claude Code session reloads the Plannotator plugin by itself with /reload-plugins plannotator. Before, you typed /reload-plugins when the Inbox showed its notice. It needs a running Inbox, and it waits until the main turn is idle, no prompt is being typed or sent, and Plannotator has no work in flight. It does not wait for background agents, which keep running. It runs once per version, and one /reload-plugins plannotator line stays in the chat. If the reload doesn't take, the Inbox's notice stays as before.

Pi (0.84.2 or newer): after pi update or the install script, each open Pi session reloads itself once nothing can be lost: no run, no queued message, no dialog, no open Plannotator review, and nothing typed for 15 seconds. Pi then shows "Plannotator updated to X. Pi reloaded while idle." Set PLANNOTATOR_AUTO_RELOAD=0 to keep the old "Type /reload" note. Oh My Pi only gets the note.

OpenCode 2: when its service is running, the install script updates the running plugin with opencode2 plugin update, and nothing restarts. #2873, #2881, #2356

The annotation toolbar on a phone

On a phone, the selection toolbar (Comment, 👍, ×, Copy, Delete) used to sit above the selection, where iOS Safari draws its own menu over it, and a selection near an edge pushed half of it off the screen. Now it sits below the whole selection, clear of the selection handles, and flips above only when there is no room. It stays inside the screen, with the safe areas respected, at 390 and 320 px wide. Its buttons are 44 px with larger icons. This applies to plan review, annotate, code review and the Inbox. Nothing changes on a computer. #2879

Turn off plan review in Claude Code

A new planReview setting turns off Plannotator's plan review in Claude Code and keeps the rest of Plannotator on. Set { "planReview": false } in ~/.plannotator/config.json, or PLANNOTATOR_PLAN_REVIEW=0. Claude Code then shows its own plan approval dialog, which works over SSH. Plan review in Pi, OpenCode and other agents is not affected. #2654 by @bendrucker, closing #2299

Code review

  • The file list stays put. In the All changes list, opening a file no longer moves the headers above it, so the next click lands on the file under the pointer. #2817, closing #2713 reported by @barreiroleo
  • One Split / Unified button. The tab strip has one Split / Unified button, Collapse all, and the diff display gear. Diff display choices are now saved in config.json and shared with the Inbox. #2730
  • A normal scrollbar for wide diffs. The bar under each file's name is gone. Each file now has the diff's own horizontal scrollbar at the bottom, and while a wide file's end is below the screen, a bar is pinned to the bottom of the pane, as on GitHub. #2763
  • On your own pull request, the greyed Approve and its menu arrow now look like one control. #2674

Smaller changes

  • Annotate shows the right repository. plannotator annotate now takes the repository and branch from the file, folder or bundle you annotate, not from the folder the command runs in. #2688 by @dajiaohuang, closing #2290 reported by @BenNewman100
  • Code inside other Markdown renders as code. Code in callouts, in link labels and in double-backtick spans (`` git log --format=`%h` ``) now renders as code instead of showing its backticks. #2719 by @uvw, closing #2718
  • Quick labels keep their tip. A quick label's instruction to the agent was lost in share links, Ask, Inbox message comments and the feedback archive. It now goes everywhere the label goes. The 👍 label is called "Looks good" in the quick-label list too. #2811, #2869, from #2626 by @BenNewman100
  • The installer retries a dropped download. The binary and checksum downloads now retry on a dropped connection, with a time limit, so one HTTP/2 reset no longer fails plannotator update and a slow link no longer hangs it. #2812, from #2788 reported by @zane668
  • Claude Code's skip-rm-prompts setting works again. With Plannotator installed, CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS stopped working in bypass mode. Plannotator now allows those removal prompts itself, but only where Claude Code would have skipped them. #2741
  • A one-time ask to star Plannotator. Returning users see one small card, once per machine, asking them to star Plannotator on GitHub: in the Inbox from the second day, and after a decision in plan review, code review and annotate from the second week. Before it shows, your own gh checks whether you already starred the repo; if you have, it never shows. The Inbox's Star on GitHub button stars with your gh only when you click it. Plannotator sends nothing anywhere else, and the card never shows in remote mode, the VS Code panel, shared pages or with auto-close on. #2770
  • Settings say "uses" where they said "follows", for example "Uses your Claude Code settings until you change it." #2835

Additional Changes

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

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

  • Inbox: tell agents to put pictures in the choices by @backnotprop in #2727
  • Offer Re-ask again once the session writes after answering a Re-ask note by @backnotprop in #2711
  • Inbox: let a reply stuck on its session move by hand by @backnotprop in #2717
  • feat(inbox): the context a reply gives an agent by @backnotprop in #2676
  • ci(inbox-e2e): stop apt mirror hiccups from failing the browser tests by @backnotprop in #2746
  • Inbox: an attached HTML page shows pictures from anywhere on this computer, and the web by @backnotprop in #2722
  • Inbox one-time dialogs follow the approved schedule by @backnotprop in #2726
  • Inbox review: on a phone, Comments takes the whole screen by @backnotprop in #2702
  • Inbox: add a file already in the Inbox to your reply by @backnotprop in #2655
  • Read the Inbox page only when serving it by @backnotprop in #2689
  • Draw every file on screen in a guided review or PR page by @backnotprop in #2684
  • Don't call a fresh claim stuck when Linux stamps its folder a few ms early by @backnotprop in #2757
  • Inbox: the selected project row's outline is no longer clipped by @backnotprop in #2728
  • CI: one waiting Test run for pushes to main, not one per merge by @backnotprop in #2761
  • CI: heavy suites nightly on main, not after every merge by @backnotprop in #2764
  • CI: a repo setting picks the browser test machines by @backnotprop in #2765
  • Diffs: the library's own scrollbar at the bottom; remove the top bar by @backnotprop in #2763
  • Inbox: smaller thread names on by default by @backnotprop in #2729
  • Fix annotate repository identity by @dajiaohuang in #2688
  • Add bun run test:sandbox: run named test files in a scratch world by @backnotprop in #2720
  • Inbox: lay out picture choices to fit the card, with no jump when pictures load by @backnotprop in #2736
  • feat(hook): add planReview switch by @bendrucker in #2654
  • Inbox: a declared hook for a desktop host's window controls by @backnotprop in #2691
  • Inbox: calmer reply bar by @backnotprop in #2749
  • Inbox: keep a phone row's time on one line by @backnotprop in #2700
  • Sort the Inbox's Projects A to Z or by most recent by @backnotprop in #2692
  • test(inbox): pin the clock in the keyboard Snooze row-menu test by @backnotprop in #2798
  • ci: run the e2e shards in the Playwright image, not apt by @backnotprop in #2725
  • e2e: window-controls clicks clear the sidebar peek first by @backnotprop in #2806
  • Inbox search: a Best match / Newest switch, and smaller results by @backnotprop in #2731
  • Inbox review: file name above the code box by @backnotprop in #2769
  • CI: turn off flaky browser tests in CI; run them locally by @backnotprop in #2767
  • Inbox: quieter Accounts page (switching comes later) by @backnotprop in #2739
  • Inbox launch: Pi host by @backnotprop in #2412
  • Space the Inbox sidebar's sections by one rule by @backnotprop in #2696
  • test(inbox): keep the pointer off the sidebar's edge before Send in the comments-list spec by @backnotprop in #2786
  • Claude Code: respect the skip-rm-prompts setting in bypass by @backnotprop in #2741
  • Inbox: close any list group by clicking its header by @backnotprop in #2752
  • Quick labels: keep the label's tip in share links, Ask, Inbox comments and the archive by @backnotprop in #2811
  • Installer: retry the binary download on a dropped connection by @backnotprop in #2812
  • Make a muted Approve one control with its caret by @backnotprop in #2674
  • Inbox: a Cline plugin, so Cline sessions show up in New message by @backnotprop in #2795
  • Don't mark an Inbox reply or decision delivered when Claude Code drops its prompt by @backnotprop in #2780
  • Inbox: keep the server's loop free under load (list memo, async checks, buffered debug log, async tailscale, stall attribution) by @backnotprop in #2789
  • Inbox voice: an unknown failure code keeps the clip instead of crashing by @backnotprop in #2819
  • CI: fresh e2e shard times, so the 16 shards finish together by @backnotprop in #2772
  • Make the loop-stall test block long enough to always count as a stall by @backnotprop in #2836
  • Keep the Claude Code mod polling the Inbox when another session ends by @backnotprop in #2787
  • Inbox: full screen's comments float over the page and move with the tools by @backnotprop in #2709
  • Diff display controls in every review header, shared settings by @backnotprop in #2730
  • Inbox: Simple list view, writes that hold the list still, and a one-time Smart groups or Simple list choice by @backnotprop in #2716
  • CI: quarantine the flaky review-jumps scroll test by @backnotprop in #2840
  • Inbox: Delete back in the toolbar on an agent message's words by @backnotprop in #2781
  • Inbox: two keyboard fixes (Can't do it Escape, agent picker arrows) by @backnotprop in #2841
  • mod: one PowerShell test per value, so three pwsh cold starts stop sharing one 5 s budget by @backnotprop in #2838
  • Inbox: start an agent on another linked machine (server) by @backnotprop in #2740
  • VS Code asks test: skip a log line the fake agent is still writing by @backnotprop in #2851
  • Ask returning people to star Plannotator, once by @backnotprop in #2770
  • Settings: say "uses", not "follows" by @backnotprop in #2835
  • Search: highlight what matched and show it in full by @backnotprop in #2733
  • Inbox: checklist wording: only for aligned multi-step work by @backnotprop in #2839
  • e2e quarantine: the guided review middle-scroll test by @backnotprop in #2853
  • e2e: stop each list-intro world after its test (shard 6 exit 137) by @backnotprop in #2834
  • Inbox: the live region stays on the page, so the window has nothing to scroll by @backnotprop in #2697
  • Give jj tests their own config folder by @backnotprop in #2738
  • CI: quarantine the flaky grouped hover Mark read list-view test by @backnotprop in #2855
  • Review: the file list stays put when you open a file by @backnotprop in #2817
  • Inbox: call the side-by-side column Comments by @backnotprop in #2863
  • Board: a card names its project while the Board spans projects by @uvw in #2708
  • Auto-reload after an update: Pi reloads itself when idle; OpenCode 2 installer updates the running plugin by @backnotprop in #2356
  • Inbox: say why an agent can't start on a linked machine by @backnotprop in #2742
  • Call the 👍 quick label "Looks good" in the quick-label list too by @backnotprop in #2869
  • Fail the release when the Cline package fails to publish by @backnotprop in #2870
  • Inbox: letter marks for rows, in Customize rows (all off by default) by @backnotprop in #2867
  • Markdown: code in callouts, link labels and double-backtick spans renders as code by @uvw in #2719
  • Claude Code: Plannotator reloads itself after an update by @backnotprop in #2873
  • Auto-reload: don't wait for background agents by @backnotprop in #2881
  • Sandboxes: never ask macOS for a keychain by @backnotprop in #2880
  • Open every guide and review in the Inbox's full-window review by @backnotprop in #2737
  • Inbox: another machine's launched agent, from this window by @backnotprop in #2744
  • Inbox: list and start in another folder on a linked machine (server) by @backnotprop in #2748
  • Inbox: start an agent on another linked machine from compose by @backnotprop in #2751
  • Inbox: start an agent in another folder on any linked machine by @backnotprop in #2754
  • e2e: two specs main broke (selection bar button, Rows' letter marks) by @backnotprop in #2877
  • Inbox: an attached prototype that writes its hash or reads storage no longer renders blank by @backnotprop in #2895
  • CI e2e: a PR rerun of the same change runs only the specs that did not pass by @backnotprop in #2856
  • CI: fake the clock for the 57 s page-age waits in three Inbox e2e specs by @backnotprop in #2857
  • Inbox reply box: T6 by @backnotprop in #2824
  • Inbox rows: Time under the preview, Dividers and a Status mark (all off by default) by @backnotprop in #2872
  • Inbox tool: clear error for unreadable calls, warn on odd questions by @backnotprop in #2888
  • Inbox: Ask AI on for everyone by @backnotprop in #2878
  • Inbox: checklist with spinners in the thread's bottom bar by @backnotprop in #2847
  • Inbox: closing a file keeps the comment being written as its draft by @backnotprop in #2822
  • Inbox: keyboard keys from the audit by @backnotprop in #2843
  • Inbox: open a long thread's fold 20 at a time by @backnotprop in #2818
  • Inbox: show Stopped for a reply held by a stopped Claude Code session by @backnotprop in #2833
  • Inbox: write the agent note by itself for agents proven to load it by @backnotprop in #2903
  • Insights in Settings -> Decision data by @backnotprop in #2682
  • Phone: annotation toolbar below the selection, inside the screen, thumb-sized by @backnotprop in #2879
  • Start agents from the Inbox on by default, with a switch in Settings → Agents by @backnotprop in #2891

New Contributors

Contributors

@bendrucker asked in #2299 for a way to turn off plan review in Claude Code while keeping the rest of Plannotator, then built it in #2654: the planReview setting and PLANNOTATOR_PLAN_REVIEW. This is his third contribution.

@dajiaohuang fixed annotate's repository and branch in #2688, with tests for both server runtimes. First contribution.

@uvw made their first two contributions. #2708 names the project on Board cards when the Board spans projects, following the layout agreed in their feature request #2699. #2719 makes code in callouts, link labels and double-backtick spans render as code, the bug they reported in #2718.

Community

  • @BenNewman100 reported in #2290 that annotate showed the launch folder's repository, fixed by #2688. His quick-label audit in #2626 found the lost tips that #2811 fixes and the two names for 👍 that #2869 settles. The issue stays open for his larger question about letting one annotation carry both a label and a comment.
  • @barreiroleo reported in #2713 that code review's file list moved when a file opened, with two screenshots that pinned down the cause. Fixed by #2817.
  • @zane668 reported in #2788 that the Inbox stalled while plannotator update downloaded, with timings and a control run. #2789 stops repeated list reads from queuing, and #2812 makes the installer retry the dropped download. The issue stays open while the Inbox's new stall lines confirm what is left.

Full Changelog: v0.28.51...v0.28.52

Don't miss a new plannotator release

NewReleases is sending notifications on new releases.