Skip to content

v0.227.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 00:57
· 323 commits to main since this release
9c2e95a

v0.227.0 adds deep links that open a plugin view and pass it data. Spawned coding agents now get a scrubbed environment instead of the host agent's credentials. It also fixes a memory leak in the desktop app, where every finished A2A turn stayed in memory: the app had shipped a newer a2a-sdk than CI tests, and its sidecar now installs the locked versions. Other fixes: background threads compact much earlier, plugin updates that need a newer protoAgent are refused before anything is replaced, a migrated gateway connection keeps working, image thumbnails survive opening a chat on another device, and the composer shows the agent's own name.

Added

  • Links that open a plugin view. A console URL ?plugin=<id>&view=<view>&vp=<query> opens that plugin view on load, on desktop or mobile, in the host window or a fleet member's window. The view receives vp in its own location.search, and the address bar is cleaned up afterwards. A link to a plugin or view the agent doesn't have opens the normal console with a toast saying why. Plugins create these links with the new sdk.view_url(plugin_id, view_id, params), which uses the hub's address for fleet members so a phone can open it. (#4712)

Security

  • Spawned coding agents no longer inherit the host agent's environment. Coders no longer receive the host agent's instance paths, identity or credentials by default. Their CLI configuration and any environment you set explicitly on a delegate still apply. A new per-delegate env_passthrough list passes through specific inherited variables a coder needs. The agent's own ACP brain and auxiliary model keep their inherited login. (#4717, issue #4629)

Fixed

  • Finished A2A turns no longer pile up in memory in the desktop app. Every turn logged AttributeError: 'str' object has no attribute 'task_id', and the finished task was never released. protoAgent overrode a private a2a-sdk method that changed in a2a-sdk 1.3.0. The override is gone and the stock registry handles cleanup. (#4721, issue #4720)
  • The desktop app ships the dependency versions CI tests. The desktop sidecar used to install the newest release of every dependency, which is how it ended up on a2a-sdk 1.3.0 while CI tested 1.2.1. Its installs are now pinned to uv.lock. (#4722)
  • Background threads compact much earlier. Scheduled wakes run on the system:activity thread, which resent its whole history every turn (median around 141k tokens per wake) and stayed just under the chat compaction limit. A new setting, compaction.system_thread_max_tokens (default 30000), applies only to system:* threads, so wakes compact early and stay small. Chat threads are unchanged. (#4719, issue #4625)
  • Plugin installs and updates that need a newer protoAgent are refused before anything changes. Install and update check the plugin's minimum protoAgent version before replacing any files. A refusal names the version required and the version running. A plugin that fails to load after an install or update is no longer reported as reloaded successfully. Bundle installs check every member first. (#4716, issue #4669)
  • A migrated gateway connection keeps using the SDK's default endpoint. An older config with an empty model.api_base and an API key used to migrate into a connection with an empty URL, so every call failed. It now migrates as base_url: sdk-default, and that value survives later edits in the console. A connection you declare yourself with a blank endpoint still reports an error. (#4718, issue #4597)
  • Image thumbnails survive opening a chat on another browser or device. The small previews (up to 320px, at most four per message) are now saved with the message on the server, so a chat rebuilt elsewhere keeps them. Older chats still show the "Attached: name" text. (#4709)
  • The composer shows the agent's name. The empty composer now reads "Message …" instead of always "Message protoAgent…", and "Message the agent…" when no name is set. (#4713)

Under the hood

  • The macOS desktop build retries Apple's notarization stapling steps when the connection drops. (#4708)
  • Dependency updates (#4710, #4715) and a refreshed Windows test-split seed (#4714).

Upgrading

  • Coding agents: if a coder relied on an environment variable from the host agent, such as a token, list it in that delegate's env_passthrough, or set it explicitly on the delegate.
  • Background threads: the scheduled-wake thread will compact once it passes 30000 tokens. Set compaction.system_thread_max_tokens: 0 to keep the old behaviour.
  • Plugins: an update that needs a newer protoAgent is now refused, and your installed version stays in place.
  • Desktop: the app moves to the locked dependency versions, so some go down (a2a-sdk goes to 1.2.1). Nothing to configure.
  • No other config changes and no migrations.

What's Changed

  • fix(desktop): retry the Apple ticket steps on the macOS leg by @mabry1985 in #4708
  • fix(console): image thumbnails in user bubbles are lost when a chat is rebuilt from the server (another browser or device) by @mabry1985 in #4709
  • feat(console): deep links open a plugin view with forwarded params by @mabry1985 in #4712
  • fix(console): the chat composer placeholder says "Message protoAgent…" instead of the agent's name by @mabry1985 in #4713
  • chore(deps): bump the ai-stack group with 4 updates by @dependabot[bot] in #4710
  • ci: refresh Windows pytest-split duration seed by @mabry1985 in #4714
  • fix(plugins): plugin update and install check min_protoagent_version before replacing the working copy by @mabry1985 in #4716
  • fix(coding_agent): spawned coders get a scrubbed environment, not the host agent's home, instance and tokens by @mabry1985 in #4717
  • chore(deps): bump the python-routine group across 1 directory with 7 updates by @dependabot[bot] in #4715
  • fix(config): a migrated gateway connection keeps a null base_url instead of "" so the SDK default applies by @mabry1985 in #4718
  • fix(compaction): system:* threads (scheduled wakes) compact at a much lower token threshold than chat threads by @mabry1985 in #4719
  • fix(a2a): drop the #1713 registry override; it leaks every turn on a2a-sdk 1.3.0 (#4720) by @mabry1985 in #4721
  • ci(desktop): install the sidecar's deps at uv.lock versions (#4720) by @mabry1985 in #4722

Full Changelog: v0.226.0...v0.227.0