Tester-confirmed (2026-07-11 log): song previews and other
plugin-private audio bypass the per-surface feeder taps and leak to the
default WASAPI device under ASIO output. Also confirmed: the element
capture path poisons itself when highway_3d already owns #audio's
one-shot MediaElementSource (InvalidStateError with _elCtx assigned
pre-throw → TypeError every later tick).
- New preferred mode 'loopback': one getDisplayMedia frame-audio capture
(desktop main answers with the app's own frame) covers song, previews,
and UI sounds for the whole exclusive session — engages even with no
song loaded. Local playback silenced via suppressLocalAudioPlayback,
page-mute IPC fallback otherwise.
- Sticky fallback to the existing stems/element surface modes when
capture is unavailable (old desktop main, denied, Docker sphere).
- Element capture: assign module state only after the whole chain
succeeds; close the context on failure — collision now retries clean.
- Failed engage now disables the bus and tears down loopback (no more
bus-enabled-with-no-producer stranding).
- Tests: 12 (5 new — loopback engage/preference/mute-fallback/sticky
fallback, collision retry).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>