github permissionlesstech/bitchat-android v2.0.3
Bitchat Android v2.0.3

5 hours ago

Bitchat Android 2.0.3

Signed phone and Wear OS builds from v2.0.3 (source commit dfc67dad41691128bc6e7425bd69f2f409cb5bbf). Canonical unsigned outputs were built independently twice and matched byte-for-byte before local signing.

Highlights

  • Smoother busy chats: reduce UI stalls during bursts of geohash presence and mesh activity, batch identity updates, and compose participant lists lazily.
  • Bounded resource use: cap packet-processing queues and pace sync responses to keep heavy traffic from creating an unlimited backlog.
  • More reliable connectivity: continue retrying Nostr relays after network and DNS failures, with refreshed relay data.
  • Messaging correctness and security: verify incoming geohash event signatures before duplicate detection; preserve original compressed packet bytes for cross-client signature verification and forwarding; improve duplicate detection and geohash channel routing.
  • Safer panic wipe: remove the private-conversation database files if normal conversation erasure fails.
  • Wear OS polish since 0.1.1: shape-aware layouts for small round displays and larger fonts, compact fading chat headers, steadier scroll controls and autoscroll, refreshed icons, and an ongoing activity for returning to the mesh session.

History retention

Public chat and channel timelines now retain the latest 1,000 messages each, with up to 20 recently active channel timelines in memory. Older public messages are not archived by this change. Private-conversation history keeps its existing persistent retention policy.

Versions

  • Phone: 2.0.3 (40), minimum API 26, target API 37.
  • Wear OS: 0.1.5 (1000000006), minimum API 33, target API 37.
  • Both use application ID com.bitchat.droid.

The Wear layout, icon, and ongoing-activity changes above are new relative to the previous GitHub release, but were already included in the separate Play Wear 0.1.4 release. Wear 0.1.5 additionally incorporates the shared mesh, sync, and identity fixes.

Verification and known limitations

Independent local and tagged CI builds matched. Exact-tag provenance, signatures, signing continuity against prior artifacts, bundle validation, payload comparisons, and release checksums passed. Unit and contract checks passed (860 tests passed, 3 skipped). A clean installation and an in-place upgrade from the signed 2.0.1 APK launched to onboarding on a disposable emulator.

Known issue: QR scanner initialization can crash in this release; the pending crash fixes are not included. Full physical-device/cross-client/endurance and Play-delivered install/upgrade testing have not been completed. Existing lint errors and unavailable changed-line coverage remain; these are not claimed as passes.

Downloads and signing

Only four signed APKs, the two signed Play-upload AABs, and three reproducibility metadata files are attached. No unsigned APK or AAB is published; BITCHAT_SHA256SUMS.unsigned contains their canonical hashes, not binaries.

  • bitchat-android-arm64.apk — modern Android phones.
  • bitchat-android-universal.apk — compatibility fallback.
  • bitchat-android-x86_64.apk — x86_64 devices and emulators.
  • bitchat-android-wear.apk — direct Wear OS installation.
  • bitchat-android-play-upload.aab — signed phone bundle for Google Play.
  • bitchat-android-wear-play-upload.aab — signed bundle for the dedicated Wear OS track.

Certificate SHA-256 fingerprints:

  • GitHub APK and existing Play upload certificate: 3b03fa66a5451321100792f5b55a7b4966d5c8dc10c6daa40aa95ea489531bca.
  • Google Play app-signing certificate: 5e651dd0c80d1f57f2617964955085e28949dd04addac7b53fe9d2f11e172aa2.

Google signs Play-delivered APKs with its separate app-signing key; those APKs are not expected to be byte-identical to GitHub APKs.

Reproducible-build verification

Use Git, Docker with sufficient memory, and the GitHub CLI:

git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
git checkout v2.0.3
tools/reproducible-builds/build-in-container.sh .reproducible-build/verify-v2.0.3
gh release download v2.0.3 --pattern 'BITCHAT_BUILDINFO.json' --pattern 'BITCHAT_SHA256SUMS*' --dir .reproducible-build/metadata-v2.0.3
gh attestation verify .reproducible-build/metadata-v2.0.3/BITCHAT_BUILDINFO.json --repo permissionlesstech/bitchat-android
gh attestation verify .reproducible-build/metadata-v2.0.3/BITCHAT_SHA256SUMS.unsigned --repo permissionlesstech/bitchat-android
cmp .reproducible-build/verify-v2.0.3/SHA256SUMS.unsigned .reproducible-build/metadata-v2.0.3/BITCHAT_SHA256SUMS.unsigned

To verify all downloaded release files without rebuilding:

gh release download v2.0.3 --repo permissionlesstech/bitchat-android --dir .reproducible-build/download-v2.0.3
(cd .reproducible-build/download-v2.0.3 && shasum -a 256 -c BITCHAT_SHA256SUMS)

Full changelog: v2.0.1...v2.0.3

Don't miss a new bitchat-android release

NewReleases is sending notifications on new releases.