Columba 2.2.6
What's new in v2.2.x
This stable release includes the following new features since v2.0.9:
- voice call history screen
- voice message attachments, interopable with sideband and meshchatx
- displays LXMF resource transfer progress in message bubbles
- export columba's shared reticulum instance config
- in-app theme override (set dark mode even if your system is light or doesn't expose system level theme)
- RNode battery level displayed on interface card and persistent notification
- nomadnet truecolor support and newlines in form fields
- experimental pyxis flasher
- renders incoming markdown messages as markdown (no support for sending markdown LXMF messages yet)
Plus tons of bug fixes, especially around BLE RNode handling, reconnecting and recovering from disconnects. Also several performance and stability improvements.
I've removed the kotlin backend from this release, as it is not stable.
Installation
Download the APK matching your device's CPU architecture.
| APK | Architecture | Devices |
|---|---|---|
columba-2.2.6-official-rns-py-armeabi-v7a.apk
| armeabi-v7a | Older 32-bit ARM phones & tablets |
columba-2.2.6-official-rns-py-arm64-v8a.apk
| arm64-v8a | Most modern Android phones & tablets |
columba-2.2.6-official-rns-py-x86_64.apk
| x86_64 | Chromebooks, emulators, some tablets |
columba-2.2.6-official-rns-py-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). 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:
203f45f3b7f60552bac2238f54f7334320cf42994346bf9d098a65c8a8912250 columba-2.2.6-official-rns-py-arm64-v8a-no-sentry.apk
bc1568c8f214d19a382525fb420965ffbbe7444988adc0f871538f3d295c03b5 columba-2.2.6-official-rns-py-arm64-v8a.apk
65b840bbc0249a41070632393f83acf61e883bd0940ee8d0613e01842bec36c2 columba-2.2.6-official-rns-py-armeabi-v7a-no-sentry.apk
fbe07b69d037e33e3f376a447751fb9ea4ae448d43a8beab28790ecc182b0d57 columba-2.2.6-official-rns-py-armeabi-v7a.apk
e8508da2f26cb566f8fea88d25085c14a9cb3f130b6f34695e2b47872fed2b62 columba-2.2.6-official-rns-py-universal-no-sentry.apk
433ef69eba0838b582e60ba8cada40bb1c0584440c4fa8f51ed5985e4ead3593 columba-2.2.6-official-rns-py-universal.apk
cb9763d04d47cdc0cfda040ebaa55a2562990384f950d917b36e94b216186488 columba-2.2.6-official-rns-py-x86_64-no-sentry.apk
18001f7f78b326547b384ffc53001b9d25195ad96da48ec555a3c52860a9558e columba-2.2.6-official-rns-py-x86_64.apk
What's Changed
- chore(rns): bump Python fork to 1.3.8 by @torlando-tech in #1024
- fix(ble): stabilize Android-iOS peer links by @torlando-tech in #1025
- ci: bump actions/cache from 5 to 6 by @dependabot[bot] in #1017
- ci: bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #1001
- feat(android): add safe Pyxis USB firmware updater by @torlando-tech in #1028
- deps: bump reticulum-kt v0.0.22 + LXMF-kt v0.0.14 — land columba#1004 path-request fix by @torlando-tech in #1008
- ci: bump actions/checkout from 6 to 7 by @dependabot[bot] in #1009
- ci: bump actions/setup-python from 6 to 7 by @dependabot[bot] in #1034
- ci: bump reactivecircus/android-emulator-runner from 2.37.0 to 2.38.0 by @dependabot[bot] in #1035
- fix: default new AutoInterface to Wi-Fi only by @torlando-tech in #1036
- fix: classify active default-network transport by @torlando-tech in #1037
- fix(settings): handle unavailable external links (COLUMBA-AV) by @torlando-tech in #1038
- fix(android): integrate notification conversation UX by @torlando-tech in #1039
- Harden native stamp cancellation and runtime pins by @torlando-tech in #1044
- Allow newlines in NomadNet form fields by @torlando-tech in #1046
- Persist verified peer activity for last-seen status by @torlando-tech in #1047
- fix(android): enforce predictable navigation back stacks by @torlando-tech in #1048
- Fix jumpy contacts across interface path changes by @torlando-tech in #1049
- feat(android): export shared instance access config by @torlando-tech in #1050
- fix(android): persist LXMF peer names below IPC by @torlando-tech in #1052
- fix(android): restore interface traffic stats and chart by @torlando-tech in #1053
- chore(deps): bump LXST-kt to v0.0.5 by @torlando-tech in #1065
- Render inbound LXMF Markdown messages by @torlando-tech in #1064
- ci: bump gradle/actions from 6 to 6.2.0 by @dependabot[bot] in #1068
- deps: update LXST-kt to v0.0.7 by @torlando-tech in #1069
- fix(map): gate interface polling by resumed map owners by @sentry[bot] in #1067
- fix: render NomadNet six-digit true colors by @torlando-tech in #1071
- fix: harden restored identity recovery by @torlando-tech in #1070
- feat: show LXMF resource transfer progress by @torlando-tech in #1072
- Add interoperable LXMF voice messages by @torlando-tech in #1075
- fix: respect propagated default delivery method for short messages (closes #1073) by @darky in #1076
- ci: bump gradle/actions from 6.2.0 to 6.3.0 by @dependabot[bot] in #1082
- Voice call history (Python-LXST-bounded rebuild) by @torlando-tech in #1081
- ci: build signed .aab for Play Console on tagged releases by @torlando-tech in #1084
- Fix RNode reconnect lifecycle by @torlando-tech in #1085
- Fix conversation notification dismissal on resume by @torlando-tech in #1086
- feat(settings): add in-app theme mode override (System/Light/Dark) by @darky in #1077
- fix: prevent replayed announces from refreshing Last seen by @torlando-tech in #1090
- Dismiss completed relay transfer progress by @torlando-tech in #1091
- Fix truthful outgoing Resource progress by @torlando-tech in #1092
- Refresh RNode status after reconnect by @torlando-tech in #1095
- Fix stale conversation timestamps by @torlando-tech in #1096
- perf(test): reduce unit-test JVM churn by @torlando-tech in #1097
- feat(audio): add interoperable voice message quality profiles by @torlando-tech in #1098
- fix(rnode): recover stale Android BLE bonds by @torlando-tech in #1100
- fix(rnode): recover cleanly after Bluetooth adapter cycle by @torlando-tech in #1101
- RNode battery level in notification and Interface Stats by @torlando-tech in #1103
- feat(android): show RNode battery on interface cards by @torlando-tech in #1105
- Persist truthful propagation delivery lifecycle by @torlando-tech in #1104
- fix(navigation): no-op navigateToIncomingCall before the NavHost graph is set (COLUMBA-8Y) by @torlando-tech in #1111
- fix(ui): keep the long-message reaction overlay on screen by @torlando-tech in #1109
- fix(rns-backend-py): wire incoming message size limit to LXMF delivery gate (#1106) by @torlando-tech in #1115
- fix(android): track multi-segment Resource progress and clear bar on terminal status by @torlando-tech in #1116
- ci: bump actions/setup-java from 5 to 6 by @dependabot[bot] in #1117
- Present incoming calls while backgrounded (issue #1079, replaces #1118) by @torlando-tech in #1119
- fix(python-backend): carry current display name in re-announces by @torlando-tech in #1159
New Contributors
Full Changelog: v2.0.9...v2.2.6