Skip to content

v2.3.2-beta

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Nov 02:06
· 34 commits to main since this release
e631f15

Columba 2.3.2-beta

Installation

Pick a backend, then download the APK matching your device's CPU architecture.

  • Python backend, RECOMMENDED — ships Mark Qvist's official python reference implementations of Reticulum and LXMF via Chaquopy.
  • Kotlin backend — ships Torlando's EXPERIMENTAL, AI-GENERATED native reticulum-kt / lxmf-kt / lxst-kt stack.

The python version is highly recommended. The kotlin version is a work in progress, and is not yet verified to be completely safe.
The kotlin version may yield better battery life depending on your device, and comes in a smaller apk due to not requiring a python runtime.

Python backend (official-rns-py)

APK Architecture Devices
columba-2.3.2-beta-official-rns-py-armeabi-v7a.apk armeabi-v7a Older 32-bit ARM phones & tablets
columba-2.3.2-beta-official-rns-py-arm64-v8a.apk arm64-v8a Most modern Android phones & tablets
columba-2.3.2-beta-official-rns-py-x86_64.apk x86_64 Chromebooks, emulators, some tablets
columba-2.3.2-beta-official-rns-py-universal.apk All Universal fallback (larger download)

Kotlin backend (EXPERIMENTAL-reticulum-kt)

APK Architecture Devices
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk armeabi-v7a Older 32-bit ARM phones & tablets
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk arm64-v8a Most modern Android phones & tablets
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk x86_64 Chromebooks, emulators, some tablets
columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal.apk All Universal fallback (larger download)

Telemetry variants:
Each APK above also has a -no-sentry variant without crash reporting for maximum privacy — append -no-sentry to any download link above (e.g. the most common builds: Python arm64-v8a no-sentry · Kotlin arm64-v8a no-sentry). Sentry collects stack traces when Columba encounters errors
and provides helpful information to the developer to improve Columba, but is hosted at sentry.io, and is thus not the maximum privacy option.

Not sure which to pick? Most Android phones use arm64-v8a. If unsure, use the universal APK.

Verification

See SECURITY.md for verification instructions.

Signing Certificate Fingerprints:

SHA-256: 02:2B:12:20:48:63:A3:1F:BF:07:5B:C9:F9:34:1E:33:52:78:80:2E:80:C9:27:A4:75:46:E4:7E:2F:4A:0C:5F
SHA-1:   0A:6B:AE:58:4E:D7:B5:D0:35:8B:3C:7B:65:11:D6:3A:81:21:0D:CE

SHA256 Checksums:

56cd1727765bac514ed39e0778927f98b60d3993a27daa74a4cc6012145bdd80  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a-no-sentry.apk
85e00de504838403df03921f5c3d04f5a8319343e3a525af767284d4a7c7647f  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk
2f94cce0c7eac90264b9c4880cd16f349662edfefac5bf407fffce0208fcfb67  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a-no-sentry.apk
5c7585a0dc76bdcac32787e5e5b5eb1d0cbaf00aa38dd9e1a3d6115e770ba876  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk
2b05d88eb66958298571f1f530f139184bae18f7e16fac13adaa15cca0d5e067  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal-no-sentry.apk
7b4873898d1ad14f5466c8fe5073e933fc303f66604cb9302eb90fe2d291ee2e  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-universal.apk
825b9339896e7d48b152ba8ae3864bbfd8ae0e9899f3d7bfab15d1fe25d076c2  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64-no-sentry.apk
03627ed5fc73e93c8aeb38d1244e0a4ad9f838cb1d8d6f64e8a44849f811b8fe  columba-2.3.2-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk
0f7d64709f82746b3b5cceb1d704eb0b9a2ad85698943a3b41c670983acb26e6  columba-2.3.2-beta-official-rns-py-arm64-v8a-no-sentry.apk
35775fb3f4ca7aefe4f8f7755978d3ef6af28d08641b422b124202a482091154  columba-2.3.2-beta-official-rns-py-arm64-v8a.apk
a17cea8c158154a58d51b027aa8cae8c90a9bc1f5c1d99ea353df4df928949cd  columba-2.3.2-beta-official-rns-py-armeabi-v7a-no-sentry.apk
84d31347690453e4a594132cd8b2697f9003abc8b901f2fd3e8cfa1383de0471  columba-2.3.2-beta-official-rns-py-armeabi-v7a.apk
de1f064b454e05879b215f95329fb82814efac4287ea4c62f9aa272a1b9eb60e  columba-2.3.2-beta-official-rns-py-universal-no-sentry.apk
16513738a218703754e1418a25eb002ea93df7ead97b2501a20b141d46de8f03  columba-2.3.2-beta-official-rns-py-universal.apk
80e190bc243344676ea7342beeb763718abac898df154acd6b39dd56f85749ab  columba-2.3.2-beta-official-rns-py-x86_64-no-sentry.apk
20843f9172505a293f5641996174e17136315dbb109f891fc58ab10a03011b99  columba-2.3.2-beta-official-rns-py-x86_64.apk

Reticulum / LXMF / LXST updates

This release picks up the following library updates:

reticulum-kt updated: v0.0.22 → v0.0.24

