Bump to 0.3.0 - #179
Merged
Merged
Conversation
A minor bump rather than a patch, because both the library API and the served tool surface changed incompatibly since 0.2.0. `imcp2` no longer contains the tool surface and the II session engine: they moved to a new sibling crate, `imcp2-core` (#150, #157), which `imcp2` now depends on by version and which publishes alongside it. The re-exports in `src/lib.rs` keep the familiar names resolving (`IiInstance`, `SessionGauges`, `Agent`, `IC_URL`), but the crate an embedder links has changed shape, and `IcTools` is gone — split into `IcCanisterTools` and `IcProtocolTools` (#157). The surface an MCP client sees changed too: only the app/canister tools are served (#158), state-changing calls now reach only applications that publish a service declaration (#166), the ledger transfer/approval methods are refused (#154, #163), `icp_top_up_canister` is instructions-only (#153), and routine replies no longer echo the per-app principal (#177). Under cargo's 0.x rules `0.2` is the compatibility range, so shipping this as 0.2.1 would hand the break to everyone on `imcp2 = "0.2"` — the requirement our own README recommends — the next time they ran `cargo update`. 0.3.0 opens a new range instead; existing users stay on 0.2.x until they choose to move. The README's dependency line follows, as `"0.2"` would no longer resolve to a current release. `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-v*` tags and has never been cut, so there is nothing to keep it behind, and its `--version` output would otherwise report 0.2.0 from a 0.3.0 tree. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GqhkbpCwxs67F5E2EzyDwh
There was a problem hiding this comment.
Pull request overview
Bumps all workspace crates to the new incompatible 0.3 release line.
Changes:
- Updates all crate versions and the
imcp2-coreworkspace pin to0.3.0. - Updates the README dependency example.
- Synchronizes the lockfile package versions.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
Cargo.toml |
Bumps imcp2 and its core dependency pin. |
crates/imcp2-core/Cargo.toml |
Bumps imcp2-core. |
crates/imcp2-local/Cargo.toml |
Bumps imcp2-local. |
Cargo.lock |
Synchronizes workspace package versions. |
README.md |
Recommends the 0.3 dependency line. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
8 tasks
sea-snake
approved these changes
Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bumps the workspace to
0.3.0. Version numbers only — no code changes.A minor bump rather than a patch, because both the library API and the served
tool surface changed incompatibly since 0.2.0. The tool surface and the II
session engine moved out of
imcp2into a new sibling crate,imcp2-core(#150, #157), which
imcp2now depends on by version;IcToolsis gone, splitinto
IcCanisterToolsandIcProtocolTools(#157). What an MCP client seeschanged too: only the app/canister tools are served (#158), state-changing calls
reach only applications that publish a service declaration (#166), the ledger
transfer/approval methods are refused (#154, #163),
icp_top_up_canisterisinstructions-only (#153), and routine replies no longer echo the per-app
principal (#177).
Under cargo's 0.x rules
0.2is the compatibility range, so shipping this as0.2.1 would hand the break to everyone on
imcp2 = "0.2"— the requirement theREADME recommends — the next time they ran
cargo update. 0.3.0 opens a newrange instead.
Related issues
None. Groundwork for the
v0.3.0crates.io release, together with #180.Changes
Cargo.toml,crates/imcp2-core/Cargo.toml,crates/imcp2-local/Cargo.toml:version→0.3.0.Cargo.toml: the[workspace.dependencies]pin follows —imcp2-core = { path = …, version = "0.3.0" }. It has to name the same number or the path dependency stops resolving.README.md: the dependency line moves toimcp2 = "0.3";"0.2"would no longer resolve to a current release.Cargo.lock: regenerated withcargo update --workspace. Only the three workspace versions change; no dependency churn.imcp2-corebumps in lockstep becausepublish-crate.ymlchecks the tagagainst both manifests.
imcp2-localmoves with them: it releases on its ownimcp2-local-v*tags and has never been cut, so nothing holds it back, and its--versionwould otherwise report 0.2.0 from a 0.3.0 tree.Release notes
Two things stood between this commit and a published 0.3.0 when it was opened.
Both are now resolved:
v0.3.0tag has been deleted. It pointed atf350f96, where the manifests still said 0.2.0, so its publish run failed after 10s at the Check the tag matches both Cargo.toml versions guard. Nothing reached crates.io, so 0.3.0 is still free.verifyjob's packaging rehearsal is fixed by Publish the workspace in one cargo invocation, not crate by crate #180, merged. It rancargo package --locked --no-verify -p imcp2, which resolvesimcp2-core = "^0.3.0"against crates.io — where only 0.2.0 exists, because the new version is uploaded by thepublishjob thatverifygates.verifynow runscargo publish --locked --dry-run --workspace, which resolves the two crates together.So once this lands: tag
v0.3.0on the merge commit, push it, and approve thereleaseenvironment gate;imcp2-coreuploads first, thenimcp2.One pre-flight check no workflow file can make: whether
imcp2-corehas atrusted publisher configured on crates.io against this
repository/workflow/
releaseenvironment. It has only ever been hand-published,so if it was never set up, its upload 403s — after the tag is already spent.
Testing
cargo build --locked --workspace --all-targets— cleancargo test --locked --workspace --all-targets— all passcargo clippy --locked --workspace --all-targets— exits 0; the 6imcp2-corelints are pre-existing onmain(this diff touches no.rsfiles)cargo publish --locked --dry-run -p imcp2-core— passes at 0.3.0cargo publish --locked --dry-run --workspace— passes at 0.3.0; this is whatverifyruns after Publish the workspace in one cargo invocation, not crate by crate #180cargo fmt --all -- --check— differs, pre-existing and untouched here: the tree is formatted at a non-default line width, and CI does not gate itnpm test --prefix monitoring/mcp-status— not applicable, dashboard unchangedThe
--lockedruns are the meaningful ones for a version bump: they confirmCargo.lockagrees with the new manifests, which is what CI gates on.Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01GqhkbpCwxs67F5E2EzyDwh