diff --git a/apps/dashboard/src/lib/components/MemoryCinema.svelte b/apps/dashboard/src/lib/components/MemoryCinema.svelte index f637e06..7ae4084 100644 --- a/apps/dashboard/src/lib/components/MemoryCinema.svelte +++ b/apps/dashboard/src/lib/components/MemoryCinema.svelte @@ -53,6 +53,10 @@ let webgpuActive = $state(false); let voiceOn = $state(false); let localAiOn = $state(false); + // Hide all UI chrome (top bar + captions) for a clean demo capture. Toggle + // with H. Default on; flip to off to record the pure storm with nothing + // blocking the visuals. + let cinemaChrome = $state(true); let statusLine = $state(''); // Auteur (director) state surfaced in the overlay. let directorNote = $state(''); // the current shot's "why" (cites a real metric) @@ -349,12 +353,25 @@ if (e.key === 'Escape') { e.preventDefault(); close(); + } else if (e.key === 'h' || e.key === 'H') { + // Toggle UI chrome for a clean demo capture (hide top bar + captions). + e.preventDefault(); + cinemaChrome = !cinemaChrome; } } $effect(() => { if (open && closeBtn) closeBtn.focus(); }); + // Tag
while Cinema is open so the graph page can hide its bottom-stats + // pill (which lives behind us in a separate stacking context). Cleaned up when + // Cinema closes or the component unmounts. + $effect(() => { + if (typeof document === 'undefined') return; + document.body.classList.toggle('cinema-open', open); + return () => document.body.classList.remove('cinema-open'); + }); + // Opt-in on-device narration. Lazy-loads @huggingface/transformers ONLY when // the user enables "Local AI" and launches — never downloads a model // unprompted. Runs a small instruction model in-browser on WebGPU to rewrite @@ -427,6 +444,15 @@ > + + {#if !cinemaChrome} + + {/if} + + {#if cinemaChrome}