Catalog App 1.13.0

👀 Changed
Extra protection for the privileged helper: The component that performs installs as root now verifies on every path that the process asking is signed by Root3, and only starts when it is signed by Root3 itself. Install scripts are run with a clean shell environment, and their output is no longer readable by other processes on the Mac.
App Catalog refuses to use a data folder it cannot secure: If the folder holding App Catalog's shared data can't be verified as safe — because it's a symbolic link, isn't a folder, or isn't owned by the system — App Catalog now stops instead of writing there.
🛠 Fixed
The enforcement date in Catalog App now matches your configuration: The Updates view always counted three days of deferral, whatever AllowedDeferralsInDays was set to, so a user could be told an update would be enforced days earlier than the agent actually enforced it. The app now reads the configured value, so Catalog App, the reminders and the agent all show the same date.
More information: User deferrals & interaction
Update now on a grouped reminder: When several apps were bundled into one reminder, clicking Update now did nothing at all. The reminder now carries the apps it refers to, so the button updates exactly those apps.
Reminders stopped arriving after a background restart: The service that delivers reminders connected to the update agent only once. When the agent restarted — which it does routinely, on demand — the connection was never re-established and the user stopped receiving reminders entirely until the Mac was restarted. It now reconnects automatically, retrying with increasing intervals until it succeeds.
Installs could hang indefinitely: If the privileged helper couldn't be reached, or crashed while a script was running, Catalog App showed a spinner forever and never reported an error. Because installs run one at a time, every later install, update and removal queued up behind it until the app was relaunched. A failed or lost response is now reported as a normal install error, and a response that never arrives times out.
The privileged helper could be stopped by any local process: Connecting to the helper with an invalid signature shut it down — including in the middle of an install. A rejected connection is now logged and refused, and the helper keeps serving.
Invalid install scripts are stopped before they run: The helper's syntax check reported its result too late to matter, so a malformed script ran as root anyway and the check itself could terminate the helper mid-install. The check now runs before the script and blocks it on failure.
The hourly run no longer stops halfway: One app whose install script couldn't be fetched, decrypted or run ended the entire run — remaining apps, finalization and the inventory were skipped, every hour. A transient network error during the run could do the same. Both situations are now logged and skipped, and the run continues. Running
catalog updateby hand keeps reporting a failure as before.Updates for software that isn't an app: Command line tools and JDKs managed through App Catalog could never be updated — their installed version couldn't be read at all, and each one logged an error every hour. Their versions are now read the same way the inventory reads them.
Updates that only change the build number: Vendors who ship new builds under an unchanged version, for example
6.1.11 (43712)followed by6.1.11 (43800), were never offered as an update because both compared as equal. The build number is now used as a tiebreaker when both versions carry one.Dock badge after a Dock restart: The number of available updates on the Dock icon stayed blank until the next update change. It is now restored immediately.
Microsoft Intune sign-in and consent: A failed Keychain write silently discarded the Intune token, so the session looked signed in but required a new sign-in on the next launch, with nothing in the log. Admin consent is now also detected by the error codes Microsoft documents rather than by English text, so a tenant in any language is recognized correctly.
Duplicate install failure alerts: A failed install showed its alert once per app tile in the grid. It now appears once.
Remaining English labels: Several labels in Admin Mode and a missing button label in App Suggestions were shown in English regardless of the system language. They are now translated in all supported languages.
Minor reliability fixes, including a crash on an install script that could not be decoded, a memory leak when reading system information, and the Dock plug-in now matching App Catalog's macOS 13 requirement.