Skip to content

Releases: getknit/Knit

Knit 2.3.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 06:31
v2.3.0
720b87d

Forward secrecy for direct messages and group chats, encrypted receipts and reactions, and a camera
inside the chat.

Conversations between updated phones now re-key as they go and drop the old keys, so someone who records
traffic today and gets hold of a phone later cannot read the earlier messages. Group chats gain the same
property. A chat with a phone on an older version keeps working, and moves over once everyone updates.
Delivery receipts and reactions are now sealed too, instead of readable by any phone relaying them.

Long-press the attach button to take a photo without leaving the chat, or a message for "Message info" —
when it was delivered, and who reacted with what. Crashes are now recorded on the device, redacted, for
you to read and report yourself; nothing is uploaded.

Fixed: saving a received photo to your gallery wrote an unopenable file, and a profile edit made just
after first contact could stay invisible to the other phone for hours.


knit-2.3.0.apksha256:c28adcd16bf767a7a252949b8796a2d5e9d81189fcf0605e0d6c72c36b08f601

Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c), the key pinned in F-Droid's
AllowedAPKSigningKeys. CI verified this file is byte-identical, apart from the signature, to
an independent unsigned rebuild produced inside F-Droid's own buildserver image — so F-Droid's
rebuild-and-compare check resolves to exactly this APK.

mapping-2.3.0.txt.gz is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.3.0-alpha.1 (pre-release)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Aug 06:37
v2.3.0-alpha.1
4a37a7d

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.apksha256: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.

Knit 2.3.0-alpha.0 (pre-release)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Aug 23:11
v2.3.0-alpha.0
6407e7d

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.

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.0.apksha256:e99993a33b73fd06480828365ac5f82fe7142c00786394543295dd01f8a1279c

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.0.txt.gz is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.2.3

Choose a tag to compare

@github-actions github-actions released this 13 Aug 03:55
v2.2.3
40691d5

A themed launcher icon, and a launch screen that follows your device's light or dark theme.

Knit's icon now supplies a monochrome layer, so on Android 13 and newer it takes on the colours of your
themed-icon home screen instead of falling back to a generic shape.

Starting Knit on a dark-themed device no longer flashes a white screen before the app appears. The
launch screen now uses the same light or dark background as the rest of the app.


knit-2.2.3.apksha256:62136d7e1decc6719101a3803d1194f7df6ac5b90c21f92f2297c4a9201d91ec

Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c), the key pinned in F-Droid's
AllowedAPKSigningKeys. CI verified this file is byte-identical, apart from the signature, to
an independent unsigned rebuild produced inside F-Droid's own buildserver image — so F-Droid's
rebuild-and-compare check resolves to exactly this APK.

mapping-2.2.3.txt is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.2.2

Choose a tag to compare

@github-actions github-actions released this 31 Jul 22:22
v2.2.2
388c312

Fixes a crash in "Scan their code".

The QR scanner has been rebuilt on CameraX. The library it used before could crash the app the moment
the camera opened, on devices whose camera reports one frame size and delivers another — which is why it
worked on some phones and not others. Decoding now happens in code that treats any unexpected frame as a
frame without a code in it, so a scan can no longer take Knit down.

The scanner also handles the camera permission properly now: if you decline it, or the device has no
camera, you get an explanation instead of a blank screen. You can still show your own code either way.


knit-2.2.2.apksha256:4d9e2ccbfb00164fcf586bfbfd2f67e7fe8d8168aad0da69b9cbd48f810bf550

Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c), the key pinned in F-Droid's
AllowedAPKSigningKeys. CI verified this file is byte-identical, apart from the signature, to
an independent unsigned rebuild produced inside F-Droid's own buildserver image — so F-Droid's
rebuild-and-compare check resolves to exactly this APK.

mapping-2.2.2.txt is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.2.1

Choose a tag to compare

@github-actions github-actions released this 23 Jul 03:08
v2.2.1
4a3a69f

First release available on F-Droid.

This is a build-only change so that F-Droid can distribute Knit: the release APK no longer embeds
Android's "dependency metadata" signing block, which F-Droid does not permit and which was not
reproducible. There are no code or feature changes from 2.2.0, and the app behaves identically.


knit-2.2.1.apksha256:3d3aaa811aa46e483d514f01486c39aff4d48b4de21c6c19fa03fa854ca764a2

Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c), the key pinned in F-Droid's
AllowedAPKSigningKeys. CI verified this file is byte-identical, apart from the signature, to
an independent unsigned rebuild produced inside F-Droid's own buildserver image — so F-Droid's
rebuild-and-compare check resolves to exactly this APK.

mapping-2.2.1.txt is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.2.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 22:20
v2.2.0
c0d0c97

First release published on F-Droid.

Knit is now built reproducibly: F-Droid rebuilds this release from source and byte-compares it against
the APK on our GitHub Releases page, then ships ours. The same signed APK works from F-Droid, from a
direct download, and from Knit's own offline "share the app" feature — so a phone handed Knit over the
mesh can still take updates normally.

Otherwise this release is all plumbing: the only visible change is a Liberapay option alongside Ko-fi on
the Support Knit screen.


knit-2.2.0.apksha256:074baa953d4b20dd16ad7c3f934ee809472cf90629dae60a65bf0fd73d12dbc9

Signed with Knit's distribution key (certificate b18a283d11797c2a84a008c1fcb9e1b864e7b4c3b301408f7a4a80624b0e631c), the key pinned in F-Droid's
AllowedAPKSigningKeys. CI verified this file is byte-identical, apart from the signature, to
an independent unsigned rebuild produced inside F-Droid's own buildserver image — so F-Droid's
rebuild-and-compare check resolves to exactly this APK.

mapping-2.2.0.txt is the R8 deobfuscation map for symbolicating crash reports from this build.

Knit 2.1.0 — first public release

Choose a tag to compare

@zaventh zaventh released this 20 Jul 23:27
v2.1.0
9ee8499

Knit is an offline, serverless, end-to-end-encrypted mesh messenger for Android. Phones talk directly over Wi-Fi Aware (NAN) and Bluetooth LE — both radios at once — and relay for each other hop by hop. No internet, no accounts, no servers, no Google Play Services.

This is the first public open-source release (GPL-3.0-or-later).

Highlights

  • Dual-radio mesh relay — Wi-Fi Aware + Bluetooth LE simultaneously behind one MeshTransport seam, no GMS
  • Public "Nearby" broadcast room, 1:1 DMs, and multi-member group chats
  • End-to-end encryption for DMs & groups (Tink HPKE/X25519 + AES-256-GCM + Ed25519), TOFU key pinning, safety-number / QR verification
  • Store-and-forward delay-tolerant delivery with content-digest anti-entropy sync
  • Reactions, @-mentions, and content-addressed image attachments
  • On-device content moderation (toxicity text + NSFW image), fully offline
  • Offline app sharing (on-device split-APK merge & re-sign)
  • Encrypted at rest (SQLCipher)

Requirements

Android 10 (API 29)+ with Wi-Fi Aware and/or Bluetooth LE. A device with only one radio still meshes over it.

See the README for build/run instructions and the full feature list.