Gives dictionaries greater context of which operation is in progress
As part of this, during copies, defaults are not stripped. Copy objects whole. Only strip defaults when we want to save to disk or cloud.
This is a work in progress to move Standard Release and Debug build schemes to sandboxed environment.
To accomplish this, the group identifier has changed to com.codeux.apps.textual-common so that it does not clash with the bundle identifier of the app. Because of this change, all contents from the previous group container has to be migrated. TPCResourceManager has been extended to accomplish this.
TPCResourceManager will automatically copy files to the new group container then prompt the user asking if they want to delete the old. File migration is tuned so that failure to copy one file does not stop the entire operation.
It will also migrate preference keys.
TPCResourceManager will also be setup to migrate Mac App Store installations at a later date using nearly the same logic patterns. That is not implemented yet.
- Removed all deprecated Textual code. It is likely there are no plugins that were using this. The minimum plugin version will be bumped up just incase to force all plugins to be recompiled to load.
- Removed a bunch of macros and initialization check logic that was previously in place to protect against plugin developers trying to abuse the codebase. We need to stop caring about that because it just adds unnecessary overhead.
- Many initializers were cleaned up. -init is now expressly marked as unavailable and throws a proper exception where appropriate.
All classes that have an immutable parent with a mutating child is now backed by either XRPortablePropertyObject or XRPortablePropertyDict. These base classes, which are declared by Cocoa Extensions, abstract away A LOT of logic involved for initialization, copying, and mutating properties.
A lot of this logic was loosely copy and pasted between classes. Now it is accessible and highly configurable in one location.
As part of this change, all classes that inherit from these base classes now return references on -copy if the underlying object is immutable already. There are some classes that do a little state mutation internally, even if outwardly they are immutable. Risk has been assessed and having the state information mutated and shared between what are supposed to be copied instances will do no harm.
Appearance information is now more descriptive including information on whether the sidebars and style are same appearance. I did not include the helper functions -descriptionForThemeAppearance: and related in main app because it seemed incredibly niche.
This information is now pretty gray. There can be no WK2 views, some, or all. This seems easier solution as this information is not very important to begin with.
If there are zero WK2 processes, this function will return anyways. -webKit2Enabled returning NO does not indicate there are zero WK2 views. It just means no more are allowed.
Disable WK2 until app relaunch if crash is detected
Only the view that is crashed is reloaded. Views that are already on WK2 will remain so until a forced style reload or they crash as well.
- NSObject helpers for sync/async calls using GCD were deprecated as it just makes things slower
- NSObjectIsEmpty() was deprecated because it was lazy and made things slower
This extension gives insights into channel users such as listing clones or finding users that match a specific condition. It also now houses the brag command which gives insight on the local user.
I did not see much reason to build and keep an entire extension around to serve one single command. Merging it into spammer paradise was the most logical step given the name of the extension.
This feature for requesting additional model information was always just a novelty. And with Apple moving to random serial numbers, it is not worth time investment to further reverse engineer their private web services.
All Macs that are not compatible with macOS 10.13 or greater have been removed from the list. A lot of other redundant information, such as specifying "retina", "M1", etc, for some models, has been removed. This information can be derived from other parts of the system information command. The date on which a model has been released no longer have a prefix to determine when in the year the release occurred if not more than one release occurred in the year.