# Software Design Document ## iced-app ### `main.rs` - Defines the full app state and message enum - Uses `SyncConnection` / `SyncConnectionHandle` from `tsclientlib` - Maintains local UI mirrors for: - bookmarks - server metadata - channels - clients - chat messages - device selection - mute / AFK state ### `audio.rs` - Output playback through `cpal` - Input capture through `cpal` - Opus encode for outgoing voice - Simple VAD for continuous talk mode ### `noise_cancel.rs` - Runtime-selected noise cancellation backend - Current backends: - `None` - `nnnoiseless` - `sonora` ### `identity.rs` - Locates TeamSpeak config database in common Linux paths - Extracts `identity_secret_key` - Parses it into `tsclientlib::Identity` ## Known Design Limitations - `main.rs` is still monolithic and should be split later - Bookmarks are not persisted - ServerQuery is not wired to a real backend yet - Audio settings apply to runtime state, but broader config persistence is not implemented