Skip to content

Releases: BlackPool25/QRStream

QRStream v1.0.1

Choose a tag to compare

@github-actions github-actions released this 03 Aug 12:23
60fa164

What's Changed

Other Changes

  • feat(send): re-flow the QR grid to fit the viewport by @BlackPool25 in #7
  • fix(receive): keep 'Scan another' reachable on short screens by @BlackPool25 in #8
  • fix(receive): keep a completed transfer on screen across rotation and tab switches by @BlackPool25 in #9
  • fix(send): scale QR tiles continuously to fill the stage, keep the chosen layout by @BlackPool25 in #10
  • fix(send): pack the QR block in the center of the stage by @BlackPool25 in #11
  • release: 1.0.1 by @BlackPool25 in #12
  • fix: keep Linux fullscreen stable and preserve destination state on rotation by @BlackPool25 in #13
  • release: re-issue 1.0.1 with the Linux fullscreen + rotation fixes by @BlackPool25 in #14
  • build(android): sign release APKs with a stable keystore from secrets by @BlackPool25 in #15
  • ci(release): fix the Linux Rust codec step's working directory by @BlackPool25 in #16

New Contributors

Full Changelog: v1.0.0...v1.0.1

QRStream v1.0.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 09:55

QRStream v1.0.0 — first public release

Move files between devices as a continuous stream of QR codes — no network, no
pairing, no server
. One device broadcasts the file as a cycling grid of QR
codes; the other points its camera at the screen and the file reassembles
itself with a RaptorQ fountain codec, SHA-256 verified, fully offline. Bytes
never leave the room.

What's in this release

  • Flutter app (Linux · Android · Windows) — the flagship. Native UI with a
    brown Material 3 theme and Fraunces display type, real fullscreen, automatic
    screen-awake wake lock, native ZXing-C++ decoding (ML Kit fallback), and a
    post-transfer preview: images render inline, everything else shows name ·
    type · saved location.
  • PWA (any modern browser) — the zero-install web demo, wire-compatible
    with the Flutter app.
  • Rust core — RaptorQ fountain codec + ZXing-C++ FFI via
    flutter_rust_bridge 2.12.0.

Features

  • Zero network — the transfer path never touches a socket; both devices
    can be in airplane mode after first load.
  • No pairing, no handshake — point a camera at the screen; a receiver can
    join mid-broadcast.
  • No data loss — per-frame CRC-32C, RaptorQ erasure repair, and a whole-file
    SHA-256 gate before anything is offered for saving.
  • Tunable throughput — display fps (12–30), bytes per tile (1/2/2.5 KB),
    and tile layout (1×1 → 3×3, incl. 1×2/2×1 lanes), with a live speed/ETA
    estimate. Layout glyphs show the real tile arrangement.
  • Everything on device — the PWA works fully offline after first load too.

Install

Linux (recommended, one line):

curl -fsSL https://raw.githubusercontent.com/BlackPool25/QRStream/main/install.sh | bash

Or sudo dnf install ./qrstream-1.0.0-1.x86_64.rpm (Fedora/RHEL).

Android: sideload app-release.apk.

Windows: unzip qrstream-windows-x64.zip and run qr_data_transfer.exe
(send; receive needs the Android camera path).

No install needed at all? The PWA runs in any modern browser — Chrome/Edge can
install it as an app.

Honest expectations

This is a QR code stream — it is slow on purpose. Measured (Playwright via a
virtual camera): 1 MiB ≈ 23 s (~46 KB/s), 512 KiB ≈ 12 s (~44 KB/s), 256 KiB
compressible ≈ 4.7 s (~56 KB/s). Files up to a few MB transfer in a couple of
minutes; the wire format caps a single transfer at 16 MiB. See
docs/PERF.md
for the full envelope.

Artifacts

File What it is
app-release.apk Android arm64 (send + receive)
qrstream-linux-x64.tar.gz Portable Linux bundle (send)
qrstream-1.0.0-1.x86_64.rpm Fedora/RHEL package
qrstream-windows-x64.zip Windows build (send)
SHA256SUMS Checksums for all of the above

Docs & community

QRStream is licensed under the MIT License.