Stream switcher in the video information panel #117 - #132
Draft
Drvolks wants to merge 2 commits into
Draft
Conversation
Follow-up to #116: the same source switch the stats page offers per active channel is now available while watching a channel, in the Video tab of the player's stream settings panel. - PlayerStreamSwitcher holds the playing channel's streams, the source the proxy reports, and a short-lived pending selection so the picker doesn't snap back while the proxy restarts the source. - PlayerView reuses its existing /proxy/ts/status poll to track the active stream, and gates the picker on live playback + admin (userLevel >= 10), non-output, non-demo access. - tvOS remote focus in the Video tab now walks the stream rows (chapters and streams never coexist: one needs a recording, the other a live channel). - DispatcherClient.channelUUID(forId:) exposes the id -> UUID direction the proxy endpoints need. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Builds are now allowed whenever they're useful to verify a change compiles. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #117. Follow-up to #116 — the stream (source) picker the stats page shows per active channel is now available while a channel is playing, in the Video tab of the player's stream settings panel.
What changed
PlayerStreamSwitcher(new,Features/Player/) — holds the playing channel's streams, the source/proxy/ts/statusreports, and a short-lived pending selection so the picker doesn't snap back to the old source while the proxy restarts the stream (same 20s settle rule as the stats page).PlayerView— renders the picker invideoTabContent, reusing the existing/proxy/ts/statuspoll (every 8s, already there for the profile badge) to track the active stream. Shown only for live playback with admin access (userLevel >= 10, not output-only, not demo).DispatcherClient.channelUUID(forId:)— the id → UUID direction; the player knows the channel id it started from, whilechange_stream/statusare keyed by UUID.PlayerStreamSwitcherTestscovers status matching, pending-selection precedence and expiry, labelling, and reset.CLAUDE.md(separate commit).Verification
NexusPVRTests(both schemes, iOS sim)Not yet exercised against a real Dispatcharr server — the mock server already serves the
#116endpoints.Note
Switching does not reload the player: the proxy keeps the client connection and swaps the source behind it, matching the web app's behaviour. Worth confirming on a live server.
🤖 Generated with Claude Code