From 3f83e0f11c2d7679a46acae4cd00d23c648f381c Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Wed, 17 Jun 2026 18:19:32 -0400 Subject: [PATCH] docs(phase-15): record polish round 2; mark slider decision superseded MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note the five round-2 changes in COMPLETED.md; mark §8 + the §2/§11 slider references superseded (scroll reverted to RadialKnob). --- COMPLETED.md | 2 ++ .../phase-15-visualizer-controls-enhancements.md | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/COMPLETED.md b/COMPLETED.md index a2319ef..610c31f 100644 --- a/COMPLETED.md +++ b/COMPLETED.md @@ -25,6 +25,8 @@ Newest entries at the top. Group by phase/wave header (mirroring `PLAN.md` / `CM **Post-landing fixes (2026-06-17):** Seven defects found during smoke-testing were remediated in a follow-up round on dev: (1) new `--deepdrft-panel-ground` CSS token so the blue slider reads against the panel background; (2) drag-scrollbar removed + body-scroll locked while the modal is open; (3) knob caption icons forced light so lamp toggles stay green; (4) WAVE-row slider vertically centered; (5) **site-wide `RadialKnob` pointer-capture fix** — drag no longer sticks when the cursor leaves the browser window, implemented via real `setPointerCapture` / `releasePointerCapture` (benefits every `RadialKnob` on the site, not just this panel); (6) modal scrim alpha softened (0.3 → 0.15); (7) modal overlay z-index raised above the header and player-dock footer. Fix #5 introduced a **new TypeScript interop module in `DeepDrftShared.Client`**: `Interop/knob/knob.ts` (exports `capturePointer`/`releasePointer`), compiled to `wwwroot/js/knob/knob.js` via `Microsoft.TypeScript.MSBuild`, lazy-imported by `RadialKnob.razor` as `_content/DeepDrftShared.Client/js/knob/knob.js` — following the existing `parallax.ts` precedent in the same RCL. +**Polish round 2 (2026-06-17):** Five further UI changes from Daniel's second review: (1) panel ground darkened further (`--deepdrft-panel-ground` `#1e2028` → `#1a1c22`); (2) **WAVE-row scroll/zoom control reverted from `MudSlider` back to a `RadialKnob`** — Daniel's explicit call, reversing the §8 slider decision; the scroll control is now a knob like the other dials; (3) **waveform toggle given its own distinct icon** — new `DDIcons.Waveform`/`WaveformFilled` six-bar sound-wave glyph, so the waveform toggle and lava toggle each have a unique visual identity (lava toggle keeps the lamp); (4) **strong active-state styling on both toggles** — green-accent filled chip + ring when ON, dimmed when OFF, making subsystem state unmistakable at a glance; (5) `WaveformVisualizerControlPopover.razor` in-source comment refreshed to describe the `setPointerCapture` mechanism. + --- ## Phase 14 — CMS Releases Consolidation (landed 2026-06-17) diff --git a/product-notes/phase-15-visualizer-controls-enhancements.md b/product-notes/phase-15-visualizer-controls-enhancements.md index 39dc079..91f2336 100644 --- a/product-notes/phase-15-visualizer-controls-enhancements.md +++ b/product-notes/phase-15-visualizer-controls-enhancements.md @@ -76,7 +76,7 @@ change; the centering and chrome are the polish around it. - A deterministic three-row layout with conditional visibility (§3). - Re-primitiving the popover host to a **screen-centered, tinted modal** overlay (§4). - NowPlayingCard-matched panel chrome (§5). -- One control changes widget type: **scroll/zoom becomes a slider, not a knob** (§3, §8). +- One control changes widget type: **scroll/zoom becomes a slider, not a knob** (§3, §8). *(superseded 2026-06-17 — reverted to a RadialKnob; see §8)* - Per-control playful tooltips (§7) and the icon-colour change to light (§9). **Out of scope / unchanged.** @@ -334,6 +334,10 @@ don't collapse one into the other. ## 8. The one widget-type change: scroll/zoom → slider +> **SUPERSEDED (2026-06-17) — polish round 2.** Daniel reversed this decision after the initial landing: +> the WAVE-row scroll/zoom control was reverted from `MudSlider` back to a `RadialKnob`. The scroll +> control is now a knob like the other dials. The rationale below is the historical design record. + Today all eight controls are `RadialKnob`s. Daniel wants the WAVE-row scroll/zoom to be a **slider, not a knob.** Use `MudSlider` (already in the codebase — `VolumeZone`, `WaveformSeeker` use it). Bind `Value`/`ValueChanged` to `ScrollSpeed` through the same `OnScrollSpeedChanged` → `NotifyChanged()` handler @@ -403,7 +407,7 @@ Phase-12, this is moot; if it survives, align it to light too for consistency. F far-right of row 1 and does not reflow when collisions hides; both-off leaves toggles + color only. 5. **Chrome:** panel has square corners, lighter-navy ground, thin light border — visibly matching NowPlayingCard's treatment. All colours token-sourced; no new hardcoded hex. -6. **Widget types:** scroll/zoom is a slider bound to `ScrollSpeed` alone; the other seven continuous +6. **Widget types:** scroll/zoom is a slider bound to `ScrollSpeed` alone *(superseded 2026-06-17 — reverted to a RadialKnob; see §8)*; the other seven continuous controls are knobs; lava/waveform are **iconographic lamp toggles** (lit/unlit). 7. **Colour principle (green = interactive, light = non-interactive):** knob caption icons render **light**; "LAVA:" / "WAVE:" section labels render **light**; knob arcs/pointers, the scroll slider, and the lamp