869 Commits

Author SHA1 Message Date
heyaim
964cf14e97
Merge 605958b405047949d598384c8c6006316ab90840 into c127eb83ab94c069c32d37530d2faecd381cd2a8 2026-09-14 12:20:36 -05:00
GitHub Action
c127eb83ab Automated update of relay data - Sun Sep 13 06:20:34 UTC 2026 2026-09-13 06:20:34 +00:00
callebtc
945c9e025b
Merge pull request #866 from Chessing234/fix-dedup-total-checks-race
fix: synchronize totalChecks increment in NostrEventDeduplicator
2026-09-07 23:44:31 +03:00
callebtc
010789adde
Merge pull request #882: strengthen packet deduplication
Use full-payload packet IDs for duplicate detection and simplify the explanatory comment.
2026-09-07 23:33:41 +03:00
callebtc
9444acd33e
Merge pull request #869 from qutad/fix/nostr-ios-dm-lookback
fix(nostr): cap DM envelope backdating at 24 hours
2026-09-07 23:32:40 +03:00
callebtc
9e5a07b782
Merge pull request #907 from Chessing234/fix/relay-reconnect-recovery
fix(nostr): keep retrying relays instead of giving up on them forever
2026-09-07 23:31:15 +03:00
callebtc
fa1727de2f docs: simplify packet deduplication comment 2026-09-07 23:29:23 +03:00
callebtc
936a4cdf6d
Merge pull request #932 from permissionlesstech/codex/release-wear-0.1.3
Bump Wear OS version to 0.1.3
v2.0.2-wear.0.1.3
2026-09-07 15:08:23 +03:00
callebtc
0fce9faa1f Bump Wear OS version to 0.1.3 2026-09-07 14:55:50 +03:00
callebtc
f352a3e4bc
Merge pull request #931 from permissionlesstech/codex/wear-ui-shape-accessibility
Improve Wear round-screen layouts and chat scrolling
2026-09-07 14:43:41 +03:00
callebtc
eb9ce6555f Merge remote-tracking branch 'origin/main' into codex/wear-ui-shape-accessibility 2026-09-07 14:20:35 +03:00
callebtc
08974107dc Compact Wear chat headers and stabilize scroll controls 2026-09-07 14:20:35 +03:00
GitHub Action
9a399cc333 Automated update of relay data - Sun Sep 6 06:16:30 UTC 2026 2026-09-06 06:16:30 +00:00
callebtc
afad3c5513 Fix Wear layouts on small round displays 2026-09-05 19:42:43 +03:00
heyaim
605958b405 Match the persisted peer state on its fingerprint field
findAuthenticatedFingerprintByPeerID took the first stored record that
began with the peer ID. If that record's first field was not a
fingerprint, the search stopped there with nothing found. The lookup
now reads the fingerprint field of each record and takes the one that
is 64 hex characters starting with the peer ID, skipping any record
whose field is not a fingerprint. Records this app writes behave the
same as before.

One test puts a record whose first field is not a fingerprint ahead of
the real one and checks that the real one is still found.
2026-09-05 00:39:57 -05:00
heyaim
e1da7f8960 Ask every transport's registry before the archive guard drops a sender
The archive guard in the first commit checked only the Bluetooth peer
registry. The Wi-Fi Aware transport feeds the same archive from a
registry of its own. With Wi-Fi Aware on, a sender known only there was
never archived for sync, and with Bluetooth switched off nothing was.
Codex flagged this on the PR.

The holder now keeps one liveness probe per transport, registered the
way it already tracks gossip owners, and the shared manager's delegate
asks all of them. The probes live in the holder because the Bluetooth
service has no reference to the Wi-Fi service.

