Skip to content

feat(voice): add negotiated codec to call records#35

Merged
wavekat-eason merged 1 commit into
mainfrom
feat/call-codec
Jul 3, 2026
Merged

feat(voice): add negotiated codec to call records#35
wavekat-eason merged 1 commit into
mainfrom
feat/call-codec

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

Summary

  • VoiceCallRecord gains an optional codec field — the audio codec the call negotiated (opus / pcmu / pcma), as a new wire-stable VoiceCallCodec enum matching the daemon's CallCodec strings.
  • Daemon-owned data, same contract as transferTarget: serialized on sync when present, echoed back on read, omitted (never null) for never-answered calls and rows synced by older daemons.
  • Re-exported from the crate root (the 0.0.13 reachability lesson).

Consumers render it as a quality tier — "HD" for Opus, "Standard" for G.711 — matching the desktop client's call-details page. The platform-side ingest/storage/UI lands in wavekat-platform alongside this.

Test plan

  • codec_pins_its_wire_strings — pins the exact wire strings the platform's Zod schema will validate against.
  • record_round_trips_codec — parse → re-serialize both ways, plus the legacy-row (absent field) case.
  • Existing serialize test now asserts codec is omitted when None.
  • cargo test: 73 passed.

🤖 Generated with Claude Code

VoiceCallRecord gains an optional codec field (opus / pcmu / pcma,
matching the daemon's CallCodec wire strings) so the platform can
show a call's audio quality the way the desktop client now does.
Daemon-owned data like transfer_target: sent on sync when present,
echoed back on read, absent for never-answered calls and rows from
older daemons.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@wavekat-eason wavekat-eason merged commit 2f1bab1 into main Jul 3, 2026
1 check passed
@wavekat-eason wavekat-eason deleted the feat/call-codec branch July 3, 2026 07:01
@github-actions github-actions Bot mentioned this pull request Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant