docs(phase-10): record visualizer tuning landing — eight-knob controls, server-only smoothing, spec shipped

This commit is contained in:
daniel-c-harvey
2026-06-17 06:04:01 -04:00
parent b9f06bb7cd
commit 76060f60a8
3 changed files with 18 additions and 4 deletions
+14
View File
@@ -6,6 +6,20 @@ Newest entries at the top. Group by phase/wave header (mirroring `PLAN.md` / `CM
---
## Phase 10 — Mix Visualizer Reframe: Waves R1R4 (Lava tuning + eight-knob controls)
**Landed:** 2026-06-17 on dev.
- **What:** A major reframe of the Mix visualizer's effects, controls, and color model, built on the landed WebGL2 Phase 10 renderer infrastructure. Four waves:
- **Wave R1** — removed the static noise/frost texture (Daniel: "makes the screen look dirty"); implemented dynamic footer-height clip so the lava stops cleanly above the player bar; redrawn `DDIcons.LavaLamp` to the classic 1970s silhouette (wide truncated-cone base, bulbous→roundedly-pointed teardrop glass body, small cone cap — navy fluid + moss blobs, body `currentColor`).
- **Wave R2** — CPU-side per-frame physics step (~1632 Lagrangian wax blobs: position/velocity/temperature/radius), uploaded as uniforms each frame; `smin` SDF metaball render producing a **flat, coalescing fluid** (not blobs with radial hotspots); energy-coupled dynamics (high heat → many small turbulent bubbles; low heat → fewer large calm masses); 2D elastic collision on both blob↔waveform and blob↔blob pairs; collision strength knob sweeping from genuine soft mush to a high-elasticity upward-and-outward throw; waveform collision always on regardless of heat. Loudness profile smoothed with a **~50 ms envelope-follower at preprocessing only** (`RmsLoudnessAlgorithm.cs`); there is no decode-time smoothing (`smoothDatum` was removed). Existing vault mixes gain the smoothing only after server-side reprocessing — they do not benefit automatically. Ribbon rendered with smootherstep sinusoid reconstruction.
- **Wave R3** — replaced HSL `mixHsl`/`vivify` color with OKLab interpolation (structural fix for the cyan excursion artifact); three combined gradient motions: (1) A/B anchor rotation among three theme colors at the gradient-rotation-speed rate; (2) per-segment sinusoidal variation keyed to mix-time so colors travel with the segment as it scrolls; (3) per-bar gradient curve shifts with scroll height (mostly A at bottom → mostly B at top). Static noise texture removed. One source of truth (`DeepDrftPalettes`), no hardcoded hexes.
- **Wave R4**`MixVisualizerControlState` widened from four properties to **eight**: `ScrollSpeed`, `GradientRotationSpeed`, `LavaGravity`, `LavaHeat`, **`FluidAmount`** (replaces the former `BlobDensity`), **`FluidViscosity`** (new — cohesion / coalescence control, the second half of the bubbles split), `CollisionStrength`, `WaveformWidth`. `MixVisualizerControls` now renders **eight** `RadialKnob`s; the `Visible` parameter `@if`-gates the knob band while the container holds a reserved min-height so content below never pops when the lamp toggles. Scroll-speed knob range tuned to 60110% band; gravity 075%; heat +20% at top; width default 50% / range 1095%. The scaffold's `TopRowCenter` slot (added in the prior reframe) carries the controls in-flow between the back link and lava-lamp toggle.
- **Why:** Daniel tested the Phase 10 effects end-to-end and rejected the visual result: lava read as "giant disconnected circles," colors drifted to cyan (HSL arc artifact), waveform and lava read as two unrelated layers. The diagnosis was that these were structural failures of the prior model (too few scripted blobs with no physics; HSL hue-arc through cyan), not tuning misses. The reframe replaced the model with CPU-physics wax blobs + OKLab gradients, fixing both root causes.
- **Shape:** `DeepDrftContent/Processors/RmsLoudnessAlgorithm.cs` — ~50 ms envelope-follower smoothing added at preprocessing (server-side only; no decode-time smoothing). `DeepDrftPublic/Interop/visualizer/MixVisualizer.ts` — smootherstep sinusoid ribbon reconstruction; wax-blob physics loop; OKLab gradient; footer-clip; noise texture removed. `DeepDrftPublic.Client/Services/MixVisualizerControlState.cs` — widened to eight properties (`FluidAmount` + `FluidViscosity` replace `BlobDensity`; `WaveformWidth` range/default updated). `DeepDrftPublic.Client/Controls/MixVisualizerControls.razor` — eight `RadialKnob`s, `Visible` parameter gates knob band via `@if` while container holds reserved height. `DeepDrftShared.Client/Common/DDIcons.cs``LavaLamp` glyph redrawn. Full design, acceptance criteria, and phasing: `product-notes/phase-10-mix-visualizer-lava-reframe.md`.
---
## Phase 11 — Public Site Enhancements (complete — all tracks 11.A11.H landed 2026-06-16)
### 11.H — release `EntryKey` identifiers (terminal public-site wave)
+2 -2
View File
@@ -10,7 +10,7 @@ already-shipped **Session detail** hero-overlay composition. This consolidates t
meta into one overlaid block, frees vertical room for the lava-lamp visualizer behind the content, and
cleans up the aesthetic so the Mix page reads as a member of the same design family as Sessions.
The Mix visualizer + seven-knob controls layout landed in the Phase 10 reframe (`TopRowCenter` slot,
The Mix visualizer + eight-knob controls layout landed in the Phase 10 reframe (`TopRowCenter` slot,
in-flow controls container between the back link and the lava-lamp) **must be preserved unchanged**
this rework touches only what sits *below* that top row.
@@ -314,7 +314,7 @@ interaction (§7).
soft-secondary gradient) with metadata still legibly overlaid.
5. **Legibility.** The darkening shim keeps overlaid text readable over light and dark cover art, in both
light and dark theme.
6. **Visualizer/controls preserved.** The lava-lamp toggle still opens the in-flow seven-knob controls
6. **Visualizer/controls preserved.** The lava-lamp toggle still opens the in-flow eight-knob controls
container between the back link and the lamp; it still grows in place, still wraps on narrow widths,
and the lava-lamp glyph still swaps filled/outline. No regression to the Phase 10 layout.
7. **More canvas for the visualizer.** The content block below the controls row is shorter than before
@@ -1,7 +1,7 @@
# Mix Visualizer — Phase 10 Reframe (Lava) — Design Spec
Status: **design-complete, implementation-ready.** Author: product-designer. Date: 2026-06-16.
**No code has been written by this doc.**
Status: **shipped** (Waves R1R4 merged to dev, 2026-06-17). Author: product-designer. Date: 2026-06-16.
See `COMPLETED.md` for the completion record.
This is a **major reframe of the Mix visualizer's effects layer, controls, and color model**, folded
**under the still-open Phase 10** (the WebGL2 renderer) as a **reframe wave-set (Waves R1R4)**