docs(s-view): spec the r11 Sample-face recomposition (knob deck, curve popup, full-width hero) for Wave B

Adds S-VIEW-11/12/13 to PLAN, r11 addendum, and forks R11-F1 (window default height) + R11-F2 (Zone-panel knob parity) for Daniel.
This commit is contained in:
2026-07-27 18:25:32 -04:00
parent e2bd4f4351
commit a4e33b1c04
3 changed files with 274 additions and 9 deletions
+47 -5
View File
@@ -210,6 +210,47 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
- [x] **S-VIEW-1 through S-VIEW-10** — all landed (Wave 1 core + Wave 2 shell + Wave 3 velocity-curve editor UI). See `COMPLETED.md`
§S-VIEW for the full entry set.
### Phase S editor Wave B — Sample-face recomposition (r11; Daniel, 2026-07-27)
> Daniel's post-landing DAW pass on the S-VIEW editor: **all linear sliders → small radial
> knobs** grouped into a fenced knob deck (envelope controls grouped as a unit); the **mode
> toggles compact**, not full-width; the **inline velocity-curve box → a miniature curve
> preview button + full-size popup editor** (right-click deletes a node in the popup); the
> **hero waveform full-width**. A pure view recomposition — zero engine/state/persistence
> change, VST3 class UID unchanged. Authoritative layout spec: **CONTEXT.md §S-VIEW → "The
> Sample-face recomposition (r11)"** (band order, group taxonomy, cell metrics, popup
> geometry, inventory contract — nothing silently dropped). Product framing:
> `docs/product/midi-playback.md` §Addendum r11. **GATED on the knob-primitive track**
> (separate, in flight) — S-VIEW-11/12 consume the primitive, they do not build it.
> All drawing through the L1 kit; all layout/hit-test in pure geometry modules.
- [ ] **S-VIEW-11 — the knob deck.** Pure **`knob_deck`** (group boxes + caption rows +
compact-toggle rects + knob-cell rects + deterministic group wrap + hit-test; mirror of
`action_bar`/`param_slider`; unit-tested) + shell: the Sample control strip becomes three
fenced groups — **AMP ENVELOPE** (Gate|Trigger caption toggle; Attack·Hold·Decay·Sustain·
Release or Fade In·Length %·Fade Out knobs, 5-cell width reserved so mode flips never
reflow), **PITCH** (Varisp|Preserve caption toggle; Key Track knob), **PITCH ENV** (Off|On
caption toggle; P.Attack·P.Decay·P.Depth knobs, Disabled-not-hidden when Off). Slider rows
+ full-width toggles retire from the Sample face; the hero becomes the elastic band
(bottom-anchored fixed deck). Preview-velocity slider becomes a cluster knob cell (same
persisted seam).
- [ ] **S-VIEW-12 — curve popup + full-width hero.** Pure **`curve_popup`** (sheet/close/box
geometry + outside-sheet dismissal test; mirror of `overflow_menu`; unit-tested) + shell:
the inline velocity-curve box leaves the hero band (**hero runs full width**, S11 markers +
envelope overlay unchanged); a **28×28 miniature curve preview button** lands immediately
right of the preview-velocity knob (live miniature trace; Active while its popup is open);
click opens the **centered popup** hosting the full-size curve editor — all landed
interactions preserved (drag, click-add, Alt-click delete, drag-off delete) **plus NEW
right-click node delete** (endpoint-guarded, commits like Alt-click). Dismiss: Close ×,
outside-click (no drag in flight), Esc.
- [ ] **S-VIEW-13 — Zone-panel parity (gated on fork R11-F2).** The Zone param panel adopts
the same knob deck + curve-preview-button/popup; retires `param_slider`'s slider rows
outright (one control grammar on both surfaces of the one storage site).
**Open forks (Daniel's to call before Wave B builds)** — recorded in the CONTEXT.md §S-VIEW
fork ledger: **R11-F1** hero height vs. default window (lean: elastic hero, keep 840×620);
**R11-F2** Zone-panel parity (lean: yes — one grammar).
### Phase S editor prerequisites — routed to staff-engineer (bug + default; NOT design forks)
> Framed in CONTEXT.md §S-VIEW; both are functional prerequisites with the SDK swept and no
@@ -217,11 +258,12 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
> **S-VIEW-BUG-1 and S-VIEW-SIZE-1 have both landed (Wave 1) — see `COMPLETED.md`.**
### Phase S editor redesign — forks (Daniel's to call)
*(All forks settled: S-VIEW-F1 and S-VIEW-F2 SETTLED 2026-07-27 — folded into S-VIEW-4 / S-VIEW-3.
F1: preview velocity persists via envelope-v6 `ComponentState`. F2: envelope nodes are draggable
via the pure `envelope_edit` module. R10-F1 SETTLED 2026-07-27 — Option A flat y=1, folded into
S-VIEW-9. S-VIEW-F3 SETTLED — full-window overlay, implemented as Browse renders as a full-window
modal over Sample (landed in S-VIEW-1/S-VIEW-5). No open forks remain.)*
*(r9/r10 forks all settled: S-VIEW-F1 and S-VIEW-F2 SETTLED 2026-07-27 — folded into S-VIEW-4 /
S-VIEW-3. F1: preview velocity persists via envelope-v6 `ComponentState`. F2: envelope nodes are
draggable via the pure `envelope_edit` module. R10-F1 SETTLED 2026-07-27 — Option A flat y=1,
folded into S-VIEW-9. S-VIEW-F3 SETTLED — full-window overlay, implemented as Browse renders as a
full-window modal over Sample (landed in S-VIEW-1/S-VIEW-5). **r11 opens two new forks — R11-F1
(hero height vs. default window) and R11-F2 (Zone-panel parity) — see the Wave B block above.**)*
---