Knit 2.3.0-alpha.1 (pre-release)
- Direct messages between updated phones are now forward-secret, deriving key material from prekeys in profiles and re-keying as conversations progress
- Group chats implement forward secrecy where every member drives their own key chain and shares its current seed in encrypted direct messages
- Delivery receipts and reactions are now encrypted instead of traveling readable across the mesh
- Internet relays are now available as an optional feature for delivering messages when recipients are out of radio range
- Settings screen for relays allows listing, adding, removing, and monitoring relay connection status
- Group chats and photos can now travel over relays without revealing group membership or existence to the relay
- Profile changes to name, status, or photo now reach contacts met only across relays, previously limited to radio range
- Conversation display shows relay usage with a globe icon when the other phone answered over the internet and in connection headers
- Diagnostics section for Internet relays shows data sent and received, photo pieces moved, and relay error reports
- Chats with phones on older versions maintain backward compatibility using the previous encryption scheme
- Profile entry in the overflow menu is now called Settings to reflect additional non-profile settings like content filtering and relay control
- Relays can no longer flood the app's memory; Knit now limits relay data to only requested content and enforces stated size limits
From Knit
Forward secrecy for direct messages and group chats, encrypted delivery receipts and reactions, and optional Internet relays for when nobody is in radio range.
Added
- Direct messages between updated phones are now forward-secret. Each conversation derives its own key material from a prekey published in your profile, then re-keys as the conversation goes back and forth, and drops the old keys. Someone who records traffic today and gets hold of a phone later cannot read the earlier messages.
- Group chats gain the same property. Every member drives their own key chain and hands its current seed to the others inside encrypted direct messages. A group's info screen says whether the group is running the new scheme or still waiting on somebody to update.
- Delivery receipts and reactions are encrypted. Until now they crossed the mesh readable by any phone relaying them, so an onlooker could tell when a message reached you, and who reacted to which message with what. They now travel sealed and look like ordinary messages on the wire.
- Knit can now use Internet relays, which you turn on yourself. Knit remains a messenger that works with no internet and no account, but a message to somebody out of radio range used to wait for the two phones, or a chain of phones between them, to meet. With relays on, Knit parks a sealed copy on a relay server, which hands it over the next time the other phone connects. A one-time explanation spells out what a relay can see — your IP address, when you send, and roughly how much — and what it cannot: your messages or photos, who you are talking to, or who else is in a group.
- A Settings screen for relays lists the ones you use, adds and removes them, and reports each one as connected, still connecting, or why it refused. Knit ships with one relay already listed and unused; it stays inert until you turn the feature on, and removing it sticks.
- Group chats travel over relays as well as direct messages, without anyone learning from the relay that a group exists or who is in it.
- Photos travel over relays too, in sealed pieces. A photo waits while a phone that can carry it is still in radio range, so an ordinary in-person exchange never touches a relay. Where a relay cannot take it — no photo support, or the photo is larger than any relay in your list will hold — the message says "Nearby only" rather than reporting a failure: it still arrives over Wi-Fi or Bluetooth as it always did.
- Changes to your name, status, or photo now reach people you have only ever met across a relay. They previously spread by radio alone, so such a contact kept whatever it saw when you were last in range.
- A conversation says how it is being carried. A globe appears beside the double tick when the other phone answered over the internet, and beside a message that arrived that way; the connection header says when the radios are dark and a relay is carrying the conversation. The Nearby room is exempt by design — it is public and unencrypted, so it is never uploaded, and says so.
- Diagnostics gains an Internet relays section: what has been sent and received over them, photo pieces moved, photos left to the radios, and any errors a relay reported.
Changed
- Chats with a phone on an older version keep working, on the previous encryption scheme. A group falls back the same way while any one member has not updated, and moves over on its own once everyone has.
- The Profile entry in the overflow menu is now called Settings, since the screen also holds settings that are not about you, such as content filtering and the relay switch.
Fixed
- A relay you have configured can no longer flood the app's memory. Knit now holds only what it actually asked a relay for, ignores anything else the relay volunteers, and treats the relay's stated size limits as a claim to be capped rather than a fact. Relays were always untrusted with the contents of your messages; now they are untrusted with how much of your phone they can use.
Pre-release — a test build, not a shipping release. It is not on F-Droid, is not marked
Latest, and is not what F-Droid's Binaries: URL points at. Install it only if you mean to
test it.
knit-2.3.0-alpha.1.apk — sha256:792dfefec12bf3d807f04aa517c3f99c39a350d8dc9c778530d05474b5b07108
Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c) — the same key every off-Play Knit
build carries — so it installs straight over an existing F-Droid, GitHub or mesh-shared install
without an uninstall, and keeps your messages.
Going back to the current stable is not possible in place: Android refuses the versionCode downgrade, so reverting costs an uninstall and everything stored on the device with it. The next stable release will update over this build normally.
CI verified this APK is byte-identical, apart from the signature, to an independent unsigned rebuild produced inside F-Droid's own buildserver image — the same reproducibility gate stable releases pass.
mapping-2.3.0-alpha.1.txt.gz is the R8 deobfuscation map for symbolicating crash reports from this build.