Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 11:20
· 1007 commits to main since this release

Highlights

The kanban board runs work now. Drag an issue card into a dispatch column and it starts its own
agent run. A board comment that @mentions a session reaches that agent. An orchestrator's card shows
its team's progress instead of repeating facts you have already read, and agents can read the board's
GitHub lane themselves through new read-only issues and prs verbs. Orchestration state also
survives an app restart, --after-pr holds a node's launch until a pull request passes checks or
merges, and --run-now starts a queued node headless.

⌘M is no longer Claude-only. The chat view now works for Gemini — on the desktop and on the phone
over the relay — and for Codex, Copilot, opencode and Grok on SSH hosts. Antigravity joins the
agent list too.

A team can be hosted from a Server Edition core, joinable by invite code, so the machine holding
the session no longer has to be running the desktop app.

Clicking a path in terminal output got serious. Unicode, bracketed, spaced and bare paths and
file:// URIs are all detected; a relative path resolves against the pane's live cwd; hovering shows
you the resolved path before you commit to the click; Shift+Cmd/Ctrl+click opens it with the OS app;
and "could not check" is no longer reported to you as "file not found". There is also a new
file-manager node — click selects, double-click opens, type-ahead finds.

Smaller, but you will meet them: a Figma-style Update button in the title bar, a minimize button on
the minimap, crisp WebGL text when zoomed in on a low-DPI display, and on a project switch the
terminals you can actually see attach first.

