docs(plan): mark Phase 20 Theater Mode scoped after sign-off

This commit is contained in:
daniel-c-harvey
2026-06-20 21:40:56 -04:00
parent 021801999c
commit 835fb71337
2 changed files with 43 additions and 54 deletions
+10 -13
View File
@@ -462,10 +462,10 @@ across all three; the Session-doesn't-use-the-scaffold asymmetry is the key cons
works around.
**Architectural spine.** **One boolean, multiple observers** (memory: *one source, multiple views*).
Recommended home: **widen `WaveformVisualizerControlState` with a `TheaterMode` flag** (Option A — the
object is already scoped, session-persistent, observed via its `Changed` event, gated on the same
State home (OQ3, resolved): **widen `WaveformVisualizerControlState` with a `TheaterMode` flag**
the object is already scoped, session-persistent, observed via its `Changed` event, gated on the same
`LavaEnabled || WaveformEnabled` the Theater button reads, and *explicitly designed to widen by adding a
field + default*); the SRP-purist alternative is a dedicated `TheaterModeState` holder (Option B). The
field + default*. The
**detail pages own only the content `@if`** (each page gates the fragments it renders, so the scaffold
stays Theater-unaware and Session is covered the same way); the **player bar owns only the enlargement**
(reads `CurrentTrack.Release` — `Title`/`ImagePath`/`EntryKey`/`Medium`, all already on the DTO — and
@@ -482,17 +482,14 @@ existing theme-aware aliases (`--deepdrft-page-surface`/`-text`/`-text-muted`),
visible only when `LavaEnabled || WaveformEnabled`, disabled until interactive, with an on/off active
state. Material `Theaters` glyph for v1 (bespoke `DDIcons` deferred — Phase 17 OQ7 precedent).
**Open questions for Daniel (spec §9) — none block a first cut, but several are genuine product calls:**
(OQ1) Theater icon — Material `Theaters` vs. bespoke (recommend Material now); (OQ2) bar enlargement when
nothing is playing — page's release vs. playing-release-only (recommend playing-only, keeps the seam
clean); (OQ3) state home — Option A widen vs. Option B dedicated holder; (OQ4) back link stays in Theater
(recommend keep — it's navigation chrome); (OQ5) persistence — session-scoped/reset-on-reload vs. cookie
(recommend session-scoped, matches visualizer-state precedent); (OQ6) Theater on the home hero/NowPlaying
panel too, or detail-pages-only (recommend detail-pages-only for v1, as scoped).
**Open questions — all six resolved (Daniel, 2026-06-20; spec §9).** OQ1: Material `Theaters` glyph for
v1. OQ2: playing-release only — bar stays a pure function of player state. OQ3: Option A — widen
`WaveformVisualizerControlState` with a `TheaterMode` flag. OQ4: top action row (back, lava, theater)
stays visible — it's controls, not content. OQ5: session-scoped, resets to OFF on fresh page load.
OQ6: detail-pages-only for v1; no Theater affordance on the home hero.
**Status: proposed — awaiting Daniel sign-off on §9 before scoping waves.** Cold-start once signed off;
no dependency on any in-flight phase (Phases 11/16/17 — the player bar, queue, and visualizer it builds
on — are all complete).
**Status: scoped and approved — Phase 20, Wave 1.** Cold-start; no dependency on any in-flight phase
(Phases 11/16/17 — the player bar, queue, and visualizer it builds on — are all complete).
---