Skip to content

chore(release): 0.4.0 - #26

Merged
NiKrause merged 1 commit into
mainfrom
release/0.4.0
Jul 30, 2026
Merged

chore(release): 0.4.0#26
NiKrause merged 1 commit into
mainfrom
release/0.4.0

Conversation

@NiKrause

Copy link
Copy Markdown
Contributor

Prepares the first release through the CI publish path. Publishes nothing on its own — merging this only lands the version bump and changelog; publishing happens when a v0.4.0 tag is pushed.

Why 0.4.0

package.json says 0.3.1, and 0.3.1 is already the latest on npm — so the release path cannot publish anything until the version moves.

main now carries a breaking change: credentials yield the authenticator's real public key, so the derived did:key differs from 0.3.x. Existing identities keyed on the old DID will not match. Pre-1.0 that makes this a minor bump.

Also in here: a fix to the publish step

actions/setup-node with registry-url writes _authToken=${NODE_AUTH_TOKEN} into .npmrc. With an empty value npm can attempt token authentication and fail rather than falling back to trusted publishing — which, given the NPM_TOKEN secret is still invalid, is exactly the failure mode the first release run would have hit.

The publish job now drops registry-url (registry.npmjs.org is the default) and writes an auth token only when auth: token is explicitly chosen, so the OIDC path leaves no empty credential behind.

I would rather correct this before the first release attempt than diagnose it afterwards.

The remaining step is yours

Publishing to npm is irreversible — a version number can never be reused — so I have not tagged anything.

After merging:

git checkout main && git pull
git tag v0.4.0 && git push origin v0.4.0

That runs verify (tag vs. package.json, npm pack), then the full suite, then publishes with provenance, then reports in the job summary.

Two things worth knowing before you do:

  • The first publish is the only real test of the trusted-publisher setup. npm's OIDC exchange happens inside npm publish; there is no read-only probe I can run beforehand. If the configuration is off, the run fails and nothing is published — recoverable, just re-tag after fixing.
  • Do not use npm version 0.4.0postversion is git push && git push --tags, and the version is already bumped here, so it would try to go to 0.4.1.

Tell me if you would rather I push the tag once this is merged.

🤖 Generated with Claude Code

0.3.1 is already on npm, so the release path needs a bump before it can
publish anything. main now carries a breaking change — credentials yield
the authenticator's real public key, so the derived did:key differs from
0.3.x — which pre-1.0 makes this a minor bump.

Writes up the five merged PRs and folds in the entries that had
accumulated under Unreleased since 0.3.1.

Also hardens the publish step. setup-node with registry-url writes
`_authToken=${NODE_AUTH_TOKEN}` into .npmrc; with an empty value npm can
attempt token auth and fail rather than falling back to trusted
publishing. The publish job drops registry-url (registry.npmjs.org is
the default) and sets an auth token only when auth: token is chosen, so
the OIDC path leaves no empty credential behind. Worth getting right
before the first real release run rather than after it fails.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@NiKrause
NiKrause merged commit 787f4f0 into main Jul 30, 2026
6 checks passed
NiKrause added a commit that referenced this pull request Jul 30, 2026
… — and then npm rejected the upload: (#30)

```
npm error code E422
npm error 422 Unprocessable Entity - PUT https://registry.npmjs.org/@le-space%2forbitdb-identity-provider-webauthn-did
  Error verifying sigstore provenance bundle: Failed to validate repository information:
  package.json: "repository.url" is "git+https://github.com/le-space/orbitdb-identity-provider-webauthn-did.git",
  expected to match "https://github.com/Le-Space/orbitdb-identity-provider-webauthn-did" from provenance
```

`package.json` carried `github.com/le-space/…`; the repository is `Le-Space`. The provenance attestation is built from the actual repository identity, and the comparison is case-sensitive, so the two never matched.

This was latent for as long as the field has been wrong — it only surfaces now because nothing published with `--provenance` before.

`repository.url`, `bugs.url` and `homepage` are all corrected.

## Progress on the release

Each attempt has moved one step further:

| Attempt | Reached | Failed on |
|---|---|---|
| 1 | verify | tag vs. `package.json` version (PR #26 was unmerged) |
| 2 | publish | `ENEEDAUTH` — trusted publisher not registered for the package |
| 3 | publish | my own probe, which guessed a non-existent endpoint |
| 4 | publish | `ENEEDAUTH` again; verbose log identified the cause |
| 5 | **upload** | provenance repository mismatch — this PR |

Nothing has been published at any point, so `0.4.0` remains free.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
BODY
fix: match the repository URL casing so provenance verifies

The v0.4.0 run got past auth — the NPM_TOKEN fallback works — and npm
then rejected the upload:

    npm error code E422
    Error verifying sigstore provenance bundle: Failed to validate
    repository information: package.json: "repository.url" is
    "git+https://github.com/le-space/orbitdb-identity-provider-webauthn-did.git",
    expected to match
    "https://github.com/Le-Space/orbitdb-identity-provider-webauthn-did"
    from provenance

package.json carried github.com/le-space/...; the repository is Le-Space.
The provenance attestation is built from the actual repository identity
and the comparison is case-sensitive, so the two never matched.

Latent for as long as the field has been wrong — it surfaces only now
because nothing had published with --provenance before.

repository.url, bugs.url and homepage are all corrected.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@NiKrause
NiKrause deleted the release/0.4.0 branch August 15, 2026 06:47
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.

1 participant