fix(player): freeze the launch queue so Loop All + Next/Previous use the original list

The player's queue came live from the feed query, which refetches under a
watch-state filter as each video is auto-marked watched — steadily shrinking
the list mid-session. Loop "All" could then never wrap back to the first
video (earlier items had dropped out), and prev/next drifted. Snapshot the
queue once at mount (useState lazy init) and step through that frozen list for
the whole session; the live prop is ignored thereafter. Supersedes the earlier
active-item pin with a list-level freeze that also fixes Loop All.
This commit is contained in:
npeter83 2026-07-05 20:50:05 +02:00
parent 0fff5ad35d
commit c84cb22e5a
2 changed files with 17 additions and 15 deletions

View file

@ -17,9 +17,9 @@ export const RELEASE_NOTES: ReleaseEntry[] = [
{
version: "0.23.2",
date: "2026-07-05",
summary: "Fixed the player jumping to a different video when the current one is marked watched.",
summary: "The player now steps through the exact list it was opened with, so watching along no longer breaks Loop and Next/Previous.",
fixes: [
"Player: watching a video to the end (or otherwise marking it watched) no longer makes playback jump to an unrelated video. This also fixes Loop “One”, which the jump could override — the current video now correctly repeats even after it drops out of the live feed order.",
"Player: it now plays through a frozen snapshot of the filtered, sorted list it was launched with. Previously, as each video was auto-marked watched it dropped out of a filtered feed, silently shrinking the queue mid-playback — which jumped playback to an unrelated video, and stopped Loop “All” from ever wrapping back to the first video once earlier ones were watched. Next/Previous and both Loop modes now work against the original list for the whole session.",
],
},
{