Changelog

Fresh off the board.

This release fixes a bug where boards without an attached GitHub repo lost access to GH_TOKEN when the app had discovered installations alongside a direct one. The comment thread gets a layout polish pass — avatars return to every thread row while the composer's avatar moves to the Markdown bar, and the Polish button and bar-toggle switch are repositioned to match the card description surface. The home page also gets an OG image, title, and description.

New

  • Home page now has an OG image, title, and descriptionThe home page ships with an Open Graph image (og.png), a page title, and a meta description, so link previews in chat and social contexts show meaningful content instead of a blank card. 061ea96 d65b425

Improved

  • Comment thread avatars are back on every rowAvatars were removed from both sides of the comment panel at once; this restores them to thread rows, where a 24px face identifies who said what faster than a name — especially for agents. The composer's avatar stays on the Markdown bar, where it moved in the same pass, since it only ever told you who you already are. 3360b38 bbb9509 906ddc4
  • Polish button and bar-toggle switch move to match the card description layoutThe Polish (rewrite) button now lives in the Markdown bar's trailing slot, the same position it occupies on the card description surface, so both Markdown surfaces offer a consistent bar. The switch that opens the bar moves to the left end of the composer row, directly under the bar's own left edge, so opening the bar extends the column the switch already starts. fba0815

Fixed

  • Boards without an attached repo now reliably get a GitHub tokenWhen the app discovered additional installations through organization or collaborator membership, AgentGithub.forNote counted those rows alongside the owner's direct installation. One extra discovered row caused every unattached board to resolve as "ambiguous", so the run-scoped mint returned 204, the companion started without GH_TOKEN, and the agent could not push or open a pull request. The resolver now decides on direct installations first, falling back to discovered ones only when no direct installation exists. 70cbab2

This release ships the agent demo section on the landing page — a live card handed to an agent and played out in the browser with no React bundle — alongside a site-wide OG image with a polished layout and agent avatar. On the backend, the agent run lifecycle gains more robust card-edit handling: any card change (including colour, attachments, and removals) now restarts live runs, a racing finish can no longer drop a human's edit, and the assignment context always delivers the full card plus the waking comment even across long feeds.

New

  • Agent demo section on the landing pageThe landing page now shows a real card being worked by an agent in real time. The card, its detail rail, and its comment thread are rendered from the product's own React components on the server and driven by a small vanilla script, so no React bundle is shipped to visitors. A "Play again" control resets and replays the scene from the start, and both entry-point markers pulse with a soft ripple that respects reduced-motion preferences. a9b845c 4daf5a5 08e36b6 7667959 38e1715
  • Site-wide OG image with agent avatar and polished layoutAll pages now share a default og:image and twitter:image served from www/og.png, generated via bun run og:generate (scripts/og.ts). The image features the product wordmark, headline, support copy, and Nina's inline agent mark with an online presence dot. The generator requires the compiled stylesheet to be present and will refuse to run without it. 81be1ab dc38123 f6fb7d8 eb50401 5a0ad3e c972e76 9212e23 32f1968

Improved

  • Assignment context now delivers the full card alongside the message feedThe agent's bridge.assignment() call now returns the assignment messages, the full card data, and the card page in a single response, so the agent has complete context without a separate card fetch. The card list limit is unified under RUN_BRIDGE_LIMITS.cardListLimit and enforced consistently across all bridge endpoints. 3ef2ccf b9cf904

Fixed

  • Public comments posted while an agent is parked now reach the next assignmentWhen a user posts a comment while an agent run is waiting for input, that comment is included as an instruction message in the agent's assignment context when the run resumes. Long message feeds are paginated so the waking comment always appears at the end of the delivered page, and deleting a comment retracts it from the feed. ced8fd2 33fb7c8
  • Any card edit — including colour changes and attachment changes — restarts live agent runsPreviously only certain field edits triggered a run restart. Now every card write (including colour, due date, attachments added or removed) cancels the active run with human_followup and requeues it so the agent always sees the latest card state. The fresh claim after a restart carries the updated card version and can renew normally. 36292a8 d504d52 7ad84b8
  • A racing agent finish can no longer discard a human's card editIf an agent run finishes at the same moment a user saves a card edit, the edit is now preserved regardless of the run's terminal state. A failed reconcile on the agent side also cannot cause the card save to return an error. a64c2b3 e763182

2026.09.15

This release sets up a self-hosted Claude code review workflow running on the omarchy runner, including the review comment script, tests, and documentation.