Introduce a TURN credentials protocol for requesting time-limited relay server credentials from the relay node, improving NAT traversal for WebRTC voice connections. WebRTC layer improvements: - Add ICE candidate buffering before remote description is set - Implement automatic ICE restart with configurable max attempts - Add disconnection timeout with delayed restart recovery - Add per-peer connection state tracking and callbacks - Include public STUN servers (Google, Cloudflare) by default - Add detailed logging throughout the WebRTC lifecycle Voice store improvements: - Fetch TURN credentials from relay before establishing connections - Track per-peer RTCPeerConnectionState with reactive signals - Derive overall voice quality signal (good/connecting/degraded/failed) - Evaluate and surface degraded connection state to the UI - Clean up peer connection states on participant leave - Fix video toggle resource leak (stop unused audio tracks) Backend changes: - Add TurnCredentialRequest/Response protocol types - Wire turn_credentials behaviour into swarm and node event loop - Add get_turn_credentials Tauri command - Propagate errors from voice commands instead of silently dropping - Add input validation for SDP types in send_voice_sdp - Handle missing node handle as explicit error in all voice commands - Add DirectoryResponse::Error variant handling - Scope Linux WebKitGTK permission grants to UserMediaPermissionRequest UI improvements: - Show connection quality indicator in voice channel header - Add per-peer connection state ring on participant tiles - Display failed connection warning icon on participant tiles - Stack muted/deafened indicators vertically to avoid overlap - Show participant grid in degraded connection state Also remove unused imports across several frontend components. |
||
|---|---|---|
| .. | ||
| capabilities | ||
| icons | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| build.rs | ||
| tauri.conf.json | ||