490 Commits
Author SHA1 Message Date
Michael 65222a260e Updated system models 2025-08-02 18:41:24 -04:00
Michael b7f199606d Fix /timers command not working correctly 2025-04-05 13:13:40 -04:00
Michael 425e14305b Move portable dictionaries to -dictionaryValueForTarget:
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.
2025-01-11 15:48:19 -05:00
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 4aa9659aab Resolve small deprecation warnings 2024-07-11 07:38:03 -04:00
Michael 28056cc26e The implementation of these methods moved to framework 2024-07-10 10:19:46 -04:00
Michael e94594ebc7 Refactor logging system to completely ditch wrapping os_log 2024-07-09 04:28:53 -04:00
Michael ad1078d6be Update Encryption Kit 2024-07-07 12:10:12 -04:00
Michael 714a2c2b26 Enable sandboxing of Sparkle framework 2024-07-05 12:10:52 -04:00
Michael 42dc6dba8a Add logic for Mac App Store migration 2024-07-05 10:40:51 -04:00
Michael 5f8bb7f13e Modify TPCResourceManagerMigrate
The user is now notified each launch of migration until they acknowledge the alert by clicking Continue.

When migrating files, extensions are no longer copied. Copying them would place them in quarantine which we don't want. Instead symbolic links are created. To prevent old files from dangling if symbolic link is deleted, old extensions are pruned each launch.

Removed files are no longer moved to Trash.
2024-07-05 10:12:54 -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 55d355a91b Declare -immutableClass property in all mutable classes 2024-07-02 17:10:21 -04:00
Michael 50a61a8deb Create logging subsystem for XPC services 2024-06-30 12:00:34 -04:00
Michael b79ffb29d1 Add logic for notifying user of obsolete bundles 2024-06-30 11:40:24 -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 46f499de64 Add proper support to IRCClient for printing multiline debug info 2024-06-21 21:28:30 -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 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 08d59d46a9 Update Cocoa Extensions 2024-06-14 17:04:27 -04:00
Michael c6c0d8760d Update libraries 2024-06-12 19:02:26 -04:00
Michael 6711156f18 Update libraries 2024-05-13 22:08:27 -04:00
Michael e200682cf9 Update Cocoa Extensions 2023-09-24 08:56:58 -04:00
Connor Taffe 39233fb53e Add SHA-512 digest to client certificate page
Allow users to copy the SHA-512 digest for their certificates, as
suggested and used in /whois responses by Liberchat

https://libera.chat/guides/certfp#add-your-fingerprint-to-nickserv
2023-09-04 23:17:31 -05:00
Michael 1a94008939 Fix colors not appearing in user list
I probably should eventually convert the colors saved in registered defaults to NSKeyedArchiver. That is not critical change to make at this time. I'm sure I will not come to regret these words. 🤪
2023-03-16 18:23:25 -04:00
Michael 7dfa294949 Update Cocoa Extensions
- Fixed a mistake I made in unarchiving colors from defaults.
- Renamed a property
2023-03-15 12:16:37 -04:00
Michael 0d41e719c9 Update libraries 2023-03-14 14:58:10 -04:00
Michael 8a76e9d698 Update project for Xcode 13 2021-07-09 16:49:00 -04:00
Michael 2223df23a0 Update Libraries 2021-07-09 13:55:41 -04:00
Michael d8f0ca2664 Export symbols for ALL extensions, frameworks, and services. 2021-07-02 11:21:04 -04:00
Michael 2ac04ceaf2 Retire receipt library that is no longer used 2021-07-02 07:28:25 -04:00
Michael 64dbaca6d1 Update myversion command to include binary information. 2021-06-18 15:25:10 -04:00
Michael 11f9780e72 Update Cocoa Extensions 2021-06-18 10:12:00 -04:00
Michael 7393b0ecf5 Update libraries to universal versions 2021-06-18 06:57:52 -04:00
Michael c051cd0cb1 Update Libraries 2021-06-15 14:57:53 -04:00
Michael 2bf843b12f Update libraries 2020-11-18 10:53:09 -05:00
Michael 13e7096e1f Fix building encryption cache failing because of race condition 2020-11-06 02:39:05 -05:00
Michael ab99eeed4e Add monitoring for new themes 2020-11-04 12:04:11 -05:00
Michael 49a40b5499 Transition to new monitor helper classes/methods 2020-11-04 08:00:05 -05:00
Michael c6db182c14 Use literal (character for character) string search 2020-10-29 15:36:24 -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 210242739e Update libraries 2020-10-28 13:34:40 -04:00
Michael 96a0915eec Refactor theme engine to allow for varieties
• Themes now support varieties. A theme can now contain multiple, separate designs with their own CSS, JavaScript, templates, and settings. The theme engine has been rewritten from the ground up to leverage this new system to automatically change the theme when the appearance of the app changes (dark or light). The new system was designed in such a way that it can permit unlimited varieties within one theme, but that is for a later time. The user cannot select which they want at this time aside from changing the app or system appearance.
• The new system is 100% backwards compatible.
• The new system is designed to allow inheritance between the theme and its varieties. A CSS, JavaScript, template, or setting file placed within the root of the theme will be loaded first with each variety's copy of these files loaded second.
• Varieties work by placing a named folder within a "Varieties" subfolder of the theme. Within each named folder can be any files needed for that variety. A variety does not require a file that is already inherited from the root of the theme. But, for example,
if a design.css file does not exist in the root of the theme, then the variety is required to have one, else it wont be usable.
• Each theme is now contained within a self managed TPCTheme object. This object is manages the loading of the theme from disk, monitoring of all files within it for changes, and choosing the best variety (if there are multiple) when the appearance changes.
• The baseLayout.mustache template of the default templates has been modified to allow for multiple CSS and JavaScript files.
• The Simplified and Tomorrow themes have been modified to use varieties for their dark and light appearances.

This commit is the base of the changes to be made to the theme system. It is incomplete as there are still some TODOs to resolve. Those have been labeled in the source code.
2020-10-26 17:45:08 -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 a9193bdc07 TEMPORARILY change build architecture 2020-07-23 14:16:22 -04:00
Michael f862b65dc3 Update libraries 2020-07-19 02:34:03 -04:00
Michael 7bb6ea1ee7 Update libraries 2020-03-03 19:10:17 -05:00
Michael 715909abe8 Update libraries 2020-02-27 14:46:42 -05:00