Changelog

Fresh off the board.

This release ships the GitHub App integration (repository attachment, run-scoped token minting, and sandboxed egress), a full Claude Code harness adapter alongside the existing Codex adapter, a Docker-only companion setup that replaces the native macOS install path, harness readiness reporting on agent heartbeats, rebuilt agents panel UI with harness tiles and improved presence states, markdown rendering in card comments, and a migration ordering fix that had taken down all agent pairing and heartbeating on production.

Breaking changes

  • Companion setup is now Docker-only — native macOS install path removedThe companion runs as a Linux container on macOS, Windows, and Linux via Docker Compose. The native macOS launchd installer, Mach-O verification, release bundler, and Apple Container lab have been removed. If you were using the native macOS companion, switch to the Docker-based setup described in the updated install guide. d1bbe05 f639ed1

New

  • Agents can now connect to GitHub repositoriesA GitHub App integration lets you attach a repository to a board. When an agent run starts, the companion mints a short-lived, run-scoped GH_TOKEN and injects it into the harness environment so the agent can clone, push, and use the gh CLI. Runs without a token keep the fully locked-down sandbox unchanged. Stale or orphaned board attachments deny access rather than widening it, and the repo-listing mint is scoped to contents:read only. 08436af f8622c6 10e3282 8bddef4 78dc4b8 e0484b9 91d0865 6d11952 b4128ca 0dbba7d 542e59a
  • Claude Code is now a supported agent harnessThe companion can run claude -p --output-format stream-json as a headless harness alongside Codex. Session resume, OS-level Bash sandbox (network denied by default, scoped to github.com hosts when a GitHub token is present), provider auth env vars hard-blocked from the allowlist, and a live auth health probe are all included. Credit exhaustion, protocol errors, and transport failures each get their own classified failure codes. fca78cb 3302dbc c9fc740 d1c14ed 48abefd 7e711a5 42bf525 d9be2ad 124da24 70c3aec a91e707 9fd6111
  • Agent heartbeats now report harness readinessA connected agent that has not authenticated its harness (Codex or Claude Code) now shows an amber "needs-setup" indicator instead of a misleading green dot. The companion reports readiness on every heartbeat, and a busy harness is treated as unknown rather than signed-out so a probe that collides with an active run does not flip the indicator. d1bbe05 97e2d8d 004a235 641f39e 2139bfb
  • Companion failure digests are forwarded through the diagnostics relayBounded, single-line redacted digests on failure events now flow to the server via the diagnostics relay and into OpenTelemetry, making agent failures visible in server logs without exposing raw stderr. a4c8bbc
  • Agent runs post a comment on terminal failureWhen an agent run ends in a terminal failure (including context_exhausted), a comment is automatically posted to the card so the failure is visible in the thread without requiring a separate notification. db5f80d 5b338ed
  • Active agents can be invited to shared boardsAgents with an active companion connection can now be invited to shared boards directly from the board settings, making it easier to assign agent work across a team. 2afce7c

Improved

  • Agents panel rebuilt with harness tiles and cleaner interaction modelThe agents panel now shows harness choices as tiles (Codex, Claude Code, opencode, Pi) with install-status hints. Rows hold a fixed height in every state, rename/delete/connect actions appear on hover, and adding an agent is a quiet row at the end of the list. The suggestion pool grew from 8 to 40 names, and deleting a never-connected agent skips the confirmation dialog. 6d0b8e4 7278753 83d76a7 7aeb5a2
  • Card comments now render markdownComment bodies go through the same markdown renderer used by card descriptions — bold, lists, code blocks, fences, and @mention chips all render correctly. Mentions inside backticks or fences stay literal, and a URL's href can no longer have markup spliced inside it. The one-line teaser above the comment footer is flattened to plain prose. c412e7a 82f2d36 1365c97
  • Run protocol updated: feasibility check and degraded-approach confirmationThe agent run protocol now performs a feasibility check before attempting degraded approaches and asks for confirmation, reducing silent failures on tasks the harness cannot complete. 220da67 121174f

Fixed

  • Migration ordering fix restored agent pairing and heartbeating on productionA schema migration for harness-readiness columns ran after the authority-table verification step, causing every existing deployment to fail the check on first boot and disable all twin traffic until a restart. The migration now runs before verification. A regression test reproduces the upgrade path so this ordering cannot regress silently. 62cac98
  • Linux companion install guide auto-resolves the current image versionThe install guide previously hard-coded a version number in the .env snippet, so publishing a new image silently left documented installs on the previous one. The guide now queries GHCR for the newest stable release tag and writes that into .env — still an explicit immutable tag, not latest. 564f6b9
  • Harness login now works correctly from a one-off containerRunning docker compose exec for interactive harness login shared the task-launcher's process namespace, so the readiness probe killed the login before the browser step could finish. The guide now uses docker compose run (a one-off container with its own namespace) for both Codex and Claude Code logins. 9dcdebf a89a4ba 065dd5c
  • Companion bridge survives the Codex user-namespace launcherThe Linux launcher confines Codex to a user namespace mapping only the Codex identity. The overdew_agent MCP helper now translates expected owner and peer IDs through /proc/self/{uid,gid}_map before comparing, so bridge sockets are no longer rejected as overflow IDs. MCP startup failures classify as codex_mcp_startup and the adapter logs a bounded, redacted stderr digest. c767fca
  • Expired board SSE reconnect loop and session recovery flowA bug caused the SSE connection to loop on an expired board session. The client now detects the expired-session state and shows a recovery flow with a clock indicator so users can re-authenticate without a full page reload. 75a34ee 122b22e 0966967 650f420 cc2a681 21dfbb5
  • Agent stays green while running a cardThe agent presence indicator now stays green for the duration of an active run rather than dropping to an idle state mid-job. 97e2d8d