686 Commits

Author SHA1 Message Date
callebtc
1a792ecfec fix: harden unknown file TLV parsing 2026-07-30 19:33:02 +02:00
Vincenzo Palazzo
46de1a3623 fix: skip unknown file TLVs instead of dropping the transfer
`BitchatFilePacket.decode` resolved every tag through the four-value
`TLVType` enum and bailed on the first miss:

    val t = TLVType.from(data[off].toUByte()) ?: return null

So a file packet carrying one tag this build does not know is not
partially understood — it is discarded whole, media included. The
receiver shows nothing and logs nothing; the sender sees a successful
transfer. Both apps look healthy.

iOS has always skipped unknown tags (`case nil: continue` in its own
`BitchatFilePacket.decode`), so the two implementations disagreed about
what a valid packet is, and the tag list stopped being extensible in
practice: any optional field added by a newer or third-party client
costs every Android peer the whole file rather than just that field.

Unknown tags now advance past the value, exactly as iOS does. Known-tag
handling, the 4-byte CONTENT length, multi-CONTENT concatenation and
every existing rejection are unchanged.

The skip path is deliberately allocation- and log-free per TLV, because
its iteration count is chosen by the sender: a zero-length unknown TLV
costs 3 bytes, so a padded packet would otherwise mean millions of empty
array copies and formatted log lines monopolising the mesh handler. The
count is reported once after the loop instead.

Tests: `decode should skip unknown TLV types instead of dropping the
whole file` (extension before CONTENT), `decode should skip an unknown
TLV that trails the content` (after it), and `decode should handle a
packet padded with many zero-length unknown TLVs` (200k of them). The
first two fail on the old decoder.
2026-07-30 00:11:18 +02:00
callebtc
97d6e8a479
Merge pull request #825 from permissionlesstech/codex/network-tab-list-cleanup
Polish Network list badges and previews
2026-07-29 22:32:04 +02:00
callebtc
1774414f2e
Merge pull request #819 from spradhan7656/main
android 10 or below chat ui input field padding issue
2026-07-29 22:17:16 +02:00
callebtc
5dd7b2c809 Restore Gradle verification metadata 2026-07-29 21:57:41 +02:00
callebtc
a5dfe9fe42 Polish network conversation rows 2026-07-29 21:56:12 +02:00
callebtc
2176160ac0
Merge pull request #823 from permissionlesstech/ui/geohash-globe-picker
feat: animated 3D globe geohash picker with borders and cities
2026-07-29 21:55:07 +02:00
callebtc
fe93be379a Remove generated Gradle daemon JVM config 2026-07-29 20:45:41 +02:00
callebtc
44f62a3c14
Merge pull request #776 from a1denvalu3/feat/cashu-chips-android
feat: add Cashu ecash chips and /pay command
2026-07-29 20:21:12 +02:00
callebtc
03de6f3519 fix: allow targeting polar geohashes
Relaxes the view-center clamp from ±80° to ±89°. Previously opening or
tapping a geohash above 80°N/S clamped the fly-in and syncSelection()
encoded the clamped center, silently returning a different cell than
the user picked. Verified with p2 (87°N) and p6 (85°S) cells: the view
now centers on the requested cell and selects it correctly.
2026-07-29 20:21:12 +02:00
callebtc
b073dc2160
Merge pull request #824 from permissionlesstech/codex/fix-peer-verification-status-badge
Fix peer verification status and private chat badge
2026-07-29 20:18:34 +02:00
callebtc
70185ae86f Refine private chat header actions 2026-07-29 19:40:21 +02:00
callebtc
79bf154ce3 feat: overlay country borders and cities on the globe picker
Adds public-domain Natural Earth vector overlays in the established
terminal style, bundled as compact assets (works fully off-grid):
- world_borders.geojson (56KB): admin-0 boundary lines, stroked as
  front-facing horizon-clipped runs in a muted theme color
- world_cities.geojson (99KB, 1251 populated places): zoom-tiered by
  scale rank - capitals as accent dots, other cities as muted dots;
  name labels in Geist Mono fade in from regional zoom levels to keep
  the whole-globe view uncluttered
2026-07-29 19:39:51 +02:00
callebtc
29f9eb0cbc
Merge pull request #821 from permissionlesstech/codex/fix-android-studio-strict-build
fix: restore Android Studio sync with strict Gradle security
2026-07-29 19:39:16 +02:00
callebtc
c7ced41bcb
Merge pull request #822 from permissionlesstech/uniform-lists-design
Unify people lists with conversation-row avatar design
2026-07-29 19:39:07 +02:00
callebtc
9f81a1e40d Fix peer verification status and badge 2026-07-29 19:32:28 +02:00
callebtc
9ca1413a1f feat: replace Leaflet WebView geohash picker with animated 3D globe
Reworks the geohash picker as a fully offline, native Compose globe:
- Orthographic 3D Earth rendered on a Canvas: starfield, atmosphere,
  shaded ocean, graticule and vector continents from bundled public-domain
  Natural Earth 110m data (world_land.geojson, 81KB)
- Geohash cells projected onto the sphere with theme-aware dark styling,
  Geist Mono labels, level + coverage readout and pulsing crosshair
- Gestures: drag to spin with inertial fling, pinch to zoom (precision
  follows zoom), tap to focus, double-tap zoom, cinematic fly-in intro,
  haptic tick on cell change
- Removes the WebView/Leaflet/CDN dependency; picker now works off-grid
  and matches the app theme in dark and light mode

