Skip to content

v2.12.0

Choose a tag to compare

@agentconnect-release agentconnect-release released this 06 Nov 17:09
· 305 commits to main since this release
7e6e499

Summary

  • Daemon Code-Host Tools — Agents open and manage GitHub pull requests and issues through the daemon instead of the gh CLI, so pull requests carry the attribution footer. GitHub, GitLab, and Gitea tools are grouped by object, add merge, state, issue, and label operations, and can act on another repository the agent is authorized for.
  • Coordinator and Tasks — A coordinator can run on its own model, set beside the task model, and a task can change its model, effort, and approval mode from its own thread. Task threads accept images and files.
  • Webchat Updates — The composer offers console commands such as stop and model on / and !, and suggests the runtime's predicted next prompt, which you can accept with Tab. Slack DMs also offer that suggestion. A NEW line marks what arrived since you last read, with Jump to latest and a turn map.
  • Webhook Instructions — A generic webhook can carry its own instructions, with each payload passed as data, so systems with a fixed payload format can post straight to an agent.
  • More Runtimes on Cloud — Kilo, Qwen Code, GitHub Copilot CLI, and goose use the deployment's managed model gateway, and Kilo and goose ship in the full runtime image.
  • Per-Agent Desktops (Preview) — Each agent gets its own Linux desktop on a Computer that supports it, and you can pick which desktop to watch. Computers remain behind the computer-use flag.
  • Daemon Auto-Upgrade Default — Organization owners can turn auto-upgrade on by default for newly created daemons.

Behavior change: The OpenCode runtime now runs OpenCode 2 (@opencode/cli), and OpenCode 1 is no longer supported. Per-agent desktops are on by default on Linux Computers that support them; turn them off from the tray or with desktops off.

