Declare XSAppIconAssets in the app manifest so actool receives --app-icon and the bundle carries CFBundleIconName, and always pass both Xcode version placeholders to the ReplayKit extension so an empty build number cannot drop CFBundleVersion and fail installd.
VoiceCat documentation
VoiceCat is a self-hosted channel-based voice and text system. Control traffic uses TLS 1.3; media uses authenticated encrypted UDP derived from the TLS session. There is no plaintext mode or central service.
Current references:
- architecture.md — components, ownership, concurrency, and native boundary.
- api-dotnet.md — managed API and ownership contracts.
- building.md — development, platform builds, tests, and publishing.
- deployment.md — server packaging and operations.
- ios-deploy.md — physical-device iOS build and deployment.
- tech-stack.md — supported dependencies and licensing.
- broadcast-ring-format.md — frozen extension/host ring ABI.
proto/voicecat.proto is the control-plane wire contract. Managed tests are the executable
behavior contract. Keep prose current with those sources rather than documenting historical
implementations.
Durable rules:
- Encryption is mandatory.
- GPL and LGPL dependencies are forbidden.
- Real-time audio callbacks never allocate, lock, block, or perform I/O.
- The server relays encoded media; it does not mix or transcode it.
- Wire, database, and shared-ring changes are explicitly versioned.