Current release path: push a semantic-version tag. GitHub Actions builds the platform binary packages, then publishes the main package with npm trusted publishing.
Workflow source: .github/workflows/release.yml
masteris green- npm trusted publishing is configured for:
@frixaco/letui@frixaco/letui-darwin-arm64@frixaco/letui-linux-x64@frixaco/letui-win32-x64
Each package must trust GitHub Actions for repository frixaco/letui, workflow release.yml, with npm publish permission. The workflow does not use an NPM_TOKEN secret.
Pick the next version, written below as X.Y.Z.
Update all of these to the same version before tagging:
- Root package version in
package.json - Binary package pins in
package.jsonoptionalDependencies - Rust crate version in
core/Cargo.toml
Why binary pins matter:
- The release workflow rewrites the root
package.jsonversion from the tag. - The release workflow does not rewrite
optionalDependencies. - If the pins stay old, the new
@frixaco/letuirelease points at old native binaries.
Run:
bun install
bun run checkExpected:
bun.lockrefreshed if package versions changedcore/Cargo.lockmay refresh after Rust commands- typecheck and Rust check pass
From a clean local state:
git checkout master
git pull --ff-only
git add package.json bun.lock core/Cargo.toml core/Cargo.lock
git commit -m "release: X.Y.Z"
git tag vX.Y.Z
git push --atomic origin master vX.Y.ZThe tag must point to the commit containing version X.Y.Z. A tag push runs the release workflow. npm rejects a version that already exists.
On tag v*:
- Build the Rust library for:
darwin-arm64linux-x64win32-x64
- Generate each binary package manifest with
scripts/build-npm.ts. - Publish each binary package through GitHub OpenID Connect.
- Publish the root package
@frixaco/letui. - Attach signed provenance to the public packages.
Confirm that the workflow succeeded. Then verify that all package versions match:
npm view @frixaco/letui version
npm view @frixaco/letui-darwin-arm64 version
npm view @frixaco/letui-linux-x64 version
npm view @frixaco/letui-win32-x64 versionAlso confirm that the installed root package resolves matching optional binary versions and that npm shows provenance for the release.