30 Commits
Author SHA1 Message Date
Michael ded4d55608 Transition notification controller to UserNotification.framework 2024-07-11 07:34:47 -04:00
Michael 1730f0adf9 Very small fixes
Implemented moot delegate methods and changed NSToolbar item implementation use slightly to get rid of console warnings regarding deprecations and other stuff.
2024-07-09 04:42:22 -04:00
Michael e94594ebc7 Refactor logging system to completely ditch wrapping os_log 2024-07-09 04:28:53 -04:00
Michael e2356c09bc Modify migration logic
Extracted bulk of migration logic out of TPCResourceManager into its own class named TPCSandboxMigration.
Some logic of the migration remained in a private category of TPCResourceManager as it makes sense given the methods are related to resources / file access.
The entire migration system has been modified to be completely modular. Everything relies on the unified `installation` argument to perform migration on any number of containers.
The container for Standard Release was renamed to conform to Apple's standards. No more warnings. The migrator includes an entry for migrating beta users which will be removed before this goes into stable.
2024-07-07 11:44:16 -04:00
Michael 07c0d3b6a0 Move Standard Release and Debug to sandbox
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.
2024-07-04 21:39:36 -04:00
Michael 18a8fecf3f Remove unused formatter 2024-07-02 17:15:25 -04:00
Michael e72e64f9ca Delete App Store build scheme
Deletes all iCloud related code as well
2024-06-30 21:12:51 -04:00
Michael 7e90ebf6b8 Modify MC to use LogToConsoleSetDefaultSubsystemToMainBundle() 2024-06-30 12:00:52 -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 77a32ae680 Simplify termination check 2024-06-16 14:31:38 -04:00
Michael 8852a47dab Little typos 2024-06-16 14:31:26 -04:00
Michael a4ceead373 Remove App Center logic 2024-06-12 19:47:35 -04:00
Michael 325cafb5e5 Rename file because I can 2023-03-15 11:45:48 -04:00
Michael a3b79a13fe Update Sparkle implementation
With switch to Sparkle 2, some things had to change in the codebase.

For the sake of simplicity, the feed URL and update interval has been relocated to the Info.plist. Sparkle now supports a beta channel in one feed so that will be used instead of setting the feed URL on each launch. Not setting this manually each launch does mean that beta updates do not receive a shortened update check interval. But that is not a big deal. Beta updates are far apart these days.

Sparkle 2 does not have a singleton either. I wasn't sure if I wanted to create my own or bind it to the master controller. I ended up doing the latter as it is not something that will need to be accessed with great frequency. Only by the Preferences dialog and the menu controller.

I was unsure about leaving it in the public header because why do plugins need access to it? In the end I placed it there because they could have always just accessed the singleton if they wanted to abuse it. Not having to import private header when we need to access it internally cuts down on cost.
2023-03-15 11:43:36 -04:00
Michael 66b3b375fa Remove preference for universal build as that will now be the default 2021-07-11 07:29:04 -04:00
Michael b55869497e Add universal binary beta stream disabled by default 2021-06-19 10:13:27 -04:00
Michael 2bf843b12f Update libraries 2020-11-18 10:53:09 -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 abe459c4dd Refactor member list
All member list logic inside IRCChannel has been abstracted away into IRCChannelMemberList.
IRCChannelMemberListController, which is an array controller, is now bound to the list in the main window to act as the data source.

The controller is weakly linked in IRCChannelMemberList when the channel is selected. This allows IRCChannelMemberList to maintain the UI in addition to its internal list.

The content of the controller shares 1:1 mutable array to IRCChannelMemberList's internal list. This simplifies modifications to the UI as we know with certainty that the index of the member in the internal list will be that of the member in the UI.

The methods declared by IRCChannel still exists, as a proxy, to an instance of IRCChannelMemberList strong referenced by the -memberInfo property of the channel.
2020-10-15 11:48:37 -04:00
Michael 45fea6d693 Modernize Textual
Notable changes:

Notable changes (incomplete):
• Changed all projects minimum target to OS X 10.12
• All xib files and custom view source files have been modified to use auto layout, NSGridView, NSStackView, and other modern features wherever possible. Hacks such as specifying heights, offsets, etc. for multiple appearances spanning multiple operating systems are no longer needed because auto layout and related systems are solid back to our target.
• In response to system-wide changes made in macOS Big Sur the width of the Preferences window has been expanded to a minimum 670.
• Deprecated Cocoa APIs have been replaced with their modern equivalents.
• The System Profiler plugin has been modified to simplify the process of requesting model information from Apple. The previous class (TPISystemProfilerModelIDRequestController), now named TPISystemProfilerModelRequest, at one time used XML parser to retrieve value of a single element. This made maintainability difficult. It now uses a simple regular expression.
• Optional extensions (Blowfish Encryption, Caffeine, and Wiki Style Link Parser) had their versions bumped and repackaged into installer. Their xib files were modified to accommodate the new width of Preferences.
• The Blowfish Encryption extension has been updated to libressl 3.1.4.
• All code related to the never completed "Buddy List" dialog has been stripped. There is no interest in continuing development of it.
2020-10-15 11:20:09 -04:00
Michael 2833c79c1b Completely strip in-app purchases 2020-10-13 23:21:12 -04:00
Michael 666c95b48c Add extremely in-depth termination logging 2020-07-23 14:12:04 -04:00
Michael 8c22ab21ae Remove debug code introduced in 89ac7278db 2020-07-23 12:43:38 -04:00
Michael 89ac7278db Move from HockeyApp to AppCenter 2020-07-19 03:40:30 -04:00
William Leuschner ebe7f9c05f Whoops, use tabs instead of spaces 2019-01-25 10:02:35 -05:00
William Leuschner 768d03004f Only confirm quitting if connections are active 2019-01-25 00:52:24 -05: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 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