cap/video: route camera diags + swap → top-right TextButton + back resets state
cap.mjs:
- Replace the custom SwapButton (bottom-right) with a real
ui.TextButton anchored top-right. Matches the rest of the app's
button styling and keeps the bottom edge of the screen clear for
the hold-to-record gesture. Box hit-test for the touch handler now
goes through swapBtn.btn.box.contains(e).
video.mjs:
- Back button now properly slates the recording AND resets the local
playback / export / scrub state on its way out. Without this, the
in-flight tapeProgress bar, scrub strip, and post button kept
drawing over a fresh cap session after the user hit Back.
disk.mjs:
- Route camera:debug and camera:debug:frame messages from bios.mjs
directly to console.log inside the worker. The actAlerts queue
only carries string keys, so these typed payloads were getting
dropped before reaching cap.mjs's act() handler — which is why
no cam/init / cam/frame events were showing up in piece-runs.
Now they flow through to MongoDB and we can see what iOS actually
hands back.