release: 1.2.1 - #213
Merged
Merged
release: 1.2.1#213
Conversation
Clears GHSA-9pj6-vhgr-3mwh, GHSA-33f5-2c5q-wgwj and GHSA-9g45-5xwm-f3wc. None was reachable: two cover client transports this build never compiles, and the session-table leak sits behind stateful_mode, which the HTTP transport sets to false. 1.8.0 is the end of the 1.x line though, so there is no backport to take. The only code change is model::Content becoming ContentBlock.
McpServer implements rmcp's ServerHandler, so a strict reading makes every rmcp major a crate major. The impl is there for the transport, not for third parties to host McpServer themselves, and MCP already carries no version promise here.
Both are patches under the dependency row in docs/versioning.md: the rmcp and rustls updates change no surface a consumer can see.
Reaches the tree through rand, behind rmcp. Lockfile only. Both 0.10.1 and 0.10.0 are yanked; 0.10.2 is the current release.
The release job exchanges its OIDC token for a publish token that lasts 30 minutes and is revoked when the job ends, so the long-lived registry token comes off the repository. crates.io matches the exchange on the workflow filename, so release.yml and the publish-crate.yml recovery path each need their own config on crates.io.
The preflight asks crates.io for a token it is not allowed to have. crates.io only reaches the workflow-filename check once the repository and owner have matched, and names every filename that is configured, so the refusal confirms both publish paths are registered without a token ever existing. Giving the preflight a config of its own would be the obvious way to probe, and the wrong one: it runs on workflow_dispatch with no environment gate.
Contributor
Criterion Benchmark ResultsBaseline is the per-benchmark median of the last 5 stored runs, so one unusually fast or slow runner cannot skew the comparison. The range column is the spread across those runs.
Runs in the baseline
|
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.
What this changes
Clears the six open Dependabot alerts and the RustSec advisory that has been failing
cargo-denyonmainsince late August, and moves crate publishing to Trusted Publishing.The six alerts are three advisories counted twice, because Dependabot scans both lockfiles. All three are against
rmcp1.x, and none was reachable from a Dynoxide build: two cover client transports this crate never compiles, and the session-table leak sits behind rmcp'sstateful_mode, which the MCP HTTP transport sets tofalse. 1.8.0 is the end of the 1.x line though, so there is no backport to take. The only code change ismodel::ContentbecomingContentBlock.rustls0.23.45 clears RUSTSEC-2026-0285. It reaches the tree through dev-dependencies only and never shipped in a released artefact, butdeny.tomlholdsignore = []and cargo-deny does not know the difference, so the check has been red.chacha20moves off a yanked version while we are here.Product goes to 1.2.1 and the crate to 2.0.1, both patches under the dependency row in
docs/versioning.md. That page gains a short section on why an rmcp major does not take the crate major with it:McpServerimplements rmcp'sServerHandler, which a strict reading makes part of the crate's API, and that impl exists for the transport rather than for third parties to hostMcpServerin their own rmcp server.The crate now publishes with Trusted Publishing, so no long-lived registry token is stored on the repository.
release-preflightgains a check that both publish workflows are registered on crates.io. It does that by asking for a token it is deliberately not entitled to and reading the refusal, which names the filenames that are configured, so the check never mints a token. Worth running before the tag goes up, since the crate is set to require Trusted Publishing and there is no token path to fall back on.Checklist
cargo fmt --checkandcargo clippy -- -D warningspass locallyCHANGELOG.mdupdated if this is a user-visible change(MIT License and Apache License, Version 2.0)
DynamoDB compatibility note
No change to observable behaviour. rmcp 1.8.0 and 2.2.0 declare the same five MCP protocol versions and the same
LATEST, so nothing moves on the wire, and the suite passes unchanged at 2141 tests across 66 suites.