Islam and GitHub
347ce5ece4
Modularization: Extract SecureLogger into a separate module ( #600 )
...
* Extract SecureLogger into a separate module
* Add BitLogger package as a dependency for iOS & macOS targets
2025-09-15 14:45:58 +02:00
Islam and GitHub
7c4bde59b9
Xcode Configuration files: .xcconfigs + Remove xcodegen ( #608 )
...
* Create configs files with basic settings populated
* Add Configs and set the global Debug/Release settings
* Update build settings to be read from the configs
* Remove `xcodegen`’s `project.yml`
* Configurable and dynamic bundle and group ids
* Simplified local development with custom Team IDs
2025-09-15 13:58:49 +02:00
Islam and GitHub
fb94e799a5
Refactor .xcodeproj with buildable folders ( #599 )
...
* Remove unused LocationNotesSheet.swift
* Add README.md to bitchatTest group to mirror the folder
* Convert bitchat, Tests, ShareExtension to folders
* Update Project Format to Xcode 16.3 (latest)
2025-09-14 15:37:45 +02:00
Islam and GitHub
04671caeb8
Remove unused LocationNotesSheet.swift ( #606 )
2025-09-14 14:38:34 +02:00
Islam and GitHub
efb9a5070d
SPM Test target + Github Action to build and test ( #596 )
...
* SPM Test target + Github Action to build and test
Because the tests are XCTests `swift test` runs them first and then runs another batch of empty tests which results in "0 tests" at the end of the report - https://github.com/swiftlang/swift-package-manager/issues/8529#issuecomment-2815711345
* Fix dependency and library issues + handle mixed languages
`include` folder has to be next to the `*.c` file for it to work
2025-09-13 15:01:30 +02:00
920dc31795
Refactor: Testable Keychain and Identity Manager ( #584 )
...
* Make static functions instance functions to be testable
* Injectable KeychainManager + Mock + updated tests
* Remove `pendingActions` from identity manager (dead code)
* Remove `getHandshakeState` from identity manager (dead code)
* Remove `getAllSocialIdentities` from identity manager (dead code)
* Remove `getCryptographicIdentity` from identity manager (dead code)
* Remove `resolveIdentity` from identity manager (dead code)
* Identity Manager: minor clean up
* Put Identity Manager behind a protocol
* Remove Keychain and Identity Manager singletons
* Tests: include MockKeychain/MockIdentityManager in project; init identityManager in CommandProcessorTests
---------
Co-authored-by: jack <jackjackbits@users.noreply.github.com >
2025-09-12 14:37:34 +02:00
islam
a1edf29bd3
Remove unnecessary import os.logs
2025-09-11 19:03:08 +01:00
islam
5f402698a1
Extract private functions into a separate extension
2025-09-11 19:03:08 +01:00
islam
1e997e1387
Statically typed logging of KeyOperations
2025-09-11 19:03:08 +01:00
islam
e602024617
Remove dead code
2025-09-11 19:03:08 +01:00
islam
deb464f5d8
Remove redundant .noise
2025-09-11 19:03:08 +01:00
islam
e5a415d885
Overloading .debug/.error for ‘.logSecurityEvent’
...
Search/Replace Strategies:
1.
Search regex: `SecureLogger\.logSecurityEvent\(\s*(.*?),\s*level:\s*\.(\w+)\s*\)`
Replace regex: `SecureLogger.$2($1)`
Sample input:
`SecureLogger.logSecurityEvent(.authenticationFailed(peerID: peerID), level: .warning)`
Sample output:
`SecureLogger.warning(.authenticationFailed(peerID: peerID))`
---
2.
Search regex: `SecureLogger\.logSecurityEvent\(\s*(.*?)\s*\)`
Replace regex: `SecureLogger.info($1)` (`info` is the default level)
Sample input:
`SecureLogger.logSecurityEvent(.handshakeStarted(peerID: peerID))`
Sample output:
`SecureLogger.info(.handshakeStarted(peerID: peerID))`
2025-09-11 19:03:08 +01:00
islam
b5382b129e
Rename logError(…) to error(…)
2025-09-11 19:03:08 +01:00
islam
5d6aecfc83
Replace .log w/ explicit .debug/.error functions
...
This would make the intention more explicit so we can overload different logging types as well like keychain, security events, etc…
Search/Replace Strategies:
1.
Search regex: `SecureLogger\.log\(\s*(.*?),\s*category:\s*(.*?),\s*level:\s*\.(\w+)\s*\)`
Replace regex: `SecureLogger.$3($1, category: $2)`
Sample input:
```
SecureLogger.log(
"🔄 Found favorite for '\(peerInfo.nickname)' by nickname, updating noise key",
category: .session,
level: .debug
)
```
Sample output:
`SecureLogger.debug("🔄 Found favorite for '\(peerInfo.nickname)' by nickname, updating noise key", category: .session)`
---
2.
Search regex: `SecureLogger\.log\((.*?)\)`
Replace regex: `SecureLogger.debug($1)` (as it’s the default level)
Sample input:
`SecureLogger.log("some text")`
Sample output:
`SecureLogger.debug("some text")`
---
3
Manual changes:
ChatViewModel line 5393 (commented code)
NostrRelayManager line 196 (commented code)
NostrRelayManager lines 346-350 (if/else logic)
NostrRelayManager line 371 (commented code)
2025-09-11 19:03:08 +01:00
islam
5ca9222fc2
Make logging categories static properties of OSLog
...
So we can use `.<category name>` to simplify the code.
Search/Replace Strategy:
Search text: `category: SecureLogger.`
Replace text: `category: .`
2025-09-11 19:02:32 +01:00
Islam and GitHub
2f83433247
Refactor parsing inbound messages ( #577 )
...
* DRY + helper extension to get data from Message
* Flatten guard > do > if > switch + use `try?`
* Use failable init instead of a global function
2025-09-11 19:18:06 +02:00
Islam and GitHub
e72fe50ffa
Perf: Add final to classes that are not inherited ( #574 )
2025-09-11 19:17:04 +02:00
Islam and GitHub
56f1c37129
Regenerate info.plist by adding the missing keys ( #576 )
...
`xcodegen` probably uses alphabetical sorting so had to commit the info.plist to avoid discrepancies
2025-09-11 19:14:27 +02:00
Islam and GitHub
2ade3a3300
Add TransportConfig to bitchatShareExtension target ( #579 )
...
ShareViewController uses TransportConfig and without this target membership the code doesn’t compile
2025-09-11 19:13:54 +02:00
Islam and GitHub
9166c9e28b
Update iOS App Icon to the new single-size format ( #573 )
2025-09-11 11:15:57 +02:00