docs: close out Phase L L3 — archive to COMPLETED, mark landed in design-language doc

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.
This commit is contained in:
2026-07-27 12:50:00 -04:00
parent 13b23801a0
commit 85eac37912
2 changed files with 91 additions and 67 deletions
+40 -67
View File
@@ -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 (L1L7 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 L4L7
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 S10S13 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** — S7S13 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** — S7S13 proceeded in parallel; they adopted the
kit via L3 when it landed. Phase L is complete (L1L7 all landed).