From 1cf39f9b13a489c4cf61335c15b80c9ec9837f6c Mon Sep 17 00:00:00 2001 From: Jose Luis Date: Sat, 21 Mar 2026 17:28:55 +0100 Subject: [PATCH] fix: unlock audio context on first user interaction UI sounds weren't playing until the user hit Play because Tone.js AudioContext was suspended. Now Tone.start() is called on the first pointerdown or keydown event, so UI sounds work immediately. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/main.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main.jsx b/src/main.jsx index c7427ce..2ca5599 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -16,6 +16,18 @@ function Root() { createRoot(document.getElementById('root')).render(); +// Unlock audio context on first user interaction +import * as Tone from 'tone'; +const unlockAudio = () => { + if (Tone.context.state !== 'running') { + Tone.start().catch(() => {}); + } + document.removeEventListener('pointerdown', unlockAudio); + document.removeEventListener('keydown', unlockAudio); +}; +document.addEventListener('pointerdown', unlockAudio); +document.addEventListener('keydown', unlockAudio); + // Register service worker for PWA if ('serviceWorker' in navigator) { window.addEventListener('load', () => {