Repository navigation
build(release): make all new crates publishable - #2180
Conversation
ironrdp-agent and ironrdp-viewer depend on ironrdp-daemon and ironrdp-rpc, which were marked `publish = false`, so publishing either binary crate fails to resolve those dependencies from crates.io. Drop `publish = false`, set `rust-version` per the MSRV policy, add initial changelogs, make the READMEs suitable for crates.io, render the ironrdp-rpc README as its crate docs, and update ARCHITECTURE.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟢 Approval recommended
The focused publication metadata and documentation changes introduce no runtime changes, and no blocking issues were identified.
No open issues 🎉
What changed in this PR
Makes ironrdp-daemon and ironrdp-rpc publishable so dependent IronRDP applications can resolve them from crates.io.
Changes:
- Enables publication and declares Rust 1.94 as the minimum supported version.
- Adds initial changelogs and publication-ready documentation.
- Includes the RPC README in generated crate documentation.
| File | Description |
|---|---|
| crates/ironrdp-rpc/src/lib.rs | Includes README and logo in rustdoc. |
| crates/ironrdp-rpc/README.md | Removes internal-only wording. |
| crates/ironrdp-rpc/CHANGELOG.md | Adds initial release notes. |
| crates/ironrdp-rpc/Cargo.toml | Enables publication and declares minimum Rust version. |
| crates/ironrdp-daemon/README.md | Links RPC documentation through docs.rs. |
| crates/ironrdp-daemon/CHANGELOG.md | Adds initial release notes. |
| crates/ironrdp-daemon/Cargo.toml | Enables publication and declares minimum Rust version. |
| ARCHITECTURE.md | Updates daemon status and documents RPC. |
Review effort: Balanced
|
I’m updating the PR |
ironrdp-client, ironrdp-server, and ironrdp-rdpsnd-native depend on ironrdp-rdpeai, and ironrdp-server depends on ironrdp-rdpeusb. Both were publish = false, so cargo could not package any of those crates or the ironrdp-daemon/ironrdp-agent chain built on ironrdp-client. Make both crates publishable and give every not-yet-published crate in the agent and viewer dependency tree a CHANGELOG.md that release-plz can extend: the git-cliff header followed by an empty Unreleased section. Replace the placeholder 0.1.0 heading in the ironrdp-rdpei changelog, which release-plz would otherwise duplicate. Also link sibling crates through docs.rs in the ironrdp-rdpeudp-tokio README, add the docs.rs logo to ironrdp-rdpeusb, and drop the //! lines in ironrdp-rpc and ironrdp-daemon that repeated the included README. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟢 Release-metadata housekeeping PR that makes previously internal crates publishable. It removes publish = false from ironrdp-daemon, ironrdp-rpc, ironrdp-rdpeai, and ironrdp-rdpeusb (verified in head; their published dependents require this for cargo publish), adds rust-version = "1.94" consistent with the existing per-crate convention (ironrdp-rdpeai already had it), adds boilerplate CHANGELOG.md files matching the git-cliff/release-plz format and fixes the ironrdp-rdpei placeholder heading, converts sibling-crate links to docs.rs for crates.io rendering, applies the standard README-as-docs include pattern to ironrdp-rpc and ironrdp-daemon while removing the now-duplicated crate-level doc sentences, and updates ARCHITECTURE.md with an ironrdp-rpc entry. Independent inspection of all changed files in the head found no correctness, protocol, API, or maintainability issues; the manual first-publish ordering for crates.io Trusted Publishing is documented in the PR body. No findings to pub…
Several crates added since the last release were marked
publish = falseor lack release metadata, socargo publishcannot release them or the crates that depend on them, includingironrdp-agent,ironrdp-viewer,ironrdp-client, andironrdp-server.This makes all new crates publishable, except internal tooling and
ironrdp-activex,ironrdp-rdpecam, andironrdp-capture-replay, which stay internal:publish = falsefromironrdp-daemon,ironrdp-rpc,ironrdp-rdpeai, andironrdp-rdpeusb.ironrdp-client,ironrdp-server, andironrdp-rdpsnd-nativedepend onironrdp-rdpeai, andironrdp-serverdepends onironrdp-rdpeusb; Cargo rejects these even as optional dependencies.rust-version = "1.94"on the newly published crates that lacked it.CHANGELOG.mdthat release-plz can extend: the git-cliff header followed by an empty## [Unreleased]section. release-plz keeps the header through that line and inserts the generated release below it. Replace the placeholder## [0.1.0] - YYYY-MM-DDheading inironrdp-rdpei, which release-plz would otherwise duplicate.ironrdp-rpcas internal.ironrdp-rpc,ironrdp-daemon, andironrdp-rdpeusbwithout repeating its first sentence.ARCHITECTURE.md: drop the "not published" note onironrdp-daemonand add anironrdp-rpcentry.Crates.io Trusted Publishing cannot create new crates, which is why the
Release cratesworkflow currently fails onironrdp-rail. A crates.io owner must publish these manually once, in dependency order, after the bumped versions of their already-published dependencies:ironrdp-rail,ironrdp-rdpei,ironrdp-rpc,ironrdp-rdpeai,ironrdp-rdpel,ironrdp-rdpemt,ironrdp-rdpeudp,ironrdp-rdpeudp-tokio,ironrdp-usb,ironrdp-rdpeusb,ironrdp-rdpewa,ironrdp-rdpewa-native,ironrdp-vmconnect, andironrdp-daemon(which needs the newironrdp-clientrelease first).