From 09c2923a40ee0bd109f926a4e292f60c37ccf151 Mon Sep 17 00:00:00 2001 From: soulhackzlol Date: Tue, 13 Oct 2026 01:29:33 +0200 Subject: [PATCH 1/2] ci(release): generate release notes only for a new release Moving a tag to republish a build ran the notes generator again, and each run added another "What's Changed" list under the release's own notes. They are now generated only when the release does not exist yet; a republished build keeps the notes it has. --- .github/workflows/release.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1b32e5c..5a0721c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -149,10 +149,25 @@ jobs: "$luaHash optional-vod-unlocker.lua" | Out-File -FilePath "artifacts\SHA256SUMS.txt" -Encoding ascii -Append Get-ChildItem artifacts + # A tag moved to republish a build already has its release, with its + # notes. Generating them again adds a second "What's Changed" list + # under the first, so they are generated only for a new release. + - name: is this release new + id: release + shell: pwsh + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release view "${{ github.ref_name }}" --repo "${{ github.repository }}" *> $null + $new = if ($LASTEXITCODE -eq 0) { 'false' } else { 'true' } + "new=$new" >> $env:GITHUB_OUTPUT + # The lookup failing is an answer, not an error for this step. + exit 0 + - name: publish release uses: softprops/action-gh-release@v3 with: - generate_release_notes: true + generate_release_notes: ${{ steps.release.outputs.new == 'true' }} # SemVer convention: anything with a `-` suffix (e.g. v0.1.0-beta.1, # v0.1.0-rc.2) is a pre-release. Stable tags (v0.1.0) ship as full. prerelease: ${{ contains(github.ref_name, '-') }} From 088edc76acdf1eaccf087582611c3f710a051f4d Mon Sep 17 00:00:00 2001 From: soulhackzlol Date: Tue, 13 Oct 2026 01:37:39 +0200 Subject: [PATCH 2/2] ci(release): never generate release notes A release's notes are written by hand, and the generated "What's Changed" list of pull request titles is not wanted on the page at all. This replaces the check for a new release with the generator switched off. --- .github/workflows/release.yml | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5a0721c..09eaa6a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -149,25 +149,13 @@ jobs: "$luaHash optional-vod-unlocker.lua" | Out-File -FilePath "artifacts\SHA256SUMS.txt" -Encoding ascii -Append Get-ChildItem artifacts - # A tag moved to republish a build already has its release, with its - # notes. Generating them again adds a second "What's Changed" list - # under the first, so they are generated only for a new release. - - name: is this release new - id: release - shell: pwsh - env: - GH_TOKEN: ${{ github.token }} - run: | - gh release view "${{ github.ref_name }}" --repo "${{ github.repository }}" *> $null - $new = if ($LASTEXITCODE -eq 0) { 'false' } else { 'true' } - "new=$new" >> $env:GITHUB_OUTPUT - # The lookup failing is an answer, not an error for this step. - exit 0 - + # No generated notes: they add a "What's Changed" list of pull request + # titles, once more every time a tag is moved to republish a build. The + # release's notes are written by hand. - name: publish release uses: softprops/action-gh-release@v3 with: - generate_release_notes: ${{ steps.release.outputs.new == 'true' }} + generate_release_notes: false # SemVer convention: anything with a `-` suffix (e.g. v0.1.0-beta.1, # v0.1.0-rc.2) is a pre-release. Stable tags (v0.1.0) ship as full. prerelease: ${{ contains(github.ref_name, '-') }}