53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
# Software Architecture Document
|
|
|
|
## Overview
|
|
|
|
The current application is a single desktop client crate built around `iced` and `tsclientlib`.
|
|
|
|
## Architecture
|
|
|
|
```text
|
|
User
|
|
-> iced UI (`src/iced-app/src/main.rs`)
|
|
-> tsclientlib sync connection/state
|
|
-> optional local audio pipeline (`audio.rs`, `noise_cancel.rs`)
|
|
-> TeamSpeak server
|
|
```
|
|
|
|
## Major Components
|
|
|
|
### UI Layer
|
|
|
|
- `main.rs`
|
|
- Handles navigation, connection flow, channel/client/chat rendering, settings UI
|
|
|
|
### TeamSpeak Integration
|
|
|
|
- `tsclientlib`
|
|
- Connection setup, state mirror, channel moves, text messages, client updates, voice packet send/receive
|
|
|
|
### Audio Layer
|
|
|
|
- `audio.rs`
|
|
- `cpal` input/output, Opus encode, simple voice activation logic
|
|
|
|
### Noise Reduction
|
|
|
|
- `noise_cancel.rs`
|
|
- Supports `None`, `nnnoiseless`, and `sonora`
|
|
|
|
### Identity Import
|
|
|
|
- `identity.rs`
|
|
- Reads TeamSpeak `settings.db` and imports `identity_secret_key`
|
|
|
|
## Removed Architecture
|
|
|
|
The following older architecture is no longer part of the product:
|
|
|
|
- Tauri application shell
|
|
- Custom `tscore` protocol implementation
|
|
- Custom `tsaudio` audio engine
|
|
- Custom `tsdb` persistence layer
|
|
- Shared internal model crate used only by the removed stack
|