refactor: remove legacy tauri stack and update iced docs

This commit is contained in:
ReTeamSpeak
2026-05-13 13:35:22 +09:00
parent 4a54f6667c
commit abf380476f
94 changed files with 789 additions and 13393 deletions
+66 -57
View File
@@ -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