github torlando-tech/columba v2.1.0-beta

pre-release3 hours ago

Columba 2.1.0-beta

New in 2.1.x:

  • Nomadet truecolor support (now rngit pages won't be the incorrect bright green background that's impossible to read anything on!)
  • Columba can now render markdown when receiving an LXMF message that specifies the markdown rendering mode in the special fields.
  • Updated the BLE p2p handshake for compatibility with iOS.
  • Updated RNS to 1.4.2 and LXMF to 1.1.0
  • Add a Pyxis firmware updater - does not yet do a full flash, will only update an existing pyxis installation. This was mostly just a development tool for me while traveling but figured I would release it
  • Lots of small LXST improvements, should have much improved latency on ULBW codec2 profile
  • Improved notification and navigation handling throughout the app. Should be fewer of the "I have to spam the back button" issues.
  • Allow newlines in nomadnet fields
  • The "last seen" indicator should be much more accurate now
  • Announce cards now show all interfaces a given destination has been heard on and should sort more stably (less flicker)
  • Shared reticulum instance RPC key, along with the rest of its config, can now be copied
  • Fixed the interface traffic stat and added a traffic over time graph

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.1.0-beta-official-rns-py-armeabi-v7a.apk armeabi-v7a Older 32-bit ARM phones & tablets
columba-2.1.0-beta-official-rns-py-arm64-v8a.apk arm64-v8a Most modern Android phones & tablets
columba-2.1.0-beta-official-rns-py-x86_64.apk x86_64 Chromebooks, emulators, some tablets
columba-2.1.0-beta-official-rns-py-universal.apk All Universal fallback (larger download)

Kotlin backend (EXPERIMENTAL-reticulum-kt)

APK Architecture Devices
columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk armeabi-v7a Older 32-bit ARM phones & tablets
columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk arm64-v8a Most modern Android phones & tablets
columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk x86_64 Chromebooks, emulators, some tablets
columba-2.1.0-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:

d2bfa0421923752454ed664861f3b90ccbbe2a024514a83dd349b637a19f3866  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a-no-sentry.apk
3ba07d4581ce968962e43df03e913fda3324804c4358e0e359094da737ca9cf9  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-arm64-v8a.apk
ad133eccb50ff72248ba27c75ef331c1e1139c63705a08c33f147646444e8997  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a-no-sentry.apk
abecf84a57facb13008bea39e6df1ae9523ec361e8bbd659a811ad60558f1c22  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-armeabi-v7a.apk
6d1fd8937b914e31edaf8c914f450067266c829fd94e86c992857dffe6082179  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-universal-no-sentry.apk
1d88e4d180ca25e2c457ede5f3f61349a69fb410650e1074e3050594d0fa8441  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-universal.apk
952372bbd840db8447239e8e359b7c8a934d6f78fbfe261119ff0a3efd12f578  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-x86_64-no-sentry.apk
0c23a2a0664599ad29226f3504082d4b0f742119a2f94b4b91289207d6601363  columba-2.1.0-beta-EXPERIMENTAL-reticulum-kt-x86_64.apk
fa12dab5a5c621b8572ec2d7f5c25b3319a63e7f93366a71480b4ffee5858f4d  columba-2.1.0-beta-official-rns-py-arm64-v8a-no-sentry.apk
69f0437b9953d222e760bd018912a1974d9220a3a7b5e1c50375936725981fa2  columba-2.1.0-beta-official-rns-py-arm64-v8a.apk
0f6fe6fc24a735d2e3401490811e422e42ded95c795864207c9dcc5c13d9db1b  columba-2.1.0-beta-official-rns-py-armeabi-v7a-no-sentry.apk
f9b214c4a66ef18d8fadce2659cf54ace3a5b47399b395c9c560b4c3cfa0592e  columba-2.1.0-beta-official-rns-py-armeabi-v7a.apk
f31925a047f70465fa6719c6ef91b9980989c609847319beaa32dd73ea481994  columba-2.1.0-beta-official-rns-py-universal-no-sentry.apk
2ac884af4102a60637ccd2bc817ba3fb6c8f98dfd986c9153ebfe4e3173c57de  columba-2.1.0-beta-official-rns-py-universal.apk
5d4c771589e7f888f9d2909ac09af27a60531571239a7afd73f832249a49011a  columba-2.1.0-beta-official-rns-py-x86_64-no-sentry.apk
84416a3c539d1b87b39ea64c90da5b8a684ded7bcb5abc28093d5eb57c1c00e3  columba-2.1.0-beta-official-rns-py-x86_64.apk

Reticulum / LXMF / LXST updates

This release picks up the following library updates:

