From 85eac37912d63a3c1dfda15582525cd2b60c77f9 Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Mon, 27 Jul 2026 12:50:00 -0400 Subject: [PATCH] =?UTF-8?q?docs:=20close=20out=20Phase=20L=20L3=20?= =?UTF-8?q?=E2=80=94=20archive=20to=20COMPLETED,=20mark=20landed=20in=20de?= =?UTF-8?q?sign-language=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L3 (VST editor + embed-strip restyle) is on dev. Append its COMPLETED entry and flip visual-design-language.md §5.3/5.4 from GATED to landed / Phase L complete. PLAN.md + CONTEXT.md L3 edits already landed via the S-VIEW commit. --- COMPLETED.md | 51 ++++++++++++ docs/product/visual-design-language.md | 107 +++++++++---------------- 2 files changed, 91 insertions(+), 67 deletions(-) diff --git a/COMPLETED.md b/COMPLETED.md index fdf0ba2..d671594 100644 --- a/COMPLETED.md +++ b/COMPLETED.md @@ -1484,6 +1484,57 @@ placement behavior; the "capture ≠ placement" principle is untouched. --- +## L3 — VST editor + embed-strip restyle +**Goal:** Bring the ReaSampler 9000 VST editor (`IPlugView` LICE surface, +`reasampler_editor.cpp`) and the S6 embed strip (`reasampler_embed.cpp`) up to the +settled-and-revised **B + three-accent pastel** look via the L1 kit: kit cached-font +`text()` (the kit's current face — no font change), kit component draws, the +**REAPER-grey neutrals** (`bg/base #2b2b2b` / `bg/panel #333333` / `bg/cell #3a3a3a`) +with the **three pastel accents** (primary lime / secondary teal / tertiary purple), the +**pastel spectral keyboard strip + zone bars** (active zone lifts to `accent/primary` + +a static glow) as the signature surface, and hover/pressed/drag interaction states +throughout. Merged as `c53683e`. **L3 was the last remaining Phase L point — Phase L +is now complete (L1, L2, L3, L4, L5, L6, L7 all landed).** +**Verify (in DAW):** the VST editor + embed strip render in the settled B + three-accent +pastel language through the L1 kit — kit AA cached-font text, gradient/rounded kit +components, the pastel spectral keyboard strip, working hover/pressed/drag; the VST3 +class UID is unchanged (a visual refresh is not a compat event). + +- [x] Route the VST editor's + embed strip's text through the kit's cached-font + `text()`; retire their raw GDI `DrawTextA` path (retired in both shells). +- [x] Retire the shells' **local pre-L1 palette** — the `kColBackground`/`kColCardBg`/ + `kColThumb`/… forest-green-on-charcoal constants block in `reasampler_editor.cpp` + (and the mirrored constants in `reasampler_embed.cpp`) — and draw every surface + through the L1 `theme` roles. One kit, one look; two palettes collapsed to one. +- [x] Restyle the editor + embed components through the kit (capture-first browser + search/tabs/thumbnails, channel toggles, ADSR + pitch sliders, Varispeed/Preserve mode + toggles, zone bars, list rows, waveform + start/loop markers, segmented controls) in + the B (Neon Console) palette with hover/pressed/drag states throughout. +- [x] Apply **Direction C's pastel spectral treatment** to the keyboard strip + zone bars: + hue-mapped zones as a pastel sweep anchored on the three accents; active zone lifts to + `accent/primary` + a static glow (no animation); waveform + loop/start markers drawn + through `drawWaveform` + `warn`/accent marker roles; VST3 class UID unchanged. + +**Notes/decisions:** +- **Full restyle, not a born-in-kit no-op.** The Phase S surfaces (`reasampler_editor.cpp` + + `reasampler_embed.cpp`) arrived on dev drawing flat `LICE_FillRect` blocks + raw GDI + `DrawTextA`, off a local pre-L1 forest-green palette (`kColBackground` etc.) — the + coordination contract's "born in the kit" branch did not occur. L3 performed the full + restyle and reconciled the two palettes into one. +- **Shell-side only.** All `src/vst/` UI geometry modules (`editor_geometry`, + `keyboard_strip`, `waveform_view`, `capture_browser`, `param_slider`, `browser_scroll`, + `embed_strip`) are pure geometry/hit-test — zero LICE, zero draw. L3 touched only the + two draw shells; no geometry rework was needed. +- **Beta title band — textual-only distinction (Daniel, 2026-07-27).** The S18 beta + channel title band gets no distinct visual accent; L3 restyles it in the standard B + pastel palette and the beta-vs-stable distinction stays purely textual (the + channel-derived plugin name via `app_version`, as before). No channel-specific accent + color. Closes the one open fork from the L3 readiness review. +- **VST3 class UID unchanged.** A visual refresh is not a compat event; RT/`process` + path untouched; pure geometry modules remained pure throughout. + +--- + # Phase S — MIDI-playback instrument (native VST3 sampler; a second build artifact) > **Landed on dev (merged 2026-07-27); DAW verification pending Daniel's smoke test.** diff --git a/docs/product/visual-design-language.md b/docs/product/visual-design-language.md index 681c659..b6fc8a1 100644 --- a/docs/product/visual-design-language.md +++ b/docs/product/visual-design-language.md @@ -582,86 +582,59 @@ draw it. **Sequence L2 AFTER M11 merges to dev** — L2 must inventory M11's *actual* landed buttons, not a forecast of them. If L2 starts before M11 lands, it designs against a moving target. -### 5.3 `L3` — VST editor + embed-strip restyle (GATED on Phase S landing on dev) +### 5.3 `L3` — VST editor + embed-strip restyle [LANDED] -The ReaSampler 9000 VST editor (`IPlugView` LICE surface, `reasampler_editor.cpp`) and the -S6 embed strip (`reasampler_embed.cpp`) get the full kit treatment: kit cached-font text -(§3.1 — the kit's current face, no bundled font), kit component draws, the **B palette with -the three-accent pastel system** (primary lime / secondary teal / tertiary purple), the -**pastel spectral keyboard strip** as the signature surface, hover/pressed/drag states -everywhere. The editor's landed component set (verified on the phase-s worktree) is broader -than an early "editor + keyboard strip" sketch: a **capture-first browser** (search box + -tabs + sample thumbnails, S10), **channel mono/stereo toggles** (S7), a **waveform pane with -start + loop markers** (S11), the **keyboard strip + zone bars** (S10/S10-Z), and **ADSR + -pitch sliders + Trigger/Gate & Varispeed/Preserve mode toggles** (S12/S15/S16) — every one of -these is on the restyle surface. +**L3 has landed (merged `c53683e`, 2026-07-27). Phase L is now complete (L1–L7 all +landed).** The ReaSampler 9000 VST editor (`IPlugView` LICE surface, +`reasampler_editor.cpp`) and the S6 embed strip (`reasampler_embed.cpp`) received the full +kit treatment: kit cached-font text (§3.1 — the kit's current face, no bundled font), kit +component draws, the **B palette with the three-accent pastel system** (primary lime / +secondary teal / tertiary purple), the **pastel spectral keyboard strip + zone bars** (active +zone lifts to `accent/primary` + a static glow) as the signature surface, hover/pressed/drag +states throughout. The full editor component set was restyled: the **capture-first browser** +(search box + tabs + sample thumbnails, S10), **channel mono/stereo toggles** (S7), **waveform +pane with start + loop markers** (S11), **keyboard strip + zone bars** (S10/S10-Z), and +**ADSR + pitch sliders + Trigger/Gate & Varispeed/Preserve mode toggles** (S12/S15/S16). -**L3 is explicitly GATED: these surfaces do not exist on dev yet.** The VST editor, the -embed strip, and the keyboard strip live in Phase S, which has landed on the phase-s -worktree but **not on dev**. L3 cannot be built on dev until the two Phase S drawing shells -(`src/vst/reasampler_editor.cpp` + `reasampler_embed.cpp`) land on dev. **The Phase L team -must not chase these files on dev** — the gate is stated so they don't. Until Phase S merges -to dev, L3 is a planned, blocked point; L1 and L2 are the live Phase L work. +**What was confirmed at build:** -**Landed-reality check (product-designer, 2026-07-27 — read-only against the phase-s -worktree).** Verified against the actual landed Phase S surfaces so L3's scope is grounded, -not forecast: - -- **All Phase S UI draw is in exactly two shells** — `reasampler_editor.cpp` (the +- **All Phase S UI draw was in exactly two shells** — `reasampler_editor.cpp` (the `IPlugView` editor) and `reasampler_embed.cpp` (the S6 embed strip). Every other `src/vst/` UI file (`editor_geometry`, `keyboard_strip`, `waveform_view`, `capture_browser`, `param_slider`, `browser_scroll`, `embed_strip`) is a **pure geometry/hit-test module with zero LICE and zero draw** — the house pure/shell discipline - held on the branch. L3 is therefore a **shell-side restyle of two files**; no geometry - rework, and the pure hit-test coverage is already there to lean on. -- **Both shells still draw at the floor.** They fill flat `LICE_FillRect` rectangles and - pipe text through raw GDI `DrawTextA` — the exact "temple os" path §0/§1.1 describe. They - do **not** include `theme.h` / `draw_kit.h`, do **not** call any kit `draw*`/`text()`, and - use **no** `LICE_CachedFont`. So the coordination contract's "born in the kit" branch did - **not** happen for the VST surfaces — L3 lands as a **full restyle**, and all three build - points below are confirmed live (none is a no-op). -- **There is a second palette to reconcile.** The editor shell carries its own local - constants block — `kColBackground = RGB(28,28,30)`, accent `kColThumb/kColWaveform = - RGB(120,200,160)`, `kColTitleBg = RGB(20,20,22)`, etc. — the **pre-L1 forest-green-on-near- - black palette** this doc's §2 set out to replace, mirrored (partially) in the embed shell. - That is a live divergence from the landed `theme` roles. Collapsing these two palettes into - the one `theme` kit is the concrete "one kit, one look" reconcile L3 performs (§5.3 build - point 2, PLAN.md §L3). -- **The Phase S branch carries an *older* L1 kit.** The kit modules (`theme`, `draw_kit`, - `component_geometry`) are present on the branch, but its `theme` predates dev's L4–L7 - palette revisions (the branch has only L1+L2). After Phase S merges to dev, L3 draws - against **dev's** current `theme`/`draw_kit`, so the restyle consumes dev's pastel-on-grey - roles, not the branch's stale copy — a merge-hygiene note, not a scope change. + held. L3 was therefore a **shell-side restyle of two files**; no geometry rework required. +- **Full restyle, not a born-in-kit no-op.** The Phase S surfaces arrived on dev drawing flat + `LICE_FillRect` blocks + raw GDI `DrawTextA`, off a local pre-L1 forest-green palette + (`kColBackground` etc.) — the coordination contract's "born in the kit" branch did not + occur. L3 performed the full restyle. +- **Two palettes collapsed to one.** The editor shell's local `kColBackground`/`kColCardBg`/ + `kColThumb`/… forest-green-on-near-black constants block (the **pre-L1 palette** this + doc's §2 set out to replace) was retired; all surfaces now draw through the L1 `theme` + roles. One kit, one look. +- **Beta title band — textual-only distinction (Daniel, 2026-07-27).** The S18 beta channel + title band gets no distinct visual accent; L3 restyles it in the standard B pastel palette + and the beta-vs-stable distinction stays purely textual (the channel-derived plugin name + via `app_version`, as before). No channel-specific accent color. +- **VST3 class UID unchanged.** A visual refresh is not a compat event; RT/`process` path + untouched; pure geometry modules remained pure throughout. -**Settled: the beta channel title band gets no distinct visual accent (Daniel, -2026-07-27).** L3 restyles the title band in the standard B pastel palette, the same as the -stable channel. The beta-vs-stable distinction stays **purely textual** — the channel-derived -plugin name (as today, via `app_version`) is the only signal; there is **no** channel-specific -accent color. Reasoning: one look across channels keeps the kit palette single-sourced and -avoids a per-channel branch in the restyle; the textual name already disambiguates. This -closes the one open fork the L3 readiness review surfaced (see PLAN.md §Phase L, L3 -must-verify). - -**Coordination contract (stated once, load-bearing).** Phase S's editor/embed UX build -their interaction UX with the *current* drawing and **adopt the L1 kit when it is available — -they are not gated on Phase L.** Whichever lands first (L1 kit or the Phase S UX), the kit is -the **one source of drawing**; when both exist, the Phase S surfaces draw through it, and -L3 is the point that completes that adoption + applies the settled B+spectral look. **In the -event that actually occurred, the Phase S surfaces reached the worktree with the current -(flat, local-palette) drawing and did not adopt the kit — so L3 restyles them.** Either way -there is one kit, one look. +**Coordination contract (resolved).** Phase S's S10–S13 built their interaction UX with the +current drawing and adopted the L1 kit via L3 (the "L3 restyles them" branch). There is now +one kit and one look across both artifacts. ### 5.4 Sequencing summary ``` -L1 (shared kit) ──► L2 (dock-panel layout redesign, extension-side; AFTER M11 merges) - └─────────► L3 (VST editor + embed-strip restyle; GATED on Phase S landing on dev) +L1 (shared kit) ──► L2 (dock-panel layout redesign, extension-side) [LANDED] + └─────────► L3 (VST editor + embed-strip restyle) [LANDED] -Phase S (separate team, ungated): S7…S13 build with current drawing, adopt L1 kit when it lands. +Phase L is complete — L1, L2, L3, L4, L5, L6, and L7 have all landed. ``` -L1 is the foundation both L2 and L3 consume. L2 is extension-side and lands after M11. L3 -is gated on Phase S reaching dev. Phase S feature work proceeds in parallel, ungated. +L1 was the foundation both L2 and L3 consumed. L2 was extension-side and landed after M11. +L3 was gated on Phase S reaching dev — Phase S merged 2026-07-27 and L3 followed +immediately. **Phase L is complete.** --- @@ -762,5 +735,5 @@ re-skin).** font-fallback concern. The kit keeps its current cached-font face (no bundled font — DS-2 declined the font upgrade), so §3.1 introduces no new redistribution or cross-platform font obligation. -- **Phase S is not gated on Phase L** — S7–S13 proceed in parallel; they adopt the kit - when it lands. Phase L (L1/L2) is the live work on dev; L3 waits for Phase S to reach dev. +- **Phase S is not gated on Phase L** — S7–S13 proceeded in parallel; they adopted the + kit via L3 when it landed. Phase L is complete (L1–L7 all landed).