-
Notifications
You must be signed in to change notification settings - Fork 18
Reliability #1270
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Reliability #1270
Conversation
…anagement Add comprehensive WebRTC statistics monitoring and device preference management to @signalwire/webrtc package based on Cantina application improvements. Features added: - WebRTC Statistics Monitor (546 lines): Real-time network quality assessment, automated issue detection, and baseline establishment for RTT, jitter, and packet loss monitoring - Device Preference Manager (483 lines): Smart device recovery with fallback strategies, persistent preferences, and automatic device switching - Enhanced device helpers with recovery integration and validation - RTCPeer integration hooks for monitoring lifecycle management - TypeScript interfaces for monitoring configuration and events Integration points: - RTCPeer constructor initializes monitoring when enabled - Automatic monitoring start/stop with connection lifecycle - Event emission for network issues and device recovery - Public API methods: getNetworkQuality(), getLatestMetrics() API configuration support: ```typescript const client = new SignalWire.Client({ monitoring: { enabled: true, qualityThresholds: {...} }, devicePreferences: { autoRecover: true, recoveryStrategy: 'smart' } }) ``` This implements the core foundation for improved call reliability and provides standardized WebRTC monitoring capabilities across all SDK applications. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…nd network resilience Add comprehensive call recovery framework to @signalwire/client package with automatic network issue detection, debounced reinvite logic, and intelligent recovery strategies for enhanced call reliability. New recovery system components: - CallRecoveryManager (409 lines): Orchestrates recovery with configurable triggers, exponential backoff, retry limits, and comprehensive state management - ReinviteEngine (291 lines): Handles debounced reinvite attempts with timeout control, retry logic, and recovery success/failure tracking - NetworkIssueDetector (309 lines): Integrates with WebRTC monitoring to detect recovery-worthy issues with aggregation, filtering, and cooldown periods CallSession integration: - Added recovery configuration to CallSessionOptions - Automatic recovery initialization and lifecycle management - Public API: getRecoveryState(), triggerRecovery(), setRecoveryEnabled() - Recovery events: call.recovery.attempting, call.recovery.succeeded, call.recovery.failed - Integration with WebRTC monitoring from Phase 1 Key features: - Smart trigger mapping from network issues to recovery actions - Configurable triggers: ice_failed, no_packets, connection_failed, high_packet_loss - Exponential backoff with retry limits and debouncing - Rich event system for recovery monitoring and debugging - Backwards compatible - recovery is opt-in via configuration API usage: ```typescript const callSession = await client.dial({ to: '[email protected]', recovery: { enabled: true, maxAttempts: 3, debounceTime: 10000, triggers: ['ice_failed', 'no_packets'], exponentialBackoff: true } }) ``` This completes Phase 2 of the SDK enhancement plan, providing robust automatic call recovery capabilities that significantly improve call reliability and user experience across network disruptions and connection issues. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…n and resource management Add comprehensive user experience enhancements to @signalwire/core and @signalwire/js packages with intelligent resource optimization, mobile-first video management, and advanced fullscreen capabilities for superior performance and user experience. New UX system components: - VisibilityManager (419 lines): Page visibility detection with automatic resource optimization, configurable strategies, and event-driven background behavior management - ResourceOptimizer (473 lines): Intelligent optimization for media (frame rate reduction, video pausing), network (polling reduction), rendering (animation pausing), and timers - MobileVideoManager (524 lines): Mobile-optimized video handling with automatic fullscreen, orientation detection, touch gestures (double-tap, pinch-zoom), and responsive layouts - FullscreenManager (568 lines): Cross-browser fullscreen API with fallbacks, touch controls, auto-hide UI, and keyboard shortcuts for comprehensive fullscreen support - UserExperienceManager (410 lines): Unified interface integrating all UX enhancements with smart defaults, coordinated state management, and simplified API Key features: - Smart resource management with automatic optimization when page becomes hidden - Mobile-first design with touch gestures, orientation handling, and responsive video layouts - Cross-browser fullscreen compatibility with native API and fallback implementations - Event-driven architecture for comprehensive UX state monitoring and debugging - Configurable optimization strategies: media, network, rendering, and timer management - Unified management interface for easy integration and control Integration points: - Core package: visibility detection and resource optimization utilities - JS package: mobile video management and fullscreen capabilities with touch support - Coordinated event system across all managers for consistent state tracking - Smart defaults and auto-setup for common video communication scenarios API usage: ```typescript const uxManager = new UserExperienceManager({ autoSetup: true, mobileVideo: { autoFullscreen: true, touchOptimizations: true }, resourceOptimization: { enableMediaOptimization: true } }) uxManager.manageVideoElement(videoElement) uxManager.on('ux.visibility.changed', (isVisible) => console.log('Visibility:', isVisible)) ``` This completes the 3-phase SDK enhancement plan with 4,249 total lines across 15 new files, providing enterprise-grade reliability (Phase 1 + 2) and exceptional user experience (Phase 3) that significantly improves call quality, performance, and mobile usability. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
|
- Fix circular dependency by separating DevicePreferenceManager imports - Add explicit type annotations for callback parameters in RTCPeer - Use underscore prefix for unused function parameters - Add type assertions for RTCStats properties to resolve type inference issues Enables successful build and test execution for enhanced SDK features. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Create extensive unit test suites for all new features: - WebRTCStatsMonitor: Tests for network quality monitoring, stats collection, quality assessment, issue detection, and lifecycle management - DevicePreferenceManager: Tests for device recovery strategies, preference management, smart fallback logic, and error handling - CallRecoveryManager: Tests for recovery orchestration, trigger handling, attempt tracking, and integration with network monitoring - VisibilityManager: Tests for page visibility detection, optimization coordination, timeout handling, and browser compatibility - UserExperienceManager: Tests for unified interface, video element management, fullscreen coordination, and configuration updates Tests cover initialization, core functionality, error handling, edge cases, configuration updates, event handling, state management, and cleanup. Demonstrates comprehensive testing approach with proper mocking, async handling, and integration patterns for complex SDK features. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
this is a quick attempt at implementing the cantina reliability changes