c31cf11767
new Audio().play() after an async await loses the user gesture context and is silently blocked. Creating AudioContext synchronously before the fetch preserves the permission, then decode/play through it after the await. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>