* Automated update of relay data - Sun Sep 7 06:20:11 UTC 2025
* Refactor(ui): Improve AboutSheet design and layout Ios Like
This commit refactors the `AboutSheet` composable with several UI enhancements:
- Updated the overall layout and styling for a more modern look and feel.
- Introduced a collapsing top bar effect on scroll.
- Replaced `FeatureCard` with individual `Row` layouts for feature descriptions.
- Adjusted typography, spacing, and padding for better readability.
- Updated color usage to align with `MaterialTheme.colorScheme`.
- Made the bottom sheet skip the partially expanded state by default.
- Added `statusBarsPadding` to the `ModalBottomSheet`.
---------
Co-authored-by: GitHub Action <action@github.com>
* feat(geohash): add in-app Geohash Picker map with quadrant drill-down and Activity integration
- New GeohashPickerActivity hosting a WebView with Leaflet-based picker
- Adds map icon next to custom geohash input in LocationChannelsSheet
- Picker allows quadrant selection and subquadrant drill-down; returns selected geohash
- Register activity in AndroidManifest
perf(picker): improve map performance and correctness
- Use LayerGroup and clearLayers() on redraw to avoid stale overlays
- Use Leaflet canvas renderer for rectangles to reduce DOM and improve perf
- Make labels non-interactive and pointer-events: none to avoid gesture overhead
- Fix initial mega-label artifact by grouping and clearing labels with cells
chore: add asset geohash_picker.html with minimal geohash helpers (bounds/encode/adjacent)
* remove accidentally committed submodule.
* fix some issues
* better geohash labels on map
* design wip
* countries green
* wip
* geohashpicker: pan + zoom; start from current geohash channel
* better ui
* ui elements
* nice
* readability
---------
Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
* fix: send action messages to correct chat
* fix(action): avoid double local echo for action messages in geohash channels
When sending /hug or /slap in a location (geohash) channel, CommandProcessor
was adding a local echo and then routing to NostrGeohashService, which also
adds a local echo. This resulted in duplicate action messages on the sender’s
screen.
Change: detect when the selectedLocationChannel is a Location and, in that
case, skip adding the local echo in CommandProcessor and only call the
onSendMessage transport callback (NostrGeohashService will add the echo with
proper metadata). Private and mesh (non-location) behavior is unchanged.
* 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
* 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
* 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
* tor started
* tor works
* tor code
* improve manager
* works
* move tor icon
* werks
* arti works
* arti works
* arti works with reconnect
* delay fix
* refactor
* 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