fix(playback): confirm session-keyed history only by its own session

A write deferred with a playback session key (M3U) is now confirmed only
by that key. The app-wide MPV/VLC session confirmation carries just the
URL, so opening the same stream externally from another playlist could
still commit an abandoned attempt. An "Open in MPV/VLC" recovery launch is
instead confirmed by the WebPlayerViewComponent that requested it, under
its own session key, once the launch has opened.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 committed 2026-09-27 12:56:23 +02:00
1 parent 96f1707b2d
commit 671a0cb1ec
7 files changed
+111 -27

No files matched your search

+10 -6
View File
@@ -1145,10 +1145,11 @@ reaches history.
playlist when they defer, so navigating meanwhile cannot misfile it; an
Xtream write confirmed after a playlist switch refreshes the store's recent
list only if its playlist is still current.
- Matching: when both the write and the confirmation carry a session key,
only the session key is compared — the same URL in two playlists must not
let playback in one record a failed attempt in the other. Stream URLs are
the fallback when either side has none.
- Matching: a write deferred with a session key is confirmed only by that
same key — the same URL in two playlists must not let playback in one
(inline, or in MPV/VLC) record a failed attempt in the other. Writes
without one (portal resolvers, collection tabs) match any confirmation of
their stream URL.
- `WebPlayerViewComponent` confirms its `playbackSessionKey`, `streamUrl`
and `playback.streamUrl` once the owned engine's reported position has
advanced by 2 seconds while playing (`PlaybackProgressConfirmation`).
@@ -1161,8 +1162,11 @@ reaches history.
when given).
- MPV/VLC cannot report whether a live stream plays, so the Electron
`ExternalPlaybackService` confirms a session's `streamUrl` once it is
`opened` or `playing`; a launch that ends in `error` is not recorded. M3U
keeps recording on selection when MPV/VLC is the configured player.
`opened` or `playing`; a launch that ends in `error` is not recorded. That
confirmation carries no session key, so an "Open in MPV/VLC" recovery
launch is also confirmed by the `WebPlayerViewComponent` that requested
it, under its own session key, once the launch has opened. M3U keeps
recording on selection when MPV/VLC is the configured player.
- A confirmation commits every write matching it, once. Unconfirmed writes
are bounded (oldest dropped) and simply never commit. The global live tab
moves a confirmed row to the top of an open Recently Viewed list even if