Skip to content

chore: 1.0 release prep — version bumps + CHANGELOG dating + checklist (#44)#118

Merged
joaquinbejar merged 1 commit intomainfrom
chore/44-1.0-release-prep
May 6, 2026
Merged

chore: 1.0 release prep — version bumps + CHANGELOG dating + checklist (#44)#118
joaquinbejar merged 1 commit intomainfrom
chore/44-1.0-release-prep

Conversation

@joaquinbejar
Copy link
Copy Markdown
Owner

Closes #44 (release-prep portion).

⚠️ Operator-only follow-up required. This PR lands the
artifacts needed for the 1.0 release but does not invoke
`cargo publish` or push tags. The actual publish + tag steps
live in `RELEASE-1.0-CHECKLIST.md` and are run by the
maintainer after this PR merges.

Summary

Coordinated 1.0 prep for the four core crates plus the meta-crate per ADR-0007 and the v1.0 roadmap entry.

Promoted to 1.0:

Crate Old New
itch-protocol 0.1.0 1.0.0
itch-tcp 0.1.0 1.0.0
itch-soup 0.1.0 1.0.0
itch-mold 0.1.0 1.0.0
itch-rs (meta) 0.1.0 1.0.0

Not promoted (stay on 0.x; ship 1.0 later): `itch-source`, `itch-replay`, `itch-conformance`, `itch-book`, `itch-orderbook`, `itch-source-redis`, `itch-source-postgres`, `itch-source-kafka`, `itch-compressed`.

Changes

  • Each promoted crate's `Cargo.toml` switched from `version.workspace = true` to an explicit `version = "1.0.0"`, decoupling them from `[workspace.package].version = "0.1.0"` (which the other 11 crates still inherit).
  • `[workspace.dependencies]` cross-references for the four core crates bumped to `version = "1.0"`. `crates/itch-replay/Cargo.toml` and `crates/itch-source/Cargo.toml` path-deps for `itch-protocol` bumped from `"0.1"` to `"1.0"`.
  • Each promoted CHANGELOG: closed `## Unreleased` → `## 1.0.0 — 2026-05-06` with a "Stability commitment" preamble citing the SemVer guarantee from `API.md`.
  • New `RELEASE-1.0-CHECKLIST.md` (repo root): operator-only step-by-step for the `cargo publish` + `git tag` invocations in the mandatory order (`itch-protocol` → three transports → `itch-rs`), GitHub Releases creation, post-release smoke test from a fresh consumer, announcement template, and rollback (`cargo yank`).

Test plan

  • `cargo build --workspace --all-features`.
  • `cargo clippy --workspace --all-targets --all-features -- -D warnings`.
  • `cargo test --workspace --all-features`.
  • `cargo fmt --all --check`.
  • (operator, after merge) `make pre-publish` — composes `pre-push` + `public-api` + `semver-check` + `check-msrv`.
  • (operator, after merge) `cargo publish` per the checklist, in order.
  • (operator, after merge) `gh release create` per crate.
  • (operator, after merge) Post-release smoke from a fresh `cargo new` consumer.

#44)

Coordinated 1.0 prep for the four core crates plus the meta-crate
per ADR-0007 and the v1.0 roadmap entry. Lands the artifacts
needed for the actual `cargo publish` step but stops short of
publishing — the operator-only release procedure is in
`RELEASE-1.0-CHECKLIST.md`.

Promoted to 1.0 in this release:
- itch-protocol  0.1.0 -> 1.0.0
- itch-tcp       0.1.0 -> 1.0.0
- itch-soup      0.1.0 -> 1.0.0
- itch-mold      0.1.0 -> 1.0.0
- itch-rs (meta) 0.1.0 -> 1.0.0

Not promoted (stay on 0.x; ship 1.0 in a later coordinated
release): itch-source, itch-replay, itch-conformance, itch-book,
itch-orderbook, itch-source-redis, itch-source-postgres,
itch-source-kafka, itch-compressed.

Changes:
- Each promoted crate's `Cargo.toml` switched from
  `version.workspace = true` to an explicit `version = "1.0.0"`,
  decoupling them from the workspace `[workspace.package].version
  = "0.1.0"` floor that the rest of the crates still inherit.
- `[workspace.dependencies]` cross-references for the four
  promoted core crates bumped to `version = "1.0"`. The
  inter-promoted-crate dependency graph (e.g. `itch-tcp` ->
  `itch-protocol`) now resolves to the 1.0 line on crates.io.
- `crates/itch-replay/Cargo.toml` and
  `crates/itch-source/Cargo.toml` path-deps bumped from
  `version = "0.1"` to `version = "1.0"` for `itch-protocol`.
- Each promoted CHANGELOG: closed `## Unreleased` -> `## 1.0.0
  - 2026-05-06`, with a "Stability commitment" preamble citing
  the SemVer guarantee from `API.md`.
- New `RELEASE-1.0-CHECKLIST.md` (repo root): operator-only
  step-by-step procedure for the actual `cargo publish` and
  `git tag` invocations, in the mandatory order
  (itch-protocol -> three transports -> itch-rs), plus the
  GitHub Releases creation, post-release smoke test from a fresh
  consumer crate, announcement template, and rollback path
  (`cargo yank`).

The release-prep PR itself does not invoke `cargo publish` or
push tags. Those are irreversible operations; running them lives
on the operator after this PR merges and the user has reviewed
the locked-in artifacts.

All gates clean:
- `cargo build --workspace --all-features`
- `cargo clippy --workspace --all-targets --all-features -- -D warnings`
- `cargo test --workspace --all-features`
- `cargo fmt --all --check`

Closes #44 (release-prep portion). The actual publish-and-tag
step is operator-only per the checklist; the issue stays
"closed" once the operator confirms 1.0.0 is live on crates.io
for all five crates.

Signed-off-by: Joaquin Bejar <jb@taunais.com>
@joaquinbejar joaquinbejar requested a review from Copilot May 6, 2026 11:57
@joaquinbejar joaquinbejar merged commit d2c03e1 into main May 6, 2026
13 checks passed
@joaquinbejar joaquinbejar deleted the chore/44-1.0-release-prep branch May 6, 2026 12:02
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Prepares the repository for a coordinated 1.0.0 release of the core ITCH crates (itch-protocol, itch-tcp, itch-soup, itch-mold) plus the itch-rs meta-crate by bumping versions, updating dependency constraints, and stamping 1.0.0 release entries into changelogs, along with an operator-run release checklist.

Changes:

  • Bump the five promoted crates to 1.0.0 (explicit per-crate versions) and update workspace dependency constraints for the four core crates to version = "1.0".
  • Close out ## Unreleased in promoted crates’ changelogs into ## 1.0.0 — 2026-05-06 and add an explicit stability commitment section.
  • Add RELEASE-1.0-CHECKLIST.md documenting the ordered publish/tag/release process and post-release smoke test steps.

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
RELEASE-1.0-CHECKLIST.md Adds the operator checklist for publishing/tagging/releasing the 1.0 crates.
Cargo.toml Updates workspace dependency versions for the promoted core crates (and adds explanatory comments).
Cargo.lock Reflects the 1.0.0 version bumps in the lockfile.
crates/itch-protocol/Cargo.toml Sets itch-protocol package version to 1.0.0.
crates/itch-tcp/Cargo.toml Sets itch-tcp package version to 1.0.0.
crates/itch-soup/Cargo.toml Sets itch-soup package version to 1.0.0.
crates/itch-mold/Cargo.toml Sets itch-mold package version to 1.0.0.
crates/itch-rs/Cargo.toml Sets itch-rs (meta-crate) package version to 1.0.0.
crates/itch-protocol/CHANGELOG.md Stamps 1.0.0 — 2026-05-06 and adds stability commitment text.
crates/itch-tcp/CHANGELOG.md Stamps 1.0.0 — 2026-05-06 and adds stability commitment text.
crates/itch-soup/CHANGELOG.md Stamps 1.0.0 — 2026-05-06 and adds stability commitment text.
crates/itch-mold/CHANGELOG.md Stamps 1.0.0 — 2026-05-06 and adds stability commitment text.
crates/itch-rs/CHANGELOG.md Stamps 1.0.0 — 2026-05-06 and adds stability commitment text for the meta-crate surface.
crates/itch-source/Cargo.toml Updates itch-protocol dependency requirement to version = "1.0".
crates/itch-replay/Cargo.toml Updates itch-protocol dependency requirement to version = "1.0".

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Cargo.toml
Comment on lines +41 to +42
# itch-tcp, itch-soup, itch-mold, itch-rs (meta). The remainder
# stay on 0.x for now and ship 1.0 in a later coordinated release.
Comment thread RELEASE-1.0-CHECKLIST.md

Order is **mandatory**. Each crate must be live on crates.io
before the next one publishes; otherwise `cargo publish` rejects
the dependent because its `version = "1.0"` resolves to nothing.
Comment thread RELEASE-1.0-CHECKLIST.md
Comment on lines +43 to +46
reasonable variance. If they have drifted, re-publish under
`docs/benchmarks/<release-date>/` and update
`docs/COMPETITIVE-ANALYSIS.md` (local-only) +
`BENCH.md` (tracked) before tagging.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Coordinated 1.0 release — tag, publish, announce

2 participants