Commit Graph
453 Commits
Author SHA1 Message Date
GitHub Action ff15bddfc8 Automated update of relay data - Sun Jun 21 07:41:57 UTC 2026 2026-06-21 07:41:57 +00:00
ffe62bf1fd bump to 1.7.4 (#715)
Co-authored-by: CC <cc@ggg.local>
1.7.4
2026-06-17 12:27:54 -05:00
b89644f5f7 Fix foreground service start eligibility (#714)
* Fix foreground service start eligibility

* Defer foreground service start when backgrounded

* fix crash

---------

Co-authored-by: CC <cc@ggg.local>
2026-06-17 11:59:43 -05:00
9e0a919cb8 bump version (#713)
Co-authored-by: CC <cc@ggg.local>
2026-06-16 12:49:36 -05:00
ae6641270a feat: disable Wi‑Fi Aware by default (#712)
Co-authored-by: CC <cc@ggg.local>
1.7.3
2026-06-16 12:45:23 -05:00
3a983c5767 Wifi aware refactor mesh core (#711)
* wifi aware wip

* wifi aware wip

* starting to work

* werk

* dms work

* wip

* fix(wifi-aware): use bindSocket and scoped IPv6 instead of bindProcessToNetwork

* Merge branch 'upstream/main' into fix/wifi-aware-socket-binding

* Fix Wi-Fi Aware connectivity and UI integration post-merge

- Replace bindProcessToNetwork with bindSocket for VPN compatibility.
- Implement Scoped IPv6 address resolution (aware0) for mesh routing.
- Bridge Wi-Fi Aware incoming messages to AppStateStore for UI visibility.
- Fix syntax errors and variable name conflicts in Debug UI.

* Enhance Wi-Fi Aware robustness and debug UI display

- Clean up transport resources (sockets, server sockets, network callbacks) immediately on peer disconnection.
- Implement resolveScopedAddress to show scoped IPv6 (e.g., %aware0) in Debug UI.
- Fix Map type mismatch warning in ChatViewModel bridge.
- Filter self-ID from peer cleanup tables to prevent recursive self-removal.

* Share GossipSyncManager across transports to prevent redundant message synchronization

- Registered BluetoothMeshService's GossipSyncManager as a singleton in MeshServiceHolder.
- Modified WifiAwareMeshService to use the shared GossipSyncManager if available.
- Added background cleanup for peer mappings on socket disconnection.
- Fixed Kotlin type mismatch during nickname map merging.

* Restore VPN acquisition logic and improve peer cleanup

- Revert removal of NET_CAPABILITY_NOT_VPN to allow hardware handle acquisition while VPN is active.
- Refactor handlePeerDisconnection to more reliably cleanup initial and routed IDs.
- Switch cleanup logging to debug level to reduce log noise.

* Fix wifi aware socket binding 2 (#536)

* Background persistence (#505)

* persistence step 1

* fix build

* messages in the background work, notifications not yet

* app state store

* DM icon shows up

* notification launches when app is closed!

* keep ui updated

* lifecycle fixes

* extensive logging, maybe revert later

* send nickname in announcement

* quit in notification

* setting in about sheet

* fix quit bitchat

* lifecycle fixes

* power mode based on background state

* stats for both direciotns

* fix graph persistence

* better counting

* count per device

* only compute when debug sheet is open? untested

* fix read receipts

* fix read receipts fully

* fix unread badge if messages have been read in focus

* foreground promotion fix

* fix app kill in notification

* adjust to new tor

* nice

* about sheet design

* bump version 1.6.0 (#524)

* Automated update of relay data - Sun Dec 14 06:06:53 UTC 2025

* bump targetSdk (#526)

* Automated update of relay data - Sun Dec 21 06:06:56 UTC 2025

* Automated update of relay data - Sun Dec 28 06:07:12 UTC 2025

* Prevent quit notification from reappearing (#530)

* shutdown sequence

* Prevent quit notification from reappearing

* Restrict force-finish broadcast

* Cancel quit shutdown on relaunch

* fix(wifi-aware): use bindSocket and scoped IPv6 instead of bindProcessToNetwork

* Merge branch 'upstream/main' into fix/wifi-aware-socket-binding

* Fix Wi-Fi Aware connectivity and UI integration post-merge

- Replace bindProcessToNetwork with bindSocket for VPN compatibility.
- Implement Scoped IPv6 address resolution (aware0) for mesh routing.
- Bridge Wi-Fi Aware incoming messages to AppStateStore for UI visibility.
- Fix syntax errors and variable name conflicts in Debug UI.

* Enhance Wi-Fi Aware robustness and debug UI display

- Clean up transport resources (sockets, server sockets, network callbacks) immediately on peer disconnection.
- Implement resolveScopedAddress to show scoped IPv6 (e.g., %aware0) in Debug UI.
- Fix Map type mismatch warning in ChatViewModel bridge.
- Filter self-ID from peer cleanup tables to prevent recursive self-removal.

* Share GossipSyncManager across transports to prevent redundant message synchronization

- Registered BluetoothMeshService's GossipSyncManager as a singleton in MeshServiceHolder.
- Modified WifiAwareMeshService to use the shared GossipSyncManager if available.
- Added background cleanup for peer mappings on socket disconnection.
- Fixed Kotlin type mismatch during nickname map merging.

* Restore VPN acquisition logic and improve peer cleanup

- Revert removal of NET_CAPABILITY_NOT_VPN to allow hardware handle acquisition while VPN is active.
- Refactor handlePeerDisconnection to more reliably cleanup initial and routed IDs.
- Switch cleanup logging to debug level to reduce log noise.

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: aidenvalue <>

* Fix wifi aware routing (#534)

* Background persistence (#505)

* persistence step 1

* fix build

* messages in the background work, notifications not yet

* app state store

* DM icon shows up

* notification launches when app is closed!

* keep ui updated

* lifecycle fixes

* extensive logging, maybe revert later

* send nickname in announcement

* quit in notification

* setting in about sheet

* fix quit bitchat

* lifecycle fixes

* power mode based on background state

* stats for both direciotns

* fix graph persistence

* better counting

* count per device

* only compute when debug sheet is open? untested

* fix read receipts

* fix read receipts fully

* fix unread badge if messages have been read in focus

* foreground promotion fix

* fix app kill in notification

* adjust to new tor

* nice

* about sheet design

* bump version 1.6.0 (#524)

* Automated update of relay data - Sun Dec 14 06:06:53 UTC 2025

* bump targetSdk (#526)

* Automated update of relay data - Sun Dec 21 06:06:56 UTC 2025

* Automated update of relay data - Sun Dec 28 06:07:12 UTC 2025

* Prevent quit notification from reappearing (#530)

* shutdown sequence

* Prevent quit notification from reappearing

* Restrict force-finish broadcast

* Cancel quit shutdown on relaunch

* fix(wifi-aware): use bindSocket and scoped IPv6 instead of bindProcessToNetwork

* Merge branch 'upstream/main' into fix/wifi-aware-socket-binding

* Fix Wi-Fi Aware connectivity and UI integration post-merge

- Replace bindProcessToNetwork with bindSocket for VPN compatibility.
- Implement Scoped IPv6 address resolution (aware0) for mesh routing.
- Bridge Wi-Fi Aware incoming messages to AppStateStore for UI visibility.
- Fix syntax errors and variable name conflicts in Debug UI.

* Enhance Wi-Fi Aware robustness and debug UI display

- Clean up transport resources (sockets, server sockets, network callbacks) immediately on peer disconnection.
- Implement resolveScopedAddress to show scoped IPv6 (e.g., %aware0) in Debug UI.
- Fix Map type mismatch warning in ChatViewModel bridge.
- Filter self-ID from peer cleanup tables to prevent recursive self-removal.

* Share GossipSyncManager across transports to prevent redundant message synchronization

- Registered BluetoothMeshService's GossipSyncManager as a singleton in MeshServiceHolder.
- Modified WifiAwareMeshService to use the shared GossipSyncManager if available.
- Added background cleanup for peer mappings on socket disconnection.
- Fixed Kotlin type mismatch during nickname map merging.

* Restore VPN acquisition logic and improve peer cleanup

- Revert removal of NET_CAPABILITY_NOT_VPN to allow hardware handle acquisition while VPN is active.
- Refactor handlePeerDisconnection to more reliably cleanup initial and routed IDs.
- Switch cleanup logging to debug level to reduce log noise.

* fix wifi aware routing

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: aidenvalue <>

* unify connection tracker for ble and wifi (#537)

* unify connection tracker for ble and wifi

* cleanup nicely

* Wifi aware skip bluetooth (#538)

* unify connection tracker for ble and wifi

* bluetooth optional

* refactor mesh core

* tests

* share gossip

* refresh peer list more often

* patches: wifi aware mesh refactor core (#549)

* Refactor WifiAware memory management and lifecycle handling

* Fix Wi-Fi Aware reconnection by ensuring callback unregistration and session watchdog

* fix(wifiaware): allow WifiAwareController to restart service if session drops

* Enhance WiFi Aware logging with network request timeouts and detailed callback status

* Ensure explicit release of WiFi Aware network callbacks on failure or disconnection

---------

Co-authored-by: aidenvalue <>

* fix: wifi aware mesh private dms (#561)

* fix(wifi-aware): restore peer check and remove aggressive session restarts

* synchronized access to sockets.

* clear old peer socket `onClientConnected` if one was found.

* address second round of review

* fix: Restart publish session on termination in WifiAwareMeshService

* fix: cleanup connection tracker resources when handling peer disconnection without active socket

---------

Co-authored-by: aidenvalu3 <>

* fix(mesh): address memory leaks and background persistence issues in Wi-Fi Aware

- Move message persistence and background notifications for Wi-Fi Aware into the service layer via MeshCore hooks.
- Fix memory leak in MainActivity by properly detaching WifiAwareMeshDelegate on pause.
- Ensure BluetoothMeshService is initialized before WifiAwareMeshService to guarantee shared GossipSyncManager instance.
- Deduplicate persistence logic from MainActivity delegate.

* wifi aware working

* more robust

* fragments work

* new files

* wifi improvements

* handshake works

* improve

* wifi mesh more robust

* fix review

* check for support

* wifi aware fixes

---------

Co-authored-by: aidenvalue <>
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: aidenvalu3 <erendentman@gmail.com>
Co-authored-by: a1denvalu3 <43107113+a1denvalu3@users.noreply.github.com>
Co-authored-by: CC <cc@ggg.local>
2026-06-16 12:11:33 -05:00
6189f0cb84 fix(security): apply iOS audit parity fixes (#709)
Co-authored-by: CC <cc@ggg.local>
2026-06-15 08:35:37 -05:00
GitHub Action 13585a9a9c Automated update of relay data - Sun Jun 14 07:39:17 UTC 2026 2026-06-14 07:39:17 +00:00
a1denvalu3andGitHub b079ae8742 fix(sync): resolve hash alignment and early break bugs on GCS filter trimming (#708)
* fix(sync): resolve hash alignment and early break bugs on GCS filter trimming

* fix(sync): filter out zero bucket and deduplicate buckets before encoding

* fix(sync): preserve zero-bucket mapping by clamping 0 to 1 during encoding and decoding
2026-06-08 19:00:03 -05:00
054887bad8 Fix request sync duplicate public messages (#707)
Co-authored-by: CC <cc@ggg.local>
2026-06-08 15:41:11 -05:00
GitHub Action f7ce1f4be6 Automated update of relay data - Sun Jun 7 07:27:22 UTC 2026 2026-06-07 07:27:22 +00:00
GitHub Action 1a99064fc7 Automated update of relay data - Sun May 31 07:22:04 UTC 2026 2026-05-31 07:22:04 +00:00
GitHub Action 2a8dbac89d Automated update of relay data - Sun May 24 07:09:35 UTC 2026 2026-05-24 07:09:35 +00:00
GitHub Action 67e767237b Automated update of relay data - Sun May 17 07:01:09 UTC 2026 2026-05-17 07:01:09 +00:00
GitHub Action 8ddf03d139 Automated update of relay data - Sun May 10 06:58:05 UTC 2026 2026-05-10 06:58:05 +00:00
GitHub Action 1d99434a25 Automated update of relay data - Sun May 3 06:54:32 UTC 2026 2026-05-03 06:54:32 +00:00
GitHub Action 911c80db0e Automated update of relay data - Sun Apr 26 06:41:15 UTC 2026 2026-04-26 06:41:16 +00:00
GitHub Action c332fb2ff1 Automated update of relay data - Sun Apr 19 06:37:36 UTC 2026 2026-04-19 06:37:36 +00:00
GitHub Action 47adcca1e1 Automated update of relay data - Sun Apr 12 06:35:32 UTC 2026 2026-04-12 06:35:32 +00:00
GitHub Action 42f6cf9d7f Automated update of relay data - Sun Apr 5 06:29:20 UTC 2026 2026-04-05 06:29:20 +00:00
callebtcandGitHub 4dfec917c8 Revert "voice note player ui (#680)" (#690)
This reverts commit bc8909bab0.
1.7.2
2026-03-30 10:21:38 +02:00
callebtcandGitHub e3c7bd5346 Revert "update input button styling (#682)" (#689)
This reverts commit ce86f4ec2f.
2026-03-30 10:20:25 +02:00
callebtcandGitHub be1a2ec914 update version (#688) 2026-03-30 10:14:32 +02:00
GitHub Action 426e4f0994 Automated update of relay data - Sun Mar 29 06:27:23 UTC 2026 2026-03-29 06:27:23 +00:00
OviandGitHub 5b0a7d0ce9 fix: add input validation for protocol decoding and fragment reassembly (#666)
* fix: add input validation for protocol decoding and fragment reassembly

* fix:subtract the old entry's size before adding the new one, so duplicate/retransmitted fragments don't inflate the counter

* fix: FragmentManager.handleFragment() can be entered concurrently (e.g., fragments for the same fragmentID arriving from multiple peers/relays). In order for this to happen multiple devices would be needed to connect to the mesh. even with a per-fragmentID byte cap, an attacker could open many fragment IDs at once and force the device to buffer lots of fragment data overall (risking memory pressure/OOM). In this fix we made fragments atomic and thread safe. When a fragment index is retransmitted, we compute the size delta (new - old) so duplicates don’t inflate counters and can’t be used to bypass limits. Under heavy load/attack the app will drop/reject fragment sets earlier instead of growing memory usage without bound to reduce risk of oom. tested on pixel 6 and pixel 8.

* fix: add fragmenttest
2026-03-26 16:24:29 +01:00
a1denvalu3GitHuba1denvalu3 <>
96b35e957c Add 'Send private message' action to chat user sheet (#649)
* Add 'Send private message' action to chat user sheet

* Change 'Send private message' action color to purple

* Fix: Resolve short ID against all participants, not just cached nicknames

* Fix: Correctly open private chat sheet for mesh peers

---------

Co-authored-by: a1denvalu3 <>
2026-03-25 14:45:36 +01:00
a1denvalu3andGitHub dac81b2c3b fix: use CSPRNG for heartbeat intervals (#685) 2026-03-25 14:42:53 +01:00
Clare KineryandGitHub ce86f4ec2f update input button styling (#682) 2026-03-25 14:42:24 +01:00
GitHub Action 95daa47a5b Automated update of relay data - Sun Mar 22 06:19:38 UTC 2026 2026-03-22 06:19:38 +00:00
GitHub Action 9fb8d4b37e Automated update of relay data - Sun Mar 15 06:23:41 UTC 2026 2026-03-15 06:23:42 +00:00
GitHub Action 4082a48154 Automated update of relay data - Sun Mar 8 06:15:21 UTC 2026 2026-03-08 06:15:21 +00:00
rollforsatsandGitHub 9ad1214e96 Unit tests for BinaryProtocol (#678)
* Comprehensive tests for BinaryProtocol

* Test feedback
2026-03-06 13:08:18 +01:00
Clare KineryandGitHub bc8909bab0 voice note player ui (#680) 2026-03-06 13:07:45 +01:00
GitHub Action 632ee884e9 Automated update of relay data - Sun Mar 1 06:17:19 UTC 2026 2026-03-01 06:17:19 +00:00
callebtcandGitHub fb2bb64d65 chore: change license from MIT to GPLv3 (#674) 2026-02-28 13:09:04 +01:00
GitHub Action 4f62e6828b Automated update of relay data - Sun Feb 22 06:17:38 UTC 2026 2026-02-22 06:17:38 +00:00
GitHub Action dc8b6ee37e Automated update of relay data - Sun Feb 15 06:19:54 UTC 2026 2026-02-15 06:19:54 +00:00
GitHub Action 6d44919f5b Automated update of relay data - Sun Feb 8 06:20:17 UTC 2026 2026-02-08 06:20:17 +00:00
callebtc 3e5355a71d edit 2026-02-03 15:33:56 +01:00
callebtcandGitHub 390f264987 bump (#661) 2026-02-01 13:33:22 +01:00
a1denvalu3andGitHub 43029e88e6 fix: pause geohash heartbeat (kind 20001) sampling when backgrounded (#660) 1.7.1 2026-02-01 13:25:36 +01:00
GitHub Action 73d8ce56a2 Automated update of relay data - Sun Feb 1 06:19:30 UTC 2026 2026-02-01 06:19:30 +00:00
a1denvalu3andGitHub f79451b615 fix(geohash): cleanup sampling subscriptions when closing location sheet (#659)
- Added DisposableEffect to LocationChannelsSheet to ensure cleanup runs when composable is removed
- Fixed ChatViewModel.endGeohashSampling() to correctly delegate to GeohashViewModel instead of being a no-op
- Prevents lingering kind 20001 subscriptions after closing the sheet
2026-01-31 16:42:20 +01:00
GitHub Action 06d2665b70 Automated update of relay data - Sun Jan 25 06:07:49 UTC 2026 2026-01-25 06:07:49 +00:00
GitHub Action 46e30897ae Automated update of relay data - Sun Jan 18 06:07:42 UTC 2026 2026-01-18 06:07:42 +00:00
callebtcandGitHub ab04764212 Fix location update in notes sheet and Nostr subscription leaks (#636)
- Fixes #634: Trigger location refresh when LocationNotesSheet opens
- Fixes #635: Implement proper subscription diffing and cleanup in GeohashViewModel
2026-01-17 00:47:53 +07:00
callebtcandGitHub e3056d70c0 bump to 1.7.0 (#624) 1.7.0 2026-01-16 01:13:33 +07:00
Moe HamadeandGitHub 5013b32ca9 feat: Introduce Gradle property to control APK splits (#560)
* feat: Introduce Gradle property to control APK splits

This commit introduces a new Gradle project property, `buildSplitApks`, to conditionally enable or disable the generation of ABI-specific (arm64, x86_64) and universal APKs.

Key changes:
- In `app/build.gradle.kts`, the `splits.abi.isEnable` flag is now dynamically set based on the `buildSplitApks` property.
- APK splitting is disabled by default to support standard Android App Bundle (`bundleRelease`) builds.
- The release workflow (`release.yml`) is updated to pass `-PbuildSplitApks=true` when building release APKs for GitHub.
- The general Android build workflow (`android-build.yml`) is also modified to enable splits only for the `Release` variant, ensuring debug builds are not affected.

* chore: Simplify and automate APK split builds

This commit simplifies the build process by automatically enabling ABI splits for APKs (`assemble`) and disabling them for AABs (`bundle`).

This removes the need to manually pass the `-PbuildSplitApks=true` property. The build script now intelligently determines whether to create architecture-specific APKs based on the task being executed (e.g., `assembleRelease` vs. `bundleRelease`).

The GitHub Actions workflows (`release.yml`, `android-build.yml`) have been updated to remove this now-redundant property, streamlining the CI configuration.
2026-01-16 01:06:15 +07:00
callebtcandGitHub e07bee5a75 spacing for geohash sheet text (#623) 2026-01-16 01:03:25 +07:00
51a06cf0b7 Refactored BottomSheetTopBar to BitchatSheetTopBar (#601)
* Automated update of relay data - Sun Sep 21 06:21:05 UTC 2025

* Automated update of relay data - Sun Sep 28 06:20:40 UTC 2025

* refactor: new close button like ios(but not liquid glass)

* Automated update of relay data - Sun Oct  5 06:20:09 UTC 2025

* Automated update of relay data - Sun Oct 12 06:20:12 UTC 2025

* Automated update of relay data - Sun Oct 19 06:21:51 UTC 2025

* Automated update of relay data - Sun Oct 26 06:21:31 UTC 2025

* Automated update of relay data - Sun Nov  2 06:22:16 UTC 2025

* Automated update of relay data - Sun Nov  9 06:21:43 UTC 2025

* Automated update of relay data - Sun Nov 16 06:22:37 UTC 2025

* Automated update of relay data - Sun Nov 23 06:22:51 UTC 2025

* Automated update of relay data - Sun Nov 30 06:24:08 UTC 2025

* Automated update of relay data - Sun Dec  7 06:22:59 UTC 2025

* Automated update of relay data - Sun Dec 14 06:24:33 UTC 2025

* Automated update of relay data - Sun Dec 21 06:24:49 UTC 2025

* Automated update of relay data - Sun Dec 28 06:25:38 UTC 2025

* Automated update of relay data - Sun Jan  4 06:26:28 UTC 2026

* Automated update of relay data - Sun Jan 11 06:26:19 UTC 2026

* feat: Add BitchatSheetTopBar component

* Refactor: Use BitchatSheetTopBar in bottom sheets

This commit refactors several bottom sheet components to use the new reusable `BitchatSheetTopBar` composable.

This change provides a consistent look and feel for top bars across the following sheets:
- DebugSettingsSheet
- MeshPeerListSheet
- LocationNotesSheet
- LocationChannelsSheet
- LocationNotesSheetPresenter (for the location unavailable state)

The `BitchatSheetCenterTopBar` has been removed as its functionality is now covered by the more flexible `BitchatSheetTopBar`.

* Refactor: Use BitchatSheetTopBar in MeshPeerListSheet

---------

Co-authored-by: GitHub Action <action@github.com>
2026-01-16 01:00:04 +07:00