reticulum-kt updated: v0.0.21v0.0.22

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

  • fix(transport): requestPath Python parity + honest path-table reads (columba#1004) (579d448)
  • fix(parity): close python-reference gaps surfaced by conformance Phase 1 (7c31574)
  • feat(bridge): Phase 1 conformance arms — crypto/constants/framing/identity (37e390b)
  • fix(parity): Packet/Destination python-reference gaps from conformance Phase 2a (c54e2a0)
  • feat(bridge): Phase 2a conformance arms — destination/announce/packet (LIVE) (d9ef16a)
  • fix(parity): discovery receive-path + storage gaps from conformance Phase 2b (0214527)
  • feat(bridge): Phase 2b conformance arms — discovery family (LIVE/ADVERSARIAL) (7f2ff0b)
  • fix(transport): genuine divergences surfaced by conformance Phase 3 behavioral harness (f7dc260)
  • feat(bridge): Phase 3 behavioral transport hooks (~23 LIVE commands) (a75a534)
  • feat(transport): port the blackhole-identity feature from RNS 1.3.1 (5c6d9b1)
  • feat(bridge): Phase 4 — 11 behavioral_blackhole_* commands (LIVE) (e6ae1a7)
  • fix(parity): GROUP decrypt returns null on auth failure, not an exception (b45240b)
  • feat(bridge): Phase 5a wire crypto/identity/group arms (16 commands) (545c082)
  • fix(parity): store own ratchet at announce so encrypt sets latest_ratchet_id (e57d501)
  • feat(bridge): Phase 5b destination-level ratchet arms (8 commands) (0bdd94c)
  • fix(parity): Link request timeout uses RESPONSE_MAX_GRACE_TIME*1.125, not +5s (5b205aa)
  • feat(bridge): Phase 5c batch 1 — request handlers + link request (8 commands) (287d134)
  • feat(bridge): Phase 5c batch 2 — link introspection (6 commands) (3572bae)
  • fix(parity): purge ephemeral key material on link close (forward secrecy) (a886a3f)
  • feat(bridge): Phase 5c batch 3 — link gates / key material / phy stats (4 cmds) (3b8017f)
  • feat(rns-core): test seams for link-request adversarial commands (45ce47f)
  • feat(bridge): Phase 5c batch 4a — link-request validation (4 commands) (b1a82f0)
  • feat(bridge): Phase 5c batch 4b — link-traffic adversarial injectors (3 cmds) (e251ac0)
  • feat(rns-core): Transport.outboundTapForTest capture seam (6f90990)
  • feat(bridge): Phase 5c batch 4c — keepalive/teardown emission capture (3 cmds) (697dac0)
  • fix(parity): mode-mismatched LRPROOF closes the link, not stays PENDING (68f53d7)
  • feat(bridge): Phase 5c batch 4d — crafted LRPROOF + LINKIDENTIFY injectors (2 cmds) (3755a9b)
  • feat(rns-core): test seams for LRPROOF-frame + link-proof injection (b7ac348)
  • feat(bridge): Phase 5c batch 4e — LRPROOF frame capture + link-proof injection (bf1760c)
  • feat(rns-core): Link.inboundTapForTest capture seam (5032288)
  • feat(bridge): Phase 5c batch 4f — capture_response_packet (1 cmd) (98b9f4d)
  • feat(bridge): add wire_start_pipe_peer + wire_start_pipe_tcp_relay (phase 5h) (d6d04f7)
  • feat(5g): instance/config posture wire commands + typed config threading (1eb3b9e)
  • fix(conformance): close kotlin divergence loop vs RNS 1.3.1 wire/behavioral suite (009427f)
  • fix(destination): persist empty ratchet store on enable when none exists (004b98c)
  • fix(conformance-bridge): accept identity_hash ratchet encrypt/decrypt contract (dd18e5e)

LXMF-kt updated: v0.0.13v0.0.14

See torlando-tech/LXMF-kt@v0.0.13...v0.0.14

  • feat(constants): add LXMF interaction field + dict-index constants (1b04d39)
  • fix(router): DIRECT delivery requests a path before linking (columba#1004) (3fe0d03)

LXST-kt updated: v0.0.4v0.0.7

See torlando-tech/LXST-kt@v0.0.4...v0.0.7

  • fix: derive playback prebuffer from frame duration (6084453)
  • fix: remove ULBW native prebuffer floor (5139706)
  • fix: preserve non-ULBW playback floors (c41010b)
  • fix: start Codec2 playback after one packet (0e453cb)
  • fix: align hybrid Oboe Codec2 prebuffer (bf17a16)
  • fix: refresh native playback on profile switch (700383c)
  • fix: safely refresh native prebuffer threshold (106c60c)
  • fix: recreate native playback on profile switch (6dcf6bb)
  • fix: preserve profile-switch media state (5d3ac64)
  • fix: serialize native playback lifecycle (24fa8ab)
  • fix: reject stale packets across profile changes (bdee2f0)
  • fix: capture packet generation at callback entry (cca6fd7)
  • fix: end call when playback replacement fails (ac84e49)

What's Changed

Full Changelog: v2.0.9...v2.1.0-beta

Don't miss a new columba release

NewReleases is sending notifications on new releases.