Skip to content

feature: cameras - #389

Open
lukepolo wants to merge 4 commits into
mainfrom
feature/cameras
Open

feature: cameras#389
lukepolo wants to merge 4 commits into
mainfrom
feature/cameras

Conversation

@lukepolo

Copy link
Copy Markdown
Contributor

No description provided.

lukepolo and others added 2 commits August 12, 2026 19:17
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 and others added 2 commits August 13, 2026 09:52
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant