Skip to content

Changelog

[2026.05.25] - Bind Server Event Channels

Changed

  • Require Voice server-event subscriptions to prove ownership of the requested music channel before realtime events are exposed.
  • Build public-api verifier URLs with encoded server-id path segments so crafted X-Server-Id values cannot route verification to public endpoints.

[2026.05.17] - Server-Owned Music Channels

Added

  • Add server-authenticated music channel lifecycle endpoints with global and positional speaker metadata.
  • Add music_stereo_48k voice sessions with explicit source and listener roles in stream and node snapshots.
  • Add voice-node routing enforcement for music source-only sends, listener fanout, and dedicated music packet limits.

Changed

  • Keep music frames out of voice evidence buffers while leaving normal proximity, party, and direct voice unchanged.

[2026.05.14] - Voice Load Tracker Split

Changed

  • Split heartbeat load scoring and packet-rate snapshot helpers out of services/uebliche-voice-node/src/state.rs into services/uebliche-voice-node/src/load.rs, bringing the active voice-state host back under the size guardrail without changing voice runtime behavior.

[2026.05.12] - Voice State Queue Hygiene

Changed

  • Split packet-window rate limiting, relay sequence dedupe, and wraparound freshness checks out of services/uebliche-voice-node/src/state.rs into services/uebliche-voice-node/src/sessions.rs so the active voice-state hotspot keeps shrinking without changing runtime behavior.

[2026.05.05] - Production V1 Control Plane

Changed

  • Persist voice nodes and channels through the Public API Mongo store and rehydrate them on API startup, while keeping stale nodes heartbeat-bound instead of restoring them as healthy forever.
  • Route proximity audio from explicit recipient peer lists with distance and gain metadata, falling back to legacy visiblePlayers only for older clients.
  • Sign inter-node UVR relay frames with HMAC tokens and reject stale timestamps or wrong target nodes before delivery.
  • Mix client playback through per-speaker jitter queues with duplicate and stale packet drops instead of writing decoded PCM frames directly to the audio line.

Added

  • Add server-side voice channel control for serverMutes and serverGroups with Connect server credentials or social:voice.write API tokens.
  • Add the production v1 smoke path for EU-first canary validation before enabling other regions.

[2026.04.23] - Clustered Edge Relay

Changed

  • Route voice sessions per attached member node instead of pinning an entire channel to one media node.
  • Include attachment-aware node snapshots so each voice node only receives channels with locally attached members plus peer relay targets.
  • Switch inter-node media relay from JSON payloads to the dedicated binary UVR frame, while keeping JSON relay only as a mixed-version compatibility fallback.
  • Report heartbeat load as a weighted media score from attached members, active channels, and relay/local packet rates instead of plain active session count.

Added

  • Add direct node-to-node UDP relay for remote listeners, including per-sender sequence dedupe and relay authentication.
  • Capture client region and latency hints during voice session sync so the Public API can keep members on the nearest healthy edge node.

[2026.03.08] - 2026-03-08

Added

  • Add initial Voice documentation with overview, deployment, and protocol pages.

Changed

  • Document dedicated voice-node stack/context deployment flow and required runtime secrets.

Fixed

  • Clarify binary packet structure and hardening behavior to avoid transport ambiguity.