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-Idvalues 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_48kvoice sessions with explicitsourceandlistenerroles 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.rsintoservices/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.rsintoservices/uebliche-voice-node/src/sessions.rsso 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
visiblePlayersonly for older clients. - Sign inter-node
UVRrelay 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
serverMutesandserverGroupswith Connect server credentials orsocial:voice.writeAPI 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
UVRframe, 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.