github permissionlesstech/bitchat v1.7.1

6 hours ago

bitchat 1.7.1 is a security and reliability release. Every change below was field-verified on devices before tagging.

Security

  • Noise sessions are bound to claimed peer identities, and leave messages must be signed (#1432). A peer can no longer complete a handshake claiming someone else's ID and receive DMs encrypted for them.
  • Private media is encrypted before BLE fragmentation (#1434) — DM photos and voice notes no longer cross the mesh as plaintext; relays never see the bytes.
  • Announce signing keys are TOFU-pinned against mesh identity spoofing (#1349). Relayed public messages from a claimed sender are rejected until a verified announce is seen — fail closed.
  • Identity keys are now device-bound (ThisDeviceOnly, never synchronized) (#1431). They cannot be extracted via backup or cloud sync — and consequently an identity no longer survives migrating to a new phone or deleting and reinstalling the app. Existing installs migrate automatically on first unlock; nothing to do on upgrade.
  • Panic wipe is deterministic and complete (#1431), and what a locked or seized device reveals is reduced across the board (#1484, #1552 — media now carries an explicit file-protection class, chosen so locked-device mesh receive keeps working).
  • Shared content requires review before import (#1430). Hostile-network resilience plus per-release source verifiability (#1486, #1488) — every tagged release ships a SOURCE-MANIFEST.txt; see docs/VERIFYING-A-BUILD.md.

Reliability

  • The DM pipeline survives the hard cases: atomic Noise reconnects, early-ciphertext preservation, durable delivery receipts, retry after key replacement, transactional media deletion, conversations kept canonical across transport aliases and alive across Bluetooth toggles (#1460#1468, #1462).
  • BLE transport re-architecture into a single engine domain with a deterministic multi-node simulation harness (#1498 series). Peer-ID rotation no longer leaves ghost identities — on either link of a dual-link pair (#1554) or across a reconnect after rotation (#1566).
  • A restore-path deadlock that could freeze the app on relaunch is fixed (#1425), and a courier-storm amplification with it.

New & fixed

  • Persian localization (فارسی) and an in-app language picker (#1443).
  • Nearby notes are tap-to-reveal — the location subscription is consent-gated (#1422).
  • Verified seal next to names you've verified (#1506); blocked people excluded from @-mention suggestions (#1543).
  • The composer keeps focus after sending with the return key (#1490); low-precision geohashes resolve at country level (#1044); people-sheet environment hardening (#1567).

What's Changed

New Contributors

Full Changelog: v1.7.0...v1.7.1

Don't miss a new bitchat release

NewReleases is sending notifications on new releases.