diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0d7adc5..b84d2de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -378,10 +378,19 @@ jobs: tag_name: ${{ github.ref_name }} name: ${{ github.ref_name }} draft: true - # Anything with a hyphen (rc, beta, alpha, etc.) is a pre-release; - # only bare semver like tray-v0.2.0 gets marked Latest on the - # GH releases page. - prerelease: ${{ contains(github.ref_name, '-') }} + # Anything with a hyphen in the SEMVER part (rc, beta, alpha, + # etc.) is a pre-release; only bare semver like tray-v0.2.0 + # gets marked Latest on the GH releases page. + # + # Critical: check `bare_version` (the part after `tray-v`), + # NOT `github.ref_name`. The `tray-` prefix itself contains + # a hyphen, so `contains(github.ref_name, '-')` returned true + # for EVERY tray release including bare-semver live ones, + # silently mis-flagging every post-split tray release as + # pre-release. Latest-badge stuck on the pre-split v1.8.3 + # tag until tray-v1.8.6 (2026-05-24) — see + # release-yml-prerelease-flag fix below. + prerelease: ${{ contains(needs.validate-tag.outputs.bare_version, '-') }} # `generate_release_notes: false` — our per-component changelog # in release-body.md replaces GH's auto-generated notes, which # would otherwise leak platform-only commits into the tray