Commit Graph
100 Commits
Author SHA1 Message Date
callebtcandGitHub c3f5739fea refactor app constants: service UUID for BLE (#494) 2025-10-22 13:48:35 +02:00
callebtcandGitHub da7fdd0f23 suppress relay of reassambled packet by setting TTL=0 (#492) 2025-10-21 12:52:14 +02:00
callebtcandGitHub f633509848 bump to 1.5.1 (#488) 2025-10-19 12:43:55 +02:00
callebtcandGitHub 59ee530d54 show media buttons only in mesh (#487) 2025-10-19 12:32:56 +02:00
callebtcandGitHub 2869a2b192 actually 1.5.0 (#485) 2025-10-18 15:03:45 +02:00
callebtcandGitHub 20342351a5 Camera take picture (#484)
* camera capture

* icon change

* image preview great

* remove string
2025-10-18 15:03:32 +02:00
callebtcandGitHub af4dd175c4 lower voice quality, smaller file size (#483) 2025-10-18 14:20:35 +02:00
callebtcandGitHub f99cb46b26 Location notes (#482)
* try 1

* works

* equalize UI with ios

* ui cleanup

* geohash chats: no building

* load notes in background

* insta

* simplify and tor icon change

* icons nice

* refactor

* unify location enabled / disabled

* cooler

* simplify, doesnt subscribe right away

* load when clicked

* plus minus location notes

* load when tor is available

* translations

* fix transalations

* implement review comments
2025-10-18 14:19:53 +02:00
callebtcandGitHub e8862d5128 versioncode 24 (#479) 2025-10-16 14:26:13 +02:00
callebtcandGitHub c4966b9a28 remove from all languages (#478) 2025-10-16 14:20:35 +02:00
callebtcandGitHub 4a6fe922f3 bump version 1.4.0 (#470) 2025-10-14 13:02:12 +02:00
callebtcandGitHub 1486121b77 Extract constants (#469)
* extract constants

* refactor constants
2025-10-12 20:59:37 +02:00
callebtcandGitHub c61347defe Remove ghost sync (#468)
* delete stale peers and messages from sync manager

* ignore old announcenements
2025-10-12 19:41:44 +02:00
callebtcandGitHub ad28cc710c Translations (#467)
* english done

* de

* more extraction

* wip strings en

* translations work

* remove unneeded translations

* remove notification message

* add languages

* new languages
2025-10-12 18:54:20 +02:00
callebtcandGitHub 2b0bb5af74 fix unit tests (#442) 2025-09-20 00:05:46 +02:00
callebtcandGitHub 633a506753 Media transfers (#440)
* tor voice wip

* worky BLE a bit

* can send sound

* remove tor

* ui cleanup

* recording time

* progress bar color

* nicknames for audio

* onboarding permissions no microphone

* may work

* fix destionation

* extend

* refactor voice input component

* fix keyboard collapse issue

* send images

* wip image open

* image sending works

* wip waveforms

* better

* better animation

* fix cursor for sending audio

* image sending animation

* image sending animation

* full screen image viewer

* gossip sync for fragments too

* reduce delays

* fix keyboard focus

* use v2 for file transfers

* do not sync fragments

* scrollable image viewer

* ui

* ui adjustments

* nicer animation

* seek through audio

* add spec

* add more details to documentation

* File sharing E2E:
- Add TLV BitchatFilePacket, FileSharingManager
- Implement sendFileNote in ChatViewModel
- File receive path: save to files/incoming and render [file] messages with FileMessageItem or FileSendingAnimation during transfer
- SAF FilePickerButton and dispatcher wiring; image/file choice to follow in MediaPickerOptions
- Add FileViewerDialog with system open/save, FileProvider and file_paths
- Hook transfer progress to file sending UI
- Manifest: READ_MEDIA_* and FileProvider
- Fix MessageHandler saving and prefix for non-image payloads
- Add helper utils (FileUtils)

* kinda wip

* fix buttons

* files half working

* wip file transfer

* file packet has 2-byte TLV and chunks. it wokrs but it sucks

* clean

* remove gossip sync for fragments

* fix audio and image rendering

* adjust FILE_SIZE TLV size too

* cleanup

* haptic

* private messages media

* read receipts for media

* use enum for message type not string

* delivery ack checks dont push content

* check

* animation fix

* refactor

* ui adjustments

* comments

* refactor

* fix crash on send and receive of the same file

* refactor notifications

* tests
2025-09-19 22:46:14 +02:00
callebtcandGitHub 1178fc254a remove the noise handshake if peer goes offline (#435) 2025-09-15 15:33:39 +02:00
callebtcandGitHub 7061a96cce bump to 1.3.1 (#432) 2025-09-15 12:43:58 +02:00
callebtcandGitHub 4eda850110 better verbose logging (#431) 2025-09-15 01:31:32 +02:00
c2609643da add github tests (#233)
* add github tests

* fix github tests (#409)

---------

Co-authored-by: Tobiloba Oyelekan <miketobi73@gmail.com>
2025-09-14 17:31:19 +02:00
callebtcandGitHub 277dbdf4e1 nostr: fix block feature (#427)
* fix block feature

* fix nostr nickname in sidebar
2025-09-14 17:30:47 +02:00
callebtcandGitHub 9c7567e62e lock to tor (#426)
* lock to tor

* bootstrap state
2025-09-14 16:36:02 +02:00
callebtcandGitHub 382d29e03f bump versioncode (#419) 2025-09-14 05:12:42 +02:00
callebtcandGitHub 4786b1f250 default pow to 12 (#418) 2025-09-14 05:04:04 +02:00
callebtcandGitHub b96bf180f9 Fix pow (#417)
* fix pow

* only pow with nonse
2025-09-14 05:01:34 +02:00
callebtcandGitHub deba156711 bumo to 1.3.0 (#416) 2025-09-14 04:26:04 +02:00
callebtcandGitHub 1a398b16ef Redesign: Permissions screen, battery optimization, location sheet (#415)
* update permissions screen design

* battery optimization screen

* remove init screen

* skip init screen on load

* skip on load only

* location sheet design wip

* denser location sheet

* location sheet layout fix
2025-09-14 04:22:56 +02:00
callebtcandGitHub 861eaaeaef catch errors (#397) 2025-09-14 03:50:51 +02:00
callebtcandGitHub 96d59d55ff tor on by default (#414) 2025-09-14 03:50:22 +02:00
callebtcandGitHub 73c91b9509 Plumtree sync (#393)
* wip plumtree

* sync works

* fix logging

* ttl to 0

* fix send packet to one peer

* spec

* wip GCS instead of bloom

* remove bloom filter remainders

* clean

* prune old announcements

* remove announcements from sync after LEAVE

* sync after 1 second

* pruning

* track own announcement and prune messages without announcements

* fix pruning

* getGcsMaxFilterBytes default value 400 bytes

* parameters
2025-09-14 03:32:10 +02:00
callebtcandGitHub 3967ef8922 peerid computed from noise fingerprint (#413) 2025-09-13 16:43:06 +02:00
callebtcandGitHub c1e56188d6 Revert "Mesh gossip (#381)" (#394)
This reverts commit 0969c0641e.
2025-09-08 15:15:54 +02:00
callebtcandGitHub 0969c0641e Mesh gossip (#381)
* wip mesh graph

* gossip fix

* gossip works

* source-based routing wip

* log
2025-09-08 15:15:32 +02:00
callebtcandGitHub bea1bbf1a8 add missing file (#392) 2025-09-08 14:28:30 +02:00
callebtcandGitHub 998ee606b1 Nostr refactor simplify (#390)
* fix bug

* geoDM receive works, send doesnt, and incoming message doesnt make sender appear in peer list

* fix nostr dm

* geohash dms work

* Geohash DM UI: stop mixing Nostr DM temp chats into mesh offline list; ensure geohash DM senders are added to geohash people list only. Removed nostr_* sidebar append in PeopleSection; kept 64-hex mesh offline favorites. Verified build.

* refactor

* nice

* works

* merging nostr -> mesh works

* tripple click to delete all

* fix sidebar icon

* remove hash

* dms have correct recipient

* works

* wip unread badge

* geohash dms wip

* dms work
2025-09-08 13:46:15 +02:00
callebtcandGitHub ba518269b4 fix geohash livedata wiring (#389) 2025-09-07 09:04:21 +02:00
callebtcandGitHub 6b54c70d26 fix remove peer on disconnect (#388) 2025-09-07 08:31:23 +02:00
callebtcandGitHub 9b8f98ec7c bump version 1.2.3 (#384) 2025-09-06 14:49:00 +02:00
callebtcandGitHub b131554efe fix some debug settings (#383) 2025-09-06 14:45:48 +02:00
callebtcandGitHub cc45f477fb init noise handshake on queue DMs (#379)
* init noise handshake on queue DMs

* establish noise more aggressively
2025-09-06 10:58:39 +02:00
callebtcandGitHub 9518d386d0 better tor management (#380)
* better tor management

* better tracking
2025-09-06 10:41:51 +02:00
callebtcandGitHub f47819a31e Debug button (#377)
* feat(debug): add DebugSettingsManager + DebugSettingsSheet scaffold and AboutSheet entry; groundwork for verbose logging, GATT controls, relay stats, device/scan views

* fix(debug): wire debug sheet launch via onShowDebug in AboutSheet from ChatScreen; add public start/stop server/client methods}

* fix(about): remove misplaced debug item block inside PoW section; keep debug launcher managed by ChatScreen only

* feat(debug): wire DebugSettingsSheet role switches to explicit startServer/stopServer and startClient/stopClient; expose role controls + disconnectAll on BluetoothConnectionManager; fix syntax error; build passes

* feat(debug): add connect/disconnect helpers; wire DebugSettingsSheet connect/disconnect actions to BluetoothConnectionManager

* feat(debug): add debug settings button at bottom of AboutSheet; wire onShowDebug callback to open DebugSettingsSheet from ChatScreen

* feat(debug): wire verbose logging into chat view via DebugSettingsManager; add rolling relay stats; push connected devices and scan results; ensure GATT role stop closes connections; log incoming packets and relay events; add UI polling for devices; build passes

* chore(debug-branch): remove unrelated files that were mistakenly added in first commit; keep only intended debug settings changes

* fix(chat): prevent mesh→geohash leak

Root cause:
- DebugSettingsManager→chat bridge appended system logs to the global timeline regardless of active channel
- MeshDelegateHandler added public mesh messages to UI unconditionally

Fixes:
- Only inject debug system messages when selected location channel is Mesh
- Only add public mesh messages to UI when Mesh is selected (still send notifications)

Build: ./gradlew assembleDebug
}

* fix(timeline): restore message persistence across channel switches

Root cause:
- NostrGeohashService.switchLocationChannel() called messageManager.clearMessages()
  which wiped ALL messages (mesh + debug + geohash) from main timeline
- Geohash events were adding to main timeline, causing cross-contamination

Fixes:
- Remove messageManager.clearMessages() from channel switching
- ChatScreen displayMessages now routes to separate storage:
  - Mesh: messages (main timeline, includes debug logs when Mesh selected)
  - Geohash: viewModel.getGeohashMessages(geohash) from separate history
  - Private: privateChats[peerID]
  - Channels: channelMessages[channel]
- Geohash events no longer add to main timeline, only to geohash history
- Mesh messages always stored to preserve history when switching away

Result: Each chat type has persistent separate storage, no message loss

* Debug/relay logs: use MessageType names; include device route in verbose packet logs.

* Verbose device-peer assignment and connection/disconnection logs with peerId, deviceId, nickname; packet relay log uses MessageType names.}

* Debug logs API: include nickname and deviceId for incoming/relay; update callers.}

* Fix compile: import MessageType; correct debug manager API usage and remove stray insertion; build.}

* Respect relay toggle; helper to log relay with deviceId.}

* PacketRelayManager: add relay toggle and unified logging helper; clean file header comments; build fixes.}

* changes

* Geohash local echo: do not add to mesh timeline; rely on geohash history and ChatScreen display for location channels.

* persisting

* persist debug settings

* gitignore

* gatt server / client controls

* debugger

* max connection settings and graph

* more graph

* better logging

* refactor logging
2025-09-05 15:40:39 +02:00
callebtcandGitHub 91f3f270d4 Fix geohash filtering (#376)
* fix(geohash): enforce client-side filter on subscription and validate 'g' tag in handler; move dedup after validation; avoid misrouting events across geohashes

* cleanup duplicate code block

* remove
2025-09-05 13:26:38 +02:00
callebtcandGitHub 905ccf5f17 better tor management (#373) 2025-09-03 02:22:27 +02:00
callebtcandGitHub 8b3dc71dc6 Refactors cleanup (#372)
* cleanup peermanager

* cleanup geohash code

* direct connections fix

* pow display

* track disconnects too

* display pow only if enabled

* display pow only if enabled

* direct connection tracking
2025-09-02 22:09:44 +02:00
callebtcandGitHub b62b15a21f Nip13 pow (#357)
* add pow

* animation

* matrix style

* animation better

* improve animation

* improve animation

* works

* fix jump

* difficulty indicator

* 10 is default

* animation runs forever

* pow in message timestamp

* pow works

* default on

* adjust animation

* no printing
2025-08-31 13:23:22 +02:00
callebtcandGitHub 6b77eb93c1 move tor icon (#355) 2025-08-30 13:57:50 +02:00
callebtcandGitHub 202c8edc53 bump version (#354) 2025-08-30 13:47:22 +02:00
callebtcandGitHub 33b5814b7a Sign mesh message (#353)
* sign BLE packets

* fix x
2025-08-30 12:45:36 +02:00
callebtcandGitHub cedc6552ce make notifications optional (#349) 2025-08-29 23:39:11 +02:00
callebtcandGitHub 0b44b850f2 restore default (#348) 2025-08-29 22:11:05 +02:00
callebtcandGitHub 0aecaf50f8 Manually disable location (#347)
* manually disable location, design needs to be fixed

* fix ui
2025-08-29 22:09:44 +02:00
callebtcandGitHub b1234ff548 simplify (#346) 2025-08-29 21:26:21 +02:00
callebtcandGitHub 85ddf3ca38 retry on bind error (#345) 2025-08-29 21:10:39 +02:00
callebtcandGitHub 3248f37932 update (#340) 2025-08-29 20:13:11 +02:00
callebtcandGitHub 4c7786a0d9 proguard arti (#344) 2025-08-29 20:12:35 +02:00
callebtcandGitHub 686e2e78ec Bundle tor (#339)
* tor started

* tor works

* tor code

* improve manager

* works

* move tor icon

* werks

* arti works

* arti works

* arti works with reconnect

* delay fix

* refactor
2025-08-29 14:37:35 +02:00
callebtcandGitHub 7f4bd96739 fix missing file (#335) 2025-08-29 11:16:56 +02:00
callebtcandGitHub 63d6649ab4 bump to 1.2.1 (#332) 2025-08-29 00:50:53 +02:00
callebtcandGitHub 2ec3141431 render links normally (#331) 2025-08-29 00:40:25 +02:00
callebtcandGitHub 9c103180cd limit nick length (#330) 2025-08-29 00:27:55 +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
callebtc 941be1b98f bump to 1.2.0 2025-08-25 10:20:18 +02:00
callebtcandGitHub 23c397fe7b Geohash-specific relays (#306)
* per-relay-chat

* normalize relay URL

* turn off default relays

* add relay list

* fetch relay list from the internet
2025-08-24 12:52:31 +02:00
callebtcandGitHub cb7b01ad81 fix teleport tag and icons (#303) 2025-08-24 02:03:00 +02:00
callebtcandGitHub 37c8c79310 UI changes and fixes (#301)
* country -> region, region –> province

* revise clicks

* fix longpress for mention etc

* scroll down button wip

* fix distance

* fix button

* fix header icon
2025-08-23 21:18:36 +02:00
callebtcandGitHub 7106be4b07 country -> region, region –> province (#298) 2025-08-23 15:44:46 +02:00
callebtcandGitHub a7604d9026 slightly increase padding (#295)
* slightly increase padding

* better colors

* add copy to bottom sheet

* increase font size

* base font size

* anchor chat at the bottom
2025-08-23 14:14:42 +02:00
callebtcandGitHub 26520991cf New about sheet (#294)
* about sheet

* version

* about page
2025-08-23 12:04:21 +02:00
callebtcandGitHub e92266c025 bump version (#293) 2025-08-23 11:52:06 +02:00
callebtcandGitHub 16c55a4105 Statusbar seamless (#289)
* wip status bar

* header fix
2025-08-23 02:36:36 +02:00
callebtcandGitHub f13f3063c9 Geohash notifications (#288)
* mention notifications

* notifications

* warning
2025-08-23 01:35:46 +02:00
callebtcandGitHub 65afdfb92e Link preview (#286)
* link preview

* link previews
2025-08-23 00:38:33 +02:00
callebtcandGitHub 49c42ba169 user bottom sheet (#285)
* wip sheet

* longpress

* block wip

* blocking works
2025-08-23 00:26:18 +02:00
callebtcandGitHub c9c02d993e persist last channel (#284) 2025-08-22 23:45:51 +02:00
callebtcandGitHub fa2e3fa0b2 bump version code (#283) 2025-08-22 22:36:23 +02:00
callebtcandGitHub 2458b471ed UI fixes 2 (#282)
* better icon

* scroll

* scroll bottom sheet
2025-08-22 22:27:35 +02:00
callebtcandGitHub 8e61ab24bf Scroll fix (#281)
* auto scroll

* scroll fix
2025-08-22 22:01:11 +02:00
callebtcandGitHub 440c73961e fix minify errors (#280) 2025-08-22 21:05:03 +02:00
callebtcandGitHub d3e2dce27b bump version (#277) 2025-08-22 19:10:12 +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 848cffee07 bump (#274) 2025-08-22 08:31:35 +02:00
callebtcandGitHub 98706acfa5 change app ID to com.bitchat.droid (#270) 2025-08-21 00:08:43 +02:00
callebtcandGitHub b4f080ff32 bump to 0.9 (#269) 2025-08-20 23:54:10 +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
callebtcandGitHub b34ef896c7 0.8.1 (#242) 2025-08-07 12:14:04 +03: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
callebtc ee7bd3e776 google play 2025-08-04 13:50:03 +02:00
callebtcandGitHub 9025aae3d1 bump to 0.8.1 (#206) 2025-07-31 06:53:40 +02: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 34d00839b2 bump to 0.8 (#188) 2025-07-25 20:04:43 +02:00
callebtcandGitHub 4b1d6f8c04 UI improvements (#192)
* bitchat logo

* improve ui
2025-07-25 20:02:59 +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 271df2e720 on focus (#189) 2025-07-25 19:17:36 +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