Release Process
Release Process
Automatic Releases with release-plz
Releases are managed by release-plz, split into two GitHub Actions workflows:
.github/workflows/release-plz.yml— Creates/updates the release PR on every push tomain..github/workflows/release-plz-release.yml— Publishes crates and npm packages when the release PR is merged.
How it works
- A push to
maintriggers the PR workflow, which runsrelease-plz release-pr. - release-plz compares the workspace version in
Cargo.tomlagainst what's published on crates.io. If they differ, it creates (or updates) a PR with changelog entries. - A follow-up job builds the WASM package, bumps the npm version in
package.json, and pushes a commit to the release PR. - When the release PR is merged, the release workflow runs
release-plz release, which publishes all crates to crates.io and npm packages to the npm registry.
Version progression
After the initial 1.0.0-rc.1 release, the flow is:
- release-plz automatically creates PRs proposing the next version bump (e.g.
1.0.0-rc.2). - Merging these PRs triggers publication of the new RC.
- To move from RC to a stable release (e.g.
1.0.0), manually update the version in[workspace.package]and[workspace.dependencies]in the rootCargo.tomlto the desired version in one of these release PRs before merging.
Unified Workspace Versioning
All crates in the workspace share a single version, defined once in the root Cargo.toml:
[workspace.package]
version = "1.0.0-rc.1"
Each member crate inherits it with version.workspace = true instead of hardcoding its own version.
Internal dependencies use exact version pinning (=1.0.0-rc.1) so that each crate can only be used with the matching version of every other crate in the workspace.
NPM Packages
The npm package lumina-node follows the same version as the Rust crate lumina-node-wasm. The release workflow automatically extracts the version from Cargo and applies it to package.json.
For pre-release versions (e.g. 1.0.0-rc.1), npm publish uses --tag rc so that npm install lumina-node continues to install the last stable release. Users opt into the RC with npm install lumina-node@rc or npm install [email protected].
UniFFI (iOS/Android) — Discontinued
iOS and Android build automation has been removed. The only production consumer (Leap wallet) is
sunsetting on May 28, 2026, and no other production consumers were identified. The node-uniffi
crate remains in the repository but the builds will be removed in future versions.