v0.5.8.3 - stage mode fullscreen sticky
fix: stage mode fullscreen sticky
Stage mode was being abandoned whenever the browser dropped fullscreen
involuntarily (iOS edge swipe, native confirm dialog, etc.). The
fullscreenchange listener called render(false) which removed the
body.stage-mode class, making the phone fall back to the regular UI.
What changed
- Extracted stage-mode logic into its own ESM module:
static/phone-v3/stage-mode-controller.js - Re-arms fullscreen with debounce on involuntary exit
- Tracks an explicit
userExitedflag so the re-arm path does not fight an explicitexit()call - Falls back to inline legacy behavior when the controller script is not loaded (preserves existing unit tests that load
controls.jsin avm.runInNewContextsandbox)
Tests
- 6 new tests for the stage-mode controller, runnable under
node --testwithout jsdom - 4 new stress tests for the LFO/stutter host motor (60s @ 5Hz, concurrent LFO+stutter, CPU budget, live config change, endurance)
Asset
Ableton-RC-Surface-0.5.8.3.ablx — single .ablx install via Extensions Manager.