Three tests pin the holder, including a Wi-Fi-only sender's broadcast
being archived and served. The Wi-Fi Aware register and unregister
lines have no unit test, since that service has none.
2026-09-03 00:52:47 -05:00
heyaim
b9bf303d9a Verify replayed messages from peers that have left the mesh
A REQUEST_SYNC reply can carry a message from a peer that has left, on
LEAVE or after three minutes of silence. Normally the neighbor re-serves
that peer's announcement first, which restores the signing key. When the
key is not restored, the message arrives with no key on file and the
signature check rejects it. That happens in two cases. An iOS neighbor
that relaunched serves messages restored from disk, and that archive
holds no announcements. An Android neighbor that missed the LEAVE keeps
serving the peer for about three minutes while the receiving device
rejects the re-served announcement as a duplicate. iOS keeps a message
from a sender that has left when it has verified that sender before, by
falling back to its persisted identity. Android persists the signing key
for every peer that completed the authenticated peer-state exchange, and
the message path did not read it. This addresses the first bullet of
#622.

The signature check falls back to the persisted signing key when the
live registry has none, found by peer ID directly since a peer ID is the
prefix of its own fingerprint. The broadcast handler delivers a message
from a sender that has left under the cached nickname or the peer ID. A
message from a sender that has left is not archived, and nothing the
LEAVE purge removed re-enters the archive. Messages from present peers
and the receiving device's own broadcasts are archived as before. A live
key is always preferred, a sender with no key on file is rejected as
before, and a registry entry with an unverified nickname is dropped as
before. Receive-side only.

