Loop 1 — the recorder

Proving one thing: a chunk that reaches IndexedDB always reaches R2, no matter what you do to the browser. No rooms, no auth, no WebRTC yet.

Idle

Upload

0 uploaded · 0 pending · 0 retries · online

Progress reads from IndexedDB and server confirmations — never from an in-memory guess. It will not say complete until R2 has confirmed every chunk.

Break it on purpose

These are the tests that matter. Recording must survive all of them.

Also do these by hand: turn off wifi mid-record · force-quit the browser · on iPhone, lock the screen and switch apps.

Event log