• v0.5.0 1962e4cd6a

    Reed v0.5.0
    Some checks failed
    android / android (push) Successful in 30m30s
    assurance / proofs (push) Successful in 8m45s
    assurance / ct-bench (push) Successful in 2m34s
    assurance / voice-opus-crosscheck (push) Successful in 5m13s
    assurance / wasm-surface (push) Successful in 3m45s
    assurance / fuzz (push) Successful in 1h34m10s
    assurance / miri (push) Has been skipped
    assurance / kani (push) Has been skipped
    rust / rust (push) Successful in 45m34s
    site / site (push) Failing after 30m3s
    web / web (push) Successful in 43m17s
    release / toolchain-image (push) Has been skipped
    release / desktop-linux (linux/amd64, x86_64-unknown-linux-gnu) (push) Has been skipped
    release / desktop-linux (linux/arm64, aarch64-unknown-linux-gnu) (push) Has been skipped
    assurance / fuzz-mac (push) Has been cancelled
    reproducible / double-build (push) Failing after 35m43s
    reproducible / desktop-linux (push) Has been skipped
    release / build (push) Has been skipped
    devices / devices (push) Has been cancelled
    release / desktop-macos (push) Has been cancelled
    Stable

    admin_ekaii released this 2026-10-21 22:49:47 +00:00 | 9 commits to main since this release

    No known key found for this signature in database

    Reed 0.5.0. The apps join the relay network that 0.5.0-rc1 brought to the relays: each app ships the three directory authorities' keys and a recent signed list of relays checked against them, so a fresh install knows where to go before it has reached any relay. reed-public, the original relay, stays the home of every account, so contacts still on 0.4 keep reaching you. Messages stay end-to-end encrypted: no relay and no authority can read them. Also in this release: a voice note goes only to the conversation you recorded it in (web and desktop), the desktop app does what the web app does (Start without a passphrase, voice notes and photos, the Requests screen), and a security update of rustls-webpki to 0.103.16 and webpki-roots to 1.0.10 (RUSTSEC-2026-0382, RUSTSEC-2026-0381). CHANGELOG.md in the tag has the full list. The hosted web app at app.reed.ekaii.fr runs this release.

    Included

    • reed-v0.5.0-universal.apk: the signed universal Android APK (reed-v0.5.0-universal-unsigned.apk is the unsigned build it was signed from)
    • reed-v0.5.0-linux-x86_64.AppImage and reed-v0.5.0-linux-x86_64.deb
    • reed-relay and reed-cli static musl binaries for x86_64 and aarch64 Linux, with their cargo audit reports (audit-*.txt, no advisory found)
    • SBOMs in CycloneDX format (*.cdx.json)
    • reed-v0.5.0-vendored.tar.zst (vendored sources) and reed-v0.5.0-web-dist.tar.zst (web client build)
    • webcat-manifest.json and webcat-bundle.json (the WEBCAT manifest, logged to Sigsum, and its bundle)
    • the bootstrap pair reed-v0.5.0-bootstrap-authorities.json and reed-v0.5.0-bootstrap-consensus.bin (the signed consensus of 2026-10-21 15:00 UTC, 3 of 3 signatures, listing reed-public), with reed-v0.5.0-bootstrap-vectors.json
    • release.json, signing-cert-sha256.txt, reproduce-desktop-x86_64-unknown-linux-gnu.txt, SHA256SUMS and SHA256SUMS.sigstore.json

    Not in this release

    • No macOS DMG.
    • No aarch64 Linux packages (no aarch64 AppImage or .deb). The relay and CLI binaries are available for aarch64.

    Verify

    1. Check the signature on SHA256SUMS with the cosign public key from the tag (tools/release/keys/reed-release-cosign.pub):

      cosign verify-blob --key reed-release-cosign.pub --bundle SHA256SUMS.sigstore.json SHA256SUMS
      
    2. Check the downloaded files against it:

      sha256sum -c SHA256SUMS
      

      SHA256SUMS lists the SBOMs as sbom/<name>: put the downloaded .cdx.json files in an sbom/ folder first, or add --ignore-missing to check only what you downloaded.

    3. Android: the APK signer certificate SHA-256 must be 52c1d0ef5f1ca2ab8baa3c21fbf14240b9088d2a3e734b05b79e86b5f5ed5d2c (apksigner verify --print-certs reed-v0.5.0-universal.apk), the same as every earlier release, so it installs over the previous version and keeps your data. It is also in signing-cert-sha256.txt.

    4. The tag is signed: git -c gpg.ssh.allowedSignersFile=tools/release/keys/allowed_signers verify-tag v0.5.0.

    Upgrading from the 0.5.0-rc1 Linux .deb

    dpkg reads the hyphen in 0.5.0-rc1 as a Debian revision, so it sorts above 0.5.0 and apt treats this release as a downgrade. Use sudo apt install --allow-downgrades ./reed-v0.5.0-linux-x86_64.deb or sudo dpkg -i ./reed-v0.5.0-linux-x86_64.deb.

    Relay image: forgejo.ekaii.fr/exo/reed-relay@sha256:ad21da3b88e494985e5660bda61c22a033b620a31a074579698fbc9fee76b18d, cosign-signed with the release key (verify: cosign verify --key reed-release-cosign.pub forgejo.ekaii.fr/exo/reed-relay@sha256:ad21da3b88e494985e5660bda61c22a033b620a31a074579698fbc9fee76b18d). It runs on the three directory authorities and on reed-public since 2026-10-22.

    Reproducibility: the Mac did not reproduce this release. The build host built every artefact twice, from two copies at two paths, and the two builds were identical (the APK, the web dist and the core files: 28 of 28; the x86_64 AppImage and .deb by content). As the independent check, F-Droid's own build environment (the fdroidserver buildserver-trixie image running fdroiddata's CI steps) rebuilt the APK from the tag on 2026-10-22 at 01:59 UTC, and the result equals the published reed-v0.5.0-universal.apk apart from the signature (apksigcopier compare). That rebuild ran on the same build host, but with a different toolchain and environment. The F-Droid recipe in the tag lists one scandelete path that the v0.5.0 tree no longer needs (fdroidserver refuses it); the rebuild used the recipe with that one line removed, as main now has it.

    Downloads