8787 # runs, where tauri-action only builds (no release).
8888 tagName : ${{ startsWith(github.ref, 'refs/tags/v') && github.ref_name || '' }}
8989 releaseName : " Git Account Manager __VERSION__"
90+ # Fallback body only. The `release-notes` job below replaces this with
91+ # GitHub's auto-generated notes ("Full Changelog: <prev>...<tag>" link)
92+ # once every platform's build has finished.
9093 releaseBody : " Auto-generated release. Existing installs update in-app via the built-in updater."
9194 releaseDraft : false
9295 prerelease : false
@@ -105,3 +108,28 @@ jobs:
105108 src-tauri/target/${{ matrix.target }}/release/bundle/**/*.AppImage
106109 src-tauri/target/${{ matrix.target }}/release/bundle/**/*.dmg
107110 if-no-files-found : ignore
111+
112+ # tauri-action publishes the release with the signed updater artifacts but a
113+ # static body. After every platform build finishes, replace that body with
114+ # GitHub's auto-generated notes ("What's Changed" + the
115+ # "Full Changelog: <prev>...<tag>" compare link), keeping the release name.
116+ # Runs in its own job so it never races tauri-action creating the release.
117+ release-notes :
118+ needs : build
119+ if : startsWith(github.ref, 'refs/tags/v')
120+ runs-on : ubuntu-latest
121+ permissions :
122+ contents : write
123+ steps :
124+ - name : Generate release notes
125+ env :
126+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
127+ REPO : ${{ github.repository }}
128+ TAG : ${{ github.ref_name }}
129+ run : |
130+ release=$(gh api "repos/$REPO/releases/tags/$TAG")
131+ id=$(echo "$release" | jq -r '.id')
132+ name=$(echo "$release" | jq -r '.name')
133+ gh api --method PATCH "repos/$REPO/releases/$id" \
134+ -f name="$name" \
135+ -F generate_release_notes=true
0 commit comments