fix(audio): verify the sender actually carries the processed track

Field finding on Safari as the sending client: assets load, setProcessor
reports success, yet suppression level 0-100 makes no audible difference -
because LiveKit swaps the sender track via 'this.sender?.replaceTrack(...)',
and when the sender is not there at that instant the swap is skipped silently,
leaving the raw microphone on the wire. Chromium clients hit the timing,
Safari does not.

applyAiNoiseSuppression now verifies instead of trusting: wait for the sender
if needed, enforce the swap explicitly, and state the outcome in the log line
('Sendepfad gefiltert: ja/NEIN'). Three tests pin the sender cases, including
the exact Safari symptom of a sender still carrying the raw track.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Thore Cimbal
2026-08-17 12:00:00 +00:00
co-authored by Claude Opus 4.8
parent e3f8a8570a
commit fee9866e19
3 changed files with 94 additions and 3 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@sorb/threadnet-call-embedded",
"version": "0.19.2-threadnet.11",
"version": "0.19.2-threadnet.12",
"files": [
"README.md",
"LICENSE-AGPL-3.0",