ci: refresh release notes in latest.json (manual workflow) - #71
Merged
Conversation
Tauri's auto-updater reads release notes from the `notes` field of the
`latest.json` manifest, NOT from the GitHub release page body. The two
are independent surfaces: GitHub renders `release.body` on the web; the
in-app UpdateDialog renders whatever `latest.json.notes` contains. Our
`release.yml` writes `notes: ""` because the auto-generated changelog
isn't available until `gh release create` runs, and post-build human
polishing happens later still.
This workflow closes that loop without re-running the ~22 min full
release build:
1. download the already-published `latest.json` from the release
2. fetch the current release body via `gh release view`
3. patch only `.notes` via `jq --rawfile` (sigs / URLs / platforms /
version / pub_date all round-trip unchanged)
4. re-upload `latest.json` with `--clobber`
~30s start to finish. Manual `workflow_dispatch` only -- fired after a
release-notes editor polishes the auto-gen changelog. Loop-safe by
construction (the workflow doesn't react to its own re-upload because
there's no `release: edited` trigger).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
Nic-dorman
added a commit
that referenced
this pull request
Apr 30, 2026
Second internal-tester pre-release of the 0.6.8 cycle. Adds on top of rc.1: - Sidebar PRE-RELEASE indicator (#70) -- teal badge for rc/beta/alpha builds, distinct from the amber DEVNET badge. - refresh-release-notes workflow (#71) -- ~30s manual workflow_dispatch to push polished release notes into latest.json so the in-app UpdateDialog renders them. Tests V2-237 end-to-end: anyone on installed v0.6.8-rc.1 with Settings -> Advanced -> Pre-release builds toggled on should auto-detect rc.2. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a manual
workflow_dispatchworkflow that patches thenotesfield of an already-published release'slatest.jsonfrom the current GitHub release body, without re-running the full ~22 min release build.Why this exists
Tauri's auto-updater reads release notes from the
notesfield oflatest.json, not from the GitHub release page body. The two surfaces are independent:release.bodyon GitHub — the web page changeloglatest.json.notes— what the in-app UpdateDialog rendersrelease.ymlcurrently writesnotes: ""intolatest.jsonbecause the auto-generated changelog isn't available untilgh release createruns, and post-build editing by humans happens later still. So shipped releases (including v0.6.8-rc.1) have empty release-notes in the in-app dialog.What this workflow does
Triggered manually with a tag input (
v0.6.8-rc.1, etc.):latest.jsonfrom the release. Sanity-check it's well-formed (has.platforms).gh release view --json body..notesviajq --rawfile— preserves markdown formatting, leaves all other fields (version,pub_date, everyplatforms.*sig+URL) untouched.latest.jsonwith--clobber.~30 seconds end to end.
Operational notes
release: editedlistener, which avoids the loop where our own asset re-upload would re-fire the workflow.contents: writeon the workflow'sGITHUB_TOKENto upload to the release. Already granted to default workflows in this repo.How to use
After cutting a release and editing the auto-generated notes on GitHub:
Or via CLI:
Test plan
v0.6.8-rc.1(which has empty notes) → verify the in-app UpdateDialog shows the polished release notes after a re-check.