docs(phase-15): record polish round 2; mark slider decision superseded

Note the five round-2 changes in COMPLETED.md; mark §8 + the §2/§11 slider references superseded (scroll reverted to RadialKnob).
This commit is contained in:
daniel-c-harvey
2026-06-17 18:19:32 -04:00
parent 6303b4f62c
commit 3f83e0f11c
2 changed files with 8 additions and 2 deletions
+2
View File
@@ -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. **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) ## Phase 14 — CMS Releases Consolidation (landed 2026-06-17)
@@ -76,7 +76,7 @@ change; the centering and chrome are the polish around it.
- A deterministic three-row layout with conditional visibility (§3). - A deterministic three-row layout with conditional visibility (§3).
- Re-primitiving the popover host to a **screen-centered, tinted modal** overlay (§4). - Re-primitiving the popover host to a **screen-centered, tinted modal** overlay (§4).
- NowPlayingCard-matched panel chrome (§5). - 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). - Per-control playful tooltips (§7) and the icon-colour change to light (§9).
**Out of scope / unchanged.** **Out of scope / unchanged.**
@@ -334,6 +334,10 @@ don't collapse one into the other.
## 8. The one widget-type change: scroll/zoom → slider ## 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 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 knob.** Use `MudSlider` (already in the codebase — `VolumeZone`, `WaveformSeeker` use it). Bind
`Value`/`ValueChanged` to `ScrollSpeed` through the same `OnScrollSpeedChanged``NotifyChanged()` handler `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. 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 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. 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). controls are knobs; lava/waveform are **iconographic lamp toggles** (lit/unlit).
7. **Colour principle (green = interactive, light = non-interactive):** knob caption icons render **light**; 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 "LAVA:" / "WAVE:" section labels render **light**; knob arcs/pointers, the scroll slider, and the lamp