What's Changed
🚨 Requires macOS 10.15 (Catalina) or Newer
mas previously required macOS 10.13 (High Sierra) or newer to run.
mas now requires macOS 10.15 (Catalina) or newer.
This was to migrate threading from third-party PromiseKit to native Swift Concurrency, which facilitated migrating the source of the list of apps installed from the MAS from a now-broken Apple private framework to the public (and working) Spotlight metadata.
The threading migration should (probably negligibly) improve the performance of mas, but, more importantly, facilitate future development.
Requiring macOS 10.15 also allows mas to use other newer frameworks & libraries / current versions of already used frameworks & libraries, as 10.15 was a watershed macOS (mainly because of Swift Concurrency).
Sorry to any users that might be stuck on macOS 10.13 or 10.14.
- Require macOS 10.15+ to run mas. by @rgoldberg in #735
- Use Swift Concurrency instead of PromiseKit by @rgoldberg in #737
🩹 Fixed list
, outdated
& update
on macOS 15.4+
mas previously obtained an array of apps installed from the MAS from CKSoftwareMap.shared().allProducts()
, which is from CommerceKit, an undocumented Apple private framework.
macOS 15.4, the array is always empty, which broke multiple mas commands: list
, outdated
& update
.
mas 2.0.0 now sources an array of apps installed from the MAS from Spotlight metadata, which fixes the broken commands.
Since Spotlight is a public interface, it shouldn't break without warning.
Unfortunately, Spotlight has all the data for each installed app except for the app name. mas uses the name of the app's folder (with any trailing .app
removed) as the app name, which is frequently exactly the same as the app name, but sometimes slightly off.
Future updates to mas might try to source the exact app name (& additional data) from the iTunes Search web API, or from elsewhere.
- Obtain installed apps from Spotlight by @rgoldberg in #740
🚀 Other Features
- Case-insensitively sort installed apps by app name by @rgoldberg in #741
- Do not scrape MAS app web page for version by @rgoldberg in #708
🏗️ Development (users should ignore this section)
- Downgrade Quick to 7.5.0 to fix multi-architecture executable build bug in Quick 7.6.0+ by @rgoldberg in #749
- Do not prepend any branch prefix to the version if the main branch does not exist by @rgoldberg in #752
- Fix app installation output by @rgoldberg in #760
- Include branch name in version name in certain conditions by @rgoldberg in #706
- Remove unnecessary imports by @rgoldberg in #710
- Update SwiftLint config for 0.58.0 by @rgoldberg in #712
- Improve scripts, GitHub workflows & docs by @rgoldberg in #714
- Improve scripts by @rgoldberg in #716
- Improvements by @rgoldberg in #718
- Simplify emoji by @rgoldberg in #720
- Improve
script/test
boilerplate filtering for newerswift
executables. by @rgoldberg in #734 - Upgrade Nimble to 13.7.1 & Quick to 7.6.2 by @rgoldberg in #736
- Check for Quick & Nimble updates in Dependabot by @rgoldberg in #743
- Ignore major & minor updates for Quick in Dependabot by @rgoldberg in #754
- Improve
*AppStoreSearcher
DocC by @rgoldberg in #756 - Improve
*AppLibrary
DocC by @rgoldberg in #758 - Enable Dependabot checks for Quick by @rgoldberg in #763
- Fix installed app displayed names by @rgoldberg in #747
Full Changelog: v1.9.0...v2.0.0