Files
voice-cat/dotnet/README.md
T

63 lines
2.7 KiB
Markdown
Raw Normal View History

# VoiceCat .NET implementation
This is the supported VoiceCat implementation. It contains the protocol, TLS and media
cryptography, server, client state, codec/DSP bindings, audio engine, and headless CLI.
## Build and test
Stage the small native Opus/RNNoise library, then build the managed solution:
```powershell
./dotnet/build-native.ps1
dotnet restore dotnet/VoiceCat.slnx --locked-mode
dotnet build dotnet/VoiceCat.slnx -c Release --no-restore
dotnet test dotnet/VoiceCat.slnx -c Release --no-build
./dotnet/check-licenses.ps1
```
The native source lives in `native/media` and `native/rnnoise`; build output is staged under
`dotnet/artifacts/native`. The shim exposes only fixed Opus/DRED and RNNoise entry points. It
does not contain protocol, networking, cryptography, client state, or server behavior.
For an explicit native build:
```bash
cmake -S native/media -B dotnet/artifacts/native-build -DCMAKE_BUILD_TYPE=Release
cmake --build dotnet/artifacts/native-build --target voicecat_media --parallel 2
cmake --install dotnet/artifacts/native-build --component DotnetMedia \
--prefix dotnet/artifacts/native
```
## Projects
- `VoiceCat.Protocol` — generated protobuf types and bounded control framing.
- `VoiceCat.Crypto` — BouncyCastle TLS 1.3/exporters, TOFU, identity, AEAD, replay protection,
and Argon2id.
- `VoiceCat.Codec` / `VoiceCat.Dsp` — managed owners of the narrow native media ABI.
- `VoiceCat.Audio` — jitter, loss recovery, mixing, input activation, and PCM rings.
- `VoiceCat.Core` — managed client connection and session state.
- `VoiceCat.Server` — TLS control, encrypted UDP relay, SQLite state, administration, and CLI.
- `VoiceCat.Cli` — supported interactive and deterministic headless client.
- `VoiceCat.Tests` — managed unit, integration, allocation, and end-to-end behavior tests.
`proto/voicecat.proto` is the only protobuf schema. Generated C# is build output.
## Run
```powershell
dotnet run --project dotnet/src/VoiceCat.Server -- --data-dir ./voicecat-data
dotnet run --project dotnet/src/VoiceCat.Cli -- \
--host 127.0.0.1 --port 8384 --nickname Alice --trust-first
```
Use `--help` on either executable for current options. Server publishing is handled by
`dotnet/publish-server.ps1` and the platform packaging files under `packaging/`.
## Compatibility policy
The managed implementation is the source of truth. Frozen vectors under
`tests/VoiceCat.Tests/Fixtures` protect concrete wire, Argon2id, and RNNoise behavior, but the
repository no longer builds or tests against the retired C++ implementation. Protocol or
persistence changes must be versioned when current supported releases need migration; they do
not need to retain compatibility with unsupported pre-rewrite releases.