# ReTeamSpeak Desktop TeamSpeak 3 client built with `iced` and `tsclientlib` for Windows, Linux, and macOS. ## Current Direction - UI: `iced` - TeamSpeak protocol + state sync: `tsclientlib` - Protocol declarations reference: `refercence/tsdeclarations/` - Old in-tree protocol/audio/database/Tauri implementation has been removed ## Current User-Facing Features - Connect to a TeamSpeak server by address and port - Use a nickname and optional server password - Browse channels and join a channel - Receive live server/channel/client state updates - Send and receive channel chat messages - Mute microphone state and sync it to TeamSpeak - Mute speaker/output state and sync it to TeamSpeak - Toggle headset/output hardware state and sync it to TeamSpeak - Toggle AFK state and sync it to TeamSpeak - Import TeamSpeak identity from the local TS3 `settings.db` - Select input and output audio devices - Push-to-talk and continuous voice modes - Noise cancellation selection in settings ## Current Gaps - ServerQuery page is UI-only right now; execution is intentionally stubbed - Bookmarks are currently in-memory only - Identity import requires the `rusqlite` feature - Full audio build requires system audio/build dependencies ## Build Workspace root for cargo commands: `src/` ### Default build ```bash cd src cargo check -p re-teamspeak ``` ### With identity import ```bash cd src cargo check -p re-teamspeak --features rusqlite ``` ### With audio and identity import On systems missing packages, use Podman: ```bash podman run --rm -v $(pwd):/workspace:Z -w /workspace/src \ docker.io/library/debian:trixie bash -lc ' apt-get update -qq && apt-get install -y -qq \ build-essential curl cmake pkg-config libasound2-dev libssl-dev && curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && . /root/.cargo/env && cargo check -p re-teamspeak --features audio,rusqlite ' ``` ## Repository Layout ```text src/ ├── Cargo.toml └── iced-app/ ├── Cargo.toml └── src/ ├── main.rs ├── audio.rs ├── noise_cancel.rs ├── identity.rs └── theme.rs ``` ## Reference Material - `refercence/tsclientlib/` - `refercence/tsdeclarations/` - `docs/protocol.md` - `docs/protocol_stack.md` ## License MIT OR Apache-2.0