Skip to content

Bridge release 1.13.1: an update check that reads the minimum macOS - #8

Merged
sevmorris merged 3 commits into
mainfrom
claude/bridge-release
Oct 4, 2026
Merged

sevmorris merged 3 commits into
mainfrom
claude/bridge-release

Conversation

@sevmorris

Copy link
Copy Markdown
Owner

The bridge release, 1.13.1, on the current minimum macOS. It ships an update check that reads the minimum macOS each release declares, so the later "Require macOS 15" release isn't offered to Macs that can't run it. It's also the first real run of release.sh's new test step.

What

  • Update check: the checker reads a <!-- minimum-macos: X --> marker from the release notes. When the newest release is newer than this build but needs a newer macOS than this Mac has:

    • Check for Updates… says which macOS that release needs, and that the installed version is the newest this Mac can run;
    • the check at launch stays quiet;
    • no Download is offered.

    A release with no marker, or a malformed one, is offered as before.

  • The toolbar badge is cleared for such a release. The tests go in `BarkeepTests.swift`, since a new file would need a hand edit to `project.pbxproj`.

  • release.sh reads LSMinimumSystemVersion from the built app before notarizing, and stops there if it's missing. It appends a "Requires macOS X or later." line and the marker to the GitHub release notes, curated or generated.

  • release-notes/v1.13.1.md drafted.

Checked

  • Built for testing with Xcode 27: no errors, and no warnings in the changed files.
  • The new tests compile into the test target.
  • zsh -n release.sh passes.
  • PlistBuddy reads the right minimum from the installed app.
  • The marker parser's tests pass (run locally in ClipHack, the same code as here).

To release

Merge, let CI go green, then caffeinate -dis ./release.sh 1.13.1.

🤖 Generated with Claude Code

sevmorris and others added 3 commits October 3, 2026 22:24
The update check compared versions only, so once a release needs a newer macOS it would still be offered to an older Mac, whose user would download a DMG and drag in an app that will not open over the one that works.

release.sh now ends every release's notes with <!-- minimum-macos: X -->, from the built app's LSMinimumSystemVersion. The checker reads it: when the newest release is newer than this build but needs a newer macOS than this Mac has, it returns needsNewerMacOS instead of available. Check for Updates… then says which macOS the release needs and that the installed version is the newest this Mac can run; the check at launch stays quiet. A release with no marker, or a malformed one, is offered as before.

Tests cover reading the marker, its absence, malformed markers, the version comparison and the description.

The toolbar badge is cleared for such a release, as for an up-to-date one. The tests go in BarkeepTests.swift, since a new file would need a hand edit to project.pbxproj.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reads LSMinimumSystemVersion from the built app before notarizing, stopping there if it is missing, and appends to the GitHub release notes, curated or generated, a "Requires macOS X or later." line and a <!-- minimum-macos: X --> marker, which GitHub does not render and the app's update check reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bridge release on the current floor: it ships the update check that reads the minimum macOS, so the release that raises the floor to 15 is not offered to Macs below it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sevmorris
sevmorris merged commit 8c7774d into main Oct 4, 2026
4 checks passed
@sevmorris
sevmorris deleted the claude/bridge-release branch October 4, 2026 05:33
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