Skip to content

Add hardware requirements element#2797

Merged
zorgiepoo merged 7 commits into
2.xfrom
hw-requirements
Nov 16, 2025
Merged

Add hardware requirements element#2797
zorgiepoo merged 7 commits into
2.xfrom
hw-requirements

Conversation

@zorgiepoo

@zorgiepoo zorgiepoo commented Nov 9, 2025

Copy link
Copy Markdown
Member

The first requirement we support is arm64 which allows updates to mark themselves as Apple silicon only.

The message that shows up when users check for updates tells them their Mac is too old and a newer Apple silicon Mac is required for new updates. This introduces a new localizable string.

This requirement is also inferred if the minimum system version is >= 27.0

generate_appcast is also updated to handle a new branch for hardwareRequirements element, and for automatically populating it if needed.

Fixes #2796

Misc Checklist

  • My change requires a documentation update on Sparkle's website repository
  • My change requires changes to generate_appcast, generate_keys, or sign_update

Testing

I tested and verified my change by using one or multiple of these methods:

  • Sparkle Test App
  • Unit Tests
  • My own app
  • Other (please specify)
  • Tested unit tests on both AS and Intel Macs
  • Tested test app by adding <sparkle:hardwareRequirements>arm64</sparkle:hardwareRequirements> on AS (where it's no-op) and Intel Macs.
  • Tested running generate_appcast on updates that have only arm64 mach-o slice, and updates that have >= 27.0 minimum system version, and updates that have neither requirement.
  • Tested encoding/decoding of hardwareRequirements in SUAppcastItem and SUAppcastItemState

macOS version tested: 26.1 (25B78)

@zorgiepoo zorgiepoo added this to the 2.9.0 milestone Nov 9, 2025
@zorgiepoo zorgiepoo merged commit fc73503 into 2.x Nov 16, 2025
2 checks passed
@zorgiepoo zorgiepoo deleted the hw-requirements branch November 16, 2025 01:04
st0012 added a commit to st0012/cctop that referenced this pull request May 12, 2026
* Update auto-update scripts to support Intel

* Minor changes

* Bump Sparkle to 2.9.1 for hardwareRequirements support

Sparkle 2.8.1 (the previously pinned version) does not parse
sparkle:hardwareRequirements — that element was added in
sparkle-project/Sparkle#2797 and first shipped in Sparkle 2.9.0.

Without this bump, the multi-item appcast generated by the parent
commit would still serve Intel Macs the arm64 ZIP, because 2.8.1's
SUAppcastDriver.filterSupportedAppcast performs no CPU/hardware
filtering and bestItemFromAppcastItems breaks ties by first item —
which is the arm64-restricted entry.

2.9.0 changelog is additive (markdown release notes, signed feeds,
hardwareRequirements, minimumUpdateVersion); 2.9.1 adds bug fixes
and SKIP_INSTALL=YES for XPCServices. No API removals that affect
this codebase. Sparkle.xcframework's internal layout
(Versions/B/Autoupdate, XPCServices/*.xpc, Updater.app) is unchanged,
so scripts/sign-and-notarize.sh's discovery logic continues to work.
SparkleUpdater.swift typechecks against 2.9.1 against the new
NS_SWIFT_UI_ACTOR annotation on SPUUpdaterDelegate.

Refs: https://github.com/sparkle-project/Sparkle/releases/tag/2.9.1

* Document Intel manual-download workaround for users on ≤ v0.15.2

The structural appcast fix and Sparkle 2.9.1 bump only take effect
after a user is running a cctop build that ships Sparkle 2.9+.
Intel users currently on cctop v0.15.2 (which bundles Sparkle 2.8.1)
will still be handed the arm64 ZIP by the in-app updater on the
release that finally fixes them — because the resolution happens in
the *currently-running* Sparkle, not the one inside the new download.

Add an FAQ entry in both README.md and site/index.html walking
affected Intel users through a one-time manual download of the
x86_64 DMG to get over that bridge. After the manual upgrade,
subsequent updates will pick the correct architecture automatically.

---------

Co-authored-by: Jonas Skoogh <[email protected]>
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.

Hardware requirements and arm64 requirement

1 participant