Skip to content

ci: refresh release notes in latest.json (manual workflow) - #71

Merged
Nic-dorman merged 1 commit into
mainfrom
ci/refresh-release-notes-workflow
Apr 30, 2026
Merged

ci: refresh release notes in latest.json (manual workflow)#71
Nic-dorman merged 1 commit into
mainfrom
ci/refresh-release-notes-workflow

Conversation

@Nic-dorman

Copy link
Copy Markdown
Contributor

Summary

Adds a manual workflow_dispatch workflow that patches the notes field of an already-published release's latest.json from 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 notes field of latest.json, not from the GitHub release page body. The two surfaces are independent:

  • release.body on GitHub — the web page changelog
  • latest.json.notes — what the in-app UpdateDialog renders

release.yml currently writes notes: "" into latest.json because the auto-generated changelog isn't available until gh release create runs, 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.):

  1. Validate the release exists.
  2. Download the already-uploaded latest.json from the release. Sanity-check it's well-formed (has .platforms).
  3. Fetch the current release body via gh release view --json body.
  4. Patch only .notes via jq --rawfile — preserves markdown formatting, leaves all other fields (version, pub_date, every platforms.* sig+URL) untouched.
  5. Re-upload latest.json with --clobber.

~30 seconds end to end.

Operational notes

  • Manual trigger only — no release: edited listener, which avoids the loop where our own asset re-upload would re-fire the workflow.
  • Permissions — needs contents: write on the workflow's GITHUB_TOKEN to upload to the release. Already granted to default workflows in this repo.
  • Replayable — re-running on the same tag is safe (idempotent if the release body hasn't changed).

How to use

After cutting a release and editing the auto-generated notes on GitHub:

Actions → "refresh release notes" → Run workflow → tag: v0.6.8-rc.1

Or via CLI:

gh workflow run refresh-release-notes.yml -f tag=v0.6.8-rc.1

Test plan

  • CI workflow lint passes (a yaml workflow file alone — no app code touched, so the existing CI doesn't have anything to verify; merging it just makes the action available).
  • After merge, run on v0.6.8-rc.1 (which has empty notes) → verify the in-app UpdateDialog shows the polished release notes after a re-check.

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>
@Nic-dorman
Nic-dorman merged commit 6fe2a5f into main Apr 30, 2026
4 checks passed
@Nic-dorman
Nic-dorman deleted the ci/refresh-release-notes-workflow branch April 30, 2026 14:22
@Nic-dorman Nic-dorman mentioned this pull request Apr 30, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant