- Merge to
main(or push directly tomain). .github/workflows/auto-release-tag.ymlruns (queued per branch so tag jobs do not race). It:- Fetches existing
v*tags fromorigin. - Skips if
HEADis already exactly the latest tag, or if the tip commit message contains[skip release]. - Otherwise computes the next semver from the highest existing
v*tag and commit subjects since that tag:feat:/feat(scope):→ minor bump (resets patch to0).type!:(e.g.feat!:) orBREAKING CHANGEin the subject → major bump.- Otherwise → patch bump.
- If there has never been a tag, the first tag is
v+versionfrompackage.json(then collision-avoidance bumps patch if that tag already exists on the remote). - Creates an annotated tag and
git push origin <tag>, which triggers the release workflow.
- Fetches existing
.github/workflows/release.yml(onpushof tagsv*):- Verify —
bun run checkon Ubuntu. - Build — macOS (arm64), Linux (x64), Windows (x64): sync version from tag,
bun run build:canary, archivebuild/canary-*toweclank-<tag>-<platform>.tar.gz. - Publish — GitHub Release + uploaded artifacts + generated release notes.
- Verify —
Put [skip release] in the tip commit message of the push to main (e.g. squash-merge description). The auto-tag job will not run for that push.
- You can still
git tag vX.Y.Z && git push origin vX.Y.Zby hand; the same release workflow runs. - Actions → Auto-tag release → Run workflow with bump set to
patch/minor/majorto force that bump for the next tag (ignores conventional inference for that run only). Leave auto to infer from commits.
The script reads BUMP=major|minor|patch if set in the job environment (e.g. a repository variable wired into the workflow).
Each .tar.gz contains one canary-* directory produced by Electrobun (e.g. .app on macOS, platform layout on Linux/Windows). Extract with:
tar -xzf weclank-v0.2.0-macos-arm64.tar.gzThen open/run the app bundle or binary as documented for Electrobun on that OS.
The repo ships with codesign: false in electrobun.config.ts. CI builds are unsigned. For Gatekeeper-friendly macOS distribution you will need Apple Developer ID credentials, entitlements, and notarization wired into Electrobun and CI secrets — see the Electrobun distribution docs and electrobun.config.ts build.mac options when you are ready.
- The pushed tag is what release builds use:
sync-release-version.tssetspackage.jsonandelectrobun.config.tsapp.versionon the runner from that tag. package.jsonversionis still the baseline for the first tag when nov*tags exist yet; after that, tags advance independently until you optionally bumppackage.jsononmainfor human-readable “next line” alignment.