Seventeen tests across the security manager, the message handler, the
coordinator, the secure store and the sync archive.
2026-09-02 23:54:15 -05:00
callebtc
81ba775063
Merge pull request #923 from permissionlesstech/codex/bump-version-2.0.2
Bump Android version to 2.0.2
v2.0.2
2026-08-31 00:04:04 +03:00
callebtc
06cdb0f2f6 Bump Android version to 2.0.2 2026-08-30 23:40:15 +03:00
GitHub Action
1c33df7407 Automated update of relay data - Sun Aug 30 06:16:55 UTC 2026 2026-08-30 06:16:56 +00:00
Taksh
e50cf9c8cc chore: retrigger ci 2026-08-30 09:49:50 +05:30
Taksh
5800583cd2 chore: retrigger ci 2026-08-30 09:39:09 +05:30
Taksh
e65039fe76 chore: retrigger ci 2026-08-30 09:38:30 +05:30
callebtc
4f828b5643
Merge pull request #916 from permissionlesstech/codex/fix-wear-shape-and-font-scaling
Improve Wear layouts for round screens
2026-08-26 18:19:15 +02:00
callebtc
7cf5286bfb Fix slow Wear scroll intent detection 2026-08-26 17:28:17 +02:00
callebtc
a125da48aa Polish Wear shape-aware layout implementation 2026-08-26 16:46:13 +02:00
callebtc
3ed46222ba Fade Wear chat at screen contour 2026-08-26 11:56:00 +02:00
callebtc
898cfde066 Restore Wear chat edge fading 2026-08-26 11:39:16 +02:00
callebtc
33c1ebfc60
Merge pull request #909 from Chessing234/fix/panic-wipe-destroy-db-on-failure
fix: destroy conversation database files when panic wipe throws
2026-08-25 14:37:58 +02:00
Taksh
1a9f6befd4 fix: destroy conversation database files when panic wipe throws
If SQLite clearAll fails mid-panic, in-memory state was already cleared
but a process restart could reload encrypted history from disk (#699).
Fall back to deleting the database files before reporting failure.
2026-08-25 07:40:04 +05:30
callebtc
ed617f0f1b Fix Wear chat autoscroll and focal scaling 2026-08-24 21:13:07 +02:00
callebtc
34f94882f5 Restore Wear chat content space 2026-08-24 20:57:24 +02:00
callebtc
45915fab8f Tune Wear header boundary by screen shape 2026-08-24 20:15:17 +02:00
callebtc
f744038318 Preserve width for Wear Material cards 2026-08-24 20:08:44 +02:00
callebtc
4a1de47ed6 Cover transformed Wear header boundary 2026-08-24 20:04:46 +02:00
callebtc
5d66b69129 Clip Wear messages below the chat header 2026-08-24 20:01:46 +02:00
callebtc
7788328917 Keep Wear chat rows clear of controls 2026-08-24 19:58:03 +02:00
callebtc
2e41dabd07 Add round-screen responsive Wear insets 2026-08-24 19:54:20 +02:00
callebtc
5852fca9b5 Fix Wear content clipping on watch shapes 2026-08-24 19:38:26 +02:00
callebtc
eab894ce78
Merge pull request #743 from aharshit123456/fix/geohash-signature-verification-733
fix: verify Schnorr signatures on incoming geohash Nostr events
2026-08-24 19:17:25 +02:00
Taksh
6bdcd46b33 fix(nostr): keep retrying relays instead of giving up on them forever
A relay that fails is retried on an exponential backoff, then abandoned
for the lifetime of the process. Nothing brings it back: the relay layer
registers no connectivity callback, the periodic subscription validator
only repairs subscriptions on sockets that are already open (and returns
immediately when connectedRelayCount is 0, which is exactly the state
after an outage), and connect() runs once from NostrClient.initialize().
The remaining paths that reset reconnectAttempts are a manual retry, a
Tor state change, and a successful open.

Two ways a relay died permanently:

- Any error whose message mentioned DNS returned before scheduling
  anything at all. "Unable to resolve host" is what this device reports
  when it simply has no network, so a moment in a tunnel killed every
  relay at once, with no retry ever.
- Otherwise the schedule stopped at MAX_RECONNECT_ATTEMPTS. With
  INITIAL=1s and MULTIPLIER=2 that is nine waits totalling about eight
  and a half minutes, after which the relay was dead. MAX_BACKOFF_INTERVAL
  was unreachable: attempt 9 asks for 256s and attempt 10 gave up, so the
  five-minute ceiling the constant defines never applied to anything.

Let the backoff saturate at MAX_BACKOFF_INTERVAL and keep retrying there.
A name-resolution failure now backs off like any other error. Steady state
costs one connection attempt per relay per five minutes; the previous
behaviour cost the user every internet DM, delivery receipt and geohash
channel until they noticed and restarted the app.

The schedule moves into RelayReconnectPolicy so it is unit-testable
without OkHttp or a Context.
2026-08-24 21:32:36 +05:30
GitHub Action
d55754d824 Automated update of relay data - Sun Aug 23 06:09:25 UTC 2026 2026-08-23 06:09:25 +00:00
callebtc
09b481f1ef
Merge pull request #876 from qutad/feat/announce-capability-bits
feat: Add announce capability bit assignments
2026-08-17 21:05:02 +02:00
callebtc
db97c60af1 Merge remote-tracking branch 'origin/main' into feat/announce-capability-bits 2026-08-17 20:40:43 +02:00
callebtc
2318b51630
Merge pull request #897 from permissionlesstech/codex/fix-command-processor-test-brace
Fix CommandProcessor test syntax
2026-08-17 20:38:39 +02:00
callebtc
03d1da5423 Fix CommandProcessor test syntax 2026-08-17 20:13:19 +02:00
callebtc
646044cd81 Clarify capability authentication scope 2026-08-17 19:14:05 +02:00
callebtc
35ed4417f0
Merge pull request #841 from phuctoan123/codex-fix-geohash-join-channel-routing
Fix geohash join channel routing
2026-08-17 19:09:26 +02:00
callebtc
9167013ac4
Merge pull request #863 from areebahmeddd/fix/preserve-wire-payload
feat: preserve original bytes during re-encoding of packets with foreign encoders
2026-08-17 19:08:01 +02:00
GitHub Action
b028270cc4 Automated update of relay data - Sun Aug 16 06:08:32 UTC 2026 2026-08-16 06:08:32 +00:00