Releases: mas-cli/mas
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
v2.3.0: ๐ Search order & multiple arguments
What's Changed
๐ Features
- Accept multiple app ID & search term arguments for all relevant commands by @rgoldberg in #841
๐ Bug Fixes
- Fix
searchresult order by @rgoldberg in #922
Changes
- Improve URL parsing error handling by @rgoldberg in #843
- Fix network warning by @rgoldberg in #899
- Improve test resource handling by @rgoldberg in #846
- Standardize file headers by @rgoldberg in #847
- Improve output code by @rgoldberg in #850
- Improve linting by @rgoldberg in #851
- Improve scripts, configurations & documentation by @rgoldberg in #853
- Restrict access for imports & test classes by @rgoldberg in #855
- No longer use Hound by @rgoldberg in #857
- Improve README shields by @rgoldberg in #859
- Improve Swift comments &
sample.swiftby @rgoldberg in #861 - Stop using swift-format by @rgoldberg in #863
- Improve Swift spacing & minor Swift cleanup by @rgoldberg in #868
- Encapsulate
ISStoreAccountby @rgoldberg in #869 - Swift cleanup by @rgoldberg in #871
- Improve build, lint & test by @rgoldberg in #873
- Build on older versions of Xcode by @rgoldberg in #875
- Update documentation & badges by @rgoldberg in #877
- Swift cleanup by @rgoldberg in #879
- Add & use SAP
@OptionGroups for arguments by @rgoldberg in #881 - Update
Commandabstracts, DocC & comments by @rgoldberg in #883 - Output / error overhaul by @rgoldberg in #884
- Rename top-level folders to align with Swift conventions by @rgoldberg in #885
- Color script start header arrow blue iff tty by @rgoldberg in #887
- Streamline file headers & associated updates by @rgoldberg in #888
- Update
Scripts/testboilerplate output filtering by @rgoldberg in #890 - Improve linting: SwiftFormat 0.56.0 by @rgoldberg in #892
- Cleanup lint config & other files by @rgoldberg in #894
- Upgrade markdownlint-cli2 to 0.18.1 by @rgoldberg in #897
- Use SAP main branch & minor code cleanup by @rgoldberg in #901
- Upgrade IsoCountryCodes to 1.0.3 by @rgoldberg in #903
- Update linting & formatting; rename Swift function parameter by @rgoldberg in #906
- Improve Apple private framework headers by @rgoldberg in #907
- Improve
.gitignore; useString(validatingCString:)instead of deprecatedString(validatingUTF8:)by @rgoldberg in #909 - Miscellaneous cleanup by @rgoldberg in #913
- Improve Apple private framework header types, nullability & parameter internal names by @rgoldberg in #915
- Update dependencies & linting by @rgoldberg in #920
Full Changelog: v2.2.2...v2.3.0
v2.2.2: ๐ Limit app interactions to specific folders
What's Changed
๐ Bug Fixes
- Only interact with apps under
/Applicationsor MAS-designated large app drive by @rgoldberg in #840
Changes
- Always install all dependencies in
Brewfileas now only support building on macOS 13+ by @rgoldberg in #824 - Use local time zone for
infodates by @rgoldberg in #826 - Improve
MASError.notSupporteddescription by @rgoldberg in #829 - Improve code spacing by @rgoldberg in #830
- Indent with tabs instead of with spaces by @rgoldberg in #831
- Do not delete the cache folder since it hasn't been used since 2021 by @rgoldberg in #834
- Change package identifier from
com.mphys.mas-clitoio.github.mas-cliby @rgoldberg in #835 - Simplify networking. by @rgoldberg in #837
Full Changelog: v2.2.1...v2.2.2
v2.2.1: โญ๏ธ Non-retroactive
What's Changed
Changes
- Upgrade Xcode to 16.3 on GHA macos-15 runners by @rgoldberg in #817
- Remove the homebrew-core bump step from
release-published.ymlby @rgoldberg in #820 - Remove
@retroactiveby @rgoldberg in #821
Full Changelog: v2.2.0...v2.2.1
v2.2.0: ๐งน Cleanup
What's Changed
๐ Features
- Warn about how to index installed apps when no apps found by
mas listby @rgoldberg in #814
๐ Bug Fixes
- Support apps under
/Volumes/*/Applicationsby @rgoldberg in #779 - Reenable
accountfor macOS 11- by @rgoldberg in #785
Changes
- Improve concurrency & other cleanup by @rgoldberg in #771
- Upgrade Swift from 5.7.1 to 5.9 by @rgoldberg in #773
- Code cleanup by @rgoldberg in #776
- Make
SoftwareProduct&SimpleSoftwareProductimmutable by @rgoldberg in #789 - Simplify test concurrency. by @rgoldberg in #790
- Reword "Apple ID" as "Apple Account" by @rgoldberg in #791
- Use
NSMetadataItem*Keyinstead ofkMDItem*for Spotlight query keys by @rgoldberg in #793 - Remove vestigial Apple private framework headers by @rgoldberg in #795
- Improve output code. by @rgoldberg in #798
- Remove unused imports by @rgoldberg in #800
- Code cleanup by @rgoldberg in #807
- docs(known issues): explain that mas relies on mds by @gforien in #803
- Improve
README.mdby @rgoldberg in #812
New Contributors
Full Changelog: v2.1.0...v2.2.0
v2.1.0: ๐ Unknown app IDs no longer prevent upgrading other apps
What's Changed
๐ Bug Fixes
- When upgrading apps, don't short circuit when encountering any app ID that is unknown to the MAS by @rgoldberg in #767
Full Changelog: v2.0.0...v2.1.0