Commit Graph
100 Commits
Author SHA1 Message Date
callebtcandGitHub 8358073420 improve verification sheet (#615) 2026-01-15 15:11:36 +07:00
ae67fa4344 fix(security): Clear in-memory keys during panic mode (#596)
* fix(security): Clear in-memory keys during panic mode #588

* feat: Recreate mesh service after panic clear (#602)

* feat: Recreate mesh service after panic clear

This commit refactors the panic clear process to ensure a new mesh identity is immediately created and applied.

Previously, the `ChatViewModel` would clear sensitive data, but the recreation of the `BluetoothMeshService` was handled externally. This could lead to a delay or failure in adopting the new identity.

Key changes:
- Introduces `MeshServiceHolder` to manage the lifecycle of the `BluetoothMeshService` instance.
- Adds `recreateMeshServiceAfterPanic()` to `ChatViewModel`, which now explicitly clears the old service instance and creates a new one with a regenerated identity.
- The `meshService` property in `ChatViewModel` is now a `var` to allow it to be replaced with the fresh instance post-panic.
- The new service is started, and a broadcast announcement is sent immediately, ensuring the new peer ID is used on the network.

* fix: Ensure mesh service is properly managed in foreground service

* refactor: Decouple handlers from direct service reference

This commit updates the `VerificationHandler` and `MediaSendingManager` to receive the `meshService` via a lambda function (`getMeshService`) instead of a direct reference.

This change decouples the handlers from the service instance, preventing them from holding a stale reference if the service reconnects or changes. By invoking the lambda to get the current service instance when needed, it ensures they always interact with the active `meshService`.

* fix: restart bluetooth

---------

Co-authored-by: Moe Hamade <69801237+moehamade@users.noreply.github.com>
2026-01-15 15:11:10 +07:00
callebtcandGitHub 9dfebd73db Refactor: Implement Hybrid Location Provider (System/Fused) (#612)
* refactor: abstract LocationProvider, use FusedLocationProvider

* Refactor: Sync permission state on check

Replaces manual updatePermissionState calls with a unified checkAndSyncPermission method. This ensures that _permissionState flow always reflects the actual system permission status whenever it is checked (e.g. in requestOneShotLocation), preventing desync issues when permissions are revoked at runtime.

* Refactor: Add timeout and tracking to SystemLocationProvider

Implements robust cleanup and timeout logic for location requests.
- SystemLocationProvider: Adds 30s timeout and listener tracking for legacy one-shot requests to prevent memory leaks on pre-Android 11 devices.
- FusedLocationProvider: Adds 30s duration to requests.
- LocationProvider: Adds cancel() method for full resource cleanup.
- LocationChannelManager: Ensures cancel() is called during cleanup.

* try catch
2026-01-15 14:30:26 +07:00
callebtcandGitHub c2f60d6ab2 announce peer ID in servicedata to prevent duplicate connections (#613) 2026-01-15 13:51:30 +07:00
callebtcandGitHub 41945e6ff0 OSM fallback for geocoding (#611)
* OSM fallback for geocoding

* fallback to city for missing province
2026-01-15 11:45:22 +07:00
callebtcandGitHub 5ec02c99fd Fix and Improve LocationManager logic (#599)
* location manager improvements

* fix: resolve compilation errors and improve location state handling

- Fix missing imports and stray braces in LocationChannelManager
- Implement checkSystemLocationEnabled and BroadcastReceiver for location state
- Order class members for correct initialization
- Consolidate UI refresh logic in LocationChannelsSheet

* fix: guard against stale geocoding results on legacy devices

- Add isActive check after blocking Geocoder.getFromLocation call
- Prevent stale results from overwriting state after job cancellation
2026-01-15 11:11:56 +07:00
callebtcandGitHub e769a03634 Fix/nostr dm bottom sheet (#598)
* nostr in new dm sheets

* open sheet for nostr peers
2026-01-14 17:38:47 +07:00
callebtcandGitHub 216352c39d use bluetooth icon (#597) 2026-01-14 17:17:19 +07:00
callebtcandGitHub 829fb52a04 Update arti to 1.9.0 and produce 32 bit builds (#585)
* x86

* update arti to 1.9.0
2026-01-14 14:58:26 +07:00
callebtcandGitHub dd856ac01f visual logger refactor (#583) 2026-01-14 04:40:04 +07:00
callebtcandGitHub ce71de29f7 Feat/graph force (#581)
* mesh topology wip

* graph

* graph animated
2026-01-13 05:11:20 +07:00
callebtcandGitHub 66012e9fe9 Gossip mesh topology + source-based routing (#445)
* wip mesh graph

* gossip fix

* gossip works

* source-based routing wip

* log

* update spec to be explicit about intermediate hops only

* drop duplicate hops

* add to spec

* test

* forgot comma

* source routing v2

* add compression bomb protection

* v2 source routing

* fragmented packets inherit route

* update spec

* Gossip routing tmp with connection limit fixed (#569)

* fix: r8 exception for LocationManager (#566)

* fragmented packets inherit route

* update spec

* fix connection limits

* fix: deserialization issue with routed packets

* log

* dynamic fragment size

* fragment size

* add tests

* feat(gossip): implement two-way handshake for source routing edges

- Update MeshGraphService to track directed announcements
- Require bidirectional announcements for a 'confirmed' edge
- Update RoutePlanner to strictly use confirmed edges
- Update Mesh Topology debug view to show confirmed vs unconfirmed edges (solid vs dotted)

* docs: update SOURCE_ROUTING.md with two-way handshake requirement

* evict stale peers from mesh graph service

* better logging

* fix announce spe

* fix: empty route

* fix spec

* fix: compile error in DebugSettingsSheet and potential NPE in RoutePlanner

* revert

* try again
2026-01-13 04:18:07 +07:00
callebtcandGitHub d164b3f9bc Implement Geohash Presence (Heartbeats) (#576)
* geohash announce

* only for some geohashes

* global presence right away

* jitter delays

* show ? people for high-precision geohashes

* 1000 events
2026-01-13 03:23:53 +07:00
callebtcandGitHub 0306ed4f34 fix camera button (#572)
* fix camera button

* fix

* Fix: Add runtime camera permission check for image picker
2026-01-10 01:04:48 +07:00
callebtcandGitHub d975b846be fix: MessageRouter uses stale BluetoothMeshService reference (#571)
* fix: MessageRouter uses stale BluetoothMeshService reference

* fix: unconditionally update mesh reference in MessageRouter.getInstance
2026-01-09 23:56:16 +07:00
callebtcandGitHub e313112d7c fix: r8 exception for LocationManager (#566) 2026-01-08 17:31:50 +07:00
callebtcandGitHub 5dc6369b8f bump vc to 30 (#559) 2026-01-05 17:30:28 +07:00
callebtcandGitHub eef831fe60 scan duration fix (#557) 2026-01-05 16:41:41 +07:00
callebtcandGitHub 171483a1da drop duplicate announces based on TTL (#558) 2026-01-05 16:41:17 +07:00
callebtcandGitHub 423feb8b77 Fix/foreground permissions scanning (#556)
* try catch the foreground location service if not available

* ask for background permissions

* background permissions in onboarding

* small improvements
2026-01-05 15:09:04 +07:00
callebtcandGitHub 9733806610 bump to 29 (#553) 2026-01-05 11:39:13 +07:00
callebtcandGitHub 95385daaf9 verift signature only for ANNOUNCE, MESSAGE, and FILE_TRANSFER like ios (#552) 2026-01-05 11:22:06 +07:00
callebtcandGitHub eeaabf487f bump versioncode to 28 (#551) 2026-01-05 10:42:35 +07:00
callebtcandGitHub 7ee61a0440 fix: sync notification peer count with sidebar (#547) 2026-01-04 21:12:51 +07:00
callebtcandGitHub fe5417bf97 fix: location channel manager (#516)
* location channel manager fix

* fix: use interval arg in beginLiveRefresh & remove unused code
2026-01-04 21:09:14 +07:00
callebtcandGitHub 123a24ce34 Revert "Fix small-screen header clipping (#519) (#532)" (#548)
This reverts commit d73976537d.
2026-01-04 21:08:52 +07:00
callebtcandGitHub 55b2d68def Enforce mandatory packet signature verification (#546)
* security: enforce mandatory packet signature verification

* tests: add comprehensive unit tests for packet signature verification
2026-01-04 18:47:24 +07:00
callebtcandGitHub 1b9f76be23 Fix notification user try 2 (#541)
* count peers in notification

* cleanup
2026-01-04 02:35:06 +07:00
callebtcandGitHub fa1978d587 Revert "fix: wifi aware socket binding (#533)" (#535)
This reverts commit 0c7505b588.
2026-01-03 23:37:49 +07:00
callebtcandGitHub 903a4584a8 Prevent quit notification from reappearing (#530)
* shutdown sequence

* Prevent quit notification from reappearing

* Restrict force-finish broadcast

* Cancel quit shutdown on relaunch
2026-01-02 16:52:06 +07:00
callebtcandGitHub 743bbd0b1c bump targetSdk (#526) 2025-12-14 21:55:41 +07:00
callebtcandGitHub 8767cfdea3 bump version 1.6.0 (#524) 2025-12-13 16:46:09 +07:00
callebtcandGitHub 3f8c236a72 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
2025-12-13 16:43:39 +07:00
callebtcandGitHub 04ea2a3162 refactor app constants: service UUID for BLE (#500) 2025-11-18 21:26:20 +01:00
callebtcandGitHub 282ac0fe5a Fix: do not reject empty packets that arent message type (#510)
* do not reject empty packets that arent message type

* leave message with empty byte array

* clean up comments
2025-11-03 20:37:31 +01:00
callebtcandGitHub 292ca4532b fix connection attempt counter tracker (#503) 2025-10-30 13:50:47 +01:00
callebtcandGitHub a4ce8cc979 better tracking of first announce seen (#502) 2025-10-30 00:39:24 +01:00
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