dreamstack/engine/ds-stream/src
enzotar 392e478351 feat: WebRTC transport — peer-to-peer data channels with auto-fallback
Relay:
- /signal/{channel} path for SDP/ICE exchange via WebSocket
- handle_signaling broadcasts text messages between signaling peers
- signaling_tx broadcast channel in ChannelState
- 46 ds-stream tests (+2 signaling path tests)

JS Runtime:
- _initWebRTC(signalingUrl, streamUrl, mode) with RTCPeerConnection
- Unordered DataChannel (ordered:false, maxRetransmits:0) for low latency
- Auto-fallback: WebSocket starts immediately, WebRTC upgrades in ≤5s
- Data channel override of _streamSend for transparent binary protocol

Parser/AST:
- StreamTransport enum (WebSocket, WebRTC)
- transport field in StreamDecl
- Parses: stream x on url { mode: signal, transport: webrtc }

Codegen:
- WebRTC: emits DS._initWebRTC(sigUrl, streamUrl, mode)
- WebSocket: emits DS._initStream(url, mode) (unchanged)

97 tests, 0 failures
2026-02-25 15:02:31 -08:00
..
codec.rs feat(ds-stream): RLE compression, input events, keyframe caching 2026-02-25 11:04:05 -08:00
lib.rs feat: universal bitstream streaming — any input → any output 2026-02-25 10:29:44 -08:00
main.rs feat: universal bitstream streaming — any input → any output 2026-02-25 10:29:44 -08:00
protocol.rs feat(ds-stream): RLE compression, input events, keyframe caching 2026-02-25 11:04:05 -08:00
relay.rs feat: WebRTC transport — peer-to-peer data channels with auto-fallback 2026-02-25 15:02:31 -08:00