Skip to content

v0.21.0

Choose a tag to compare

@fvarrui fvarrui released this 08 Oct 22:39
· 63 commits to main since this release

New features

  • An installed extension's data folder (#52): ${CLAUDE_PLUGIN_DATA} in its servers' args and env, as in Claude Code, is <scope>/.data/<name>/: outside its plugin and its hash, kept across reinstalls and updates. Keep there what must last (a browser profile with a signed-in session, a cache). Its servers also get CLAUDE_PLUGIN_ROOT and CLAUDE_PLUGIN_DATA as variables. extension remove asks before deleting it (--yes deletes it, --keep-data keeps it); extension info shows it and its size. extensionDataDir() is exported.
  • Developing an extension linked (#52): extension add <folder> --link registers the folder where it is: run from there, its files not checked against a hash. A rebuild takes effect when its server starts again; in the chat, /extensions disable and enable turn a linked one back on with its new files. extension list shows it as linked, and extension remove leaves the folder.

Fixes

  • An installed extension finds the system's browsers. The launcher's clean environment had no PROGRAMFILES, so Playwright found no Edge or Chrome from an installed extension. It now keeps the system's variables a program needs to find and open another (PROGRAMFILES, PROGRAMFILES(X86), PROGRAMDATA, DISPLAY, WAYLAND_DISPLAY, XDG_*…), still never a credential.

Performance

  • Installed extensions' plugins are mounted as links, not copies. Every session copied each installed extension's whole plugin into its run folder, node_modules included, and run folders are kept for resuming. Now it's a link (a junction on Windows, no privilege needed), removed and made again to turn the extension off and on; a copy only where a link can't be made.

Confirmed SDK behavior

  • Turning a stdio MCP server off, or closing the session, ends its whole process tree: a browser it opened with Playwright closes with it, and its profile isn't left locked (Windows; a test checks it wherever the CLI's binary is).
  • A plugin loads through a link, and reloadPlugins() unloads it when the link goes and loads it when it's back.

Captain Whiskers

Captain Whiskers 0.2.0, the example agent built on agent-kit 0.21.0, as a Windows app: download the installer. It's unsigned, so SmartScreen warns about it; it asks for a Claude key on first start and keeps everything in ~/.captain-whiskers.