Skip to content

v1.0.1-beta.1

Pre-release
Pre-release

Choose a tag to compare

@Odrin Odrin released this 23 Jul 19:31
feat(npm): publish npm packages from tagged releases

Adds a publish-npm job to release.yml (needs: build-release-assets,
continue-on-error: true, isolated from upload-release-assets so a
publish failure never breaks the binary release) that extracts the 6
release archives into raw binaries and hands off to a new dedicated
script, packages/npm/scripts/publish.mjs.

The script stages each binary into its platform package, stamps all 7
package.json versions from the tag (npm accepts prerelease suffixes
directly, so version == tag verbatim, no remapping needed) including
the main package's optionalDependencies pins on the 6 platform
packages, publishes platform packages before the main package with
`npm publish --provenance` (OIDC trusted publishing, no stored token),
and skips any package/version already on the registry for idempotent
re-runs.

Dist-tag policy: stable tags publish to `latest`; beta tags publish to
`beta` and, while no real stable version has ever shipped for a
package, also move `latest` to track the newest beta (otherwise `npx
rhizome-mcp` would stay pointed at the non-functional 0.0.1 bootstrap
placeholder indefinitely, since this project is pre-1.0). Documented
in packages/npm/README.md alongside the script's full CLI contract.

Verified end-to-end via `npm publish --dry-run` and read-only `npm
view` calls against the real, live registry (all 7 packages currently
at 0.0.1/latest, no stable version) - confirmed correct staging,
version/optionalDependencies stamping, publish ordering, the
idempotency skip against a genuinely-published version, and the
latest-follows-beta dist-tag decision. Never ran a real npm publish.

ISSUE-88

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>