This project uses conventional commits.
# Format
cargo fmt
# Lint
cargo clippy --fix --allow-dirty --allow-staged
# Check (native)
cargo check
# Check (WASM)
cargo check -p multistore-cf-workers --target wasm32-unknown-unknownThe following crates are published to crates.io (in dependency order):
multistoremultistore-meteringmultistore-path-mappingmultistore-stsmultistore-oidc-providermultistore-cf-workers
Releases are managed by release-please. On every push to main, it maintains a PR that bumps versions and updates the changelog based on conventional commits.
When that PR is merged, release-please creates a GitHub release, which triggers the publish workflow (.github/workflows/release.yml). The workflow:
- Derives the crate version from the git tag (e.g.
v0.2.0→0.2.0) - Patches the workspace version in
Cargo.toml - Dry-runs all crates to catch packaging errors
- Publishes all crates to crates.io using OIDC trusted publishing
To publish a pre-release (e.g. 0.2.0-alpha.1):
- Go to Releases → Draft a new release on GitHub
- Create a new tag matching
v<semver>(e.g.v0.2.0-alpha.1) - Check "Set as a pre-release"
- Publish the release
The same workflow runs automatically. The version in the tag overrides Cargo.toml, so no source changes are needed. crates.io treats any version with a pre-release identifier as a pre-release — it won't resolve for ^0.2 ranges and won't appear as the latest version.