Releasing
#Goals
- Ship npm packages (core first, then CLI).
- Tag + GitHub release.
- Submit the matching extension package to the Chrome Web Store unless the release is daemon-only.
- Leave formula updates to Homebrew/core autobump; optionally verify after it catches up.
#Checklist
scripts/release.sh all(local gates → build proof artifacts → pack/install verification → signed annotated tag). The tag-triggered Release workflow builds, signs, notarizes, verifies both macOS archives, then smoke-installs and publishes npm tarballs through GitHub OIDC, verifies provenance, and publishes the GitHub Release. Both npm packages must truststeipete/summarize, workflowrelease.yml, with no environment.- After CI succeeds, run
scripts/release.sh smoke,scripts/release.sh promote(read-only dist-tag check), andscripts/release.sh github. Verify the GitHub release notes and download all assets to checkSHA256SUMS, signatures, and notarization. - Submit the Chrome extension update:
- Skip this step only when every shipped change is daemon-side and the packaged extension and its companion contract are unchanged.
- Using the existing authenticated Chrome profile, open the Chrome Web Store Developer Dashboard and select item
cejgnmmhbbpdmjnfppjdfkocebngehfg. - Upload
dist-chrome/summarize-chrome-extension-v<version>.zip. - Add source-backed Privacy-tab justifications for any newly declared permissions, then save the draft.
- Submit for review with automatic publishing enabled. Verify the dashboard shows the exact draft version as
Pending revieworPublished; the public listing can remain on the prior version until review completes.
- Optional follow-up, not a release gate: after Homebrew/core autobump catches up, verify the formula reflects the new version:
scripts/release.sh homebrewbrew install summarizesummarize --versionmatches tag.- Run a feature added in the release (for example
summarize daemon install).
- If a required release step fails, fix it before closeout. Homebrew/core autobump lag does not require re-cutting or delaying a completed release.
#Common failure
- A Release job failed after partial npm publication.
- Stable versions publish directly to
latestonly after the local-tarball smoke passes; prereleases usenext. GitHub OIDC cannot move dist-tags afterward.promoteonly verifies the expected tag.
Rerun failed jobs in the same GitHub Actions Release run. Validation and publication accept an existing version only when its integrity and downloaded tarball match the frozen build exactly; other registry errors or mismatches fail closed. No local publish or publish-cli fallback exists. Never move the tag after anything was published. If source changes are required after publication, ship a patch release.
- NPM/GitHub release updated, but Homebrew/core still serves the old version.
- GitHub Release contains the extension ZIP, but the Chrome Web Store still serves an old version.
Expected while autobump is pending. Do not manually update the formula or block the release; step 4 can verify it later.
Fix: submit the matching ZIP in step 3 and verify the draft/review state before closeout.