From ed64aa7d0ebcbd71e0a4e8a98211086b758a9057 Mon Sep 17 00:00:00 2001 From: BootIntel Agent Date: Sat, 26 Sep 2026 08:23:18 +0000 Subject: [PATCH] Release 0.4.1 Makes the published crate match its tag. The publishability fix landed after cli-v0.4.0 was already tagged and released, so publishing under 0.4.0 would have put a crate on crates.io whose contents differed from the tag and the release archives. A crates.io version can be yanked but never reused, so that divergence would have been permanent. 0.4.1 is the first version where the tag, the binaries and the crate are the same code. No user-visible behaviour change, so PATCH per the policy in CHANGELOG.md. One detail worth recording: the version pin on the bootintel-detectors path dependency has to track the workspace version. Bumping only the workspace would leave crates/cli asking the index for 0.4.0 while publishing 0.4.1. Verified: 274 tests pass, cargo deny reports advisories, bans, licenses and sources all ok, rustfmt clean, and the library packages. Co-Authored-By: Claude Opus 5 (1M context) --- CHANGELOG.md | 26 +++++++++++++++++++++++++- Cargo.lock | 4 ++-- Cargo.toml | 2 +- crates/cli/Cargo.toml | 2 +- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5981aa8..bfb2d0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,29 @@ All notable changes to bootintel-cli are documented here. Format follows [Keep a ## [Unreleased] +## [0.4.1] — 2026-09-26 — publishable to crates.io + +No user-visible behaviour change, so PATCH per the policy above. + +### Changed +- **The crates can now be published.** `crates/cli` carried + `publish = false`, present only to satisfy cargo-deny's wildcard-dep + check because `bootintel-detectors` was declared as a bare path + dependency. That dependency now carries both a path and a version: + cargo uses the path for local builds and the version when packaging. + `cargo deny check` still reports advisories, bans, licenses and + sources all ok, so the workaround was no longer earning its keep. +- The release workflow gained an opt-in `publish_crates` input and a + `publish-crates` job. It refuses to start without + `CARGO_REGISTRY_TOKEN`, because a crates.io version can be yanked but + never reused, so a half-publish would burn the version permanently. + The library is published before the binary crate and the job waits for + index consistency in between, which is not optional: `cargo package -p + bootintel-cli` fails with `no matching package named + bootintel-detectors` otherwise. +- Added `docs/releasing.md`, and refreshed four stale `cli-v0.3.1` + references in the README. + ## [0.4.0] — 2026-09-25 — correctness batch: capture loss, CI gates, detector robustness Numbered 0.4.0 rather than 1.0.0. The policy above calls an exit-code @@ -306,7 +329,8 @@ Initial release. All six subcommands live; five branch-based milestones (M1-M5) - PDF report download subcommand — server-side endpoint exists but no client-side wrapper yet. - Windows support — the Rust code compiles for Windows and the release workflow builds it, but install.sh doesn't handle Windows yet (`.ps1` installer is a follow-up). -[Unreleased]: https://github.com/bootintel/cli/compare/cli-v0.4.0...HEAD +[Unreleased]: https://github.com/bootintel/cli/compare/cli-v0.4.1...HEAD +[0.4.1]: https://github.com/bootintel/cli/releases/tag/cli-v0.4.1 [0.4.0]: https://github.com/bootintel/cli/releases/tag/cli-v0.4.0 [0.3.1]: https://github.com/bootintel/cli/releases/tag/cli-v0.3.1 [0.3.0]: https://github.com/bootintel/cli/releases/tag/cli-v0.3.0 diff --git a/Cargo.lock b/Cargo.lock index b67cacd..bf0cb82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -131,7 +131,7 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bootintel-cli" -version = "0.4.0" +version = "0.4.1" dependencies = [ "anyhow", "arboard", @@ -154,7 +154,7 @@ dependencies = [ [[package]] name = "bootintel-detectors" -version = "0.4.0" +version = "0.4.1" dependencies = [ "regex", ] diff --git a/Cargo.toml b/Cargo.toml index 6a697b0..4d35cd2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ members = ["crates/detectors", "crates/cli"] resolver = "2" [workspace.package] -version = "0.4.0" +version = "0.4.1" edition = "2021" rust-version = "1.90" license = "Apache-2.0" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 1d3da46..fa33bbd 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -19,7 +19,7 @@ path = "src/main.rs" # version when packaging for crates.io, which rejects a bare path dep. # This is what publish = false was working around; publishing # bootintel-detectors first makes the workaround unnecessary. -bootintel-detectors = { path = "../detectors", version = "0.4.0" } +bootintel-detectors = { path = "../detectors", version = "0.4.1" } clap = { version = "4.5", features = ["derive", "wrap_help", "env"] } # Shell-completion emitters for `bootintel completions `. Version # tracks the clap major/minor (4.5). No default features — we only use