Files
voice-cat/AGENTS.md
T
Talon 08e6c5930a
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
Retire legacy implementations and flatten managed layout
2026-09-21 00:11:32 +02:00

2.1 KiB

VoiceCat working method

Start with CLAUDE.md for commands and architecture and PROGRESS.md for the current handoff. The supported product is the .NET 10 implementation.

Definition of done

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.

For implementation work:

  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.

Supported layout

Path Purpose
proto/voicecat.proto Control-plane wire schema
src/ Managed server, core, protocol, crypto, audio, codec/DSP, and CLI
tests/VoiceCat.Tests/ Managed behavior tests
clients/windows/ Supported WinForms client
clients/apple/ 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

Core verification

./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 builds additionally use ./scripts/build-native-ios.sh and clients/apple/VoiceCat.Apple.slnx on macOS.

Hard rules

  • 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.
  • Keep PROGRESS.md short. Use Git history rather than accumulating completed-work prose.