36 Commits
Author SHA1 Message Date
Michael 7589009864 Move mutability declaration to a class property so that it can be accessed in convenience initializer
Instance type property for mutability mirrors the class type
2024-08-14 18:29:53 -04:00
Michael a382f4eea3 Modify network code to use non-deprecation types 2024-08-14 18:16:21 -04:00
Michael 26d8d06795 Move RCMTrustPanel and RCMSecureTransport to Cocoa Extensions 2024-07-11 21:08:02 -04:00
Michael 12f674fb25 Disable WebKit deprecation warnings
See flag TEXTUAL_IGNORE_WEBKIT_DEPRECATIONS in StaticDefinitions.h
2024-07-11 07:36:21 -04:00
Michael ded4d55608 Transition notification controller to UserNotification.framework 2024-07-11 07:34:47 -04:00
Michael f4bf8cc335 Modify TPCPreferencesUserDefaultsController
It has no use for a singleton as long as TPCPreferencesUserDefaults is used as its backing store
2024-07-10 14:52:47 -04:00
Michael 87bc1560bd Modify TPCPreferencesUserDefaults
- Move controller proxy into shared implementation instead of being local to app
- Remove overwrites of -alloc
2024-07-10 12:24:01 -04:00
Michael e94594ebc7 Refactor logging system to completely ditch wrapping os_log 2024-07-09 04:28:53 -04:00
Michael a8e14e512e Create list of keys to exclude from group container during migrate
They will be set to NSUserDefaults standard container which will the app itself so that related frameworks can access it that don't use TPCPreferencesUserDefaults
2024-07-05 13:38:46 -04:00
Michael 2ff9c65d13 Modify TPCPreferencesUserDefaults
Add hidden method for a migration utility to set defaults bypassing all internal logic.
2024-07-04 21:28:53 -04:00
Michael 45951bdcf3 Modify TPCPreferencesUserDefaults
Will now only read and write from the group container preferences file.
2024-07-04 21:24:30 -04:00
Michael 55d355a91b Declare -immutableClass property in all mutable classes 2024-07-02 17:10:21 -04:00
Michael 9e155214e1 Fix small issues found with -WEverything 2024-06-30 12:53:51 -04:00
Michael 5a528071ad Modernize codebase
- 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.
2024-06-30 02:44:47 -04:00
Michael f5ae3653c6 Modernize mutating classes
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.
2024-06-30 02:44:26 -04:00
Michael 8d28e428f5 Fix many, many typos
Import external libraries with similar fixes as well
2024-06-21 20:42:32 -04:00
Michael 46afe21322 Discard a bunch of drawing code
Everything trashed is related to drawing on earlier than macOS 11.0 which we no longer target
2024-06-16 15:19:41 -04:00
Michael 8852a47dab Little typos 2024-06-16 14:31:26 -04:00
Michael 2c443adb43 Update Cocoa Extensions
- 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
2024-06-15 22:27:12 -04:00
Michael ea162d600d Little typos 2024-06-12 19:07:42 -04:00
Michael def99cdb9d Add a prebuild script to declare feature flags in FeatureFlags.h
GCC preprocessor configuration flag was a bit cumbersome to work with. A pre-build script now abstracts known feature flag configuration definitions into macros that appear in a public header file.
2021-06-18 15:23:27 -04:00
Michael c0079b8958 Add Big Sur specific appearance
All Mojave appearances have been renamed to "CommonModern" and Mojave and Big Sur inherits from this as the changes that will be made for Big Sur will be minimal.
2021-02-18 08:25:52 -05:00
Michael 7a17baf4b1 Update license information/copyright year
Dates within source files were changed to reflect the last time the file was modified.
2020-10-28 18:15:42 -04:00
Michael 37be221884 Modify order of cipher suites 2020-10-27 20:24:49 -04:00
Michael 89ac7278db Move from HockeyApp to AppCenter 2020-07-19 03:40:30 -04:00
Michael beade7b612 Move to current best practices for enums and constant strings.
For enums, place case at end instead of in middle. For example: IRCClientConnectNormalMode turns into IRCClientConnectModeNormal

For constant strings, when appropriate, use an extensible string enum. Either one of those from Foundation (NSNotificationName, NSErrorDomain) or typedef our own.
2018-07-17 22:08:20 -04:00
Michael 24fe794259 Use localizedString() in place of NSLocalizedString()
We access localized strings A LOT and this is one less hop
2018-07-15 22:59:35 -04:00
Michael fc395fea06 Fix incorrect copyright year caused by lazily copy and pasting 2018-07-13 08:58:17 -04:00
Michael b42ac088e4 No longer hard code connection error information 2018-07-13 08:55:48 -04:00
Michael 6d7c07ecd4 Modify -descriptionForErrorCode:
The method is now nonnull and returns "Unknown" for out of range error codes
2018-07-12 19:15:19 -04:00
Michael 87812dbc0a Refactor localization system
• Added TLOLocalization.swift which is a Swift implementation of the localization system. TXTLS() and its sister functions are bridged to this implementation.
• The TLOLanguagePreferences class no longer exists. This class was used only as a convenience to TXTLS() and its sister functions. I don't know of any and/or why a plugin may access these, so they were not deprecated.
• The TLOLanguagePreferences files have been renamed to TLOLocalization as the latter better suites its purpose.
2018-07-12 07:22:40 -04:00
Michael eead92306d Do not cast to void
These values are all discardable and we don't warnings for this.
2018-07-10 02:26:07 -04:00
Michael a73008bef9 Make static analzyer happier
• In cases where we know for sure that nullability warning is ignorable, cast to non-null.
• Added TXLocalizationNotNeeded() which inlines a string to represent it as localized even though it's not in reality.
• Nullability is now specified for some methods that can in fact return nil but were previously not annotated as such.
2018-07-10 02:12:47 -04:00
Michael 3134ab49fd Stray semicolons 2018-07-05 10:02:50 -04:00
Michael eb36259367 Only build on High Sierra or later
In theory user needs Xcode 10 at minimum already, which is limited to High Sierra or later. That's because we have Swift 4.2 specific code which will not compile on Xcode 9 or earlier.

For Xcode 9 support, see stable branch (master).
2018-07-04 05:25:52 -04:00
Michael 2e236abb64 Reorganize project
Many resources have been added to Textual with little thought for long term maintenance. This commit is an overdue overhaul of the entire project. The goals of this overhaul was to introduce as much consistency as possible to the project.

Some notable changes:

• Code signing identity file has moved to "Configurations/Build"
• All build configuration files, including entitlements, moved to "Configurations"
• Source code for the app has moved to "Sources/App"
• Shared source code has moved to "Sources/Shared"
• Source code for extensions have moved to "Sources/Plugins"
• The project file for the app has moved along with its source code. It's recommended to use the Textual.xcworkspace workspace file.
• Build scripts are no longer packaged within the project files.
• Folders are now used throughout most projects instead of groups.
• Removed a lot of redundant framework linking.
• The preference panel sample plugin has been modified to use standard Cocoa facilities instead of those that are project specific. e.g. NSUserDefaults and NSLog() instead of TPCPreferencesUserDefaults and LogToConsole()
2018-07-04 04:55:28 -04:00