From f8223293a211a87c92b1fed80f5ca53660f6b26c Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Sat, 19 Sep 2026 13:45:56 +0200 Subject: fix(node): the node decides which files it will transcode, not the player MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `BROWSER_INCOMPATIBLE_AUDIO_EXTS` named the two formats no browser decodes and was read by nothing. The player asked for `.wma` and `.mpc` and no others, and `music-player.js` called itself "kept in sync with the node's" constant — so the entire restriction lived in the caller, and a member's own message is not the caller. What that let through: this converts a whole file and holds a transcode slot shared with video streaming while it runs. One message naming a two-hour film spends minutes of the operator's CPU and a slot every other viewer is queued behind. `AUDIO_TRANSCODE_MAX_BYTES` catches the result, after the work is done; only the extension catches the work. The client comment now says what it is — an optimisation that saves asking for a refusal — rather than implying it is the rule. Two tests: a film is refused before ffmpeg is reached, and a WMA still passes, because a gate that refuses everything is not a gate. Co-Authored-By: Claude Opus 5 --- .../src/meshbay_hub/static/music-player.js | 9 ++++-- .../src/meshbay_node/transport/webrtc_server.py | 19 ++++++++++++ .../meshbay-node/tests/test_audio_transcode.py | 36 ++++++++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/packages/meshbay-hub/src/meshbay_hub/static/music-player.js b/packages/meshbay-hub/src/meshbay_hub/static/music-player.js index 7c81f4e..5f2e33c 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/music-player.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/music-player.js @@ -36,9 +36,12 @@ const MIME_BY_EXT = { wav: 'audio/wav', aac: 'audio/aac', m4a: 'audio/mp4', }; -// Kept in sync with the node's BROWSER_INCOMPATIBLE_AUDIO_EXTS -// (webrtc_server.py) — both name the same two formats no mainstream -// browser's