Commit Graph

4 Commits

Author SHA1 Message Date
cloudwithax 48e49ee6a5 feat(voice): add TURN credential support, ICE restart logic, and connection quality tracking
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.
2026-02-24 20:59:19 -05:00
cloudwithax c01dc94338 feat(app): directory protocol types, behaviour, relay_discoverable setting
- protocol/directory.rs: DirectoryRequest/Response/ProfileEntry + DIRECTORY_PROTOCOL
- node/behaviour.rs: directory_service field on DuskBehaviour
- node/swarm.rs: outbound directory_service cbor behaviour
- storage/disk.rs: relay_discoverable bool in UserSettings (default true)
- types.ts: relay_discoverable added to UserSettings interface

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-02-19 12:19:43 -05:00
cloudwithax e468f5ae44 feat: add GIF search and trending functionality with Tauri commands
- Implemented `search_gifs` and `get_trending_gifs` commands in Tauri for GIF retrieval.
- Created a new protocol for GIF requests and responses.
- Added `EmojiPicker` component for emoji selection with recent emoji storage.
- Developed `GifPicker` component for searching and selecting GIFs.
- Introduced emoji data management with recent emoji tracking.
- Added markdown conversion utilities for rendering formatted text.
- Updated Vite configuration to optimize dependencies for Prosemirror.
2026-02-15 16:46:19 -05:00
cloudwithax 99e5a1d0ec init commit 2026-02-13 18:12:13 -05:00