Problem
The optional feedBack-plugin-stems takeover can leave the player permanently silent if its initial streaming pump fails after setup succeeds.
At that point the plugin has paused core <audio> for the handoff, but runPump(true) only logs the error. It does not tear down the takeover or resume core audio. The play request stays pending and the player can appear to be playing/loading with no audible output.
Source
feedBack-plugin-stems/src/streaming.js: runPump() catch block
- Introduced by plugin commit
b634bd97 (2026-07-08)
- The recent Aug 3–4 recovery work handles setup/decode failures, but not an asynchronous failure after the stream pump has started.
Expected behavior
If the initial prefill fails, disable the stems takeover, clear its reroute guard, and resume core <audio> when playback was requested. Later pump failures should also transition to a recoverable and visible failure state.
Regression test
Make appendRound() reject during the initial prefill, then assert that the core audio fallback resumes (or that a documented error state is emitted) instead of leaving the transport pending.
Problem
The optional
feedBack-plugin-stemstakeover can leave the player permanently silent if its initial streaming pump fails after setup succeeds.At that point the plugin has paused core
<audio>for the handoff, butrunPump(true)only logs the error. It does not tear down the takeover or resume core audio. The play request stays pending and the player can appear to be playing/loading with no audible output.Source
feedBack-plugin-stems/src/streaming.js:runPump()catch blockb634bd97(2026-07-08)Expected behavior
If the initial prefill fails, disable the stems takeover, clear its reroute guard, and resume core
<audio>when playback was requested. Later pump failures should also transition to a recoverable and visible failure state.Regression test
Make
appendRound()reject during the initial prefill, then assert that the core audio fallback resumes (or that a documented error state is emitted) instead of leaving the transport pending.