docs(plan): archive landed and abandoned work per PLAN.md convention
Moves the shipped 9000 rename, Milestone 9 (abandoned), Phase D2, Phase L, and S-VIEW-1-10 to COMPLETED.md. Restores the held-scope heading and deduplicates Phase L.
This commit is contained in:
+171
@@ -1249,6 +1249,113 @@ CONTEXT.md §Prune (Settled forks).
|
|||||||
> by the M/D/B/R/V/S pillars. Authoritative spec: **CONTEXT.md §Phase L**. Product
|
> by the M/D/B/R/V/S pillars. Authoritative spec: **CONTEXT.md §Phase L**. Product
|
||||||
> framing + settled decisions (DS-1/DS-2/DS-3): `docs/product/visual-design-language.md`.
|
> framing + settled decisions (DS-1/DS-2/DS-3): `docs/product/visual-design-language.md`.
|
||||||
|
|
||||||
|
> **New pillar, own lettered namespace, taken up by a parallel team.** Phase L is the
|
||||||
|
> whole-system look-and-feel effort: a shared LICE drawing kit and the surfaces that
|
||||||
|
> adopt it, so ReaSampler and ReaSampler 9000 shed the flat "temple os" drawing for a
|
||||||
|
> modern, sleek 2026 dark synth look. It answers Daniel's post-DAW-test verdict on the
|
||||||
|
> instrument ("this looks like temple os… the VST is dogshit… scope it for the whole
|
||||||
|
> system… does Cockos have a toolkit?"). Namespaced **`L` (Look-and-feel)** so it is
|
||||||
|
> orthogonal to and ungated by the M/D/B/R/V/S pillars — a parallel team owns it while
|
||||||
|
> Phase S feature work proceeds independently. Authoritative spec: **CONTEXT.md §Phase L
|
||||||
|
> — visual design language (design-system spec)**. Product framing, the settled decision
|
||||||
|
> record (DS-1/DS-2/DS-3 all SETTLED 2026-07-26), palette, and the three visual
|
||||||
|
> directions: `docs/product/visual-design-language.md`.
|
||||||
|
>
|
||||||
|
> **L1 (shared LICE drawing kit — the foundation), L2 (dock-panel layout redesign), L3
|
||||||
|
> (VST editor + embed-strip restyle), L4 (dock-panel button layout enhancement), L5
|
||||||
|
> (dock-panel button refinements), L6 (toolbar polish), and L7 (capture ordering, card
|
||||||
|
> metadata, and selection styling) have all landed** —
|
||||||
|
> `theme`/palette module, `component_geometry` geometry/hit-test helpers, `draw_kit` shell, GDI
|
||||||
|
> `DrawText` retirement in `bank_panel` (L1); `action_bar` pure task-grouped layout module, full
|
||||||
|
> M11-aware button inventory placed by task cluster, `bank_panel` redesigned through the L1 kit
|
||||||
|
> (L2); VST editor (`reasampler_editor.cpp`) + embed strip (`reasampler_embed.cpp`) restyled
|
||||||
|
> through the L1 kit — REAPER-grey neutrals + three pastel accents, pastel spectral keyboard
|
||||||
|
> strip + zone bars, hover/pressed/drag states, local `kCol*` forest-green palette retired (L3);
|
||||||
|
> three-zone layout (top capture/placement/maintenance toolbar, bottom Design-View toolbar,
|
||||||
|
> footer toggle + Tail button + Prune), `footer_bar` pure module, `ActionCluster::Tagging`/
|
||||||
|
> `Switching` in `action_bar` (L4); top-bar overflow menu (`overflow_menu` pure module),
|
||||||
|
> custom LICE-kit hover-delay tooltips (`tooltip` pure module), opposite-mode Item/Track tag
|
||||||
|
> buttons + Show Both, Toggle + Activate-Arrange/Design buttons removed, grouping spacing
|
||||||
|
> widened (`mode_enable` pure module) (L5); single-row button faces, keybinding in tooltip,
|
||||||
|
> Cancel RT moved to overflow, top-bar cluster order tidied (L6); per-bank `SlotMap`
|
||||||
|
> (id→slot) in `bank_book`, sparse-grid rendering, `card_drag` + `card_meta` pure modules,
|
||||||
|
> `captureTimeSigNum`/`captureTimeSigDenom` on `Sample`, tertiary-border selection (L7). See
|
||||||
|
> individual entries above. **Phase L is complete.**
|
||||||
|
>
|
||||||
|
> **This section is self-contained for a team without Phase S context.** Where a point
|
||||||
|
> touches a Phase S surface (the VST editor, the embed strip, the keyboard strip), the
|
||||||
|
> gate is stated explicitly so the team does not chase files that are not on dev yet.
|
||||||
|
>
|
||||||
|
> **Settled decisions (Daniel, 2026-07-26 — see `docs/product/visual-design-language.md`
|
||||||
|
> §6):**
|
||||||
|
> - **DS-1 — toolkit: LICE + WDL free game, no external frameworks.** Draw the modern
|
||||||
|
> look with LICE directly; reuse any useful WDL/vwnd piece (skin/image helpers, draw
|
||||||
|
> idioms, a control like the scroll listbox) where it beats re-deriving — "don't
|
||||||
|
> reinvent the wheel." Reject iPlug2 / JUCE / VSTGUI (external frameworks re-opening the
|
||||||
|
> settled bare-SDK+LICE build shape). Keep hit-test geometry in pure CTest-covered
|
||||||
|
> modules — do not import vwnd's retained-mode object model wholesale.
|
||||||
|
> - **DS-2 — visual direction: Direction B ("Neon Console") + Direction C's spectral
|
||||||
|
> keyboard strip. SETTLED 2026-07-26, REVISED 2026-07-26 (Daniel) — palette-only.**
|
||||||
|
> *Neutral surfaces (revised):* the neutral ladder moved **from near-black up into REAPER's
|
||||||
|
> mid-grey theme family** so the dock reads as part of REAPER, not a black slab — `bg/base`
|
||||||
|
> ≈ `#2b2b2b`, `bg/panel` ≈ `#333333`, `bg/cell` ≈ `#3a3a3a`, `line/hairline` ≈ `#4a4a4a`,
|
||||||
|
> `text/primary` ≈ `#dcdcdc`, `text/dim` ≈ `~#a0a0a0`+ (elevation-ladder discipline
|
||||||
|
> unchanged). *Accent layer (revised):* now a **three-accent pastel system** —
|
||||||
|
> `accent/primary` pastel lime green (live/active/selected), `accent/secondary` pastel teal
|
||||||
|
> + `accent/tertiary` pastel purple (categorical distinctions) — replacing the original
|
||||||
|
> single electric cyan. The spectral keyboard strip is a **pastel** sweep anchored on the
|
||||||
|
> three accents. *Tight WCAG pairs to re-verify against the grey ladder:* `text/dim`-on-grey
|
||||||
|
> (mid-grey-on-mid-grey, AA 4.5:1) and the three pastels-as-indicators on `bg/cell` (shrunk
|
||||||
|
> from ~15:1 to ~6:1–7:1). **A stylish/bundled-font upgrade was considered and DECLINED
|
||||||
|
> (Daniel):** no font bundling/redistribution — the kit keeps its current cached-font face,
|
||||||
|
> no new typeface. The kit palette stays abstract (roles, one constants block — three accent
|
||||||
|
> roles + grey neutrals), so the direction is a single-file change; final hex is locked
|
||||||
|
> against the theme WCAG tests within the pastel intent. Detail:
|
||||||
|
> `docs/product/visual-design-language.md` §2.1/§4/§6 + CONTEXT.md §Phase L.
|
||||||
|
> - **DS-3 — dock-panel scope: a thorough layout redesign, not a light re-skin.** L2 lays
|
||||||
|
> out the full button inventory (including M11's action-button additions) intuitively,
|
||||||
|
> uncluttered, and useful — then applies the kit. Sequenced after M11 merges.
|
||||||
|
|
||||||
|
## Phase L — sequencing
|
||||||
|
```
|
||||||
|
L1 (shared kit) ──► L2 (dock-panel layout redesign) [LANDED]
|
||||||
|
├─────────► L3 (VST editor + embed-strip restyle) [LANDED]
|
||||||
|
└─────────► L4 (dock-panel button layout enhancement) [LANDED]
|
||||||
|
└────► L5 (dock-panel button refinements; ungated, after L4) [LANDED]
|
||||||
|
└────► L6 (toolbar polish; ungated, after L5) [LANDED]
|
||||||
|
└────► L7 (capture ordering + card metadata + selection styling; ungated, after L6) [LANDED]
|
||||||
|
```
|
||||||
|
L1, L2, L3, L4, L5, L6, and L7 have all landed. **Phase L is complete.**
|
||||||
|
|
||||||
|
## Phase L — must-verify-before-build
|
||||||
|
- **LICE design-kit surfaces (L1)** — `LICE_GradRect`, `LICE_RoundRect`, AA
|
||||||
|
`LICE_Line`/`LICE_FLine`/`LICE_ThickFLine`/`LICE_Circle`/`LICE_FillCircle`/
|
||||||
|
`LICE_DrawCBezier`, `LICE_FillTriangle`/`FillTrapezoid`/`FillConvexPolygon`, and the
|
||||||
|
`LICE_CachedFont`/`LICE_IFont` font engine (`SetFromHFont`, AA `DrawText`, shadow/outline/
|
||||||
|
glow FX flags). Verified *present* in `vendor/WDL/WDL/lice/lice.h` + `lice_text.h`
|
||||||
|
(design-language doc §1.1); **confirm exact signatures + the `LICE_CachedFont`↔`HFONT`
|
||||||
|
lifecycle at build.**
|
||||||
|
- **WDL/vwnd reuse assessment (DS-1)** — at build time, evaluate whether a vwnd piece beats
|
||||||
|
re-deriving it: `virtwnd-slider.cpp` / `vwnd_slider_drawknobstack` as the slider/knob
|
||||||
|
drawing reference, `virtwnd-listbox.cpp` as a candidate scroll listbox, `virtwnd-controls.h`
|
||||||
|
for `WDL_STYLE_*` gradient hooks, `virtwnd-skin.h` for image-skin helpers. Reuse where
|
||||||
|
useful; keep hit-test geometry pure regardless.
|
||||||
|
- **M11 button inventory (L2)** — resolved at L2 build: inventory taken against dev after
|
||||||
|
M11 merged; all buttons placed by task cluster in the landed `action_bar` module.
|
||||||
|
- **L4 re-home surface (L4)** — resolved at L4 build: three-zone layout confirmed against the
|
||||||
|
post-palette-revision `bank_panel`; `action_bar` extended with `ActionCluster::Tagging` +
|
||||||
|
`Switching`; new pure `footer_bar` module covers footer layout/hit-test.
|
||||||
|
- **L5 refinement surface (L5)** — resolved at L5 build: `TrackPopupMenu` overflow menu
|
||||||
|
confirmed; tooltip mechanism resolved as **custom LICE-kit hover-delay tooltip** (`tooltip`
|
||||||
|
pure module; sourced from the registered action phrase, prefix stripped at draw time); item-move
|
||||||
|
and track-tag action ids confirmed; active-mode read confirmed via the same
|
||||||
|
`view().activeModeId()` the footer toggle uses.
|
||||||
|
- **L7 model + tempo surface (L7)** — **RESOLVED at build (L7 landed).** Forks F1/F2/F3 all
|
||||||
|
confirmed: `TimeMap_GetTimeSigAtTime` confirmed at build for the meter stamp; SWELL stock
|
||||||
|
cursors chosen for drop-result cues (Reorder→IDC_SIZEALL, Move→IDC_HAND, Copy→IDC_UPARROW,
|
||||||
|
Replace→IDC_SIZEWE); existing pool-privilege guard reused as-is for Alt-replace. Gap navigation
|
||||||
|
in the grid = skip gaps (arrow keys skip empty slots). See individual entries §L7 above.
|
||||||
|
|
||||||
## L1 — shared LICE drawing kit (the foundation)
|
## L1 — shared LICE drawing kit (the foundation)
|
||||||
**Goal:** Stand up the shared LICE-based drawing kit that every Phase L surface (L2 dock
|
**Goal:** Stand up the shared LICE-based drawing kit that every Phase L surface (L2 dock
|
||||||
panel, L3 VST editor) consumes — palette/theme module, pure component geometry/hit-test
|
panel, L3 VST editor) consumes — palette/theme module, pure component geometry/hit-test
|
||||||
@@ -2441,3 +2548,67 @@ interaction grammar (snapshot-at-grab → off-audio-thread commit). Shell: `reas
|
|||||||
- [x] Snapshot-at-grab → off-audio-thread commit, matching S-VIEW-3 envelope-node pattern.
|
- [x] Snapshot-at-grab → off-audio-thread commit, matching S-VIEW-3 envelope-node pattern.
|
||||||
- [x] Reads/writes existing `velocityCurve` on `PerformanceZone`; zones payload remains v7 — no
|
- [x] Reads/writes existing `velocityCurve` on `PerformanceZone`; zones payload remains v7 — no
|
||||||
schema change.
|
schema change.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase S — product name (ReaSampler 9000)
|
||||||
|
The MIDI-playback instrument's product name is **ReaSampler 9000** (Daniel, 2026-07-26,
|
||||||
|
on DAW-testing the S1–S6 instrument). The extension remains **ReaSampler**; the instrument
|
||||||
|
is **ReaSampler 9000**. Framing + propagation surfaces:
|
||||||
|
`docs/product/midi-playback.md` §Product name.
|
||||||
|
|
||||||
|
- [x] Propagate the display name **ReaSampler 9000** across user-visible surfaces: the VST3
|
||||||
|
class **display name** string (in the factory registration), the `IPlugView` editor title
|
||||||
|
band (currently "ReaSampler Instrument"), the S6 embed-strip label, and the Phase S docs.
|
||||||
|
**Do NOT change the VST3 class UID** — instances in already-saved projects key off it; a
|
||||||
|
UID change orphans every existing instance.
|
||||||
|
- [x] **Rename the binary filename too (S-NAME-1 SETTLED, Daniel 2026-07-26):** rename the
|
||||||
|
built VST3 module (CMake `OUTPUT_NAME` / target artifact — e.g. `reasampler_9000.vst3`)
|
||||||
|
alongside the display strings, so the on-disk name matches the product name. Record the
|
||||||
|
full rename surface: **CMake output name** (the second VST3 target's artifact name), the
|
||||||
|
**factory vendor/name strings**, the **`IPlugView` editor title**, and the **S6 embed
|
||||||
|
label**. Do NOT touch the **VST3 class UID** (unchanged — the compat anchor).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase S — S-VIEW-1 through S-VIEW-10 (rolled-up)
|
||||||
|
|
||||||
|
- [x] **S-VIEW-1 through S-VIEW-10** — all landed (Wave 1 core + Wave 2 shell + Wave 3 velocity-curve editor UI). See entries §S-VIEW-1 through §S-VIEW-10 above for the full entry set.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase D2 — Two-canvas (item-level mode projection; additive to D1)
|
||||||
|
|
||||||
|
> **Design View sub-phase.** Extends D1's track-level mode projection to **item
|
||||||
|
> level** via REAPER 7 fixed lanes: on a track present in both stances, each mode
|
||||||
|
> owns a fixed lane — the active mode's lane shows and plays, the inactive mode's is
|
||||||
|
> hidden and silenced — so a Design take and an Arrange take can share the same
|
||||||
|
> track and time position without colliding on the view. Nothing in D1 changes.
|
||||||
|
> Runtime floor rises to **REAPER 7** for this sub-phase (no version-gate branch;
|
||||||
|
> below v7 it is simply unavailable). Authoritative spec: **CONTEXT.md §Two-canvas
|
||||||
|
> sub-phase (Phase D2 / Phase E)** and the surrounding §Design View — additive phase
|
||||||
|
> spec. Product framing: `docs/product/design-view.md` §Two-canvas direction.
|
||||||
|
>
|
||||||
|
> **D2-W1 (pure lane extension), D2-W2 (shell: lane application + new-content
|
||||||
|
> detection), D2-W3-A (lane minting + item→lane assignment + persist round-trip),
|
||||||
|
> and D2-W3-B (item-level mode actions + W3-A polish) have all landed** — see
|
||||||
|
> individual entries above. **Phase D2 is functionally complete.**
|
||||||
|
>
|
||||||
|
> **Deferred:** panel UI indicator for per-track lane/mode state (a per-track
|
||||||
|
> lane-split marker). The mode switch already shows the active mode; no natural
|
||||||
|
> cheap home for a per-track indicator was found in the bank panel. Explicitly
|
||||||
|
> deferred — not silently dropped. Can be picked up later if wanted.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Milestone 9 — slots (MPC-style)
|
||||||
|
|
||||||
|
> **Abandoned (Daniel, 2026-07-27) — will not be built.**
|
||||||
|
|
||||||
|
**Goal:** "Capture to slot N" / "insert slot N", MIDI-bindable. CONTEXT-ARCHIVE.md
|
||||||
|
Build order 9.
|
||||||
|
**Verify (in DAW):** Slot capture and slot insert fire from MIDI bindings; slot
|
||||||
|
state persists via the index.
|
||||||
|
|
||||||
|
Slot model + slot↔sample assignment.
|
||||||
|
"Capture to slot N" / "insert slot N" actions, MIDI-bindable.
|
||||||
|
|||||||
@@ -14,18 +14,6 @@ it here and appends it to `COMPLETED.md`.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Milestone 9 — slots (MPC-style)
|
|
||||||
|
|
||||||
> **Abandoned (Daniel, 2026-07-27) — will not be built.**
|
|
||||||
|
|
||||||
**Goal:** "Capture to slot N" / "insert slot N", MIDI-bindable. CONTEXT-ARCHIVE.md
|
|
||||||
Build order 9.
|
|
||||||
**Verify (in DAW):** Slot capture and slot insert fire from MIDI bindings; slot
|
|
||||||
state persists via the index.
|
|
||||||
|
|
||||||
- [ ] Slot model + slot↔sample assignment.
|
|
||||||
- [ ] "Capture to slot N" / "insert slot N" actions, MIDI-bindable.
|
|
||||||
|
|
||||||
## Open questions to resolve during build
|
## Open questions to resolve during build
|
||||||
Carried from CONTEXT.md §Open questions — keep visible until each is closed by a
|
Carried from CONTEXT.md §Open questions — keep visible until each is closed by a
|
||||||
landed milestone.
|
landed milestone.
|
||||||
@@ -40,21 +28,7 @@ landed milestone.
|
|||||||
|
|
||||||
# Phase D2 — Two-canvas (item-level mode projection; additive to D1)
|
# Phase D2 — Two-canvas (item-level mode projection; additive to D1)
|
||||||
|
|
||||||
> **Design View sub-phase.** Extends D1's track-level mode projection to **item
|
> **Phase D2 is functionally complete** — D2-W1, D2-W2, D2-W3-A, D2-W3-B all landed; see `COMPLETED.md`.
|
||||||
> level** via REAPER 7 fixed lanes: on a track present in both stances, each mode
|
|
||||||
> owns a fixed lane — the active mode's lane shows and plays, the inactive mode's is
|
|
||||||
> hidden and silenced — so a Design take and an Arrange take can share the same
|
|
||||||
> track and time position without colliding on the view. Nothing in D1 changes.
|
|
||||||
> Runtime floor rises to **REAPER 7** for this sub-phase (no version-gate branch;
|
|
||||||
> below v7 it is simply unavailable). Authoritative spec: **CONTEXT.md §Two-canvas
|
|
||||||
> sub-phase (Phase D2 / Phase E)** and the surrounding §Design View — additive phase
|
|
||||||
> spec. Product framing: `docs/product/design-view.md` §Two-canvas direction. When a
|
|
||||||
> point lands, doc-keeper moves it to `COMPLETED.md`.
|
|
||||||
>
|
|
||||||
> **D2-W1 (pure lane extension), D2-W2 (shell: lane application + new-content
|
|
||||||
> detection), D2-W3-A (lane minting + item→lane assignment + persist round-trip),
|
|
||||||
> and D2-W3-B (item-level mode actions + W3-A polish) have all landed** — see
|
|
||||||
> `COMPLETED.md`. **Phase D2 is functionally complete.**
|
|
||||||
>
|
>
|
||||||
> **Deferred:** panel UI indicator for per-track lane/mode state (a per-track
|
> **Deferred:** panel UI indicator for per-track lane/mode state (a per-track
|
||||||
> lane-split marker). The mode switch already shows the active mode; no natural
|
> lane-split marker). The mode switch already shows the active mode; no natural
|
||||||
@@ -90,58 +64,12 @@ landed milestone.
|
|||||||
ingest path. Requires (a) a new instrument WRITE seam into ext-state and (b) an
|
ingest path. Requires (a) a new instrument WRITE seam into ext-state and (b) an
|
||||||
extension-side timer poller + claim/clear nonce. A future wave when the design is ready.
|
extension-side timer poller + claim/clear nonce. A future wave when the design is ready.
|
||||||
|
|
||||||
## Phase S — held and optional-forever (noted, not specified)
|
|
||||||
|
|
||||||
> S3–S11 have landed; archived in `COMPLETED.md`. S12 and S13 (partial) have also
|
|
||||||
> landed; archived in `COMPLETED.md`. The cross-artifact relay (S13) remains deferred — see §S13 above.
|
|
||||||
|
|
||||||
> S8 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S9 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> **S0-DS moved to Phase L (2026-07-26).** The shared LICE drawing kit that stood here is
|
|
||||||
> now **Phase L point L1** on `dev` — see PLAN.md §Phase L + CONTEXT.md §Phase L and
|
|
||||||
> `docs/product/visual-design-language.md` (all on `dev`). S10–S13 below build with the
|
|
||||||
> current drawing and **adopt the L1 kit when it lands — not gated on Phase L.**
|
|
||||||
|
|
||||||
> S10, S10-Z, and S11 have landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S12 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S13 (drop-to-load) has partially landed; archived in `COMPLETED.md`. Cross-artifact relay remains deferred — see §S13 above.
|
|
||||||
|
|
||||||
> S15 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S16 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S17 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> S18 has landed; archived in `COMPLETED.md`.
|
|
||||||
|
|
||||||
> **S14 moved to Phase L (2026-07-26).** The dock-panel refresh that stood here is now
|
|
||||||
> **Phase L point L2** on `dev` — and, per Daniel's DS-3 call, expanded from a light re-skin
|
|
||||||
> into a **thorough dock-panel layout redesign** that lays out the full M11-aware button
|
|
||||||
> inventory before applying the kit. See PLAN.md §Phase L + CONTEXT.md §Phase L and
|
|
||||||
> `docs/product/visual-design-language.md` (all on `dev`). The design-system forks DS-1/
|
|
||||||
> DS-2/DS-3 are all **SETTLED (2026-07-26)** and recorded in the Phase L docs on `dev`.
|
|
||||||
|
|
||||||
## Phase S — product name (ReaSampler 9000)
|
## Phase S — product name (ReaSampler 9000)
|
||||||
The MIDI-playback instrument's product name is **ReaSampler 9000** (Daniel, 2026-07-26,
|
The MIDI-playback instrument's product name is **ReaSampler 9000** (Daniel, 2026-07-26,
|
||||||
on DAW-testing the S1–S6 instrument). The extension remains **ReaSampler**; the instrument
|
on DAW-testing the S1–S6 instrument). The extension remains **ReaSampler**; the instrument
|
||||||
is **ReaSampler 9000**. Framing + propagation surfaces:
|
is **ReaSampler 9000**. Framing + propagation surfaces:
|
||||||
`docs/product/midi-playback.md` §Product name.
|
`docs/product/midi-playback.md` §Product name.
|
||||||
|
|
||||||
- [ ] Propagate the display name **ReaSampler 9000** across user-visible surfaces: the VST3
|
|
||||||
class **display name** string (in the factory registration), the `IPlugView` editor title
|
|
||||||
band (currently "ReaSampler Instrument"), the S6 embed-strip label, and the Phase S docs.
|
|
||||||
**Do NOT change the VST3 class UID** — instances in already-saved projects key off it; a
|
|
||||||
UID change orphans every existing instance.
|
|
||||||
- [ ] **Rename the binary filename too (S-NAME-1 SETTLED, Daniel 2026-07-26):** rename the
|
|
||||||
built VST3 module (CMake `OUTPUT_NAME` / target artifact — e.g. `reasampler_9000.vst3`)
|
|
||||||
alongside the display strings, so the on-disk name matches the product name. Record the
|
|
||||||
full rename surface: **CMake output name** (the second VST3 target's artifact name), the
|
|
||||||
**factory vendor/name strings**, the **`IPlugView` editor title**, and the **S6 embed
|
|
||||||
label**. Do NOT touch the **VST3 class UID** (unchanged — the compat anchor).
|
|
||||||
- [ ] **Compat verification (must-DAW-verify before shipping the rename):** the working
|
- [ ] **Compat verification (must-DAW-verify before shipping the rename):** the working
|
||||||
assumption is that REAPER **rebinds a saved instance by its VST3 class UID, not by the
|
assumption is that REAPER **rebinds a saved instance by its VST3 class UID, not by the
|
||||||
module filename**, so a filename rename with an unchanged UID keeps saved projects working
|
module filename**, so a filename rename with an unchanged UID keeps saved projects working
|
||||||
@@ -153,6 +81,8 @@ is **ReaSampler 9000**. Framing + propagation surfaces:
|
|||||||
state. If REAPER does key partly on filename, fall back to keeping the current filename
|
state. If REAPER does key partly on filename, fall back to keeping the current filename
|
||||||
(display-strings-only) and record that as the shipped choice.
|
(display-strings-only) and record that as the shipped choice.
|
||||||
|
|
||||||
|
## Phase S — held and optional-forever (noted, not specified)
|
||||||
|
|
||||||
- **Tier 2 — "expressive" (HELD).** Velocity layers, round-robin (anti-machine-gun),
|
- **Tier 2 — "expressive" (HELD).** Velocity layers, round-robin (anti-machine-gun),
|
||||||
full ADSR, per-sample tuning/gain trim, sustain loops. The next depth increment once
|
full ADSR, per-sample tuning/gain trim, sustain loops. The next depth increment once
|
||||||
Tier 0–1 proves the instrument belongs — **its points are not drawn up here.**
|
Tier 0–1 proves the instrument belongs — **its points are not drawn up here.**
|
||||||
@@ -207,9 +137,6 @@ fenced root + preview-trigger + control strip) with no scroll; Browse opens as a
|
|||||||
Sample, select+confirm loads a new capture; Zone opens on its own button, key-tracking + the
|
Sample, select+confirm loads a new capture; Zone opens on its own button, key-tracking + the
|
||||||
piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
|
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)
|
### 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
|
> Daniel's post-landing DAW pass on the S-VIEW editor: **all linear sliders → small radial
|
||||||
@@ -251,12 +178,6 @@ piano-key pattern work; drop-a-capture-onto-FX instantiates a playing instance.
|
|||||||
fork ledger: **R11-F1** hero height vs. default window (lean: elastic hero, keep 840×620);
|
fork ledger: **R11-F1** hero height vs. default window (lean: elastic hero, keep 840×620);
|
||||||
**R11-F2** Zone-panel parity (lean: yes — one grammar).
|
**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
|
|
||||||
> platform ceiling — a diagnosis and a one-line default, not product decisions.
|
|
||||||
> **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)
|
### Phase S editor redesign — forks (Daniel's to call)
|
||||||
*(r9/r10 forks all settled: S-VIEW-F1 and S-VIEW-F2 SETTLED 2026-07-27 — folded into S-VIEW-4 /
|
*(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
|
S-VIEW-3. F1: preview velocity persists via envelope-v6 `ComponentState`. F2: envelope nodes are
|
||||||
@@ -267,117 +188,6 @@ full-window modal over Sample (landed in S-VIEW-1/S-VIEW-5). **r11 opens two new
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Phase L — Look-and-feel (system-wide visual design language)
|
|
||||||
|
|
||||||
> **New pillar, own lettered namespace, taken up by a parallel team.** Phase L is the
|
|
||||||
> whole-system look-and-feel effort: a shared LICE drawing kit and the surfaces that
|
|
||||||
> adopt it, so ReaSampler and ReaSampler 9000 shed the flat "temple os" drawing for a
|
|
||||||
> modern, sleek 2026 dark synth look. It answers Daniel's post-DAW-test verdict on the
|
|
||||||
> instrument ("this looks like temple os… the VST is dogshit… scope it for the whole
|
|
||||||
> system… does Cockos have a toolkit?"). Namespaced **`L` (Look-and-feel)** so it is
|
|
||||||
> orthogonal to and ungated by the M/D/B/R/V/S pillars — a parallel team owns it while
|
|
||||||
> Phase S feature work proceeds independently. Authoritative spec: **CONTEXT.md §Phase L
|
|
||||||
> — visual design language (design-system spec)**. Product framing, the settled decision
|
|
||||||
> record (DS-1/DS-2/DS-3 all SETTLED 2026-07-26), palette, and the three visual
|
|
||||||
> directions: `docs/product/visual-design-language.md`. When a point lands, doc-keeper
|
|
||||||
> moves it to `COMPLETED.md`.
|
|
||||||
>
|
|
||||||
> **L1 (shared LICE drawing kit — the foundation), L2 (dock-panel layout redesign), L3
|
|
||||||
> (VST editor + embed-strip restyle), L4 (dock-panel button layout enhancement), L5
|
|
||||||
> (dock-panel button refinements), L6 (toolbar polish), and L7 (capture ordering, card
|
|
||||||
> metadata, and selection styling) have all landed** —
|
|
||||||
> `theme`/palette module, `component_geometry` geometry/hit-test helpers, `draw_kit` shell, GDI
|
|
||||||
> `DrawText` retirement in `bank_panel` (L1); `action_bar` pure task-grouped layout module, full
|
|
||||||
> M11-aware button inventory placed by task cluster, `bank_panel` redesigned through the L1 kit
|
|
||||||
> (L2); VST editor (`reasampler_editor.cpp`) + embed strip (`reasampler_embed.cpp`) restyled
|
|
||||||
> through the L1 kit — REAPER-grey neutrals + three pastel accents, pastel spectral keyboard
|
|
||||||
> strip + zone bars, hover/pressed/drag states, local `kCol*` forest-green palette retired (L3);
|
|
||||||
> three-zone layout (top capture/placement/maintenance toolbar, bottom Design-View toolbar,
|
|
||||||
> footer toggle + Tail button + Prune), `footer_bar` pure module, `ActionCluster::Tagging`/
|
|
||||||
> `Switching` in `action_bar` (L4); top-bar overflow menu (`overflow_menu` pure module),
|
|
||||||
> custom LICE-kit hover-delay tooltips (`tooltip` pure module), opposite-mode Item/Track tag
|
|
||||||
> buttons + Show Both, Toggle + Activate-Arrange/Design buttons removed, grouping spacing
|
|
||||||
> widened (`mode_enable` pure module) (L5); single-row button faces, keybinding in tooltip,
|
|
||||||
> Cancel RT moved to overflow, top-bar cluster order tidied (L6); per-bank `SlotMap`
|
|
||||||
> (id→slot) in `bank_book`, sparse-grid rendering, `card_drag` + `card_meta` pure modules,
|
|
||||||
> `captureTimeSigNum`/`captureTimeSigDenom` on `Sample`, tertiary-border selection (L7). See
|
|
||||||
> `COMPLETED.md`. **Phase L is complete.**
|
|
||||||
>
|
|
||||||
> **This section is self-contained for a team without Phase S context.** Where a point
|
|
||||||
> touches a Phase S surface (the VST editor, the embed strip, the keyboard strip), the
|
|
||||||
> gate is stated explicitly so the team does not chase files that are not on dev yet.
|
|
||||||
>
|
|
||||||
> **Settled decisions (Daniel, 2026-07-26 — see `docs/product/visual-design-language.md`
|
|
||||||
> §6):**
|
|
||||||
> - **DS-1 — toolkit: LICE + WDL free game, no external frameworks.** Draw the modern
|
|
||||||
> look with LICE directly; reuse any useful WDL/vwnd piece (skin/image helpers, draw
|
|
||||||
> idioms, a control like the scroll listbox) where it beats re-deriving — "don't
|
|
||||||
> reinvent the wheel." Reject iPlug2 / JUCE / VSTGUI (external frameworks re-opening the
|
|
||||||
> settled bare-SDK+LICE build shape). Keep hit-test geometry in pure CTest-covered
|
|
||||||
> modules — do not import vwnd's retained-mode object model wholesale.
|
|
||||||
> - **DS-2 — visual direction: Direction B ("Neon Console") + Direction C's spectral
|
|
||||||
> keyboard strip. SETTLED 2026-07-26, REVISED 2026-07-26 (Daniel) — palette-only.**
|
|
||||||
> *Neutral surfaces (revised):* the neutral ladder moved **from near-black up into REAPER's
|
|
||||||
> mid-grey theme family** so the dock reads as part of REAPER, not a black slab — `bg/base`
|
|
||||||
> ≈ `#2b2b2b`, `bg/panel` ≈ `#333333`, `bg/cell` ≈ `#3a3a3a`, `line/hairline` ≈ `#4a4a4a`,
|
|
||||||
> `text/primary` ≈ `#dcdcdc`, `text/dim` ≈ `~#a0a0a0`+ (elevation-ladder discipline
|
|
||||||
> unchanged). *Accent layer (revised):* now a **three-accent pastel system** —
|
|
||||||
> `accent/primary` pastel lime green (live/active/selected), `accent/secondary` pastel teal
|
|
||||||
> + `accent/tertiary` pastel purple (categorical distinctions) — replacing the original
|
|
||||||
> single electric cyan. The spectral keyboard strip is a **pastel** sweep anchored on the
|
|
||||||
> three accents. *Tight WCAG pairs to re-verify against the grey ladder:* `text/dim`-on-grey
|
|
||||||
> (mid-grey-on-mid-grey, AA 4.5:1) and the three pastels-as-indicators on `bg/cell` (shrunk
|
|
||||||
> from ~15:1 to ~6:1–7:1). **A stylish/bundled-font upgrade was considered and DECLINED
|
|
||||||
> (Daniel):** no font bundling/redistribution — the kit keeps its current cached-font face,
|
|
||||||
> no new typeface. The kit palette stays abstract (roles, one constants block — three accent
|
|
||||||
> roles + grey neutrals), so the direction is a single-file change; final hex is locked
|
|
||||||
> against the theme WCAG tests within the pastel intent. Detail:
|
|
||||||
> `docs/product/visual-design-language.md` §2.1/§4/§6 + CONTEXT.md §Phase L.
|
|
||||||
> - **DS-3 — dock-panel scope: a thorough layout redesign, not a light re-skin.** L2 lays
|
|
||||||
> out the full button inventory (including M11's action-button additions) intuitively,
|
|
||||||
> uncluttered, and useful — then applies the kit. Sequenced after M11 merges.
|
|
||||||
|
|
||||||
## Phase L — sequencing
|
|
||||||
```
|
|
||||||
L1 (shared kit) ──► L2 (dock-panel layout redesign) [LANDED]
|
|
||||||
├─────────► L3 (VST editor + embed-strip restyle) [LANDED]
|
|
||||||
└─────────► L4 (dock-panel button layout enhancement) [LANDED]
|
|
||||||
└────► L5 (dock-panel button refinements; ungated, after L4) [LANDED]
|
|
||||||
└────► L6 (toolbar polish; ungated, after L5) [LANDED]
|
|
||||||
└────► L7 (capture ordering + card metadata + selection styling; ungated, after L6) [LANDED]
|
|
||||||
```
|
|
||||||
L1, L2, L3, L4, L5, L6, and L7 have all landed. **Phase L is complete.**
|
|
||||||
|
|
||||||
## Phase L — must-verify-before-build
|
|
||||||
- **LICE design-kit surfaces (L1)** — `LICE_GradRect`, `LICE_RoundRect`, AA
|
|
||||||
`LICE_Line`/`LICE_FLine`/`LICE_ThickFLine`/`LICE_Circle`/`LICE_FillCircle`/
|
|
||||||
`LICE_DrawCBezier`, `LICE_FillTriangle`/`FillTrapezoid`/`FillConvexPolygon`, and the
|
|
||||||
`LICE_CachedFont`/`LICE_IFont` font engine (`SetFromHFont`, AA `DrawText`, shadow/outline/
|
|
||||||
glow FX flags). Verified *present* in `vendor/WDL/WDL/lice/lice.h` + `lice_text.h`
|
|
||||||
(design-language doc §1.1); **confirm exact signatures + the `LICE_CachedFont`↔`HFONT`
|
|
||||||
lifecycle at build.**
|
|
||||||
- **WDL/vwnd reuse assessment (DS-1)** — at build time, evaluate whether a vwnd piece beats
|
|
||||||
re-deriving it: `virtwnd-slider.cpp` / `vwnd_slider_drawknobstack` as the slider/knob
|
|
||||||
drawing reference, `virtwnd-listbox.cpp` as a candidate scroll listbox, `virtwnd-controls.h`
|
|
||||||
for `WDL_STYLE_*` gradient hooks, `virtwnd-skin.h` for image-skin helpers. Reuse where
|
|
||||||
useful; keep hit-test geometry pure regardless.
|
|
||||||
- **M11 button inventory (L2)** — resolved at L2 build: inventory taken against dev after
|
|
||||||
M11 merged; all buttons placed by task cluster in the landed `action_bar` module.
|
|
||||||
- **L4 re-home surface (L4)** — resolved at L4 build: three-zone layout confirmed against the
|
|
||||||
post-palette-revision `bank_panel`; `action_bar` extended with `ActionCluster::Tagging` +
|
|
||||||
`Switching`; new pure `footer_bar` module covers footer layout/hit-test.
|
|
||||||
- **L5 refinement surface (L5)** — resolved at L5 build: `TrackPopupMenu` overflow menu
|
|
||||||
confirmed; tooltip mechanism resolved as **custom LICE-kit hover-delay tooltip** (`tooltip`
|
|
||||||
pure module; sourced from the registered action phrase, prefix stripped at draw time); item-move
|
|
||||||
and track-tag action ids confirmed; active-mode read confirmed via the same
|
|
||||||
`view().activeModeId()` the footer toggle uses.
|
|
||||||
- **L7 model + tempo surface (L7)** — **RESOLVED at build (L7 landed).** Forks F1/F2/F3 all
|
|
||||||
confirmed: `TimeMap_GetTimeSigAtTime` confirmed at build for the meter stamp; SWELL stock
|
|
||||||
cursors chosen for drop-result cues (Reorder→IDC_SIZEALL, Move→IDC_HAND, Copy→IDC_UPARROW,
|
|
||||||
Replace→IDC_SIZEWE); existing pool-privilege guard reused as-is for Alt-replace. Gap navigation
|
|
||||||
in the grid = skip gaps (arrow keys skip empty slots). See `COMPLETED.md` §L7.
|
|
||||||
---
|
|
||||||
|
|
||||||
# Phase Q — Quality (structural reorganization; zero-runtime-cost)
|
# Phase Q — Quality (structural reorganization; zero-runtime-cost)
|
||||||
|
|
||||||
> **New pillar, own lettered namespace, and — uniquely — the LAST structural pillar.** Phase
|
> **New pillar, own lettered namespace, and — uniquely — the LAST structural pillar.** Phase
|
||||||
|
|||||||
Reference in New Issue
Block a user