Releases: permissionlesstech/bitchat
Releases Β· permissionlesstech/bitchat
bug fixes
What's Changed
- Remove dead code and extract helper methods by @jackjackbits in #960
- Remove dead code and stabilize tests by @jackjackbits in #961
- Add comprehensive test coverage for ChatViewModel and BLEService by @jackjackbits in #962
- Improve BLE mesh reliability for large transfers by @jackjackbits in #964
- feat: Implement Request Sync Manager (V2 Sync) by @a1denvalu3 in #965
- Fix iOS BLE mesh authentication issues in BLEService by @0x0v1 in #998
New Contributors
Full Changelog: v1.5.0...v1.5.1
v1.5.0
- audio notes and images in mesh chat
- new mesh routing algorithm
- new tor framework (arti)
- security audit fixes
What's Changed
- Add voice notes and images over BLE mesh (audio + image only) by @jackjackbits in #823
- Remove
presentationDetentsas default is alreadylargeby @qalandarov in #826 - Extract sanitization logic into an extension + add tests by @qalandarov in #827
- fix: update georelays workflow no longer commits to main by @a1denvalu3 in #829
- Improve geohash media gating and relay refresh by @jackjackbits in #831
- PeerID 24/n: Nostr Transport and Embedding by @qalandarov in #830
- PeerID 25/n:
ReadReceiptby @qalandarov in #832 - PeerID 26/n:
FingerprintViewby @qalandarov in #833 - PeerID 27/n:
ContentViewandMeshPeerListby @qalandarov in #835 - Fix camera icon in DM sheets by consolidating sheet presentations by @jackjackbits in #834
- Fix GeoRelay prefetch isolation by @jackjackbits in #837
- PeerID 28/n:
ChatViewModel.getShortIDForNoiseKeyby @qalandarov in #836 - PeerID 29/n: BLEService + remove dupe funcs from #823 by @qalandarov in #838
- PeerID 30/n: Update some leftovers + case normalization by @qalandarov in #839
- PeerID 31/n: Remove String interop to be explicit by @qalandarov in #840
- Minor cleanup by @qalandarov in #842
- Extract MimeTypes into a separate file + add tests by @qalandarov in #843
- No fallback mime-type + remove dead code by @qalandarov in #844
- Improve mesh media throughput by @jackjackbits in #845
- Prevent duplicate action emote echoes by @jackjackbits in #852
- Add type-aware REQUEST_SYNC sync rounds by @jackjackbits in #853
- Simplify validation, compression heuristics, and notification scheduling by @jackjackbits in #841
- Prevent mesh self-sync duplicates by @jackjackbits in #856
- Improve background BLE stability and nearby alerts by @jackjackbits in #864
- Extract public timeline helpers and rate limiter by @jackjackbits in #869
- Extract public message pipeline from ChatViewModel by @jackjackbits in #870
- Add source-based routing support by @jackjackbits in #862
- Fix verification persistence on iOS when app backgrounds by @jackjackbits in #822
- Remove redundant conditional compilation directive by @jithin-renji in #863
- Add localizable strings in show commands view by @Viniciuss-Moreira in #828
- Test Vector Support for Noise XX Handshake by @nadimkobeissi in #885
- Correct the scheme name for macOS target. by @xingheng in #879
- Improve error handling in NostrTransport by @Volgat in #884
- Fix: Replace precondition() crashes with throwing errors in crypto code by @jackjackbits in #888
- Refactor: Break circular dependency between CommandProcessor and ChatViewModel by @jackjackbits in #889
- Extract GeohashParticipantTracker from ChatViewModel by @jackjackbits in #890
- Extract MessageFormattingEngine from ChatViewModel by @jackjackbits in #891
- Replace Thread.sleep with cooperative RunLoop delay by @jackjackbits in #892
- Consolidate message deduplication into shared MessageDeduplicator by @jackjackbits in #893
- Refactor: Simplify ChatViewModel - Phase 1 by @jackjackbits in #894
- Add ChatViewModel testability infrastructure and unit tests by @jackjackbits in #896
- Fix Swift 6 concurrency warnings by @jackjackbits in #897
- Refactor ChatViewModel: extract logic to services by @jackjackbits in #898
- Refactor ChatViewModel and fix private chat bugs by @jackjackbits in #901
- fix(macos): Propagate environment objects to sheet presentations by @81451 in #900
- Refactor MessageRouter to use generic Transport abstraction by @jackjackbits in #902
- refactor: consolidate KeychainHelper into KeychainManager by @malkovitc in #916
- fix(build): exclude allowBluetoothHFP on iOS Simulator by @malkovitc in #918
- fix: harden hex string parsing by @malkovitc in #919
- perf: optimize MessageDeduplicator performance by @malkovitc in #920
- fix: clear DH shared secrets after Noise handshake operations by @jackjackbits in #928
- fix: add thread safety to NostrTransport read receipt queue by @jackjackbits in #929
- fix: eliminate flaky FragmentationTests with proper async synchronization by @jackjackbits in #931
- Implement Geohash Presence (Heartbeats) by @callebtc in #940
- feat: Source routing v2 by @callebtc in #938
- chore: pin swift-secp256k1 to exact version 0.21.1 by @csjones in #934
- fix BCH-01-002: prevent DoS via file storage exhaustion by @jackjackbits in #942
- fix BCH-01-004: rate-limit subscription-triggered announces by @jackjackbits in #943
- fix(security): reduce timestamp validation window to Β±5 minutes [BCH-01-011] by @jackjackbits in #944
- fix(security): improve keychain error handling [BCH-01-009] by @jackjackbits in #945
- fix(security): prevent notifications from blocked users [BCH-01-012] by @jackjackbits in #946
- fix(security): clear iOS app switcher snapshots on panic reset [BCH-01-013] by @jackjackbits in #947
- BCH-01-010: Noise Protocol spec compliance improvements by @jackjackbits in #948
- fix: update georelays weekly workflow by @a1denvalu3 in #949
- Fix compiler warnings for unmutated variables in BLEService by @jackjackbits in #950
- Fix main actor isolation error in clearAppSwitcherSnapshots by @jackjackbits in #951
- Fix asymmetric voice/media delivery in private chats by @jackjackbits in #952
- Remove security warning from AppInfo view by @jackjackbits in #953
- Fix READ receipt status not updating to blue checks by @jackjackbits in #954
- Fix topology update running before announce verification by @jackjackbits in #955
- Update Tor to 0.4.8.21 with size optimization by @jackjackbits in #956
- Revert Noise nonce size to 4 bytes for backward compatibility by @callebtc in #957
- Replace C Tor with Rust Arti by @jackjackbits in #958
- Remove dormant wake attempt on Tor foreground restart by @jackjackbits in #959
New Contributors
- @jithin-renji made their first contribution in #863
- @Viniciuss-Moreira made their first contribution in #828
- @nadimkobeissi made their first contribution in #885
- @xingheng made their first contribution in...
1.4.4
What's Changed
- Include mermaid diagrams for packet structures by @FLAK-ZOSO in #666
- Add base localization infrastructure and externalize strings by @jackjackbits in #670
- Add default localization to fix CI builds by @qalandarov in #674
- Fix tests that were broken after localization integration by @qalandarov in #677
- Comment out broken tests by @qalandarov in #675
- Fix Localizations by @qalandarov in #684
- Unify the usages of
splitSuffix()by @qalandarov in #683 - Fix a typo in base
Localizable.stringsby @hyeonjongyang in #685 - Refactor: Migrate to Swift String Catalogs (.xcstrings) by @SkinnnyJay in #691
- Add new languages by @jackjackbits in #700
- Fix broke tests with LocationNotesManagerTests to expect localization key by @SkinnnyJay in #699
- Optimize private chat deduplication by @jackjackbits in #694
- Remove unused favorites and notification helpers by @jackjackbits in #693
- Chore: Add localization regression tests to prevent format string crashes by @SkinnnyJay in #695
- Unify SHA256 hash and hex usages by @qalandarov in #687
- Refactor
peerID- 1/n: AddPeerID+ Tests by @qalandarov in #688 - Fix broken build + uncover localization tests by @qalandarov in #702
- Prune unused validation helpers by @jackjackbits in #701
- PeerID 2/n: Count and hex-conversion done with
bareby @qalandarov in #705 - PeerID 3/n: Remove dead code by @qalandarov in #706
- Temporarily disable broken tests to catch actual issues by @qalandarov in #740
- Shared schemes by @qalandarov in #738
- Modularization: Extract Tor into a separate module by @qalandarov in #602
- PeerID 4/n:
BitchatMessage.senderPeerID+ String equality by @qalandarov in #739 - Injectable UserDefaults to fix race condition in tests by @qalandarov in #741
- PeerID 5/n: Ephemeral and Secure Identities by @qalandarov in #742
- PeerID 6/n: Unifiy validation by @qalandarov in #743
- PeerID 7/n: Unify PeerIDUtils & PeerIDResolver by @qalandarov in #744
- PeerID 8/n: NoiseRateLimiter & FavoritesPersistenceService by @qalandarov in #745
- Donβt auto-register mock BLE services on creation by @qalandarov in #746
- PeerID 9/n:
NoiseEncryptionServiceby @qalandarov in #747 - PeerID 10/n: MessageRouter by @qalandarov in #749
- PeerID 11/n:
Noisetypes usePeerID+ create separate files by @qalandarov in #750 - PeerID 12/n:
GossipSyncManagerby @qalandarov in #751 - PeerID 14/n:
Transportand its dependents by @qalandarov in #753 - Extract
DeliveryStatusViewinto a separate file by @qalandarov in #757 - PeerID 15/n: Bitchat Message & Packet accept in init by @qalandarov in #754
- PeerID 16/n: BitchatPeer / PeerInfo / TransportPeer by @qalandarov in #755
- PeerID 17/n:
PeripheralState+centralToPeerIDby @qalandarov in #756 - Extract and simplify
PaymentChipViewby @qalandarov in #758 - Extract
TextMessageViewinto a separate file by @qalandarov in #759 - Swift Testing by @qalandarov in #748
- Fix test suite peer ID collisions by @jackjackbits in #764
- Show Bluetooth permission alerts on launch and foreground by @jackjackbits in #765
- Swiping to close the sidebar by @riconroy in #678
- Fix ghost peers and stale messages from gossip sync by @jackjackbits in #766
- Add Torβs xcframework and select βDo not embedβ by @qalandarov in #768
- Fix QR verification sending multiple notifications by @jackjackbits in #773
- Location notes: fix performance and UI issues by @jackjackbits in #774
- SwiftTesting: Enable in GitHubActions + peer uuids by @qalandarov in #767
- PeerID 18/n:
BitchatDelegate+ Tests by @qalandarov in #769 - PeerID 19/n:
BLEServiceβs private properties by @qalandarov in #770 - PeerID 20/n:
BLEServiceβs private functions by @qalandarov in #771 - PeerID 21/n:
UnifiedPeerServiceby @qalandarov in #772 - Fix send button tap responsiveness and sidebar drag jitter by @jackjackbits in #783
- Remove
MockBluetoothMeshServiceby @qalandarov in #777 - Cleanup by @qalandarov in #793
- Centralize repeated queue-checking logic by @qalandarov in #791
- Fix hidden source of deadlocks by @qalandarov in #794
- Align DM sheet toolbar with people list by @jackjackbits in #795
- Serialize fragment assembly on BLE message queue by @jackjackbits in #804
- Refactor Nostr ID Bridge & Keychain Helper by @qalandarov in #796
- PeerID 22/n:
PrivateChatManagerby @qalandarov in #800 - Add Turkish translations for share extension & Add Turkey to knownRegions by @fikarme in #787
- Align gossip sync stale cleanup with Android client by @jackjackbits in #798
- Guard BLE link state lookups on BLE queue by @jackjackbits in #805
- Fix people sheet dismiss gestures by @jackjackbits in #803
- PeerID 23/n:
ChatViewModel+ its dependences by @qalandarov in #801 - Refactor Noise: Extract files and remove dead code by @qalandarov in #806
- Convert the remaining tests to Swift Testing by @qalandarov in #781
- Fix crash in handleMessage peer lookup by @jackjackbits in #810
- fix: improve Xcode detection in Justfile by @RedThoroughbred in #814
- Prune unused helpers and add Linux logging stubs by @jackjackbits in #811
- Reuse cached mention regex in parseMentions by @jackjackbits in #812
- Privacy: Remove LocationNotesCounter background subscriptions by @jackjackbits in #820
- Feature: Location notes Β± 1 grid (subscribe to 9 cells) by @jackjackbits in #821
New Contributors
- @FLAK-ZOSO made their first contribution in #666
- @hyeonjongyang made their first contribution in #685
- @SkinnnyJay made their first contribution in #691
- @riconroy made their first contribution in #678
- @fikarme made their first contribution in #787
- @RedThoroughbred made their first contribution in #814
Full Changelog: v1.4.3...v1.4.4
1.4.3
localization release:
- added general localization framework
- languages: english, italian, spanish, german, brazilian portugese, chinese, nepalise, indonesian, russian, ukranian, french, arabic, and hebrew.
What's Changed
- Include mermaid diagrams for packet structures by @FLAK-ZOSO in #666
- Add base localization infrastructure and externalize strings by @jackjackbits in #670
New Contributors
- @FLAK-ZOSO made their first contribution in #666
Full Changelog: v1.4.3...v1.4.3.1
1.4.2
gate tor/nostr connections:
- add option to turn tor on and off
- gate default relay connections behind mutual favs
What's Changed
- Prevent Github Languages stats skewing by @qalandarov in #630
- Set macOS App Category as Social Media as well by @qalandarov in #628
- Single source of truth for Marketing Version by @qalandarov in #627
- add option to turn off tor, gate default relays connection on mutual favorites by @jackjackbits in #631
- chore: debug icon by @r1b2ns in #634
- fix: crash on shared extension by @r1b2ns in #621
- Refactor 2/n: ChatViewModel's Geohash Subscription by @qalandarov in #635
- Remove unused Noise handshake coordinator and identity stubs by @jackjackbits in #656
- Refine location notes UI and align sheet layouts by @jackjackbits in #660
- Fix BLE stream crashes and gossip sync races by @jackjackbits in #663
- [DOCS] enforce https in noiseprotocol.org url by @leoperegrino in #661
- Add Dynamic Type support across chat surfaces by @jackjackbits in #664
- Improve BLE relay reliability by @jackjackbits in #665
New Contributors
- @leoperegrino made their first contribution in #661
Full Changelog: v1.4.1...v1.4.2
1.4.1
mesh sync release:
- added bluetooth mesh syncing so you don't miss chats when temporarily out of mesh range
- made tor restart smarter and more forgiving
- various UI fixes
What's Changed
- SYNC_REQUEST 2 by @callebtc in #616
- Xcode Configuration files:
.xcconfigs+ Removexcodegenby @qalandarov in #608 - Modularization: Extract SecureLogger into a separate module by @qalandarov in #600
- Refactor: BitchatMessage by @qalandarov in #610
- Refactor: Extract types from BitchatProtocol by @qalandarov in #611
- Refactor 1/n: ChatViewModel's Message Sending section by @qalandarov in #613
- Gate Tor/Nostr start behind permissions or mutual favorites; clean lifecycle + UX by @jackjackbits in #619
- fix: remove XcodeGen references from Justfile and make it runnable by @r1b2ns in #620
- Regenerate identities immediately on panic trigger by @jackjackbits in #624
- Ignore self when opening message actions by @jackjackbits in #625
New Contributors
Full Changelog: v1.4.0...v1.4.1
1.4.0 (geotags)
geotag release:
- can now add persistent notes to any location for others to find (precision: 8, street)
1.3.4
tor release:
- tor by default to provide IP address privacy
- better nostr relay error handling
- many bug fixes
1.3.3
- all bluetooth mesh public chats cryptographically signed to prevent spoofing
- geohash bookmarks to save your favorite location chats
- much more robust bluetooth mesh and relaying
- crash and bug fixes
1.3.2
- geo-based relays to reduce spam and increase speed
- QR codes to verify people found on mesh
- lots of robustness and performance fixes
- proper NIP-17 implementation for DMs