diff --git a/app/src/components/AppFrame/AppFrame.tsx b/app/src/components/AppFrame/AppFrame.tsx index 9c08fb88..8e6c42af 100644 --- a/app/src/components/AppFrame/AppFrame.tsx +++ b/app/src/components/AppFrame/AppFrame.tsx @@ -1,5 +1,6 @@ import { useRouterState } from '@tanstack/react-router'; import { TitleBarDragRegion } from '@/components/TitleBarDragRegion'; +import { AudioKeepAlive } from '@/components/AudioPlayer/AudioKeepAlive'; import { AudioPlayer } from '@/components/AudioPlayer/AudioPlayer'; import { StoryTrackEditor } from '@/components/StoriesTab/StoryTrackEditor'; import { TOP_SAFE_AREA_PADDING } from '@/lib/constants/ui'; @@ -26,6 +27,7 @@ export function AppFrame({ children }: AppFrameProps) { className={cn('h-screen bg-background flex flex-col overflow-hidden', TOP_SAFE_AREA_PADDING)} > + {children} {showTrackEditor ? ( diff --git a/app/src/components/AudioPlayer/AudioKeepAlive.tsx b/app/src/components/AudioPlayer/AudioKeepAlive.tsx new file mode 100644 index 00000000..f86cc4a1 --- /dev/null +++ b/app/src/components/AudioPlayer/AudioKeepAlive.tsx @@ -0,0 +1,85 @@ +import { useEffect, useRef } from 'react'; +import { debug } from '@/lib/utils/debug'; + +// WKWebView tears down the app's CoreAudio output when idle for long enough, +// and a JS-level reload (cmd+R) does NOT restore it — only relaunching the +// Tauri app does. Keeping a silent