Entire post here: https://github.com/torlando-tech/columba/blob/main/september-2026-update.md, split into multiple posts here due to character limits
An update on Columba Development
Hey everyone. It's been a while since I wrote to the community, and given some of the recent drama, I thought it would be good to communicate with you all.
Feels weird to need to point this out, but this post is entirely my own writing, no AI usage at all.
The near future for Columba
I have tagged a stable v2.2.5 release, just haven't actually hit the publish button yet. I don't think there's anything glaring in v2.2.5-beta, which is great, so as soon as I have time to do one final manual regression test on the new stuff added since v2.0.9, I'll either publish that release, or postpone til a v2.3.x. I tend to work a little ahead of even the pre-release, and espcially as I add new features, I tend to let them pile up a bit before releasing a new minor version. This also means that sometimes I notice bugs that are present in the current pre-release after I've already merged in new features, and have to decide between backporting the fix to something like a release/v2.2.x branch (branched from the tag for that release), or just barrel forwards. I've done both and frankly the latter is a lot less maintenance on my part, but it also means that users who want to stay on stable releases will have to wait longer on average in between updates.
I'll save listing the new features in v2.3.0 for an actual release announcement, but it's a mix of support for newly released RNS functionality, and emabarrasingly old feature requests from the community that I've finally had time to put attention towards (along with bug fixes and stability improvements). I'm still working through that backlog, but at least ther are roughly a dozen fewer open issues on github, and roughly half the open PRs. I'm also still working through getting more added to it, so it'll be a little bit still before it's available for pre-release.
There really aren't too many more features I really have planned for Columba; stability and efficiency are higher priorities for me. I'd like to get it published on the Google Play store, but I expect Google to have some issues with some of the features, and might have to remove some of them for the Google version if they flag anything. I expect the APK sharing feature, or checking GitHub for updates, to be flagged, since I'm pretty sure they only want you updating an app through their store. Anyway, while I've started that process, it's pretty tedious and boring, so I haven't made a ton of progress on it.
Work on iOS continues
While I do have a mostly functional iOS version of Columba that has been on a private TestFlight group for some time, the biggest gap is background operation. In its current state, Columba-iOS uses RNS via Beeware, but as expected when the app is backgrounded, it is soon (immediately? haven't measured) suspended. This means that if Columba is not open on your screen, and someone sends a message, you won't get it; you aren't connected to a reticulum network, you won't receive the packets, you won't send a delivery proof, and the sender will (hopefully, depending on their client) send it as propagation instead. This is less of an issue for messages that reach your phone via a BLE connection, for reasons I'll get into below. Depending on how often and how quickly you switch apps into and out of Columba, this suspension can get you blocked by the default fast flapping settings on a Backbone listener relatively easily, so it's really not ideal to ship it in this state.
There are a few ways Apple provides apps time to work in the background, but none of them perfectly fit Reticulum's use case. Here are the ones that I've incorporated so far:
- CBCentralManager With the UIBackgroundMode
bluetooth-central. This (is supposed to, at least) allow packets in from RNode or other reticulum devices using ble-reticulum (when your phone is the central side and the other is the peripheral side) to wake the app in the background and process it. I've had message notifications work this way while backgrounded but it hasn't been consistent. - CBPeripheralManager and UIBackgroundMode
bluetooth-peripheral. This is for the other side of the ble-reticulum connection (role is negotiated by MAC sorting). - BGProcessingTask and BGAppRefreshTask to periodically sync with your selected propagation node. But, from reading a bunch of posts of people trying to do various things with this, iOS doesn't guarantee a strict schedule for when these run, it may run at different times and intervals depending on whether your phone is plugged in or has been unlocked recently, and the longer you go (days, weeks) without opening the app, the less frequently iOS will schedule the task to run.
There are a few others that I mean to explore, such as location and voip (perhaps sharing your location to a peer in LXMF could keep it running in the background, or something could stay listening for incoming LXST link requests) but it definitely feels like workarounds and swimming upstream.
What this boils down to is that, if the above is all true (needs more time testing to be confident), receiving messages over the BLE radio (whether from a paired RNode or a ble-reticulum peer) work fine while backgrounded, but receiving over the wifi or cellular radios do not. This puts it in a similar position as meshtastic, where a companion device maintains connection to the network, and wakes the app via bluetooth with a drainable message queue.
But, this isn't really ideal, since at this stage (since there aren't any big RNode networks in the U.S., where iOS is more common) the most likely users will be relying on TCP connections to public backbones for communicating. Sure, you could set up a raspi in transport mode with reticulum-ble and a TCP connection at home, but when you leave the house you lose TCP connectivity (while backgrounded, by way of the transport node in the raspi). You could run microReticulum_firmware on an ESP32 based device, pair it to your phone like an RNode, configure it with a TCP connection, but then when you leave the home wifi it again loses TCP connection. You could even use your iPhone's hotspot to provide wifi to said ESP32 (or even raspi) and get around it that way, but this starts to be a lot of hoops to jump through (and huge battery drain, I've been told).