-
The app now keeps its own note of where you stopped (down to the exact second) and which copy of the film you were watching, refreshing that note every 30 seconds — so when you come back it picks up right at that point and on that same copy, without going hunting for links again, which cut the time to picture from 15 seconds to 9:
-
New local playback_hints table (separate from resume_points, which the provider sync overwrites wholesale). Stores exact positionMs, durationMs and the release filename.
-
Exact position places the first range request, so the correction seek in onReady no longer fires on every resume.
-
The release that worked last time is waited for briefly, then promoted to next in the queue whenever it arrives — resume skips the cascade and hits a warm disk cache. Measured: 8.9s to first frame vs 15.1s.
-
30s heartbeat keeps the note current; verified it survives a force-stop.
-
Local note wins unless the provider is genuinely ahead — the note is refreshed on a timer, the provider only on phase changes, so it is normally the fresher of the two.