iPhone: full client timeline + self-diagnosing watchdog

Every step now beacons with millisecond offsets:
branch-decision -> new-hls-ok -> loadsource-called -> attach-ok ->
manifest-loaded -> level-loaded -> frag-loaded(1..2) -> buffer-appended
-> do-play -> play-resolved/play-rejected(name) + EVERY hls.js error
(fatal and silent retries). Plus a watchdog: if not playing within 15s,
it snapshots {readyState, networkState, paused, buffered, hls.state,
overlay text} every 15s (x6) — so a silent death anywhere produces a
state dump instead of nothing.

Verified on desktop: healthy timeline lands end-to-end, playback OK,
18/18 tests. assets v=13.
This commit is contained in:
jozamudi committed 2026-08-31 20:53:18 +00:00
1 parent aba266ee4b
commit aaaf8e9308
3 files changed
+42 -17

No files matched your search

+3 -1
View File
@@ -291,7 +291,9 @@ def api_events(evt: dict = Body(...), request: Request = None):
db.event(c, request.state.user, evt["type"],
{k: evt[k] for k in ("ep_id", "ep", "lang", "msg", "detail",
"jsv", "branch", "hls_lib", "mse", "native_hls", "ua",
"step", "fatal", "details", "buffer", "retry", "http") if k in evt})
"step", "fatal", "details", "buffer", "retry", "http",
"dt", "n", "rs", "ns", "paused", "bufEnd", "ct",
"hls_state", "ov", "name") if k in evt})
c.commit()
c.close()
return {"ok": True}