From 3dae24ae8ef39236f1c94dfcf11c8c00321bd879 Mon Sep 17 00:00:00 2001 From: sea-snake Date: Wed, 2 Sep 2026 17:45:19 +0200 Subject: [PATCH] Bump to 0.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A minor bump rather than a patch, because the served tool surface changed incompatibly since 0.3.0. Every tool that reaches a canister is now gated on the owning app's service-discoverability manifest (#184). `get_canister_candid`, `get_canister_api_doc`, `get_canister_oql_schema` and `canister_query` used to work on any canister; they reach one only when the app that owns it declares that canister at `/.well-known/ic-architecture`, exactly as `canister_update_call` already did. Each of the four grew an optional `app_url` naming the app whose manifest decides, and every successful reply echoes `declared_by`/`declared_at`. A client that read an undeclared canister against 0.3.0 gets a refusal here. `open_app` moved with it: it probes only declared canisters for their oql/api-doc flags, so a candidate mined from `/env.json` or the JS bundle comes back with null flags and without the `[declared]` marker, and the server instructions no longer promise that reading is ungated. No public Rust item changed — the gate lives in the private `discover` and `discoverability` modules — so an embedder still compiles against 0.4.0 unchanged. What changed is what its server answers, which is the part its own users see. Under cargo's 0.x rules `0.3` is the compatibility range, so shipping this as 0.3.1 would hand that break to everyone on `imcp2 = "0.3"` — the requirement our own README recommends — the next time they ran `cargo update`. 0.4.0 opens a new range instead; existing users stay on 0.3.x until they choose to move. The README's dependency line follows, as `"0.3"` would no longer resolve to a current release. The other two changes since 0.3.0 are the status dashboard's landing-page check (#181) and the operator-facing terms references (#182); neither touches the crate. `imcp2-core` moves in lockstep: publish-crate.yml checks the tag against both manifests, and the workspace pin that binds them (`imcp2-core = { path = …, version = … }`) has to name the same number or the path dependency stops resolving. `imcp2-local` moves with them — it releases on its own `imcp2-local-…` version tags and has never been cut, so there is nothing to keep it behind, and its `--version` output would otherwise report 0.3.0 from a 0.4.0 tree. Co-Authored-By: Claude Opus 5 (1M context) --- Cargo.lock | 6 +++--- Cargo.toml | 4 ++-- README.md | 2 +- crates/imcp2-core/Cargo.toml | 2 +- crates/imcp2-local/Cargo.toml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a314f5..7e69b62 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1792,7 +1792,7 @@ dependencies = [ [[package]] name = "imcp2" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anyhow", "axum", @@ -1822,7 +1822,7 @@ dependencies = [ [[package]] name = "imcp2-core" -version = "0.3.0" +version = "0.4.0" dependencies = [ "base64 0.22.1", "candid", @@ -1845,7 +1845,7 @@ dependencies = [ [[package]] name = "imcp2-local" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anyhow", "axum", diff --git a/Cargo.toml b/Cargo.toml index 0633b11..9e1b282 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imcp2" -version = "0.3.0" +version = "0.4.0" edition = "2021" description = "Minimal MCP server that bridges an LLM to the Internet Computer, speaking textual Candid." license = "Apache-2.0" @@ -44,7 +44,7 @@ dist = false # codec, and candid lines can never drift between imcp2-core, imcp2, and # imcp2-local. [workspace.dependencies] -imcp2-core = { path = "crates/imcp2-core", version = "0.3.0" } +imcp2-core = { path = "crates/imcp2-core", version = "0.4.0" } rmcp = "1.7" axum = "0.8" anyhow = "1" diff --git a/README.md b/README.md index 6ea4589..7eedca1 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Published on [crates.io](https://crates.io/crates/imcp2), API docs on ```toml [dependencies] -imcp2 = "0.3" +imcp2 = "0.4" ``` One `McpServer` serves one Internet Identity instance as two diff --git a/crates/imcp2-core/Cargo.toml b/crates/imcp2-core/Cargo.toml index 4ef83f7..6991afb 100644 --- a/crates/imcp2-core/Cargo.toml +++ b/crates/imcp2-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imcp2-core" -version = "0.3.0" +version = "0.4.0" edition = "2021" description = "Transport-agnostic components of the IMCP2 Internet Computer MCP server: the tool surface, the Internet Identity session engine, and the II connect-handshake primitives." license = "Apache-2.0" diff --git a/crates/imcp2-local/Cargo.toml b/crates/imcp2-local/Cargo.toml index 29f44f2..7227136 100644 --- a/crates/imcp2-local/Cargo.toml +++ b/crates/imcp2-local/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "imcp2-local" -version = "0.3.0" +version = "0.4.0" edition = "2021" description = "Local MCP server for the Internet Computer: the imcp2 tool surface over stdio, with a built-in Internet Identity browser login." license = "Apache-2.0"