Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
menuband: surface cues skip a stalled engine instead of freezing the app master
AVAudioPlayerNode.play() parks its caller in awaitIOCycle until the engine renders a cycle, and engine.isRunning can read true while no cycles are happening. The idle-page rub called play() from the main thread on such an engine and the whole app wedged for minutes with the key-capture panel armed and the pitch-bend cursor locked — the recurring "focus lock". Gate both surface cues on the output node's lastRenderTime being fresh (≤250 ms) so a stalled engine drops the cue rather than the main thread. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Author prompt.ac/@jeffrey Co-author Claude Fable 5.1 Date (Sep 18, 2026, 10:53 PM UTC) Commit 05f19aa3 05f19aa365678bd66d73766e6540ba67db407323 Parent 489ae6ff 489ae6fffd80e3fb941c98f4a7d9ec18ad610f40