From ed29d4db5baea701bee625440ae9e4fc75c104d3 Mon Sep 17 00:00:00 2001 From: Mathew Goldsborough <1759329+mgoldsborough@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:00:17 -1000 Subject: [PATCH] Release npm 0.20.0 and Python 0.7.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Everything under [Unreleased] in both packages ships, together, so no consumer has to speak both wires. npm 0.20.0 is breaking several times over. The NimbleBrain host extensions move under `ai.nimblebrain/` (`action`, `request-file`, `keydown`), and the chat context on `sendMessage` with them; every NimbleBrain extension and every spec call is now gated on the host declaring it, throwing `HostCapabilityError` where it did not; host fonts arrive as the spec's `styles.css.fonts` and the font-descriptor API is gone; the cross-host client speaks MCP Apps only, so the `chatgpt` adapter, the mcp-ui dialect and `window.openai` detection are gone and `HostKind` is `"mcp-apps" | "generic"`; and `connectUI`'s `callTool()` rejects with `ToolCallError` on an `isError` result. Added: `synapse check`, `app.hostCapabilities`, `hostSupports`. The SDK and zod are no longer bundled. Python 0.7.0 serves the component as one `ui://` resource under `text/html;profile=mcp-app` — the skybridge copy, `openai/outputTemplate`, `result_meta()`, `resource_meta` and `SKYBRIDGE_MIME` are gone — and carries the same bundled-client breaks. Added: `tool_meta(visibility=)`, `tool_meta(security_schemes=)` and `auth_error_result()`. Requires mcp>=2.1.0. The vendored client asset already matches the build; no re-vendor was needed. `__client_version__` moves with package.json. --- CHANGELOG.md | 2 ++ package.json | 2 +- python/CHANGELOG.md | 2 ++ python/nimblebrain_synapse/__init__.py | 2 +- python/pyproject.toml | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80ab5a8..de76535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] +## [0.20.0] - 2026-09-17 + ### Breaking - **The NimbleBrain host extension methods are renamed under the `ai.nimblebrain/` prefix.** `synapse/action` is `ai.nimblebrain/action`, `synapse/request-file` is `ai.nimblebrain/request-file`, and `synapse/keydown` is `ai.nimblebrain/keydown`. Each name is both the method and the identifier a host declares in `hostCapabilities.experimental`, so `NIMBLEBRAIN_EXTENSIONS` lists one name per extension. The prefix names the owner: these are the NimbleBrain host's extensions, and this package implements a client for them. diff --git a/package.json b/package.json index 1fad68d..552fc3d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nimblebrain/synapse", - "version": "0.19.0", + "version": "0.20.0", "description": "Agent-aware app SDK for the MCP ext-apps protocol", "type": "module", "exports": { diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index a4c7cb3..2d5a993 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -8,6 +8,8 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] +## [0.7.0] + `SynapseUI` serves the component once, under the MCP Apps MIME, and every input it takes is emitted under its ext-apps `ui.*` key. A server can declare the auth a tool needs. The bundled client speaks MCP Apps only, and its `callTool()` rejects when a diff --git a/python/nimblebrain_synapse/__init__.py b/python/nimblebrain_synapse/__init__.py index e4429c3..c8b4042 100644 --- a/python/nimblebrain_synapse/__init__.py +++ b/python/nimblebrain_synapse/__init__.py @@ -38,4 +38,4 @@ # independently of the JS one (different cadence, different consumers); the two # meet only on the wire protocol. CI keeps this equal to the sibling package.json # version (ci.yml build job), so the pin can't silently go stale. -__client_version__ = "0.19.0" +__client_version__ = "0.20.0" diff --git a/python/pyproject.toml b/python/pyproject.toml index fadf179..f3e9767 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nimblebrain-synapse" -version = "0.6.0" +version = "0.7.0" description = "Server half of the Synapse cross-host UI framework: declare one self-contained ui:// component as an MCP extension and render it in ChatGPT (OpenAI Apps SDK), Claude (MCP Apps), and the NimbleBrain runtime." readme = "README.md" requires-python = ">=3.11"