From 7ba92c81e95b398c3da2254f041966a71f9842e4 Mon Sep 17 00:00:00 2001 From: empty Date: Sun, 25 Jan 2026 22:35:50 +0800 Subject: [PATCH] fix: add audio unlock overlay for browser autoplay policy - Add click-to-unlock overlay on big screen - Play silent audio to unlock browser audio context - Show unlock prompt before allowing audio playback Co-Authored-By: Claude Opus 4.5 --- packages/client-screen/src/App.vue | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/packages/client-screen/src/App.vue b/packages/client-screen/src/App.vue index 0a900f2..907b474 100644 --- a/packages/client-screen/src/App.vue +++ b/packages/client-screen/src/App.vue @@ -7,6 +7,7 @@ const router = useRouter(); const route = useRoute(); const displayStore = useDisplayStore(); const isFullscreen = ref(false); +const audioUnlocked = ref(false); // Mode to route mapping const modeRoutes: Record = { @@ -16,6 +17,20 @@ const modeRoutes: Record = { 'results': '/screen/results', }; +// Unlock audio playback (required by browser autoplay policy) +function unlockAudio() { + // Create and play a silent audio to unlock + const silentAudio = new Audio('data:audio/mp3;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4Ljc2LjEwMAAAAAAAAAAAAAAA//tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU4LjEzAAAAAAAAAAAAAAAAJAAAAAAAAAAAAYYoRwmHAAAAAAD/+1DEAAAGAAGn9AAAIgAANP8AAABM'); + silentAudio.play().then(() => { + audioUnlocked.value = true; + console.log('[App] Audio unlocked'); + }).catch(() => { + // Still mark as unlocked - user interaction happened + audioUnlocked.value = true; + console.log('[App] Audio unlock attempted'); + }); +} + function toggleFullscreen() { if (!document.fullscreenElement) { document.documentElement.requestFullscreen(); @@ -58,6 +73,14 @@ onUnmounted(() => {