See torlando-tech/reticulum-kt@v0.0.22...v0.0.24

  • fix(local): drop redundant withContext(Dispatchers.IO) in readLoop (4ce120b)
  • fix(tcp): match Python reconnect cadence (37b6b8b)
  • fix(tcp): preserve rapid reconnect handoff (471c761)
  • fix(cli): forward TCP reconnect limit (924ed42)
  • fix(tcp): preserve reconnect requests during handoff (b2f7ecd)
  • fix(cli): validate TCP reconnect limit (3897747)
  • fix(resource): order start callback before transfer (cdff18f)
  • fix(resource): stop terminal watchdog restarts (afd646a)
  • fix(resource): atomically cancel watchdog (400397a)
  • fix(rns-android): route RoomIdentityStore write-through ops through submitWriteThrough (b66f9ab)
  • fix(rns-android): retry transient SQLite lock on durable identity/ratchet writes (c7fdf1a)
  • fix(rns-android): reconcile retry-exhausted durable writes on next success instead of dropping (2d11645)
  • fix(rns-android): scope durable-write reconciliation per executor, coalesce same-key latest-write-wins, and bound each flush turn (420a4c4)
  • fix(rns-android): scope durable-write reconciliation per store with an explicit dispose lifecycle, release it on service teardown (2220675)
  • fix: close four reticulum-kt security divergences from reference audit (256a74d)
  • fix: complete split in-memory resource transfers (F3.1 parity) (e4ac977)
  • fix: address F3.1 segment-handoff and metadata-budget edge cases (407a8ba)
  • fix(transport): drop registered interfaces when Reticulum stops (a4c48ee)
  • fix(link): stop reporting a link request as sent when it was not (b7cf00d)
  • fix(transport): count a throwing interface send as not-sent (8188f8d)
  • fix: only report reused_raw when the cached frame is actually injected (ecc9d34)
  • fix(local): register Transport before starting spawned-child read loop (87a1efb)
  • fix(transport): registerDestination filters to IN destinations only (Closes #85) (35aacbf)
  • Fix shared instance startup race: register interface before start() (fdcd450)
  • fix(resource): sender watchdog recovery actions + atomic failed callback (72a18f5)
  • fix(reticulum): deregister the client when a shared-instance start() fails (21b9641)
  • fix(interfaces): boundPort returns 0, not -1, for an unbound serverSocket (edcf0d9)
  • fix(resource): make the AWAITING_PROOF recovery actually work (python parity) (1e34123)
  • fix(transport): schedule the in-memory packet-cache sweep (python parity) (3b4cdb2)
  • feat(conformance-bridge): expose resource proof-cache lookup (8e6b2c0)
  • perf(conformance-bridge): single proof-cache lookup instead of a poll loop (7b2a059)
  • feat(conformance-bridge): observe whether the proof packet carries a link reference (087bf81)
  • fix(resource): bind the proof packet to the transfer's link (7c9891e)
  • fix(local): only track spawned children in clients after Transport registration (ba58747)
  • fix(local): coordinate handleNewClient registration with detach shutdown (6a5870c)
  • feat(rns-core): port wire protocol to RNS 1.5.5 parity (5d1ea28)
  • fix(link): gate resource request-adv on the receiving-side destination (724b673)
  • feat(transport): add INTERNAL interface mode (RNS 1.3.6+) (cf03a28)
  • fix(transport): hoist Gate 1 (announces_from_internal) before the mode switch (eca5f34)

What's Changed

  • rns-backend-py: bump ble-reticulum to #49 main head (ed164a8) by @torlando-tech in #1174
  • Hot-reload RNS interfaces on the Python backend via RNS 1.5.5 by @torlando-tech in #1175
  • chore: bump ble-reticulum pin to v0.2.3 release tag (63557ac) by @torlando-tech in #1179
  • ci: bump gradle/actions from 6.3.0 to 6.4.0 by @dependabot[bot] in #1180
  • ui(network-status): remove Reticulum Information card by @torlando-tech in #1187
  • fix(android-ble): prevent ANR by moving blocking Bluetooth calls off main thread by @sentry[bot] in #1186
  • fix(migration): stream export manifest into zip to bound memory (COLUMBA-DS) by @torlando-tech in #1189
  • Wire interface mode into reticulum-kt interfaces (Kotlin backend) by @torlando-tech in #1188
  • feat: preferred propagation nodes (COLUMBA-1146) by @torlando-tech in #1190
  • feat(calls): manual destination entry with recent peer chips by @torlando-tech in #1194
  • deps(deps): Bump androidx.datastore:datastore-preferences from 1.1.1 to 1.2.1 by @dependabot[bot] in #824
  • Fix two startup failures: Kotlin initialize race, Python AutoInterface port crash by @idan2025 in #1176
  • deps(deps): bump org.jlleitschuh.gradle.ktlint from 12.1.1 to 14.2.0 by @dependabot[bot] in #753
  • deps(toolchain): bump Kotlin to 2.4.21 with KSP 2.3.12 and Hilt 2.60.1 by @torlando-tech in #1199
  • fix(nomadnet): only send partial-declared form fields by @torlando-tech in #674
  • fix: run attachment field serialization on injectable dispatcher (fixes shard-3 flake) by @torlando-tech in #1205
  • feat: warn user on inbound LXMF messages with unverified signatures by @torlando-tech in #876
  • fix(ui): sample composer image preview to avoid Canvas draw crash by @torlando-tech in #1210
  • fix(data): replace Formatter-based hex conversion that OOM-crashed (COLUMBA-EE) by @torlando-tech in #1208
  • fix: received large images show 'not available' (array-format extraction corruption) by @torlando-tech in #1211
  • feat(telemetry): audit Sentry data and add safe memory diagnostics by @torlando-tech in #1213
  • deps(deps): bump the testing group with 2 updates by @dependabot[bot] in #1201

New Contributors

Full Changelog: v2.3.1-beta...v2.3.2-beta