55 Commits
Author SHA1 Message Date
Michael fe25aa7ac8 Add Network Timeouts KB article to Help menu 2025-04-05 13:17:04 -04:00
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 c6b745a56e Remove community moved dialog
It has been long enough that those who care know by now
2024-07-07 12:01:18 -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 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 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 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 c0f70468ec TFW inability to spell 2024-06-14 20:39:13 -04:00
Michael 6f98a0fc62 Use URLs in place of strings when working with NSWorkspace
This was done to resolve deprecation warnings. Textual still uses a lot of string paths internally. I do not see immediate concern to refactor all areas in which that is the case.
2024-06-14 20:29:09 -04:00
Michael 434e44bd24 Declare NSMenuItemValidation to remove deprecation warning 2024-06-14 17:04:22 -04:00
Michael baf7406ee3 Remove references to Growl
Growl has long been a retired feature of Textual. This commit just formalizes it by renaming certain uses of the former app.

Public APIs have shims in place and marked as deprecated. The likelihood of any plugin accessing these features pretty much zero. Better to be safe.
2024-06-13 20:30:01 -04:00
Michael 215d11d6be Replace references to deprecated state control code 2024-06-13 19:40:13 -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 fcda0534c5 Allow user to reset always send flag of App Center
Bound to already existing menu item in Advanced section of Help menu that allowed user to reset "Do not ask" prompts.
2021-07-09 16:32:12 -04:00
Michael b55869497e Add universal binary beta stream disabled by default 2021-06-19 10:13:27 -04:00
Michael f2dfaf5520 Inform user #textual has moved when they connect to freenode
I should add for anyone backreading this commit this was not political change. They deleted my decade old accounts and channels to start over. It was personal. I did not take that kind.
2021-06-19 06:31:56 -04:00
Michael 5201afd6a1 Use Libera Chat for support channel 2021-06-15 14:29:11 -04:00
Michael c0e79a3191 Fix broken condition introduced by c0079b895 2021-02-18 08:48:12 -05: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 2bf843b12f Update libraries 2020-11-18 10:53:09 -05:00
Michael cc17988f94 Fix incorrect value comparison 2020-10-28 21:53:22 -04: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 e37981561c Further UI refinements 2020-10-15 17:12:54 -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
Michael 37ef7bf3c3 Stop abusing private APIs for "Inspect Element" menu item
When WebKit2 first announced, there was no way for an
 app to take an NSMenu, modify it, and return the result
 when a context menu is presented.

 WebKit1 had a delegate method for that named:
 -webView:contextMenuItemsForElement:defaultMenuItems:

 WebKit2 added this delegate method, in private, but it
 was not available until the next update of macOS.

 'Til then, we had to fake "Inspect Element" because we
 did not have access to the default implementation that
 is available through the delegate method.

 Apple now flags the function names that were used to do that.

 This will break "Inspect Element" on one version of macOS.
 Which one I don't even recall.
 But it is worth it to make the review process smoother.
2019-03-04 00:58:49 -05: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 58c0b5d6fe Fix for "Channel" menu in WebKit view
2a52965522 changed property assignment and the changes were not thoroughly tested
2018-09-13 13:32:56 -04:00
Michael f30b2a5eb0 Add TVCMainWindowSelectionChangedNotification and use it in a few places 2018-09-12 12:26:06 -04:00
Michael e462474747 Attempt to resolve "Close Query" keyboard shortcut issue
Only one menu item can have a keyboard shortcut which means because "Delete Channel" and "Close Query" are competiting for the same, there must be a way to determine which wins. Previous solution was to archive the keyboard shortcut set and restore it. This proved to be prone to failure. New solution is much simpler. We simply unassign the submenu when the parent menu is hidden so that the only time the keyboard shortcut is in the main menu is when it's the one we want to use.
2018-09-01 11:16:24 -04:00
Michael 2f940fa117 Add warning TODO 2018-08-26 09:57:36 -04:00
Michael 24a388b3aa Fix notification mute not working
Regression introduced by c70d968744
2018-07-19 02:41:49 -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 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