Commit Graph
55 Commits
Author SHA1 Message Date
callebtcandGitHub 33b5814b7a Sign mesh message (#353)
* sign BLE packets

* fix x
2025-08-30 12:45:36 +02:00
callebtcandGitHub 550520795f UI geohash notifications (#325)
* location name in notifications

* remove tests

* panic nostr

* mentions with hashes, otherwise none

* fix timestamps

* parse geohashes in messages

* works

* fix country name

* mention notifications work
2025-08-28 17:47:47 +02:00
callebtcandGitHub 6fe6e049ad Nip17 dms to extend the mesh (#313)
* favorite each other

* show favorites as system messsages

* wip show glove when offline but mayb edoesnt work

* send and receive works

* wip kinda works but no

* getting there

* kinda

* show offline peers in peer list

* kinda wonky but almost works

* fixes

* nostr user goes offline works

* nostr -> mesh works

* handoff works

* background message processing

* read works

* seen message store was missing
2025-08-25 18:38:10 +02:00
47c40fb9f3 fix nip-17 (#305)
* NIP-59 stuff

* nip-17 ios to androing works, android to ios still wip

* fix impl

* ios compat

* default relays for DMs

* delivery ack works

* delivery ack

---------

Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
2025-08-24 19:06:29 +02:00
callebtcandGitHub 7243d841a3 Nostr geohash (#276)
* first nostr build

* add test file

* internet access

* fix relay manager

* fix serialization

* demo service - remove later

* fix nostr

* event dedupe

* dedupe

* ui wip

* can send messages

* subscription works

* works

* favs

* works

* delete chat on change

* fix mentions

* remove autojoin channels

* styling

* adjust colors

* ui changes

* live updates working

* use local timestamp

* message history in background

* robust

* fixes

* nicknames refresh optimization

* nostr service

* refactor nostr

* style

* geohash works

* centralize colors

* refactoring

* disable DMs for now: click on peer nickname doesnt open chat list in geohash mode

* use local time

* less logging

* robustness

* scroll nickname

* adjust some text
2025-08-22 19:09:18 +02:00
callebtcandGitHub c5a3368b9f Sign announcements (#267)
* wip

* announcements WIP

* works

* restore mainnet
2025-08-20 13:24:52 +02:00
callebtcandGitHub 4acfafb998 fix fragmentation baby (#266) 2025-08-19 11:16:23 +02:00
callebtcandGitHub 9795e2ce8a Changes bitchat protocol (#265)
* create payload

* compiles and can send messages

* identityannouncement

* DMs work, read receipt not sent yet

* works

* delete old code

* simplify

* working

* fragment wip

* compression wip

* use zlib compression

* clean

* nice

* mesh

* remove comments
2025-08-18 21:16:27 +02:00
lollerfirstandGitHub 72af724588 add sendPeriodicBroadcastAnnounce to startServices (#243) 2025-08-11 19:45:15 +02:00
callebtcandGitHub 67c91b0559 remove system messages for connect / disconnect (#241)
* remove system messages for connect / disconnect

* fix tests
2025-08-07 11:58:06 +03:00
callebtcandGitHub 4d0419c536 Touches (#205)
* touch

* increase TTL of announcements

* ui touches
2025-07-31 06:28:31 +02:00
callebtcandGitHub 4cb5932fd0 improve identity announcements (#198)
* improve identity announcements

* touches

* signing noise id

* panic mode delete signing key
2025-07-31 06:26:41 +02:00
callebtcandGitHub c9aba00478 Dm header icons reactive (#190)
* header reactive to noise session

* favorite button reactive

* icon change

* nice
2025-07-25 19:50:40 +02:00
callebtcandGitHub 34b3d8dd82 Init handshake on dm (#187)
* kinda working

* establish handshake if not done yet

* add handshakerequest packet

* read receipt
2025-07-25 19:11:45 +02:00
callebtcandGitHub 565e4ab33c Fix delivery acks and read receipts (#186)
* delivery ack and read receipt

* handle deliveryack

* fix uppercase id

* fix read receipts too
2025-07-25 17:54:12 +02:00
callebtcandGitHub 534be7e613 Refactor fingerprint manager (#185)
* centralized fingerprint manager

* centralized fingerprintmanager

* update fingerprint only if no collision
2025-07-25 15:43:19 +02:00
callebtcandGitHub 9b7009137c Handle only packets addressed to me (#184)
* skip private packets not to us

* logs
2025-07-25 02:32:36 +02:00
callebtcandGitHub 167237f7c0 Centralized relay manager (#182)
* noise: send nonce

* broadcast manager

* add missing file
2025-07-25 01:46:27 +02:00
callebtcandGitHub bc14b9f179 Periodidc broadcast announce (#183)
* noise: send nonce

* periodidc broadcast announce
2025-07-25 01:38:53 +02:00
callebtcandGitHub c3c395832c Implement Noise XX Handshake Protocol for Direct Messages (#180)
* noise

* works?

* noise

* temporary

* better

* wip: use subnet

* better

* barely working

* werk

* subnet

* fix peer ID

* 8 byte peer ID

* wip noise

* wip fixes for noise

* std lib for noise

* noise handshake one step further

* buffers

* use fork

* fix imports

* simplify counter

* remove trash

* hashing

* no prologue

* nice

* wip, use noise encryption

* peer ID hex

* simplify session manager

* heavy logging

* use singleton

* Fix Noise session race condition with elegant per-peer actor serialization

- Use Kotlin coroutine actors for per-peer packet processing
- Each peer gets dedicated actor that processes packets sequentially
- Eliminates race conditions in session management without complex locking
- Single surgical change in PacketProcessor - minimal, maintainable
- Leverages Kotlin's native concurrency primitives

* decrypt correctly

* iniator works now

* clean code and fix signature to null

* better

* no signature in private message

* small fixes

* refactor ack

* refactor but untested

* messages working

* wip ack

* wip fix ack

* more logging

* pending tracker

* keep pending connections on errors

* less logging

* refactor model

* refactor frombinarydata

* idendityannouncement refactor and update to new binary protocol

* fix keys

* refix keys

* dms work

* revert to mainnet

* do not change bluetooth adapter name

* keep code but uncomment

* clean up comments

* cleanup comments
2025-07-24 12:01:46 +02:00
callebtc e0f727647a chore: refactor 2025-07-14 00:24:00 +02:00
callebtc 7ecdb1426b revert comment 2025-07-14 00:18:15 +02:00
callebtc 193918d81a track rssi correctly 2025-07-14 00:13:45 +02:00
callebtc f909f01fec integrate into main 2025-07-13 23:23:15 +02:00
callebtc f9a639af2d Merge branch 'main' into fix/android-ios-fragmentation-compatibility 2025-07-13 23:18:00 +02:00
callebtc 0e2614d3eb fix build 2025-07-13 22:52:50 +02:00
callebtc 362f9b0ff2 log 2025-07-13 22:39:41 +02:00
callebtc f40283694d logs 2025-07-13 22:35:18 +02:00
callebtc cac3b9ec6c better logging of device id 2025-07-13 22:18:31 +02:00
callebtc 725dc01352 fix null delegate 2025-07-13 22:06:43 +02:00
callebtc f7c68d2ff2 fix 2025-07-13 21:38:39 +02:00
callebtc a68e14133b wip refactor 2025-07-13 21:34:31 +02:00
callebtcandGitHub d25d3bf991 Merge branch 'main' into fix/android-ios-fragmentation-compatibility 2025-07-13 21:25:11 +02:00
callebtc 930081bba0 add location services check 2025-07-13 20:27:43 +02:00
callebtc 887ca0119e Merge branch 'main' into adjust-scan-intervals 2025-07-13 19:43:58 +02:00
callebtc 2cf6bf19b1 Merge branch 'main' into routingOpt 2025-07-13 17:20:49 +02:00
callebtc 2a0f84b53b adjust scan intervals and reduce logging 2025-07-13 17:16:31 +02:00
callebtc d54d470614 more logging 2025-07-12 16:36:00 +02:00
callebtc 035273011f fix startup 2025-07-12 15:42:37 +02:00
GUVWAF 1b37f46d1e Fallback to broadcast if direct send fails 2025-07-12 13:18:09 +02:00
GUVWAF d1085fde0b Cheap routing optimizations
- Don't relay back to sender or relayer
- Only send to connected device if recipientID matches one
- Don't relay our own ACK/read receipt
2025-07-12 13:18:09 +02:00
callebtc e58cf4fd0d fix null pointer 2025-07-12 12:53:01 +02:00
ShilohEye 33d273f268 Fix Android fragmentation for iOS/Rust compatibility
- Changed MAX_FRAGMENT_SIZE from 500 to 150 bytes to match iOS/Rust
- Fixed fragment ID generation to use 8 random bytes instead of string
- Implemented automatic fragmentation in BluetoothConnectionManager
- Added 20ms delay between fragments to match iOS/Rust implementation
- Updated fragment calculation to account for full packet overhead (34 bytes)

This ensures Android-generated fragments fit within iOS's default 185-byte BLE MTU,
fixing issues with commands like ?ls -la and ?ifconfig failing on iOS devices.
2025-07-10 19:25:52 -04:00
callebtc b6f281275a fixed 2025-07-09 21:51:04 +02:00
callebtc 3c0d145406 variable mtu clientside fix 2025-07-09 21:39:12 +02:00
callebtc 90750c2635 disable server, but client works 2025-07-09 21:10:20 +02:00
callebtc 250772a693 silent 2025-07-09 19:49:21 +02:00
callebtc 1d7defcbae rate limiting 2025-07-09 18:29:49 +02:00
callebtc dd8aa083b9 power saving 2025-07-09 15:47:54 +02:00
callebtc d3e258b442 precvent duplicate connections 2025-07-09 15:34:20 +02:00