@@ -4,7 +4,7 @@ Thanks for your interest in improving `cobs_codec_rs`!
44
55## Getting started
66
7- A stable Rust toolchain (>= 1.81 , the crate's MSRV) with ` rustfmt ` and ` clippy ` :
7+ A stable Rust toolchain (>= 1.85 , the crate's MSRV) with ` rustfmt ` and ` clippy ` :
88
99``` console
1010git clone https://github.com/firechip/cobs_codec_rs.git
@@ -73,6 +73,32 @@ use `!` (`feat!:`) or a `BREAKING CHANGE:` footer.
7373This is enforced locally by ` tbdflow commit ` and in CI by the ** Commit lint**
7474workflow.
7575
76+ ## Releasing
77+
78+ Publishing to crates.io is automated from a signed ` v* ` tag, but the ** GitHub
79+ Release is created by hand — don't skip it.** The full checklist:
80+
81+ 1 . Bump ` version ` in ** ` Cargo.toml ` ** * and* the ` cobs_codec_rs ` entry in
82+ ** ` Cargo.lock ` ** (a ` cargo build ` syncs it). Skipping the lockfile makes
83+ ` cargo publish ` fail on a dirty working tree.
84+ 2 . Add a ` ## X.Y.Z ` section to [ ` CHANGELOG.md ` ] ( CHANGELOG.md ) .
85+ 3 . Commit (` chore: release X.Y.Z ` ) and tag it ** signed** :
86+ ` git tag -s vX.Y.Z -m "cobs_codec_rs X.Y.Z" ` ; push ` main ` and the tag.
87+ 4 . The tag triggers [ ` release.yml ` ] ( .github/workflows/release.yml ) , which
88+ publishes to ** crates.io** via Trusted Publishing (OIDC) — no token secret.
89+ 5 . Create the ** GitHub Release** and attach the exact published artifact:
90+
91+ ``` console
92+ curl -fsSL -H "User-Agent: you@example.com" \
93+ https://crates.io/api/v1/crates/cobs_codec_rs/X.Y.Z/download \
94+ -o cobs_codec_rs-X.Y.Z.crate
95+ gh release create vX.Y.Z --verify-tag --title "cobs_codec_rs X.Y.Z" \
96+ --notes-file notes.md cobs_codec_rs-X.Y.Z.crate
97+ ```
98+
99+ The description should mirror the crates.io release: the ` CHANGELOG.md `
100+ highlights, an install snippet, and the crates.io / docs.rs links.
101+
76102## License
77103
78104By contributing, you agree that your contributions are licensed under the
0 commit comments