2026-09-19 22:40:48 +02:00
|
|
|
# VoiceCat working method
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
Start with `CLAUDE.md` for commands and architecture and `PROGRESS.md` for the current handoff.
|
|
|
|
|
The supported product is the .NET 10 implementation. Old C++ and Swift application code is
|
|
|
|
|
retirement material, not a source of truth.
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
## Definition of done
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
A clean compile is the floor. Changes are done when their observable behavior is covered by a
|
|
|
|
|
test or, for hardware/accessibility/release behavior, by a clearly recorded manual gate.
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
For implementation work:
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
1. Read the relevant code and current contract document.
|
|
|
|
|
2. Add or adjust the smallest behavior test that demonstrates the requested result.
|
|
|
|
|
3. Implement the change without weakening encryption, real-time safety, or accessibility.
|
|
|
|
|
4. Build and run the affected tests, then the full managed test suite when practical.
|
|
|
|
|
5. Update concise current documentation and `PROGRESS.md` if the handoff changed.
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
## Supported layout
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
| Path | Purpose |
|
|
|
|
|
|---|---|
|
|
|
|
|
| `proto/voicecat.proto` | Control-plane wire schema |
|
|
|
|
|
| `dotnet/src/` | Managed server, core, protocol, crypto, audio, codec/DSP, and CLI |
|
|
|
|
|
| `dotnet/tests/VoiceCat.Tests/` | Managed behavior tests |
|
|
|
|
|
| `clients/windows/` | Supported WinForms client |
|
|
|
|
|
| `clients/apple/dotnet/` | Supported AppKit and UIKit clients |
|
|
|
|
|
| `native/media/` | Required narrow Opus/RNNoise C ABI |
|
|
|
|
|
| `native/rnnoise/` | Vendored RNNoise source/model |
|
|
|
|
|
| `native/apple/broadcast/` | Required ReplayKit extension and shared-memory producer |
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
## Core verification
|
2026-06-15 21:09:09 +02:00
|
|
|
|
|
|
|
|
```bash
|
2026-09-19 22:40:48 +02:00
|
|
|
./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
|
2026-06-15 21:09:09 +02:00
|
|
|
```
|
|
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
Apple builds additionally use `./dotnet/build-native-ios.sh` and
|
|
|
|
|
`clients/apple/dotnet/VoiceCat.Apple.slnx` on macOS.
|
2026-07-03 10:42:42 +01:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
## Hard rules
|
2026-06-15 21:09:09 +02:00
|
|
|
|
2026-09-19 22:40:48 +02:00
|
|
|
- Encryption is mandatory: TLS control plus authenticated encrypted UDP media.
|
|
|
|
|
- Never introduce GPL/LGPL dependencies.
|
|
|
|
|
- Real-time audio callbacks never allocate, lock, block, or perform I/O.
|
|
|
|
|
- Preserve accessible names, keyboard operation, and curated screen-reader announcements.
|
|
|
|
|
- Wire, database, and shared-ring changes are deliberate versioned changes.
|
|
|
|
|
- Do not restore compatibility tests for retired implementations unless explicitly requested.
|
|
|
|
|
- Keep `PROGRESS.md` short. Use Git history rather than accumulating completed-work prose.
|