Skip to content

Ship a fix only on the platforms it fixes; 1.4.1 is Windows-only - #51

Merged
kellylford merged 3 commits into
mainfrom
release-per-platform
Oct 22, 2026
Merged

kellylford merged 3 commits into
mainfrom
release-per-platform

Conversation

@kellylford

Copy link
Copy Markdown
Collaborator

Kelly's amendment to "one feature set, three versions": it isn't responsible to send iPhone testers a new build with nothing in it. MAJOR.MINOR is the product (the same features on all three platforms). A fix release ships only where something changed, and the release notes say so.

The rule (WORKFLOW.md, Versioning)

  • x.y.0 ships on Windows, Mac, iPhone and iPad together. prepare-release.ps1 refuses a partial one.
  • x.y.z ships only on the platforms it fixes. The patch counter is shared, so every number is one release: a Windows fix is 1.4.1, a later Mac fix is 1.4.2, and the Mac never has a 1.4.1.
  • The "screen reader behaviour change = minor" rule is clarified: a fix for something plainly broken (the class-name tree) is still a patch.

How

  • build/prepare-release.ps1 1.4.1 -Platforms windows writes RELEASE-PLATFORMS, and moves the iOS marketing version only when iOS ships.
  • build/release-platforms.sh reads it. Each release workflow's first job skips its platform if it isn't listed. release.yml's new notes job creates the draft on every tag and opens it with "RSS Quick 1.4.1 is a Windows-only release. The Mac, iPhone and iPad versions have not changed, so there is nothing new to install there." It used to be the Windows job that made the draft, so a Mac-only fix would have had no notes.
  • ReleaseCheck (Windows portable copy and the Mac) reads /releases?per_page=30 and takes the newest release carrying its own download. Looking only at /releases/latest, a Windows-only 1.4.3 published after a Mac-only 1.4.2 would hide 1.4.2 from every Mac on 1.4.0. Matching tests on both sides. Velopack, the installed Windows copy's updater, already looks for the newest release with its feed files.
  • 1.4.1 becomes Windows-only: RELEASE-PLATFORMS = windows, the CHANGELOG heading says so, and the iOS project goes back to 1.4.0.

release-platforms.sh was checked by hand for every combination of platforms, an empty file and an unknown word. The Swift changes were written without a Swift toolchain, so apple-ci is their first compile.

🤖 Generated with Claude Code

MAJOR.MINOR is the product, the same features on all three platforms; a fix
release (x.y.z) now ships only where something changed, so iPhone testers are
not sent a build with nothing in it. The patch counter stays shared, so every
number is one release.

- prepare-release.ps1 -Platforms writes RELEASE-PLATFORMS, refuses a partial
  feature release, and moves the iOS marketing version only when iOS ships.
- build/release-platforms.sh reads it: each release workflow's first job skips
  the platform if it is not listed, and release.yml's notes job creates the
  draft and opens it with "RSS Quick 1.4.1 is a Windows-only release...".
- ReleaseCheck, on Windows and the Mac, reads the recent releases and takes the
  newest one carrying its own download, so a later release for another
  platform never hides one meant for this copy. Matching tests on both sides.
- WORKFLOW.md, CLAUDE.md and the 1.4.1 changelog say so. 1.4.1 is Windows only,
  and the iOS project goes back to 1.4.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kellylford and others added 2 commits October 22, 2026 08:15
- Swift tests: labelled arguments in declaration order (page before
  otherAsset), which broke the required macOS check.
- The draft is created only if none exists, with gh, so re-running the notes
  job or re-tagging cannot append the generated notes twice or replace edits.
  An iPhone-only fix makes no GitHub release; it would have nothing to download.
- A manual run on a v* tag follows RELEASE-PLATFORMS, so redoing a release
  cannot add a platform it left out.
- The update checks fetch 10 releases, not 30 (each entry is ~36 KB).
- prepare-release.ps1 accepts windows,macos through powershell -File.
- The notes say the iPhone and iPad version comes through TestFlight.
- Tests use /releases and cover an empty list on both sides; the iOS and macOS
  READMEs and WORKFLOW.md describe the new process, including unticking
  Set as the latest release for a release with no Windows files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kellylford
kellylford merged commit 612d0a6 into main Oct 22, 2026
5 checks passed
@kellylford
kellylford deleted the release-per-platform branch October 22, 2026 13:22
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.

2 participants