New

  • mobile-chat — relay chat verbs + golden fixtures for the phone chat view (desktop half) · #981 by @eneskirca
  • mobile-chat — carry the resolved session id on the chat.page reply · #982 by @eneskirca
  • mirror — advertise custom agents to the phone (derived, credential-safe binaries) · #988 by @eneskirca
  • agents — Antigravity CLI (agy) as a builtin agent, with a hook that cannot deny tools · #799 by @FabricioCasali
  • canvas — minimize button on the minimap · #996 by @eneskirca
  • antigravity — brand icon, and list it above Gemini · #998 by @eneskirca
  • canvas — file-manager node — click selects, double-click opens, type-ahead · #1002 by @eneskirca
  • chat — ⌘M chat view for gemini (desktop + phone over relay) · #1006 by @eneskirca
  • chat — ⌘M chat view for codex, copilot, opencode + grok on SSH hosts · #1007 by @eneskirca
  • core — headless launcher with echo-verified delivery; Server Edition opens use it (#925, 1/2) · #1009 by @eneskirca
  • control — --run-now and run start queued nodes headless (#925, 2/2) · #1010 by @eneskirca
  • relay — host a team from a Server Edition core, joinable by invite code · #1011 by @eneskirca
  • kanban — team progress on an orchestrator's card, and no repeated facts · #1020 by @eneskirca
  • control — --after-pr holds an open until a pull request passes checks or merges · #1019 by @eneskirca
  • kanban — a board comment that @mentions a session reaches that agent · #1022 by @eneskirca
  • file-links — hover shows the resolved path; Shift+Cmd/Ctrl+click opens with the OS app · #1029 by @eneskirca
  • file-links — detect Unicode, bracketed, spaced and bare paths and file:// URIs · #1031 by @eneskirca
  • updates — Figma-style Update button in the title bar · #1046 by @eneskirca
  • kanban — board dispatch — an issue card you move into the dispatch column starts its own agent run · #1051 by @eneskirca
  • control — orchestration state survives an app restart · #1054 by @eneskirca
  • control — read-only issues and prs verbs, the board's GitHub lane for agents · #1058 by @eneskirca

Improved

  • Kanban board: lifecycle categories, top-insert moves, status chips, log folding, keyboard · #999 by @eneskirca
  • GitHub sync foundation: free idle polling, rate budget, throttled ≠ signed out, safer writes · #1001 by @eneskirca
  • Start an agent from a GitHub issue card (reference-only launch, live binding chips, run history) · #1000 by @eneskirca
  • Kanban board: rank strings, saved views, handoff pings · #1004 by @eneskirca
  • Kanban: PR cards show CI and mergeability; PRs link to issues and session cards · #1008 by @eneskirca
  • Kanban: start an issue's agent in its own worktree, one click · #1021 by @eneskirca
  • Tell the orchestrator, once, when a station it opened stops · #1017 by @eneskirca
  • Canvas control: a retried open does not open a second node (--request-id) · #1027 by @eneskirca
  • Claude subagent cards from its own SubagentStart/SubagentStop hooks · #1032 by @eneskirca
  • Canvas control: name the request id on a timeout, and finish late answers (review follow-ups to #1027) · #1033 by @eneskirca
  • Canvas control: --after-success waits for a station to report success, not just end its turn · #1034 by @eneskirca
  • Canvas control: --after-success counts a report only once new work has LANDED (review fixes for #1034) · #1042 by @eneskirca
  • Omni Kanban: live active lane, modal wiring, per-lane session; Omni as a board scope · #1041 by @eneskirca
  • Shared canvas authority: hosted cores persist shared canvas edits, with edge and board sync · #1056 by @eneskirca
  • canvas — bound the unread glow, minimap beats and waiting-rope flow · #1050 by @eneskirca
  • ssh — on-screen terminals attach first on a project switch · #1057 by @eneskirca

Fixed

  • ssh — treat a not-yet-created transcript as idle in the remote context tail · #977 by @eneskirca
  • terminal — hide the SSH chip when it only repeats the project's host · #978 by @eneskirca
  • editor — let Space and arrow keys reach the Monaco editor node · #964 by @ezwep
  • chat — ⌘M never reads a remote node's transcript from this machine · #987 by @eneskirca
  • chat — bind ⌘M answer cards to the request the thread was read for · #990 by @eneskirca
  • chat — render /model and ! commands as one tool chip; keep meta turn prompts · #991 by @eneskirca
  • ssh — push an agent-state edge to the host at once, not after the 2 s throttle · #993 by @eneskirca
  • mirror — keep a node's session identity past the 6 h state expiry · #994 by @eneskirca
  • mirror — seed known session ids at boot so idle sessions show on the phone · #995 by @eneskirca
  • canvas-control — open nodes into free cells, never onto one spot · #997 by @eneskirca
  • usage — keep the last good numbers through a failed read; name HTTP 429 · #1005 by @eneskirca
  • uninstall — look for the desktop's data under node-terminal, not nodeterm · #1013 by @eneskirca
  • keep canvas control fallback on its owning instance · #911 by @eneskirca
  • ssh — a remote write never leaves a truncated file · #1016 by @eneskirca
  • kanban/github — clear the review follow-ups from the issues-on-kanban round · #1015 by @eneskirca
  • bound the control/context endpoint walk and take the owner token from the primary only · #1018 by @eneskirca
  • control — spill long prompts on the --project and cold-open paths too · #1014 by @eneskirca
  • file-links — resolve relative paths against the pane's live cwd, toast on a miss · #1024 by @eneskirca
  • file-links — "could not check" is never "file not found" · #1030 by @eneskirca
  • ssh — keep an SSH host's agent shims, skills and instruction blocks current · #1028 by @eneskirca
  • accounts — move an account's sessions all at once, and survive a project switch · #1026 by @eneskirca
  • relay — keep relay pty output out of local terminals · #1035 by @eneskirca
  • relay — removing a device revokes its relay trust; split pin stores by role · #1036 by @eneskirca
  • terminal — crisp WebGL text when zoomed in on low-DPI displays · #992 by @ezwep
  • security — make pendingLaunch a machine-local exec field · #1038 by @eneskirca
  • relay — a relay tab never makes the guest dial SSH · #1040 by @eneskirca
  • relay — make a project-scoped relay session an actual boundary · #1037 by @eneskirca
  • canvas — zoom flicker (tile memory) and an idle re-render loop · #1047 by @eneskirca
  • agents — end an interrupted Claude turn from the transcript marker · #1053 by @eneskirca
  • control — plain --after waits for handed-over and background work, not a stale done · #1052 by @eneskirca
Internal changes (8) — tests, refactors, chores, dependency bumps
  • antigravity — why there is no chat view yet, and the capture that unblocks it · #1003 by @eneskirca
  • mirror — pin the clock in the seeded-entry age test (flaky) · #1025 by @eneskirca
  • fakePlatform's temp dirs no longer outlive the run · #1039 by @eneskirca
  • canvas-sync's userDataDir lives under the run root · #1043 by @eneskirca
  • stop the suite leaving temp directories behind · #1044 by @eneskirca
  • relay-host — stop the scoped-guest root leaking (main CI red) · #1045 by @eneskirca
  • give jsdom suites jsdom's localStorage on Node 25+ · #1048 by @eneskirca
  • pendingLaunch — behavioural tests for the owner and relay trust paths · #1049 by @eneskirca

Full Changelog: v0.3.17...v0.4.0