Calls: screen share, mic/cam toggles, status badges, pin + fullscreen, call timer
Screen sharing swaps the outgoing video track on every peer's sender with replaceTrack (same m-line, no renegotiation); the camera returns when the share stops, including via the browser's own "Stop sharing" bar. Mic and camera toggles flip track.enabled. A new Status signal kind broadcasts mic/cam/screen state so tiles can show badges; newcomers get it directed when their Join arrives. Tiles carry a name label, click to pin as a stage (a peer's screen share pins itself), double-click for fullscreen. The call bar has an elapsed timer and a participant count. Controls are icon-only inline SVGs on currentColor: plain with a strike when off, a soft glow and ticking LED when live. Red is reserved for leave. Also fixed along the way: the peer map was a non-reactive StoredValue, so the tile list never re-rendered when someone joined; ICE candidates that arrive before the remote description are now buffered instead of rejected; a peer whose connection fails or closes is dropped. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L3sD29ozDvqA7jozeZXZoB
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
c1c337c2a2
commit
78e9c9ff94
@@ -63,6 +63,8 @@ web-sys = { version = "0.3", features = [
|
||||
"RtcIceCandidateInit",
|
||||
"RtcPeerConnectionIceEvent",
|
||||
"RtcRtpSender",
|
||||
"RtcPeerConnectionState",
|
||||
"DisplayMediaStreamConstraints",
|
||||
"RtcTrackEvent",
|
||||
"RtcRtpTransceiver",
|
||||
"RtcOfferOptions",
|
||||
|
||||
Reference in New Issue
Block a user