Replace the split mobile UI (live = round pause button, archive = native
<video controls>) with one branded player for both modes, ported from the
desktop ArchivePlayer (.pjs) and kept self-contained in the mobile bundle
so the live desktop is untouched.
- Live: branded player with pause/play + fullscreen only (no seekbar).
- Archive: branded player with full seek (transcode virtual timeline,
seek = restart transcode with -ss) + playback speed (0.5/1/2/5x).
- H.264 server transcode path unchanged; touch-friendly always-on bar.
Verified end-to-end on .79: live.mp4 200 video/mp4, play.mp4 200,
duration_s present for the seek timeline.
VERSION 0.0.153 -> 0.0.154
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move mode selection (Live / Архив) into a top hamburger side-drawer
instead of the bottom bar. Header now shows the ☰ button + current mode
title. Live view has a single pause/play button (no seek bar); Archive
keeps native controls for seeking (перемотка).
VERSION 0.0.151 -> 0.0.152
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the two-tab bottom bar (Live / Архив) with a single centered
toggle button. It switches the mode either/or: shows the current mode
with a swap glyph (⇆), tap flips Live ⇄ Архив.
VERSION 0.0.150 -> 0.0.151
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A new mobile dashboard is served on a second host port (8443) mapped to the
same backend, so the recorder/supervisor is not duplicated. main.py detects
the mobile port via the Host header and serves mobile.html instead of the
desktop index. The mobile SPA has two modes: Live (one camera with a selector)
and Archive (camera + date + segment list). Video is delivered as server-side
H.264 (live.mp4 / play.mp4 transcode) so a plain <video> plays on any phone.
Bottom tab bar, dark theme, safe-area aware.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>