Skip to content

release: v2.3.1 (republish v2.3.0 contents, fix release workflow) - #11

Merged
mangelsnc merged 1 commit into
mainfrom
release/2.3.1
Jun 15, 2026
Merged

mangelsnc merged 1 commit into
mainfrom
release/2.3.1

Conversation

@mangelsnc

Copy link
Copy Markdown
Owner

Context

v2.3.0 was tagged on GitHub but never reached npm. The publish call failed with:

404 Not Found - PUT https://registry.npmjs.org/undisclosed
'undisclosed@2.3.0' is not in this registry.

Per the npm Trusted Publishing docs:

When GitHub Actions workflows use workflow_call or workflow_dispatch for publishing, validation checks the calling workflow's name, not the workflow containing the publish command.

This explains the 404: the dispatch-triggered run could not pass npm's calling-workflow validation, even though sigstore signed the provenance (sigstore does not enforce that validation; npm does).

Fix

  • Trigger is push: tags: '[0-9]+.[0-9]+.[0-9]+'. The recommended pattern from the official npm docs, adapted to our historical tag convention.
  • workflow_dispatch and force_publish are removed.
  • New step verifies that the pushed tag matches package.json version before doing anything.
  • The workflow no longer creates the tag — the tag IS the trigger. The release engineer bumps package.json, commits, merges to main, and pushes a tag. The workflow does the rest (lint, test, build, GitHub Release, npm publish --provenance --access public).

Tag naming

v2.3.0 was tagged as v2.3.0. That broke the repo's historical convention (1.0.0 ... 2.2.0, no v prefix). This PR restores the convention and the new trigger pattern matches it.

Release procedure once this lands

git checkout main
git pull
git tag 2.3.1
git push origin 2.3.1

That triggers the workflow. npm gets undisclosed@2.3.1 with provenance; GitHub gets a 2.3.1 Release.

v2.3.0 in npm

v2.3.0 stays as a GitHub Release/tag with no corresponding npm package. v2.3.1 has identical functional content. The v2.3.0 GitHub Release will be edited post-merge to point users at v2.3.1.

Test plan

  • CI on this PR passes (ci.yml still on Node 16).
  • After merge to main, push tag 2.3.1. The new workflow runs end-to-end, creates the GitHub Release, and publishes to npm with provenance.
  • npm view undisclosed@2.3.1 version returns 2.3.1.
  • npm view undisclosed dist-tags.latest returns 2.3.1.

Republish the v2.3.0 contents to npm and fix the release workflow.

- Workflow trigger is now push:tags with semver-only pattern (no 'v'
  prefix), matching the historical convention used from 1.0.0 to 2.2.0.
- workflow_dispatch + force_publish are gone; they were incompatible
  with npm Trusted Publishing (npm validates the calling workflow,
  not the workflow file containing npm publish, and returns 404).
- The workflow verifies that the pushed tag matches package.json
  version before doing anything, then runs lint/test/build, creates
  the GitHub Release with notes from CHANGELOG.md, and publishes
  to npm with provenance via OIDC.

No code changes vs v2.3.0; this is purely a release-plumbing fix.
@mangelsnc
mangelsnc merged commit 9d59ef0 into main Jun 15, 2026
1 check passed
@mangelsnc
mangelsnc deleted the release/2.3.1 branch June 15, 2026 18:56
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