From 062a283de4955f0647b8817164013c4a4fde9a15 Mon Sep 17 00:00:00 2001 From: BenStullsBets Date: Fri, 26 Jun 2026 07:01:06 -0700 Subject: [PATCH] docs(plan): audio+video separated Visual/Audio controls implementation plan Session 0020. Anchored on the audio-video-separated-controls Solution Design. Scope: build into the current single-page simulator (simulator-first directive); reframe the unbuilt control-surface spec on paper. 10 tasks, all testing tiers. Co-Authored-By: Claude Opus 4.8 (1M context) --- ...26-06-26-audio-video-separated-controls.md | 1338 +++++++++++++++++ 1 file changed, 1338 insertions(+) create mode 100644 docs/superpowers/plans/2026-06-26-audio-video-separated-controls.md diff --git a/docs/superpowers/plans/2026-06-26-audio-video-separated-controls.md b/docs/superpowers/plans/2026-06-26-audio-video-separated-controls.md new file mode 100644 index 0000000..942a379 --- /dev/null +++ b/docs/superpowers/plans/2026-06-26-audio-video-separated-controls.md @@ -0,0 +1,1338 @@ +# Audio + Video — separated Visual & Audio controls — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Split the bundled 7-way **Content** selector into two orthogonal controls — **Visual** (on/off) × **Audio** (off / soundtrack / white-noise) — give the experience real sound (per-altitude soundtracks that follow the Altitude dial + a synthesized white-noise bed), and reframe the still-unbuilt networked-control-surface spec to match. + +**Architecture:** Built into the **current single-page simulator** (FastAPI + `simulator/static/index.html`), not the unbuilt SSE/`/remote` control surface — per the standing *simulator-first* directive, the networked surface is "v1 hardware" and deferred. A pure Python resolver (`player/audio.py`) maps `(visual, audio source, current altitude)` → `render.video.shown` + `render.audio.{source,url}`; `/api/alteration` resolves it **server-side** from the request's `altitude_index`; the browser gains an A/B `