QRStream v1.0.0
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 | bashOr 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
- README · Architecture · Threat model · Performance
- Found a bug or have an idea? Open an issue.
QRStream is licensed under the MIT License.