Conversation
There was a problem hiding this comment.
Pull request overview
This pull request adds Sparkle-based automatic update functionality to the ApertureTokensManager macOS application. The changes enable users to check for updates through a menu item and configure the app to download and install updates automatically via Sparkle's framework.
Changes:
- Integrated Sparkle 2.8.1 as a Swift Package dependency with necessary UI components and view models
- Configured project entitlements and Info.plist with Sparkle-specific keys (feed URL, public key, installer service)
- Created initial appcast.xml feed describing version 1.0.1 release
- Updated version numbers to 1.0.1 (marketing) and 2 (build), and enabled outgoing network connections
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| appcast.xml | New Sparkle appcast feed XML defining version 1.0.1 with download URL and signature |
| ApertureTokensManager/Info.plist | New file with Sparkle configuration keys (feed URL, public ED key, installer service) |
| ApertureTokensManager/App/ApertureTokensManagerApp.swift | Added Sparkle integration with CheckForUpdatesViewModel, CheckForUpdatesView, and menu command |
| ApertureTokensManager/ApertureTokensManager.entitlements | New entitlements file with Mach lookup exceptions for Sparkle services |
| ApertureTokensManager.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved | Added Sparkle 2.8.1 package resolution |
| ApertureTokensManager.xcodeproj/project.pbxproj | Updated project configuration to link Sparkle, reference new files, bump versions, and enable network access |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <h2>What's New</h2> | ||
| <ul> | ||
| <li>Initial release of Aperture Tokens Manager.</li> | ||
| <li>Enjoy the first version of the app !</li> |
There was a problem hiding this comment.
There's an extra space before the exclamation mark in "the app !". In English, punctuation should typically be placed directly after the last word without a preceding space.
| <li>Enjoy the first version of the app !</li> | |
| <li>Enjoy the first version of the app!</li> |
| <key>SUEnableInstallerLauncherService</key> | ||
| <true/> | ||
| <key>SUFeedURL</key> | ||
| <string>https://loopingstudio.github.io/ApertureTokenManager/appcast.xml</string> |
There was a problem hiding this comment.
The URLs use "ApertureTokenManager" (without 's') while the app is named "ApertureTokensManager" (with 's'). Ensure that the GitHub repository name is actually "ApertureTokenManager" and that GitHub Pages is correctly configured at this URL, otherwise update checks will fail.
| <string>https://loopingstudio.github.io/ApertureTokenManager/appcast.xml</string> | |
| <string>https://loopingstudio.github.io/ApertureTokensManager/appcast.xml</string> |
| <pubDate>Fri, 16 Feb 2026 10:19:35 +0100</pubDate> | ||
| <sparkle:version>1</sparkle:version> | ||
| <sparkle:shortVersionString>1.0.1</sparkle:shortVersionString> | ||
| <sparkle:minimumSystemVersion>15.0</sparkle:minimumSystemVersion> |
There was a problem hiding this comment.
The minimum system version is set to 15.0, but this should be aligned with the actual deployment target. The Xcode project sets MACOSX_DEPLOYMENT_TARGET = 15.0, so this is consistent. However, ensure that Sparkle 2.8.1 supports macOS 15.0 as the minimum version.
| </ul> | ||
| ]]> | ||
| </description> | ||
| <enclosure url="https://github.com/LoopingStudio/ApertureTokenManager/releases/download/1.0.1/ApertureTokensManager.zip" length="7253356" type="application/octet-stream" sparkle:edSignature="pPTbrV1VW8MjuWMyeQxQh8MsYUYOaiX/qTw8WFdjmE1nzTgUy3QirBKVPenqXDifibe5BhosHD6XFsRvkn0xCQ=="/> |
There was a problem hiding this comment.
The enclosure URL points to a GitHub release (1.0.1) that may not exist yet if this is the initial release adding Sparkle functionality. Ensure the release is created and the ZIP file is uploaded to GitHub releases before this version is distributed, otherwise update checks will fail.
| <item> | ||
| <title>1.0.1</title> | ||
| <pubDate>Fri, 16 Feb 2026 10:19:35 +0100</pubDate> | ||
| <sparkle:version>1</sparkle:version> |
There was a problem hiding this comment.
The sparkle:version is set to "1" but the CURRENT_PROJECT_VERSION in the Xcode project is set to "2". These values should match to ensure Sparkle can properly compare version numbers. The sparkle:version should be "2" to match the build number in the project configuration.
| <sparkle:version>1</sparkle:version> | |
| <sparkle:version>2</sparkle:version> |
| </ul> | ||
| ]]> | ||
| </description> | ||
| <enclosure url="https://github.com/LoopingStudio/ApertureTokenManager/releases/download/1.0.1/ApertureTokensManager.zip" length="7253356" type="application/octet-stream" sparkle:edSignature="pPTbrV1VW8MjuWMyeQxQh8MsYUYOaiX/qTw8WFdjmE1nzTgUy3QirBKVPenqXDifibe5BhosHD6XFsRvkn0xCQ=="/> |
There was a problem hiding this comment.
The enclosure element is missing the required sparkle:version attribute. According to Sparkle 2.x documentation, the enclosure tag should include sparkle:version to specify the build number for the update package.
| <enclosure url="https://github.com/LoopingStudio/ApertureTokenManager/releases/download/1.0.1/ApertureTokensManager.zip" length="7253356" type="application/octet-stream" sparkle:edSignature="pPTbrV1VW8MjuWMyeQxQh8MsYUYOaiX/qTw8WFdjmE1nzTgUy3QirBKVPenqXDifibe5BhosHD6XFsRvkn0xCQ=="/> | |
| <enclosure url="https://github.com/LoopingStudio/ApertureTokenManager/releases/download/1.0.1/ApertureTokensManager.zip" length="7253356" type="application/octet-stream" sparkle:version="1" sparkle:edSignature="pPTbrV1VW8MjuWMyeQxQh8MsYUYOaiX/qTw8WFdjmE1nzTgUy3QirBKVPenqXDifibe5BhosHD6XFsRvkn0xCQ=="/> |
| <li>Initial release of Aperture Tokens Manager.</li> | ||
| <li>Enjoy the first version of the app !</li> |
There was a problem hiding this comment.
The release notes describe this as the "Initial release" which is inconsistent with the version number 1.0.1. An initial release should typically be version 1.0.0, or if this is version 1.0.1, the release notes should describe what's new in this update compared to 1.0.0.
This pull request introduces Sparkle-based automatic update functionality to the ApertureTokensManager app. It updates the project configuration to add Sparkle as a Swift Package dependency, includes the necessary entitlements and Info.plist keys, implements the update check UI, and provides an initial appcast feed for Sparkle. Additionally, it updates version numbers and enables outgoing network connections to support update checking.
The most important changes are:
Sparkle Integration and Update Functionality:
ApertureTokensManager.xcodeproj/project.pbxproj,Package.resolved). [1] [2] [3] [4] [5] [6] [7]ApertureTokensManager/App/ApertureTokensManagerApp.swift). [1] [2]Configuration and Entitlements:
ApertureTokensManager.entitlementsto support Sparkle's required temporary Mach lookup exceptions.SUFeedURLandSUPublicEDKey(ApertureTokensManager/Info.plist).ApertureTokensManager.xcodeproj/project.pbxproj). [1] [2] [3] [4] [5] [6]Appcast Feed:
appcast.xmlfile for Sparkle to use as the update feed, describing version 1.0.1.Versioning: