|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project are documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [1.0.0] - 2026-07-20 |
| 9 | + |
| 10 | +First stable release. This release focuses on correctness of version and dependency |
| 11 | +handling across all three ecosystems, plus security and release hardening. |
| 12 | + |
| 13 | +### Fixed |
| 14 | + |
| 15 | +- **`check_package` now accepts ranged and partial versions.** A request such as |
| 16 | + `check_package(name="react", version="18")`, `"^4.17.0"`, `serde "1"`, or |
| 17 | + `requests ">=2"` was previously denied as a nonexistent ("hallucinated") version. |
| 18 | + Version requirements are now resolved per ecosystem to the best matching published |
| 19 | + version; only a concrete exact version that is genuinely absent is flagged. |
| 20 | +- **npm/PyPI manifests no longer flag local, git, and URL dependencies.** `file:`, |
| 21 | + `git`/`github:`, tarball URL, `workspace:`/`link:` (npm) and `path`/`git`/`url` |
| 22 | + (Poetry) and PEP 508 `name @ url` dependencies are skipped rather than looked up on |
| 23 | + the public registry and reported as nonexistent. npm aliases (`npm:real-pkg@1.2.3`) |
| 24 | + now audit the real target. |
| 25 | +- **PyPI requirement lines with multiple specifiers are no longer dropped.** Lines such |
| 26 | + as `torch>1.9,<2.0` and `numpy!=1.24.0,>=1.20` are now split on the leftmost |
| 27 | + operator and audited instead of being silently skipped. |
| 28 | +- **Denylist, allowlist, and dependency-confusion matching now compare canonical |
| 29 | + names.** An equivalent spelling (case, and `-`/`_`/`.` per PyPI/crates.io rules) can |
| 30 | + no longer bypass a rule (for example, a denylisted `evil-pkg` now also blocks |
| 31 | + `evil_pkg`). |
| 32 | +- **The MCP server now advertises its own identity** (`safe-pkgs`/version) instead of |
| 33 | + the underlying `rmcp` crate name and version. |
| 34 | +- Private-registry bearer tokens are no longer sent over cleartext `http://` (except to |
| 35 | + loopback hosts), matching the audit and remote-config guards. |
| 36 | + |
| 37 | +### Changed |
| 38 | + |
| 39 | +- Version bumped to `1.0.0`. |
| 40 | +- Package metadata added for distribution: `license = "MIT"`, `rust-version = "1.85"`, |
| 41 | + `repository`, `description`; the workspace is marked `publish = false` (distributed as |
| 42 | + a binary via release artifacts and `cargo install --path .`). |
| 43 | +- CI now runs `clippy` and `test` with `--workspace`, so all crates are gated. |
| 44 | +- README: corrected the rmcp version badge and the decision-payload `metadata` note. |
| 45 | + |
| 46 | +### Known limitations |
| 47 | + |
| 48 | +- A lockfile that pins the same package at multiple versions (for example |
| 49 | + `windows-sys` 0.48 and 0.52 in a `Cargo.lock`) is currently audited at a single |
| 50 | + version; the other pinned version is not evaluated. This is tracked for a follow-up |
| 51 | + release. |
0 commit comments