Releases: mas-cli/mas
v5.0.2: 🅾️ Ignore trailing 0 version components
- Ignore trailing 0 version components in inaccurate version comparison (thanks, @WarningImHack3r)
What's Changed
🚀 Features
- Fix additional trailing zeros being counted as version upgrade by @WarningImHack3r in #1175
New Contributors
- @WarningImHack3r made their first contribution in #1175
Full Changelog: v5.0.1...v5.0.2
v5.0.1: 🏗️ Fix macOS 14 build
- Fix macOS 14 build
What's Changed
Changes
- Fix macOS 14 build & test in GitHub by @rgoldberg in #1174
Full Changelog: v5.0.0...v5.0.1
v5.0.0: ✂️ Require macOS 13 to run; remove account, region & signin
- Fix an install/update deadlock for long installer logs
- Remove vestigial
account,region&signin - Require macOS 13+ to run mas
- Use Swift 6.2
What's Changed
🐛 Bug Fixes
- Improve build-time Swift & Swift driver version parsing to be more universal by @rgoldberg in #1163
- Fix installer output parsing deadlock by @rgoldberg in #1166
Changes
- Increase minimum macOS version to 13 Ventura by @rgoldberg in #1164
- Use Swift 6.2 by @rgoldberg in #1165
- Remove
account,region&signinby @rgoldberg in #1167 - Improve regex usage &
unsafeusage by @rgoldberg in #1169 - Remove unnecessary
MAS.&mas.by @rgoldberg in #1172
Full Changelog: v4.1.2...v5.0.0
v4.1.2: ⬆️ More install/update & other fixes
- Many install/update/outdated improvements
- Many build improvements
- Minor cleanup
What's Changed
🚀 Features
- Deduplicate ADAM IDs for install/update by @rgoldberg in #1147
🐛 Bug Fixes
- Ensure that notices about downloading phase always output by @rgoldberg in #1152
- Build using the latest available Xcode by @rgoldberg in #1154
- Improve version comparison logic for
outdated&updateby @rgoldberg in #1155 - Warn users to switch to a mas distribution that is built using Swift 6.2+ by @rgoldberg in #1156
- Fix pkg installer selection algorithm by @rgoldberg in #1158
- Choose shortest (instead of first) bundle URL from installer stderr as app folder by @rgoldberg in #1161
Changes
- Improve download output by @rgoldberg in #1141
- Replace protocols with composition by @rgoldberg in #1143
- Trash uninstalled app folders via
FileManagerinstead of via Finder by @rgoldberg in #1150
Full Changelog: v4.1.1...v4.1.2
v4.1.1: ⬆️ Install/update & other fixes
get,install,lucky, &update: numerous fixes including:- Properly updating App Store upon app installation/upgrade
- Improved concurrency
- Replace existing app receipt
- App Store & macOS regions: for each macOS region without an App Store, map to a default App Store specific to that region
config: binary slice architecture detection- Avoid a JSON parsing error
- arm64 pkg installer no longer require Rosetta to be installed
- Standardized error output formatting
- Cleanup
What's Changed
🚀 Features
- Include mas binary slice architectures & Mac CPU architecture in
configoutput by @rgoldberg in #1119
🐛 Bug Fixes
- Map each macOS region that does not have an App Store to a region that does have an App Store by @rgoldberg in #1118
- Improve concurrency by @rgoldberg in #1120
- json parsing by @rgoldberg in #1121
- Register installed / updated apps with Launch Services to fix incorrect App Store app page button states by @rgoldberg in #1122
- Improve app install/update output by @rgoldberg in #1124
- Delete existing receipt during update by @rgoldberg in #1125
- No longer require Rosetta for arm64 pkg installer by @rgoldberg in #1126
- Fix accurate outdated app detection by @rgoldberg in #1130
Changes
- Make
Error:prefix red & underlined for argument-parsing errors by @rgoldberg in #1101 - Cleanup by @rgoldberg in #1117
- Rename
configfromasdist, etc. by @rgoldberg in #1129 - Conform multiple types to
Sendableby @rgoldberg in #1132 - Update Swift Argument Parser to 1.7.0 by @rgoldberg in #1135
- Update
Package.resolvedby @rgoldberg in #1137 - Improve
configslices output by @rgoldberg in #1139
Full Changelog: v4.1.0...v4.1.1
v4.1.0: 🔐 Root privilege usage overhaul
Root privilege usage has been overhauled. mas now:
- requires root privileges only when absolutely necessary
- requests root privileges if they have not yet been granted
- allows root privileges granted during a call to mas to remain valid pursuant to the user's sudo credential timeout setting
- calls sudo from the executable mas binary, obviating the need for the now-removed zsh wrapper
- allows all commands to work properly if they are called with a root effective user
- some commands previously worked properly only if called with a non-root effective user (i.e. were not called via sudo)
What's Changed
🚀 Features
- Omnibus: sudo from Swift, non-expiring sudo credentials, macos-15-intel GHA runners, documentation, massive cleanup by @rgoldberg in #1098
Full Changelog: v4.0.0...v4.1.0
v4.0.0: 🎁 Workaround installd/PackageKit restriction
Workaround installd/PackageKit restriction (#1029) via a methodology found by @alienator88.
The workaround requires root privileges for get/purchase, install, lucky & update/upgrade.
Automatically requests root privileges via running sudo in an executable shell wrapper around mas.
Root privileges may also be supplied by running sudo mas … on your command line.
What's Changed
🚀 Features
- Executable zsh wrapper around executable binary that uses sudo when appropriate by @rgoldberg in #1086
🐛 Bug Fixes
- Workaround installd/PackageKit access restriction introduced in macOS 26.1, 15.7.2 & 14.8.2 by @rgoldberg in #1041
- Cleanup workaround for installd/PackageKit access restriction introduced in macOS 26.1, 15.7.2 & 14.8.2 by @rgoldberg in #1075
- Don't warn if multiple bundles installed by
installerby @rgoldberg in #1088
Changes
- Minor cleanup by @rgoldberg in #1078
- Include app identifying info in warnings & errors as suitable & as easily accomplished by @rgoldberg in #1081
- Improve mas version parsability by @rgoldberg in #1083
- Update pkg installer for wrapper shell script by @rgoldberg in #1090
Full Changelog: v3.1.0...v4.0.0
v3.1.0: 🎯 Configurable outdated app detection accuracy
outdated&updatenow default to using the inaccurate but faster pre-3.0.0 outdated app detection logicoutdated&updatenow have--accurate&--accurate-ignore-unknown-appsflags to use the accurate but slower outdated app detection logic first released in 3.0.0- The accurate logic can result in dialog boxes being opened for apps whose installers cannot be downloaded, because either:
- The app was installed for a different Apple Account than the current one
- The installer is no longer available from the App Store
--accurate-ignore-unknown-appsskips all apps that are unknown to the App Store--accurateexists because some apps are unknown to the App Store, but their installers can still be downloaded
- The accurate logic can result in dialog boxes being opened for apps whose installers cannot be downloaded, because either:
outdatedoutput is now properly tabulated
What's Changed
🚀 Features
- Improve download progress output by @rgoldberg in #1074
🐛 Bug Fixes
- Improve outdated app detection by @rgoldberg in #1070
- Properly tabulate
outdatedoutput by @rgoldberg in #1072
Changes
- Improve downloading/installing progress output by @rgoldberg in #1064
- Improve documentation, help text & output; cleanup repo. by @rgoldberg in #1066
- Update GHA
actions/checkoutto 6 by @rgoldberg in #1068
Full Changelog: v3.0.1...v3.1.0
v3.0.1: 🛬 Do not process TestFlight apps in outdated or update
What's Changed
🐛 Bug Fixes
- Ignore TestFlight apps in
outdated&upgradeby @rgoldberg in #1056
Changes
- Create a hard link instead of a symlink when creating pkg installers by @rgoldberg in #1051
- Rename searcher & search result types & variables by @rgoldberg in #1055
- Update git version comment to 2.52.0 by @rgoldberg in #1059
Full Changelog: v3.0.0...v3.0.1
v3.0.0: ⚖️ Fix app version comparison / update detection
This version (3.0.0) does not fix the recent errors for get, install, lucky, purchase, update & upgrade caused by macOS 26.1, 15.7.2 & 14.8.2. They will be fixed in the forthcoming mas 4.0.0.
mas 3.0.0 is being released with many other previously completed changes so that they can be used without the disruptive change to core mas functionality in mas 4.0.0.
Numerous problems in the detection of app updates have now been fixed. Unfortunately, this has rendered mas outdated slower, and mas update a decent amount slower. The commands will run faster if you supply app ID arguments to limit the apps that must be checked.
Bundle IDs are now accepted in lieu of ADAM IDs (formerly known as app IDs; ADAM IDs & bundle IDs are now collectively known as app IDs).
mas list & mas outdated now accept app IDs to filter their output.
mas search no longer outputs iOS or iPadOS apps, as they are not yet supported by the rest of mas.
Multiple commands & terms have been renamed to align with official Apple terminology. Commands that have been renamed are still usable via their old names via aliases.
A man page is now installed when installing from Homebrew.
Many behind-the-scenes improvements for the production code, development environment, and deployment procedure.
What's Changed
🚀 Features
- Generate manual via
Scripts/generate_manualby @rgoldberg in #923 - Accept Bundle IDs as arguments alongside ADAM IDs (fka app IDs) by @rgoldberg in #953
- Accept app IDs to filter
list&outdatedoutput by @rgoldberg in #973 - Rename commands & properties to align with App Store terminology by @rgoldberg in #1026
🐛 Bug Fixes
- Update SwiftLint to 0.60.0 by @rgoldberg in #932
- Change
listerror to warning by @rgoldberg in #934 - No longer include iOS or iPadOS apps in
searchresults by @rgoldberg in #947 - Refactor
outdated&upgradeto try to install each installed app, then cancel the installation when appropriate by @rgoldberg in #994 - Fix data race in
Consequences.swift. by @rgoldberg in #1007
Changes
- Add package installer title by @rgoldberg in #925
- Run
build-testGHA workflow on macOS-15, macos-14 & macos-13 by @rgoldberg in #911 - Rename generated
Package.swiftasMAS+Statics.swiftby @rgoldberg in #933 - Multiple issues by @rgoldberg in #938
- Improve
Reset. Remove--debugflag. by @rgoldberg in #942 - Setup macOS 26 GHA runner by @rgoldberg in #943
- Update extracted Apple private framework headers for macOS 26 & partially automate process. by @rgoldberg in #946
- Improve region handling. No longer use IsoCountryCodes library. by @rgoldberg in #949
- Code cleanup by @rgoldberg in #951
- Improve ADAM ID display padding by @rgoldberg in #954
- Improve spacing by @rgoldberg in #956
- Make
PurchaseDownloadObserverfinalby @rgoldberg in #959 - Improve
Scripts/update_headersby @rgoldberg in #962 - Refactor
Resetby @rgoldberg in #963 - Improve Swift linting, fix violations, and standardize file headers by @rgoldberg in #965
- Improve linting, formatting, script output, and other cleanup by @rgoldberg in #967
- Rename
mas&masTeststargets asMAS&MASTests, respectively by @rgoldberg in #969 - Misc Swift cleanup by @rgoldberg in #971
- Swift cleanup by @rgoldberg in #975
- Support building in Xcode by @rgoldberg in #976
- Upgrade swiftformat to 0.58.2 by @rgoldberg in #978
- Upgrade swift-collections to 1.3.0 by @rgoldberg in #981
- Improve issue templates by @rgoldberg in #982
- Cleanup by @rgoldberg in #984
- Cleanup by @rgoldberg in #986
- Support testing in Xcode by @rgoldberg in #988
- Fix Xcode build & other cleanup by @rgoldberg in #991
- Move files from
Sources/MAStoSources/masby @rgoldberg in #993 - Refactor
SearchResult&SearchResultListto use model-oriented let properties instead of JSON-oriented var properties by @rgoldberg in #998 - Improve Finder integration for
upgradeby @rgoldberg in #1005 - Improve type references & remove unnecessary protocols by @rgoldberg in #1006
- Enable upcoming Swift features by @rgoldberg in #1008
- Improve
Printerby @rgoldberg in #1009 - Parallelize
outdatedby @rgoldberg in #1010 - Improve DocC by @rgoldberg in #1012
- Inline code from formatter enums & remove them by @rgoldberg in #1014
- Update test resource handling by @rgoldberg in #1016
- Upgrade CodeQL to 4 by @rgoldberg in #1019
- Misc cleanup by @rgoldberg in #1025
- Update Swift Argument Parser to 1.6.2 by @rgoldberg in #1028
- Rename
infoaslookupwith aninfoalias to align with Apple terminology / Misc cleanup by @rgoldberg in #1031 - Improve Readme including using accordions by @rgoldberg in #1032
- Remove unnecessary
Hashableconformance fromAppIDby @rgoldberg in #1034 - Combine guards by @rgoldberg in #1036
- Use
letinstead of literal computervarby @rgoldberg in #1038 - Cleanup by @rgoldberg in #1040
- Merge
v1.7.1intomainfor bookkeeping by @rgoldberg in #1045 - Omnibus cleanup by @rgoldberg in #1047
- Improve root permission error message in
uninstallby @rgoldberg in #1049
Full Changelog: v2.3.0...v3.0.0