Updates

What's new in Knit

What changed in each release of Knit, and why any of it was worth doing.

Knit publishes its changelog alongside its source, and this page reads from that file. The versions, dates and change lists below come from the app itself; the paragraphs in between are ours.

In testing now

2.4.0-alpha.0

Voice notes, and optional Internet relays for when nobody is in radio range.

The next release is in open testing, which is why parts of this site describe things the version numbers below do not have yet.

Internet relays are opt-in continuity, not a service Knit runs. The Internet plane stays off until you add a relay yourself, and once it is on, a relay carries only conversations you already have, as sealed frames it cannot read. There are no accounts to make and nobody to look up. What a relay can see is that a conversation is active and the IP addresses connecting to it, which is why Knit explains all of that before you switch it on. Anyone can run one; the server is called knit-spool and it is AGPL.

  • Voice notes in direct messages and group chats, sealed the way image attachments are. They are not offered in the public Nearby room, which is plaintext by design and where Knit has no way to check audio before a stranger hears it.
  • Opt-in Internet relays park a sealed copy of a message when no chain of phones can reach the other end. They stay off until you add one, and the copies expire within 48 hours.
  • Add a contact from a link when you are too far apart to scan each other's code. A link proves less than a scan does, so compare safety numbers over a call if it matters who is on the other end.
  • Group delivery ticks now survive you being away, carried by the mesh and by your relays if you have turned them on.
  • A proper end to the Wi-Fi Aware retry loop that 2.3.1 only slowed down. On the phone that fix was written for, Knit could still be pushed into asking hundreds of times a second.
