* 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
Fixes#472 - App crashing in debug settings
The issue was in ui/debug/DebugSettingsSheet.kt:
- Line 304: Code was pre-formatting double value with String.format() then passing
to string resource that expected raw double parameter
- Line 307: Numeric values weren't properly converted to strings for string resource
that expected string parameters
Changes made:
- Changed stringResource(R.string.debug_target_fpr_fmt, String.format("%.2f", gcsFpr))
to stringResource(R.string.debug_target_fpr_fmt, gcsFpr) - passes raw double value
- Changed stringResource(R.string.debug_derived_p_fmt, p, nmax)
to stringResource(R.string.debug_derived_p_fmt, p.toString(), nmax.toString()) -
properly converts numeric values to strings
This resolves the IllegalFormatConversionException: f != java.lang.String crash
when scrolling through the debug settings bottom sheet.
* english done
* de
* more extraction
* wip strings en
* translations work
* remove unneeded translations
* remove notification message
* add languages
* new languages
When `clearMessages` is called, it now also clears the `channelMessages` in the state, ensuring that messages from specific channels are also removed.
Co-authored-by: elian.kumaraku <elian.kumaraku@creactives.com>
* 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
* 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.