Releasing songsee
Follow these steps for each release. Title GitHub releases as songsee <version>.
#Checklist
- Obtain explicit release authorization before creating or pushing a tag or publishing a GitHub release.
- Finalize
CHANGELOG.mdfrom all user-visible changes since the previous tag; replaceUnreleasedwith the release date without changing earlier releases. Commit and push the release preparation. - Verify the exact release commit has green
cianddockerworkflows. Locally rungo test ./... -cover,golangci-lint run,node --test scripts/build-docs-site.test.mjs, andmake docs-site. - Build with
make VERSION=v<version>and runbin/songsee --version, then rendertestdata/sine.mp3and a non-WAV/MP3 input through real ffmpeg. Check the output images, including a render with all nine modes. - Tag the verified release commit:
git tag -a v<version> -m "Release <version>", then push that tag. - Create the GitHub release for
v<version>with titlesongsee <version>and a body matching the finalized changelog section. Verify the published tag, source archive, and release notes. - Verify the
Update Homebrew Tapworkflow triggered by the tag. It dispatchesupdate-formula.ymlinsteipete/homebrew-tap, which updates the formula fromhttps://github.com/openclaw/songsee/archive/refs/tags/v<version>.tar.gz. The dispatcher requires the repository'sHOMEBREW_TAP_TOKENsecret and waits for the tap run to complete. If it fails, resolve the reported cause before rerunning; do not substitute a separately generated archive checksum. - Verify Homebrew install:
brew update && brew reinstall steipete/tap/songsee && songsee --version, then render the smoke-test fixture with the installed binary. - Verify
go install github.com/steipete/songsee/cmd/songsee@v<version>reports the release version from the newly installed binary. The module path retains the original owner name. - Verify the latest applicable
pagesworkflow deployed the current docs tosongsee.sh. - Reopen the changelog with the next patch version's
Unreleasedsection after the release; preserve the dated section and published release notes.
The release channels are GitHub source archives, the Go module tag, and Homebrew. The Dockerfile supports local image builds; this repository has no container-registry publishing workflow. npm publication and macOS app notarization do not apply.