Retire legacy implementations and flatten managed layout
Build and test / test (macos-latest) (push) Canceled after 0s
Build and test / test (ubuntu-24.04) (push) Canceled after 0s
Build and test / test (windows-latest) (push) Canceled after 0s
Build and test / apple-client (push) Canceled after 0s

This commit is contained in:
2026-09-21 00:11:32 +02:00
parent dd811a0bb8
commit 08e6c5930a
422 changed files with 252 additions and 38242 deletions
+16 -20
View File
@@ -6,42 +6,38 @@ is .NET 10. Read `AGENTS.md` for working rules and `PROGRESS.md` for the current
## Build and test
```bash
./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
./scripts/build-native.ps1
dotnet restore VoiceCat.slnx --locked-mode
dotnet build VoiceCat.slnx -c Release --no-restore
dotnet test VoiceCat.slnx -c Release --no-build
./scripts/check-licenses.ps1
```
Apple client builds require macOS, Xcode, and the .NET macOS/iOS workloads:
```bash
./dotnet/build-native-ios.sh
dotnet restore clients/apple/dotnet/VoiceCat.Apple.slnx
dotnet build clients/apple/dotnet/VoiceCat.Apple.slnx -c Debug --no-restore
./scripts/build-native-ios.sh
dotnet restore clients/apple/VoiceCat.Apple.slnx
dotnet build clients/apple/VoiceCat.Apple.slnx -c Debug --no-restore
```
Windows publishing uses `clients/windows/publish-client.ps1`. Server publishing uses
`dotnet/publish-server.ps1`. See `docs/building.md` while it is being rewritten; prefer the
scripts themselves when historical text disagrees with them.
`scripts/publish-server.ps1`.
## Current architecture
- `proto/voicecat.proto` is the control-plane wire schema.
- `dotnet/src/VoiceCat.Protocol` owns protobuf framing and generated types.
- `dotnet/src/VoiceCat.Crypto` owns TLS, TOFU, media AEAD, identity, and password hashing.
- `dotnet/src/VoiceCat.Server` owns the TLS/UDP server and SQLite state.
- `dotnet/src/VoiceCat.Core` owns client connection and protocol state.
- `dotnet/src/VoiceCat.Audio`, `.Codec`, and `.Dsp` own voice processing.
- `dotnet/src/VoiceCat.Cli` is the supported headless client.
- `src/VoiceCat.Protocol` owns protobuf framing and generated types.
- `src/VoiceCat.Crypto` owns TLS, TOFU, media AEAD, identity, and password hashing.
- `src/VoiceCat.Server` owns the TLS/UDP server and SQLite state.
- `src/VoiceCat.Core` owns client connection and protocol state.
- `src/VoiceCat.Audio`, `.Codec`, and `.Dsp` own voice processing.
- `src/VoiceCat.Cli` is the supported headless client.
- `clients/windows` is the WinForms client.
- `clients/apple/dotnet` contains the AppKit and UIKit clients.
- `clients/apple` contains the AppKit and UIKit clients.
- `native/media` and `native/rnnoise` are the required Opus/RNNoise native boundary.
- `native/apple/broadcast` is the required Swift ReplayKit extension.
The old C++ implementation and old Swift applications are unsupported retirement sources.
They are not architectural authorities and compatibility with them is not a requirement.
## Invariants
- TLS control and encrypted UDP media are mandatory; do not add plaintext transports.