• Added a few functions to retrieve conversation settings from libSession
• Updated the Note to Self swipe action to be "Hide" (hides the conversation but does not delete the messages)
• Updated the one-to-one deletion behaviour (now syncs both hiding the conversation and deleting it's messages)
• Updated the logic to retrieve the relevant disappearing messages setting from libSession when creating a thread if it doesn't exist (allows us to delete threads without worrying about losing settings)
• Updated a bunch of dependency management & injection code so the unit tests would pass
• Added new 'LintControl' mechanisms to allow for ignoring sections of code
• Added new 'MatchType' mechanisms for excluding unlocalized cases
• Updated the code to explicitly handle localized template strings (both single and multiline)
• Updated the code to process files across multiple threads to improve performance
• Updated the code to use Swift 5.7 regex and store in static variables to prevent reconstruction every time they are used
• Removed the list of individual files which are ignored (now just output a count)
• Fixed an issue where having a localized string on a subsequent line could result in an unlocalized (or incorrectly localized) string not being detected
• Fixed an issue where having multiple strings on a single line could result in an unlocalized string not being detected
• Fixed an issue where zero-width characters would result in the variable count comparison between translations failing
• Fixed a number of localization warnings
• Reworked the NotificationServiceExtension to just always reset and reload it's state to avoid weird bugs
• Updated the legacy group messages to fallback to using a locally generated serverHash if one isn't provided (always happens for legacy PNs)
• Include error info when failing to process extension logs
• Made a bunch of the Storage functions instance functions instead of static functions
• Fixed an issue where the background task to finish sending messages may not have sent the sync message or the main message after and upload
• Fixed an issue where the SessionBackgroundTask was incorrectly reporting a failure to be created
• Fixed an incorrect modal action colour
• Fixed a crash when creating legacy groups
• Updated the code so that we take charge of resolving the deadlock issue instead of relying on GRDB to do it
• Updated the logic to timeout the SessionBackgroundTask with 5 seconds of background time remaining (to ensure we have enough time to suspend the network & database)
• Fixed an issue where the background task to finish sending messages may not have sent the sync message or the main message after and upload
• Fixed an issue where the SessionBackgroundTask was incorrectly reporting a failure to be created
• Fixed an incorrect modal action colour
• Fixed a crash when creating legacy groups
• Updated the code so that we take charge of resolving the deadlock issue instead of relying on GRDB to do it
• Updated the logic to timeout the SessionBackgroundTask with 5 seconds of background time remaining (to ensure we have enough time to suspend the network & database)
• Updated the GeoLite2 country database data, added some basic localisation to it
• Managed to optimise the size of the GeoLite2 data bundled with the app (10mb -> 8mb)
• Cleaned up the IP2Country logic a little
• Removed some pluralisation from logs (want the logs to be identical outside of numbers)
• Tweaked the PushRegistrationManager to actually timeout
• Updated the code to stop sending legacy PNs outside of legacy group conversations
• Updated the logger logic to clean things up and use the local date/time (with time zone info) to ease debugging user reports
• Fixed an issue where messages in a community could incorrectly accept disappearing message settings
• Fixed an issue where duplicate messages could be sent in some cases
• Fixed an issue where the conversation might not scroll to the bottom after sending an attachment
• Fixed an issue where attachment encryption was happening in a db write thread
• Reworked some of the C API conversions to try to prevent invalid cases
• Tweaked the threading around libSession networking callbacks to minimise Swift code blocking libSession threads
• More logging tweaks
• Removed the 'runOnceTransient' behaviour (no longer have jobs that run before the user exists)
• Removed the session id from the message snippet in the conversation list
• Fixed an issue where the SyncPushTokensJob might not run because the paths hadn't been built yet
• Moved the snode cache and path building into libSession (deleted associated logic)
• Moved reachability detection into libSession (remove Reachability dependency)
• Fixed a couple of crashes with using libQuic requests
• Fixed a bug where the MessageRequestFooterView would show buttons on outgoing message requests
• Fixed an issue where the message status wouldn't update to the failed state if the MessageSendJob timed-out
• Fixed an issue where network issues could result in a backlog of TypingIndicator messages that failed to send (don't bother retrying them)
• Fixed an issue where concurrent jobs might not retry correctly if other jobs don't complete or the retry was triggered from the wrong queue
• Fixed an issue where the input view could disappear in some cases
• Fixed an issue where the DisappearingMessagesJob was getting run for every individual message process instead of just once after processing all messages from a poll
• Tweaked the polling logic to split the user, groups and community pollers into separate queues
• Tweaked the logic to restart the open group poller immediately after joining a community (to avoid an edge-case where there could be a long delay before the initial poll is made)
• Tweaked the logic for checking if PNs are susceptible to failure to only dispatch to the main thread once
• Cleaned up some warnings
• Updated the app versioning to be at the project level instead of target level
• Added the ability to define a unique hash for a job for deduplication
Added inline errors & warnings (regex could use some work to remove invalid cases)
Added a build step to validate the strings are included in the app and it's extensions
Reworked the EmojiGenerator to structure the 'EmojiWithSkinTones+String" file as the original structure was causing XCode 15 to build forever
Reworked the seed node certificate loading in an effort to fix a crash
Updated to the latest version of webp
Commented out a line causing build issues
Fixed a number of build warnings
Fixed an issue which could cause migration issues when upgrading from certain old versions
Fixed an issue where the PN subscription API call wasn't taking the frequency rate limit into account
Added the timestamp and expiration timestamp to the notification metadata
Sorted out some more threading issues
Removed a redundant SyncPushTokensJob run
Fixed an issue where the NotificationServiceExtension could incorrectly setup the database before setting up it's context
Fixed a few warnings
Removed a bunch of legacy code
Refactored the MainAppContext from Objective C into Swift