Conversation
This branch has not been deployed
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.
What
Hey 👋 I noticed that when upgrade dialog appears I always wanted to know more about what's new features this release will bring to me. So I implemented this: include full changelog of upstream in release text (this edits release script)
Before / after
Before — the current
v2.1.5-1release body:After, one upstream release (the common case):
After, a bundle that skipped a release (what
v2.1.5-1actually was —v2.1.3 and v2.1.5, both linked and both included):
After scrolls

The same three bodies as plain text, exactly as the workflow writes them:
Release body today —
v2.1.5-1(110 characters)Bundles Syncthing v2.1.5. Upstream release notes: https://github.com/syncthing/syncthing/releases/tag/v2.1.5Release body with this PR, one upstream release (1259 characters)
Release body with this PR, a bundle that skipped v2.1.3 (6112 characters)
Skipped releases
A bundle doesn't always advance one upstream version.
v2.1.2-1→v2.1.5-1skipped upstream v2.1.3 (4.7 kB of release notes), which no user has ever
seen in the updater. So the step collects every stable upstream release newer
than the previously bundled version, up to the one being bundled, newest first.
With one release the header reads "Here is what's new in it:" and there are no
per-version sections. With several it reads "Here is what's new in
v2.1.3–v2.1.5:" and each release gets its own
# Syncthing vX.Y.Zsection.How this works
gh api repos/syncthing/syncthing/releaseslists stable upstream releases andgh release view --json bodyfetches each body. The previously bundled versioncomes from the most recent release of this repo. If nothing can be read the
step emits a
::warning::and publishes with the bare link as before, so aGitHub API hiccup can never block a release. Assembly stops at 100 kB (GitHub
caps a release body at 125 kB) and appends a pointer to the releases page.
Switched from
--notesto--notes-fileto avoid embedding a multi-linestring in a YAML block scalar.
Testing
The
run:block was extracted from the workflow and executed against a stubbedgh:::warning::, exit 0, release still publishedpublished=false, nothing createdThe single- and multi-release bodies in the screenshots were generated by this
step against the live GitHub API, then fed through
cmd/ghreleases2appcast.Known limitation
This fixes notes for upstream releases a bundle skipped. A user who skips
several app releases still sees only the newest appcast item's notes, because
Sparkle renders one item — that can't be fixed from this workflow.
Note
Re-running
generate-appcast.ymlre-reads every release body, so editing thebodies of past releases by hand would backfill their changelogs in the appcast too.