Necessary to support switching between AltStore beta and public version.
Wraps private non-optional _usageDescription value in public accessor with optional return type to still treat it as “optional” value.
Before, appPermissions was one array containing all permissions of different types.
Now, we split entitlement and privacy permissions into separate “entitlements” and “privacy” child arrays.
* Switches back “Permissions” and “Privacy” section titles
* Shrinks privacy permissions card title font
* Combines privacy + entitlements back into single “Permissions” section
* Removes “Entitlements” section name
When enabled, AltStore will ignore cached responses for certain requests and will always make a new request to the server. This is useful for development when repeatedly testing changes to remote files.
Limited to UpdateKnownSourcesOperation for now, but will eventually affect fetching sources as well.
Before, whether or not the source included the buildVersion affected the comparison. If present, the buildVersion was used in comparison, if not, only the version itself was used for comparsion.
This meant it was impossible to update from a version with a buildVersion to the same version without one (e.g. going from betas to final releases). Now we _always_ consider the buildVersion in the comparsion, so an earlier entry in versions array without buildVersion can be considered “newer” even if versions match.
‘NSCodingPath’ is an array of non-ObjC values, but because it’s an array the array itself conforms to NSSecureCoding via NSArray bridging.
We now make sure every element in an array or dictionary also conforms to NSSecureCoding to keep it in an error’s userInfo for serialization.
Presents error alert that can be explicitly bypassed by user when sideloading apps with undeclared permissions, and also allows user to view all undeclared permissions.
AltStore will now consider an update available if either:
* The source’s marketing version doesn’t match installed app’s version
* The source declares a build version AND it doesn’t match the install app’s build version
The installed app matches an app version if both maketing versions match, and the build versions match (if provided by the source).
If source is already added, the error message will list all installed apps from the source.
If adding source for first time, the error message will mention exactly which apps have been blocked from the source (if provided).