What is in the next release →
  1. 2.3.1#

    One fix, for phones that were being shut down seconds after Knit opened.

    Worth updating if Knit had started closing itself a minute after you opened it. Only some phones hit the bug, and the ones that did gave almost nothing away. Messages still went through, because Bluetooth was carrying the mesh the entire time, so the only symptom was the app disappearing.

    The cause was a Wi-Fi chip that reports Wi-Fi Aware as available and then declines to hand it over. Knit asked again every three seconds, forever, until Android decided the app was misbehaving and shut it down. This release slowed those retries down, which was not enough on the phone it was written for; the finished fix is in the build now testing.

    The one change in 2.3.1

    Fixed

    • Knit no longer disappears seconds after you open it on a phone whose Wi-Fi chip will not run Wi-Fi Aware. Some phones report Wi-Fi Aware as available and then refuse to hand it over while Wi-Fi is connected, and Knit kept asking every three seconds, forever — each attempt costing the system a little memory it never got back. Android eventually stopped the app for asking too often: within a minute of opening it, over and over, with nothing in the logs to explain why. Knit now slows those attempts down and gives up on a radio that keeps refusing, then picks it up again if Wi-Fi Aware becomes usable. Bluetooth carried the mesh the whole time, which is why messages still went through.

    Read 2.3.1 in full on What’s New →Tag and signed APK on GitHub

  2. 2.3.0#

    Forward secrecy for direct messages and group chats, encrypted delivery receipts and reactions, taking a photo without leaving the chat, and a crash report you can read before deciding to send it.

    Direct messages and group chats were already encrypted. What changed here is that Knit now forgets: conversations re-key as they run and the spent keys are deleted, so traffic somebody recorded off the air last month cannot be opened with a phone seized this month.

    Keys rotate per block of messages rather than per message, and a chat with a peer on an older build keeps using the previous static-key scheme, which has none of this, until both phones have updated. None of it protects a phone someone is holding, either. Messages sit encrypted at rest under a hardware-backed key, so reading them means unlocking the device.

    • Direct messages and group chats re-key as they run and drop the spent keys, so traffic recorded off the air cannot be decrypted later.
    • Delivery receipts and reactions travel sealed in direct messages and group chats, rather than readable by any phone relaying them. They stay in the clear in the public Nearby room, which is plaintext by design, and toward peers on older builds.
    • Long-press the attach button to take a photo without leaving the chat. Knit sends the shot without writing it to your gallery.
    • Message info says when a message actually reached you, beside the time its author sent it. The gap is how long the mesh took to carry it.
    All 11 changes in 2.3.0

    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.
    • You can take a photo without leaving the chat. Long-press the attach button — the round button beside an empty message field — and a viewfinder opens in place of the conversation. The shot is sent as an attachment without ever being written to your gallery or handed to another app.
    • Long-pressing a message offers "Message info": who sent it, when, whether it has been delivered and how it travelled, and the full list of who reacted with each emoji, which the reaction tally on the bubble does not show.
    • Message info also says when a message reached you, on your own phone's clock, beside the time its author says they sent it. The gap between the two is how long the mesh took to carry it — sometimes seconds, sometimes hours if it came the long way round through someone else's phone. A direct message you sent shows the moment it landed on theirs. Messages already on your phone have no arrival time and never will: Knit wasn't watching for it then, and would rather say nothing than guess.
    • Knit records its own crashes on the device. A Diagnostics row shows the report, with identifiers, file paths and contact names stripped out of it, and you decide what happens next — copy it, share it, or open a prefilled bug report. Nothing is uploaded, and there is no code in Knit that could upload it.

    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.

    Fixed

    • Saving a received photo to your gallery now saves the photo. Attachments in direct messages and group chats are stored encrypted, and the export wrote those encrypted bytes to Pictures/Knit under an image name — an unopenable file, reported as a success.
    • Editing your name, status or photo now reaches the other phone straight away. An edit made soon after first contact was re-sent under a label the mesh had already seen, so it was discarded on arrival and stayed invisible for up to twelve hours.

    Read 2.3.0 in full on What’s New →Tag and signed APK on GitHub

  3. 2.2.3#

    A themed launcher icon, and a launch screen that follows the system light/dark theme.

    Knit's launcher icon now ships a monochrome layer, so on Android 13 and newer it picks up your home screen's theme instead of sitting there in its own colours. Opening the app on a dark phone no longer flashes near-white at you first. Neither is a big change; both are the sort you see every day.

    All 2 changes in 2.2.3

    Added

    • The launcher icon supplies a monochrome layer, so on Android 13 and newer it takes part in themed-icon colour schemes instead of falling back to a generic shape.

    Fixed

    • Starting Knit on a dark-themed device no longer flashes a near-white screen before the app draws. The launch window and splash background now track the system theme, in lockstep with the in-app colours.

    Read 2.2.3 in full on What’s New →Tag and signed APK on GitHub

  4. 2.2.2#

    Fixes a crash in "Scan their code".

    A safety number only means something if you can actually scan one, and on some phones scanning closed the app. The scanner has been rebuilt on CameraX, so a frame it cannot decode is now a frame without a code in it rather than a crash. Declining the camera permission gets you an explanation instead of a blank screen, and showing your own code works either way.

    All 2 changes in 2.2.2

    Fixed

    • "Scan their code" no longer crashes when the camera opens. The scanner has been rebuilt on CameraX; the library it used before could crash the app on devices whose camera reports one frame size and delivers another, which is why it worked on some phones and not others. Decoding now treats any unexpected frame as a frame without a code in it.
    • Declining the camera permission, or running on a device with no camera, now shows an explanation instead of a blank screen. Showing your own code still works either way.

    Read 2.2.2 in full on What’s New →Tag and signed APK on GitHub

  5. 2.2.1Housekeeping

    The first release available on F-Droid. A build-only change with no code or feature differences from 2.2.0.

    Read 2.2.1 in full on What’s New →Tag and signed APK on GitHub

  6. 2.2.0#

    The first release published on F-Droid, and the first built reproducibly: F-Droid rebuilds Knit from source, byte-compares its result against ours, and ships ours.

    You do not have to take our word for what is inside a Knit build. F-Droid rebuilds it from source, byte-compares the result against the APK on our releases page, and ships ours only if the two match.

    It also means there is only one signed build. The copy on F-Droid, the one you download directly, and the one a friend hands you over the mesh are all the same file, so a phone that got Knit without an app store still takes updates normally.

    All 2 changes in 2.2.0

    Added

    • The Support Knit screen offers Liberapay alongside Ko-fi.

    Changed

    • Release builds are reproducible. F-Droid rebuilds this release from source and byte-compares it against the APK on Knit's GitHub Releases page, then distributes ours — so one signed APK serves F-Droid, a direct download, and Knit's own offline "share the app" feature alike, and a phone handed Knit over the mesh can still take updates normally.

    Read 2.2.0 in full on What’s New →Tag and signed APK on GitHub

Older releases

This page starts at 2.2.0, which is as far back as Knit’s changelog file goes. What’s New has indexed the releases before it, along with the pre-release builds this page leaves out.

Every Knit release on What’s New →Older tags on GitHub

Knit publishes these notes itself, as part of its source, at its changelog, in a format built to be read by machines as well as people. What’s New indexes it there, beside every other changelog it tracks. Subscribe to new releases with the Atom feed.

← Back to Knit

Stay connected, wherever you are

Knit is on Android. Grab it on Google Play or F-Droid, and support development on Ko-fi.

Requires Android 10+ — no Google Play services, no SIM, no account.