feature: cameras - #389
Open
lukepolo wants to merge 4 commits into
Open
Conversation
The game-streamer pod has no site session, so it could not use the organizer-gated WHEP route to put the spectated player's camera on the stream. Adds a route it can use as the match itself, on the same x-origin-auth scheme status-reporter and snapshot already use. Scoped hard: one pod is authorized for one match, the steam id must be a Steam64 on that match's roster, and the match must actually require cameras. The path is still built through the encoding boundary in MediaMtxService, so a crafted id cannot address another match's feed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QnoNWfftRZL47DxmGUyh8K
lukepolo
force-pushed
the
feature/cameras
branch
from
August 13, 2026 13:32
914f04d to
d8e48ed
Compare
Joining party voice showed a spinner and then nothing at all. The composable captured the failure into an `error` ref that no template ever rendered, and Button holds its spinner for a 2s minimum, so a failure that happened instantly still looked like a hang. Nothing was reaching the network because getUserMedia was throwing first -- `navigator.mediaDevices` is undefined on an insecure origin, so a panel served over plain http has no way to get a microphone. Errors are now surfaced in the panel and named rather than dumped: insecure origin, denied permission, no microphone, microphone in use. The insecure-origin case is checked before joining so the button is disabled with an explanation instead of failing on click. Also flips public.voice_chat_enabled to on by default (only an explicit "false" disables it, matching require_login_for_live_streams). Cameras stay off by default -- voice is a convenience for players who already chose to party up, not a surveillance control. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QnoNWfftRZL47DxmGUyh8K
…efaults public.player_cameras_enabled gated the whole feature, and the two match-option defaults were nested under it. Since it shipped off, the defaults were invisible on a fresh install -- the settings page showed one disabled toggle and nothing else. Cameras are already opt-in at the level that matters: an organizer turns Require Webcam on per match. A second global switch in front of that only hid the settings that decide what a new match starts with. Removed; the defaults now stand on their own. Party voice keeps its toggle, since that one really is a feature that can be turned off. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QnoNWfftRZL47DxmGUyh8K
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.
No description provided.