VoiceCat — Windows client
The WinForms .NET 10 client uses VoiceCat.Core for TLS, TOFU, protocol state and encrypted UDP, and VoiceCat.Audio for streams, jitter, Opus and mixing. Its only native runtime component is voicecat_media.dll, the narrow Opus/RNNoise C shim. The old voicecat.dll core is no longer loaded or published.
Build
Stage the pinned native media dependencies once, then build the solution:
./dotnet/build-native.ps1
dotnet restore clients/windows/VoiceCat.slnx --locked-mode
dotnet build clients/windows/VoiceCat.slnx -c Release --no-restore
The original VoiceCat.Interop project remains in the repository as a migration oracle. The app references VoiceCat.Managed, whose compatibility facade lets the existing accessible WinForms UI keep its event-pump shape while all networking and audio state live in the idiomatic managed libraries.
Publish
./clients/windows/publish-client.ps1
This produces a self-contained win-x64 distribution in dotnet/artifacts/client/win-x64. The script requires voicecat_media.dll and fails if the legacy voicecat.dll appears.
The noninteractive startup and real WASAPI device check is:
./dotnet/artifacts/client/win-x64/VoiceCat.App.exe --smoke-test --audio
--smoke-test constructs the real main form and pumps the managed client. --audio additionally opens the default WASAPI capture and render endpoints, moves PCM through both for three seconds, and fails if capture produces no samples.
Run manually
# Terminal 1
./dotnet/artifacts/server/win-x64/VoiceCat.Server.exe
# Terminal 2
dotnet run --project clients/windows/VoiceCat.App/VoiceCat.App.csproj
Manual release validation includes NVDA navigation and a sustained two-client listen test, as tracked in docs/roadmap.md.