Rendering notes: horizon-clipped polygon fills (front-run splitting with
limb arcs) and viewport clipping of all path geometry to avoid Skia
precision loss for coordinates beyond 32767px at high zoom.
2026-07-29 19:28:16 +02:00
callebtc
79e04ed3cc
Merge pull request #820 from permissionlesstech/codex/fix-wear-private-message-navigation
Improve Watch private-chat navigation and peer identity UI
2026-07-29 19:23:43 +02:00
callebtc
a306340119 Preserve Watch navigation across recreation 2026-07-29 19:12:13 +02:00
callebtc
4fdc9babbe feat: unify people lists with conversation-row avatar design
- Extract shared PeerAvatar (initial circle + lower-right transport badge)
  from the conversation row and use it in the mesh peer list and the
  geohash/Nostr people list
- Remove the favorite toggle button from the peer list; favorite state is
  now a small star badge on the avatar (filled = we favorited, outline =
  they favorited us), so favoriting only happens from the private chat
- Show the unread-count badge on peer rows, matching conversation rows
2026-07-29 19:11:06 +02:00
a1denvalu3
199f95fdbd Fix Cashu payment review issues 2026-07-29 19:09:05 +02:00
callebtc
3b0e569882 ci: use exact Temurin catalog version 2026-07-29 19:08:35 +02:00
a1denvalu3
6f4f6b988b Keep Cashu composer preview compact 2026-07-29 19:07:31 +02:00
a1denvalu3
adce27c0d1 Preview Cashu tokens in message composer 2026-07-29 19:07:12 +02:00
a1denvalu3
b9ca8ed3eb Add Cashu payment chips and pay command 2026-07-29 19:06:50 +02:00
callebtc
4f567ecd5f
Merge pull request #800 from a1denvalu3/issue-764-language-picker
Add in-app language picker
2026-07-29 19:03:01 +02:00
callebtc
44560b9792 Add Watch peer profiles and verification 2026-07-29 18:55:56 +02:00
callebtc
bf5bd8c417 fix: restore Android Studio sync with strict Gradle security 2026-07-29 18:15:50 +02:00
callebtc
d465f427a4 wear: fix private message navigation 2026-07-29 18:10:25 +02:00
Santosh Pradhan
1c3626e0a0
Merge pull request #1 from spradhan7656/chat-ui-issue
fix the ui issue in the chat screen
2026-07-29 20:56:34 +05:30
spradhan7656
31d822e7d6 fix the ui issue in the chat screen 2026-07-29 20:54:15 +05:30
spradhan7656
6288cd3cc1 fix the ui issue in the chat screen 2026-07-29 20:47:39 +05:30
callebtc
5b79da2db6
Merge pull request #816 from permissionlesstech/codex/fix-active-peer-notifications
Restore background peer availability alerts
2026-07-29 15:53:24 +02:00
callebtc
00ef72c45e fix: clear peer alerts on mesh shutdown 2026-07-29 15:49:33 +02:00
callebtc
e99d5ac4a0 Merge remote-tracking branch 'origin/main' into codex/fix-active-peer-notifications 2026-07-29 15:29:56 +02:00
callebtc
2807a16d1e fix: rate-limit peer availability alerts 2026-07-29 15:29:48 +02:00
callebtc
56f91a96b7
Merge pull request #817 from permissionlesstech/codex/android-ui-visual-review-skill 2026-07-29 15:21:58 +02:00
callebtc
95d6922218 feat: add Android UI visual review skill 2026-07-29 15:15:30 +02:00
callebtc
4fad876944 Merge main and resolve notification conflicts 2026-07-29 15:14:25 +02:00
callebtc
3410aaf5b9
Merge pull request #815 from permissionlesstech/codex/polish-persistent-conversations-v2
Polish persistent private conversations
2026-07-29 15:05:42 +02:00
callebtc
11511df8c3 style: remove emoji from peer alert title 2026-07-29 15:03:25 +02:00
callebtc
363f8c5aae fix: restore background peer availability alerts 2026-07-29 15:00:13 +02:00
callebtc
a21c0242a6 Fix conversation persistence review issues 2026-07-29 14:43:13 +02:00
callebtc
172d086c23 Fix live conversation identity state updates 2026-07-29 14:23:25 +02:00
callebtc
889c262edc
Merge pull request #802 from permissionlesstech/codex/mesh-lab-agent-skill
Add Mesh Lab agent skill
2026-07-29 13:55:55 +02:00
callebtc
c382c17a92 mesh-lab: fail closed when evidence dir is empty
A bare `test -n` does not abort in a shell without set -e, so a failed
mktemp would let `--out ""` resolve to the repository root and write
private evidence there. Guard with an explicit exit instead.
2026-07-29 13:54:50 +02:00
callebtc
a105d884cb Polish persistent private conversations 2026-07-29 13:51:55 +02:00
callebtc
9ed5cb26da
Merge pull request #798 from permissionlesstech/codex/reproducible-builds
Enable reproducible Android builds and releases
2026-07-29 13:47:45 +02:00
callebtc
01b59a7a0c
Merge pull request #809 from permissionlesstech/voice-recording-ux
Voice recording UX: slide-to-cancel, magnetic target, refined recording pill
2026-07-29 13:02:49 +02:00
callebtc
6f60b151d0
Merge pull request #810 from permissionlesstech/codex/wear-notification-stream-fix
Fix Wear OS DM notification delivery
2026-07-29 13:02:25 +02:00