refactor: remove legacy tauri stack and update iced docs
This commit is contained in:
@@ -1,83 +1,92 @@
|
||||
# ReTeamSpeak
|
||||
|
||||
Cross-platform TeamSpeak 3 client supporting Windows, macOS, Linux, iOS, and Android.
|
||||
Desktop TeamSpeak 3 client built with `iced` and `tsclientlib` for Windows, Linux, and macOS.
|
||||
|
||||
## Features
|
||||
## Current Direction
|
||||
|
||||
- TeamSpeak 3 protocol implementation (UDP, AES-128-EAX encryption)
|
||||
- Voice communication with Opus codec
|
||||
- Text messaging (server, channel, private)
|
||||
- Channel and client management
|
||||
- Identity and bookmark management
|
||||
- Cross-platform UI (Tauri v2 + React)
|
||||
- UI: `iced`
|
||||
- TeamSpeak protocol + state sync: `tsclientlib`
|
||||
- Protocol declarations reference: `refercence/tsdeclarations/`
|
||||
- Old in-tree protocol/audio/database/Tauri implementation has been removed
|
||||
|
||||
## Architecture
|
||||
## Current User-Facing Features
|
||||
|
||||
```
|
||||
src/
|
||||
├── shared/ # Shared types (~700 lines)
|
||||
├── tscore/ # Protocol core (~1800 lines)
|
||||
│ ├── protocol/ # Packet parsing, commands
|
||||
│ ├── crypto/ # AES-EAX, ECDH, SHA
|
||||
│ └── connection/ # Handshake, state machine, resend
|
||||
├── tsaudio/ # Audio engine (~280 lines)
|
||||
├── tsdb/ # Database layer (~400 lines)
|
||||
└── tauri-app/ # Application shell
|
||||
├── src-tauri/ # Rust backend
|
||||
└── frontend/ # React frontend
|
||||
```
|
||||
- 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
|
||||
|
||||
### Prerequisites
|
||||
Workspace root for cargo commands: `src/`
|
||||
|
||||
- Rust 1.70+
|
||||
- Node.js 20+
|
||||
- System dependencies (see below)
|
||||
### Default build
|
||||
|
||||
### Linux
|
||||
```bash
|
||||
sudo apt install libdbus-1-dev pkg-config libgtk-3-dev \
|
||||
libwebkit2gtk-4.1-dev libayatana-appindicator3-dev \
|
||||
librsvg2-dev libssl-dev libasound2-dev
|
||||
cd src
|
||||
cargo check -p re-teamspeak
|
||||
```
|
||||
|
||||
### Build Commands
|
||||
### With identity import
|
||||
|
||||
```bash
|
||||
# Build core libraries
|
||||
cargo build -p shared -p tscore -p tsaudio -p tsdb
|
||||
|
||||
# Run tests
|
||||
cargo test -p shared -p tscore -p tsaudio -p tsdb
|
||||
|
||||
# Build frontend
|
||||
cd src/tauri-app/frontend && npm install && npm run build
|
||||
|
||||
# Build desktop app
|
||||
cd src && cargo build --release
|
||||
cd src
|
||||
cargo check -p re-teamspeak --features rusqlite
|
||||
```
|
||||
|
||||
### Using Podman (no root)
|
||||
### 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 -c "
|
||||
docker.io/library/debian:trixie bash -lc '
|
||||
apt-get update -qq &&
|
||||
apt-get install -y -qq curl pkg-config libdbus-1-dev libgtk-3-dev \
|
||||
libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev \
|
||||
libssl-dev libasound2-dev build-essential &&
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y &&
|
||||
source \$HOME/.cargo/env &&
|
||||
cargo test -p shared -p tscore -p tsaudio -p tsdb
|
||||
"
|
||||
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
|
||||
'
|
||||
```
|
||||
|
||||
## Documentation
|
||||
## Repository Layout
|
||||
|
||||
- [SRS](docs/SRS.md) - Software Requirements Specification
|
||||
- [SAD](docs/SAD.md) - Software Architecture Document
|
||||
- [SDD](docs/SDD.md) - Software Design Document
|
||||
- [Protocol](docs/protocol.md) - TS3 Protocol Analysis
|
||||
- [Protocol Stack](docs/protocol_stack.md) - Protocol Stack Details
|
||||
```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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user