Features

  • a coordinator's task changes its model, effort and approval mode from its own thread (#3654) (bb69eba)
  • a task's composer matches the conversation's, and a reply from its thread carries images and files (#3698) (2464253)
  • computer: give each agent its own Linux desktop behind a switch that is off by default (#3662) (bfdb3d0), closes #3658
  • computer: give each agent its own Linux desktop by default (#3675) (3382bf8), closes #3658
  • computer: watch and take over each agent's desktop in the daemon's viewer (#3664) (4aa68fd), closes #3658
  • control-plane: key Computer leases, the queue, status and audit by agent desktop (#3670) (e4155fe), closes #3658
  • daemon: group code-host tools by object and add merge, state, issue and label operations (#3730) (531df7e), closes #3382
  • daemon: let code-host tools act on another repository the agent is authorized for (#3676) (ebed4bd), closes #3382
  • daemon: open GitHub pull requests through the daemon, with the attribution footer (#3660) (5642c61), closes #3382 #3261
  • daemon: route Kilo, Qwen Code, Copilot CLI and goose through the managed model pair (#3734) (db6feeb)
  • docker: ship Kilo and goose in the full runtime image (#3739) (3f5bbbe)
  • let a webhook carry its own instructions, with the payload passed as data (#3684) (8aeb9da), closes #3669
  • offer the runtime's predicted next prompt in the console composer and Slack DMs (#3642) (dc8af05), closes #2975
  • organization default for a new daemon's auto-upgrade switch (#3644) (ffc2bcb)
  • the coordinator runs on a model of its own, set beside the task model (#3683) (e684775)
  • the Sessions tab's header is one row, and a coordinator's threaded tasks are tasks, not related sessions (#3667) (086cea9)
  • web: a coordinator's side panel keeps Sessions and Tasks, and its header offers Tasks (#3646) (1bffcfc)
  • web: a NEW line marks what arrived since you last read, with Jump to latest and a turn map (#3682) (1043a49)
  • web: a session's running background commands stay docked above its composer (#3655) (d6e1571)
  • webchat: a continued session takes images, shared into its chat thread (#3708) (3bdfa1b)
  • web: expanding a task opens its own session page, which a direct link lands on too (#3671) (b20dd03)
  • web: one state icon leads every session, task and step row, and the composer's send and stop take the draft's look (#3663) (ad184f2)
  • web: pick which desktop of a computer to watch, with that desktop's holder and line (#3672) (5a20d2c), closes #3658
  • web: set a daemon's auto-upgrade from the Upgrade dialog (#3740) (13c82a0)
  • web: the session header is one line, with who and what as icons on its right (#3668) (30db0b7)
  • web: the session header's Share opens who can see it and its link (#3700) (7e0ae62)
  • web: the Tasks tab lists one line per task, grouped by what the session is (#3665) (436890f)
  • web: webchat composer offers console commands on / and ! (#3652) (d461539)

Bug Fixes

  • a console turn in a Slack thread streams its cards to the person who wrote it (#3688) (4e79b66)
  • computer: bind a direct WebRTC session to the address the browser reached (#3659) (2bc66b1), closes #3658
  • daemon: a command a turn leaves running keeps its session and host until it exits (#3692) (b5e50b2)
  • daemon: a coordinator runs on its setting's runtime every turn (#3702) (ed34b69)
  • daemon: a coordinator's threaded task changes its settings from its own thread too (#3673) (1bdf9f6)
  • daemon: a delegated task shares files onto its page (#3717) (fa4df25)
  • daemon: a new coordinator setting reaches coordinators a chat changed (#3715) (6a0844e)
  • daemon: count a message once in the loop guard however many agents receive it (#3645) (e231eaf)
  • daemon: keep a host workspace's skill ownership across a device renumbering (#3641) (2062b61), closes #3546
  • daemon: name code-host tools by their host and act only on that host's repository (#3656) (49202e8), closes #3382
  • daemon: OpenCode reaches a DeepSeek base through the Messages API (#3732) (4efc2a5)
  • daemon: point a placed session's Git at its own credential tunnel (#3678) (08801bd)
  • daemon: re-encode a Slack image whose thumbnail overflows its share, so every image of a post shows (#3725) (0b79b7a), closes #3713
  • daemon: relaunch a warm session host in the checkout a formal review prepared (#3677) (f36800b)
  • daemon: run a Claude Code coordinator in default mode, refusing every ask (#3726) (fe4cbf8)
  • daemon: run OpenCode 2 and drop OpenCode 1 (#3723) (df9407d)
  • daemon: start Codex on Windows when the agent's workspace is a Git checkout (#3653) (c6af16d)
  • every image of a Slack message shows on its session page, not just the first (#3713) (1009d62)
  • message: a Slack message whose text and blocks spell the same words is read once (#3679) (55f124d)
  • web: a message sent in a task's thread shows once while the task answers (#3650) (0417f7f)
  • web: a task card's click opens its thread beside the chat first; a modified click opens its page (#3690) (32e926e)
  • web: a task thread shows people's console photos, and an agent's mark opens its page (#3694) (cae6f2a)
  • web: a task's approvals are answered in its own thread (#3651) (f2914b0)
  • web: a task's composer offers Stop as soon as its turn runs, before the task list catches up (#3666) (202a176)
  • web: a task's thread opened as its card appears loads instead of failing (#3706) (47bf803)
  • web: an agent turn's status reads as its duration, and a task card carries its replies (#3724) (bc359b5)
  • web: focus and selection read quietly instead of with a magenta ring (#3714) (2c65687)
  • web: group a bot's code channels under their own collapsed heading (#3696) (356e63d)
  • web: header popovers open one at a time, the header lines up with the nav, and a closed session reads gray (#3685) (8b187d2)
  • web: mark a coordinator in the dock's session list (#3697) (7503280)
  • web: the context-window tooltip stays inside the composer, and Send sits closer to the ring (#3687) (3c2e285)
  • web: the daemon cleanup row says when the session window caps the workspace window (#3711) (ceb45ce)
  • web: the session header's channel chip reads as a link when it opens its thread (#3699) (52d32e6)
  • web: the session header's divider continues the nav's line from its edge (#3689) (c5ab7fb)
  • web: the side panel's tab line continues the session header's line (#3722) (750dcfc)
  • web: the transcript's scrollbar stops at the composer, and a task's composer lines up with it (#3707) (51fe383)
  • web: the turn map's ticks are all short with the one in view long, and a tick jumps to its turn (#3691) (aa961b3)

Internal

  • ci: run PR tests for every feat/ feature branch (#3695) (36bf4c7), closes #3680
  • computer: fork-merge a desktop's browser profile from the others before it starts (#3661) (aaa0535), closes #3658
  • daemon: settle in-chat elicitation answers through one pending record (#3648) (7c58231), closes #2592
  • daemon: upgrade microsandbox to 0.7.13 (#3743) (7e6e499)
  • deps: bump undici from 8.12.3 to 8.12.4 (#3686) (1a04b34)
  • deps: upgrade ACP SDK to 2.4.0 (#3731) (b23308e)
  • deps: upgrade OpenTelemetry to SDK 3 (#3719) (e37c1b9)
  • relay: log every webchat error frame the relay answers on its own (#3733) (b26a428)
  • runtime: pin claude ACP 0.101.0 (#3647) (e703230)
  • web: open the session header's people popover on hover (#3736) (20ccfa0)
  • web: put a daemon's auto-upgrade switch beside its version (#3712) (0ce614a)
  • web: put the daemon's two cleanup windows in one row (#3643) (c7f454c)

Full Changelog: v2.11.1...v2.12.0