Repository navigation
chore: v2.2.0 - #160
Merged
Merged
chore: v2.2.0#160
Conversation
Minor rather than patch: #159 removes four fields from public tool output (update_warning from describe/invoke/provision, stale_updates from catalog_search), which is a breaking change for a client reading them. Also merges the two duplicate '### Fixed' headings that accumulated under [Unreleased] from three separate PRs, and syncs __init__.__version__, which pyproject alone would have left at 2.1.1.
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.
Cuts 2.2.0 from the three merged fixes: #155, #157, #159.
Why minor, not patch
#159 removes four fields from public tool output —
update_warningfromdescribe/invoke/provision, andstale_updatesfromcatalog_search. Those were emitted on the wire as explicit nulls (model_dump()runs withoutexclude_none), so a client doing a key-presence check sees a real change. That is a breaking change to the tool surface, so patch would be wrong.What's in it
All three commits are one coherent theme — version handling that told the truth or said nothing:
nightly,build-1or an empty string previously compared as older than any real release and produced an update notice that was never true. An empty version is the current MCP SDK default, so this was reachable in ordinary use. Now usespackaging.version.I verified #155 and #157 are not made dead by #159:
is_version_newer/is_version_orderablestill backrefresher.py(thepmcp refresh --check-versionspath), and the probe fix still backsupdate_server. Nothing shipped here is unreachable.What users get
gateway.update_serverandpmcp refresh --check-versionsstill report versions on request. What's gone is the gateway volunteering a claim it could not substantiate.Housekeeping folded in
### Fixedheadings that accumulated under[Unreleased]from three separate PRs.src/pmcp/__init__.py:__version__, which was still2.1.1— bumpingpyproject.tomlalone would have shipped a runtime version that disagreed with the package metadata.Verification
pytest -q→ 2548 passed, 3 skipped, 0 failedruff check .,mypy src— cleanpmcp.__version__ == pyproject version == 2.2.0Known, deliberately not blocking
#156 (semver follow-ups) and #151 (update_server TOCTOU) are pre-existing and present in 2.1.1 — not regressions from these commits — so holding the release would delay the fabricated-notice fix without protecting anyone.
Worth flagging: #151 is more severe as of #159. With the notices gone,
update_serveris the sole update path, so a config-resolution race there no longer has a second mechanism around it. Recommend it as the next piece of work.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.