docs(product): DS-2 revised — three-accent pastel palette + REAPER-grey neutrals
Replace the single electric-cyan accent with a pastel lime/teal/purple three-accent system; shift neutral surfaces + text from near-black to REAPER's mid-grey theme family. Font upgrade declined (no bundling). L3 conformed to the new look; gate intact.
This commit is contained in:
+75
-22
@@ -1373,12 +1373,38 @@ LICE's actual ceiling — which REAPER's own themed UI and SWS prove is a modern
|
||||
object model wholesale (its controls own their hit-test internally, which would move
|
||||
geometry into untestable shell code and undercut the pure/shell split).
|
||||
- **DS-2 — visual direction: Direction B ("Neon Console") + Direction C's spectral
|
||||
keyboard strip.** Near-black base (`~18,18,22`) with a single vivid accent (electric cyan
|
||||
leads) for the live/active/selected layer only; everything else calm neutral gray. The
|
||||
**spectral (hue-mapped) keyboard strip** — low notes cool → high notes hot, glow-on-active
|
||||
as a static drawn state — is the signature surface (it turns the multi-zone-in-one-instance
|
||||
advantage into a visual identity). The kit palette is **abstract** (role→color, one
|
||||
constants block), so the direction is a single-file change.
|
||||
keyboard strip. SETTLED 2026-07-26, REVISED 2026-07-26 (Daniel) — three-accent pastel
|
||||
accents AND REAPER-grey neutrals (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` (REAPER chrome),
|
||||
`bg/panel` ≈ `#333333`, `bg/cell` ≈ `#3a3a3a` (REAPER track bg), `line/hairline` ≈
|
||||
`#4a4a4a`, `text/primary` ≈ `#dcdcdc`, `text/dim` ≈ `~#a0a0a0`+. Elevation-ladder
|
||||
discipline unchanged (base < panel < cell by a few %, micro-gradient + inner
|
||||
highlight/shadow carry elevation, not hard borders). *Accent layer (revised):* changed
|
||||
from **one electric cyan** to **three pastel accents**: `accent/primary` = **pastel lime
|
||||
green** (`~176,224,152`, the
|
||||
live/active/selected signal), `accent/secondary` = **pastel teal** (`~132,214,208`,
|
||||
categorical role A), `accent/tertiary` = **pastel purple** (`~194,170,232`, categorical
|
||||
role B); `accent/hot` is a lighter pastel-lime tint (`~200,236,178`). These are *starting*
|
||||
values — the implementer locks final hex against the theme module's WCAG tests, staying
|
||||
**within the pastel intent** ("soft-side" floor: the most pastel value that still clears,
|
||||
not re-saturated toward neon). The **spectral (hue-mapped) keyboard strip** — signature
|
||||
surface, glow-on-active as a static drawn state — is now a **pastel** sweep anchored on the
|
||||
three accents (pastel-lime low → pastel-teal mid → pastel-purple high). **A stylish/bundled
|
||||
font upgrade was considered and DECLINED (Daniel, 2026-07-26)** — no font bundling or
|
||||
redistribution; the kit keeps its **current** cached-font face and no new typeface is
|
||||
specified (§3.1). The kit palette stays **abstract** (role→color, one constants block —
|
||||
now three accent roles), so the direction is a single-file change. *Tight pairs flagged for
|
||||
the implementer (re-verify against the GREY ladder, not near-black):* **`text/dim` on
|
||||
grey** (mid-grey-on-mid-grey — lands ~4:1 at start, must be lifted toward `~#a8a8a8`+ to
|
||||
clear AA 4.5:1 body on `#333`/`#3a3a3a`, the classic floor failure); **the three pastels
|
||||
as state indicators / active fills on `bg/cell`** (the pastel cushion shrank from ~15:1 on
|
||||
near-black to ~6:1–7:1 on grey — still clears 3:1 but must be re-checked; if any drops
|
||||
below floor, nudge that hue slightly deeper within the pastel intent); body text **on a
|
||||
pastel fill** (light-grey on a light pastel can drop below AA 4.5:1 — use dark labels on
|
||||
pastel fills or darken the fill); and **secondary vs. tertiary** distinguishability (both
|
||||
cool/desaturated — verify they read as distinct categories). Full reasoning:
|
||||
`docs/product/visual-design-language.md` §2.1 + §4 + §6.
|
||||
- **DS-3 — dock-panel scope: a thorough layout redesign, not a light re-skin.** L2 lays out
|
||||
the *full* button/affordance inventory — including M11's action-trigger buttons +
|
||||
keybinding-help labels — intuitively, uncluttered, and useful, then applies the kit.
|
||||
@@ -1386,17 +1412,32 @@ LICE's actual ceiling — which REAPER's own themed UI and SWS prove is a modern
|
||||
|
||||
## Palette + the "punch" rule (Daniel's standing taste)
|
||||
|
||||
Dark, modern, **visual punch over conservative contrast.** The palette is defined by
|
||||
**role**, not hardcoded hue: `bg/base`, `bg/panel`, `bg/cell`, `line/hairline`,
|
||||
`text/primary`, `text/dim`, `accent`, `accent/hot`, `warn`. A modern dark UI is built from
|
||||
**elevation layers**, not borders — surfaces gain a **micro-gradient** (`LICE_GradRect`,
|
||||
a few percent lighter at the top) + a 1px inner top-highlight / bottom-shadow (the vwnd
|
||||
trick) instead of flat fills. **WCAG-floor discipline:** for each text-on-surface pair,
|
||||
take the *most* vibrant accent that still clears its floor (AA 4.5:1 body / 3:1 large +
|
||||
state indicators) — the floor approached from the vibrant side, never a retreat to safe
|
||||
gray. The `warn` role (red/amber) is reserved *only* for byte-deleting or clip states
|
||||
(prune, delete). Because the palette is role-based in one constants block, the settled
|
||||
B+spectral direction (DS-2) is one file.
|
||||
Dark, modern, **visual punch over conservative contrast — now pastel, on REAPER-grey.** The
|
||||
palette is defined by **role**, not hardcoded hue: `bg/base`, `bg/panel`, `bg/cell`,
|
||||
`line/hairline`, `text/primary`, `text/dim`, `accent/primary`, `accent/secondary`,
|
||||
`accent/tertiary`, `accent/hot`, `warn`. **Neutral surfaces (DS-2 revised, 2026-07-26):**
|
||||
the neutral ladder sits in **REAPER's mid-grey theme family**, not near-black, so the dock
|
||||
reads as *part of REAPER* — `bg/base` ≈ `#2b2b2b`, `bg/panel` ≈ `#333333`, `bg/cell` ≈
|
||||
`#3a3a3a`, `line/hairline` ≈ `#4a4a4a`, `text/primary` ≈ `#dcdcdc`, `text/dim` ≈ `~#a0a0a0`+.
|
||||
A modern dark UI is built from **elevation layers**, not borders — surfaces gain a
|
||||
**micro-gradient** (`LICE_GradRect`, a few percent lighter at the top) + a 1px inner
|
||||
top-highlight / bottom-shadow (the vwnd trick) instead of flat fills; the grey ladder keeps
|
||||
this discipline (base < panel < cell by a few %, subtle steps like REAPER, not hard
|
||||
outlines). The three accents carry categorical meaning: **primary (pastel lime) =
|
||||
live/active/selected**, **secondary (pastel teal) + tertiary (pastel purple) = supporting
|
||||
categorical distinctions** (kinds, not intensity — primary is always "what's live now").
|
||||
**WCAG-floor discipline (pastel + grey re-read):** moving neutrals *up* into grey makes two
|
||||
pairs *harder* — (1) **`text/dim` on `bg/panel`/`bg/cell`** is the classic
|
||||
mid-grey-on-mid-grey floor failure (must be lifted light enough to clear AA 4.5:1 body on
|
||||
the greyest surface it draws on), and (2) **the three pastels as state indicators on grey**
|
||||
have a shrunken contrast cushion (~6:1–7:1 vs. ~15:1 on near-black — still clear 3:1 but
|
||||
re-verify; nudge a hue slightly deeper within the pastel intent if it drops below floor).
|
||||
Text-on-a-pastel-fill (AA 4.5:1) remains a tight pair. Take the *most pastel* value that
|
||||
still clears the floor **on grey** — approached from the **soft side**, never re-saturated
|
||||
toward neon "to be safe," except where the grey floor forces a small deepening. The `warn`
|
||||
role (red/amber) is reserved *only* for byte-deleting or clip states (prune, delete).
|
||||
Because the palette is role-based in one constants block, the settled-and-revised
|
||||
B+pastel+grey+spectral direction (DS-2) is one file.
|
||||
|
||||
## "Speed is the selling point" — a design constraint, not a tagline
|
||||
|
||||
@@ -1413,8 +1454,18 @@ already does). Direction C's glow/bloom is a **static drawn state, never a pulse
|
||||
|
||||
Pure (no LICE, no REAPER types, unit-tested — the mirror of `mode_switch`/`bank_grid`):
|
||||
- **`theme`/palette module** — role→color mapping, direction-selectable via one constants
|
||||
block (the B+spectral values). Pure; unit-tested that each text-on-surface pair clears
|
||||
its WCAG floor (the "punch" rule made testable).
|
||||
block (the B + REAPER-grey-neutral + three-accent-pastel + pastel-spectral values). Pure;
|
||||
unit-tested that each text-on-surface pair clears its WCAG floor (the "punch" rule made
|
||||
testable). *DS-2 revision (2026-07-26):* (a) the neutral ladder moves from near-black up
|
||||
into REAPER's mid-grey family (`bg/base` `#2b2b2b` / `bg/panel` `#333333` / `bg/cell`
|
||||
`#3a3a3a` / `line/hairline` `#4a4a4a` / `text/primary` `#dcdcdc` / `text/dim` `~#a0a0a0`+),
|
||||
and (b) the accent role expands from one to three (`accent/primary` lime, `accent/secondary`
|
||||
teal, `accent/tertiary` purple) with the spectral ramp a pastel sweep anchored on those
|
||||
three — all still confined to the one constants block + the shell's font lifecycle. **The
|
||||
WCAG test must be re-run against the GREY ladder** — it gains the newly-tight grey pairs:
|
||||
`text/dim`-on-grey (AA 4.5:1) and each pastel-as-state-indicator on `bg/cell` (3:1), plus
|
||||
the existing text-on-pastel-fill pairs. (No font change: a bundled-font upgrade was
|
||||
declined — the cached-font set keeps the kit's current face.)
|
||||
- **Component geometry/hit-test helpers** — button rect, slider track/handle geometry,
|
||||
list-row rect + hover hit-test, and any new layout module L2 needs (an action-bar layout
|
||||
module). No LICE, no host types; CTest-covered. Existing pure modules
|
||||
@@ -1475,9 +1526,11 @@ the **current** drawing and **adopt the L1 kit when it is available — they are
|
||||
Phase L.** Whichever lands first (the L1 kit or the S10–S13 UX), the kit is the **one source
|
||||
of drawing**: if S10–S13 reach dev before L1, they draw in the current language and L3
|
||||
restyles them; if L1 lands first, they are born in the kit. Either way there is one kit and
|
||||
one look; L3 completes the VST/embed adoption and applies the settled B+spectral treatment
|
||||
(with C's spectral keyboard strip as the signature surface). The VST3 class UID is
|
||||
unchanged — a visual refresh is not a compat event.
|
||||
one look; L3 completes the VST/embed adoption and applies the settled-and-revised **B +
|
||||
three-accent pastel** treatment (with C's **pastel** spectral keyboard strip as the
|
||||
signature surface), routing text through the kit's cached-font `text()` (§3.1 — the kit's
|
||||
current face; no font change). The VST3 class UID is unchanged — a visual refresh is not a
|
||||
compat event.
|
||||
|
||||
## Precision / invariant implications (what Phase L does NOT change)
|
||||
|
||||
|
||||
@@ -303,23 +303,40 @@ build:** the `IReaperUIEmbedInterface` contract + embed message/lifecycle agains
|
||||
> 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.** Near-black + one vivid accent everywhere; a hue-mapped spectral
|
||||
> keyboard strip as the signature surface. The kit palette is abstract (roles, one
|
||||
> constants block), so the direction is a single-file change.
|
||||
> 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.
|
||||
|
||||
## L3 — VST editor + embed-strip restyle (GATED on Phase S landing on dev)
|
||||
**Goal:** Bring the ReaSampler 9000 VST editor (`IPlugView` LICE surface) and the S6 embed
|
||||
strip up to the settled B+spectral look via the L1 kit: cached-font text, kit component
|
||||
draws, the Neon-Console palette, the **spectral keyboard strip** as the signature surface
|
||||
(DS-2), and hover/pressed/drag states throughout. CONTEXT.md §Phase L (VST restyle + the
|
||||
strip up to the settled-and-revised **B + three-accent pastel** look via the L1 kit: kit
|
||||
cached-font text (§3.1 — the kit's current face, no font change), kit component draws, the
|
||||
Neon-Console palette with **REAPER-grey neutrals** (`#2b2b2b`/`#333333`/`#3a3a3a`) and the
|
||||
**three pastel accents** (primary lime / secondary teal / tertiary purple), the **pastel
|
||||
spectral keyboard strip** as the signature surface (DS-2
|
||||
revised), and hover/pressed/drag states throughout. CONTEXT.md §Phase L (VST restyle + the
|
||||
Phase S coordination contract). Product framing: `docs/product/visual-design-language.md` §5.3.
|
||||
**Verify (in DAW):** the VST editor + embed strip render in the settled B+spectral language
|
||||
through the L1 kit — AA cached-font text, gradient/rounded kit components, the spectral
|
||||
keyboard strip, working hover/pressed/drag; the VST3 class UID is unchanged (a visual
|
||||
refresh is not a compat event).
|
||||
**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).
|
||||
**Depends on:** L1 (the kit) **AND — GATE — Phase S landing on dev.** The VST editor, embed
|
||||
strip, and keyboard strip live in Phase S, which is **not on dev yet** (it exists on the
|
||||
phase-s worktree). **L3 cannot be built on dev until Phase S's editor/embed surfaces
|
||||
@@ -335,14 +352,18 @@ work.
|
||||
> Either way there is one kit and one look, and L3 is the point that completes the VST/embed
|
||||
> adoption and applies the settled B+spectral treatment.
|
||||
|
||||
- [ ] Route the VST editor's + embed strip's text through the kit's cached-font `text()`;
|
||||
retire their raw GDI `DrawTextA` path. (Gated — Phase S surfaces must be on dev.)
|
||||
- [ ] Route the VST editor's + embed strip's text through the kit's cached-font `text()`
|
||||
(the kit's current face — §3.1, no font change); retire their raw GDI `DrawTextA` path.
|
||||
(Gated — Phase S surfaces must be on dev.)
|
||||
- [ ] Restyle the editor + embed components through the kit (buttons, sliders/ADSR, list
|
||||
rows, waveform, segmented controls) in the B (Neon Console) palette; add hover/pressed/
|
||||
drag states. (Gated.)
|
||||
- [ ] Apply **Direction C's spectral treatment to the keyboard strip** (hue-mapped zones,
|
||||
glow-on-active as a static drawn state — never a pulse, per the speed constraint) as the
|
||||
signature surface; VST3 class UID unchanged. (Gated.)
|
||||
rows, waveform, segmented controls) in the B (Neon Console) palette — **REAPER-grey
|
||||
neutrals** (`bg/base` `#2b2b2b` / `bg/panel` `#333333` / `bg/cell` `#3a3a3a`) with the
|
||||
**three pastel accents** (primary lime = live layer; secondary teal / tertiary purple =
|
||||
categorical); add hover/pressed/drag states. (Gated.)
|
||||
- [ ] Apply **Direction C's pastel spectral treatment to the keyboard strip** (hue-mapped
|
||||
zones as a pastel sweep anchored on the three accents, glow-on-active as a static drawn
|
||||
state — never a pulse, per the speed constraint) as the signature surface; VST3 class UID
|
||||
unchanged. (Gated.)
|
||||
|
||||
## Phase L — sequencing
|
||||
```
|
||||
|
||||
@@ -12,11 +12,15 @@ written after Daniel DAW-tested the S1–S6 instrument:
|
||||
> Cockos have a toolkit for this type of visual design?"
|
||||
|
||||
**Status:** framed by product-designer (2026-07-26); the DS-1/DS-2/DS-3 forks are
|
||||
**SETTLED (Daniel, 2026-07-26)** — recorded in §6 with the reasoning preserved. The
|
||||
build points it feeds live in **PLAN.md §Phase L** (**L1** the shared LICE drawing kit,
|
||||
**L2** the dock-panel layout redesign, **L3** the VST editor + embed-strip restyle) and
|
||||
**CONTEXT.md §Phase L** (the design-system spec). Toolkit facts below are **verified
|
||||
against the vendored `vendor/WDL` tree**, not lore.
|
||||
**SETTLED (Daniel, 2026-07-26)** — recorded in §6 with the reasoning preserved. **DS-2 was
|
||||
revised 2026-07-26 (Daniel)** from the single electric-cyan accent to a **three-accent
|
||||
pastel system** (primary/secondary/tertiary = pastel lime green / pastel teal / pastel
|
||||
purple) — see §6. (A stylish-font upgrade was considered and **declined** by Daniel — no
|
||||
font bundling/redistribution; the kit keeps its current cached-font face.) The build points it feeds live in
|
||||
**PLAN.md §Phase L** (**L1** the shared LICE drawing kit, **L2** the dock-panel layout
|
||||
redesign, **L3** the VST editor + embed-strip restyle) and **CONTEXT.md §Phase L** (the
|
||||
design-system spec). Toolkit facts below are **verified against the vendored `vendor/WDL`
|
||||
tree**, not lore.
|
||||
|
||||
> **Phase-boundary note (2026-07-26).** This look-and-feel effort was originally drafted
|
||||
> as Phase S points **S0-DS** (the shared kit) and **S14** (the panel refresh). It was
|
||||
@@ -51,10 +55,14 @@ against the vendored `vendor/WDL` tree**, not lore.
|
||||
- **The real work is L1 — a shared drawing kit** — one small LICE-based
|
||||
component/palette/type layer that the VST editor, the embed strip, and the bank panel
|
||||
all draw through. It is the one source of drawing for the whole system.
|
||||
- **DS-2 SETTLED (2026-07-26): Direction B ("Neon Console") + Direction C's spectral
|
||||
keyboard strip** as the signature surface. Three visual directions are in §4; B+spectral
|
||||
is the settled target. "Speed is the selling point" is a **design constraint**, not a
|
||||
tagline: the UI must *feel* instant (§3.5).
|
||||
- **DS-2 SETTLED (2026-07-26), REVISED (2026-07-26): Direction B ("Neon Console") + Direction
|
||||
C's spectral keyboard strip** as the signature surface — now with a **three-accent pastel
|
||||
system** (primary = pastel lime green, secondary = pastel teal, tertiary = pastel purple)
|
||||
in place of the original single electric-cyan accent. (A stylish-font upgrade was
|
||||
considered and **declined** — no font bundling; the kit keeps its current face.) Three
|
||||
visual directions are in §4; B+spectral with the pastel accents is the settled target.
|
||||
"Speed is the selling point" is a **design constraint**, not a tagline: the UI must *feel*
|
||||
instant (§3.5).
|
||||
- **DS-3 SETTLED (2026-07-26): the dock-panel work is a real, thorough layout design, not
|
||||
a light reskin.** L2 lays out the *full button inventory* (including M11's additions)
|
||||
intuitively, uncluttered, and useful — §5.2.
|
||||
@@ -156,25 +164,93 @@ background `RGB(28,28,30)`, waveform/accent `RGB(120,200,160)`, cell `RGB(44,44,
|
||||
### 2.1 Structural roles (direction-independent)
|
||||
|
||||
A modern dark UI is built from **elevation layers**, not borders. Define the palette by
|
||||
role, then let the direction set the accent:
|
||||
role, then let the direction set the accent.
|
||||
|
||||
| Role | Purpose | Current | Direction |
|
||||
**Neutral surfaces — REAPER-theme-matching mid-grey (DS-2 revised, 2026-07-26, Daniel).**
|
||||
The neutral role ladder is **not near-black** — it sits in **REAPER's own mid-grey theme
|
||||
family** so the dock reads as *part of REAPER*, not a black slab bolted on beside it.
|
||||
Ground truth from Daniel's theme: REAPER's arrange/track background is a mid grey
|
||||
(`~#373737`), window chrome / ruler / transport a touch darker (`~#2b2b2b`), body text a
|
||||
light grey (`~#c8c8c8`–white). The DS-2 neutral ladder below matches that family. **The
|
||||
elevation-ladder discipline is unchanged:** base < panel < cell, each a few percent
|
||||
lighter, with the micro-gradient (§2.2) + 1px inner highlight/shadow still doing the
|
||||
elevation work — REAPER differentiates surfaces by subtle steps, not hard borders, which
|
||||
is exactly DS-2's "elevation layers, not borders" principle. Only the *values* moved up
|
||||
from near-black into the grey range; the *structure* is identical:
|
||||
|
||||
| Role | Purpose | Current | Direction (DS-2 revised — REPER-grey neutrals) |
|
||||
|---|---|---|---|
|
||||
| `bg/base` | window canvas | `28,28,30` | deepen slightly + a **subtle top-down `LICE_GradRect`** (base look, not flat) |
|
||||
| `bg/panel` | a raised region (list, waveform pane) | — (implicit) | one step lighter than base; elevation reads without a border |
|
||||
| `bg/cell` | a control/row surface | `44,44,48` | as now, but with a 1px inner top highlight (the vwnd trick) |
|
||||
| `line/hairline` | separators | `60,60,66` | keep, use sparingly — elevation should carry most separation |
|
||||
| `text/primary` | labels, values | `210,230,220` | near-white, **must clear WCAG AA (4.5:1) on `bg/panel`** |
|
||||
| `text/dim` | secondary / units | — | a dimmer step, still **AA-large (3:1) minimum** — the WCAG floor, not below it |
|
||||
| `accent` | selection, active, focus | `120,200,160` | **Direction B: one vivid hue** (§4) — this is where the punch lives |
|
||||
| `accent/hot` | hover / live / drag feedback | — (absent) | a brighter accent tint; **today there is no hover color at all** |
|
||||
| `bg/base` | window canvas | `28,28,30` | **REAPER chrome grey ≈ `43,43,43` (`#2b2b2b`)** + a **subtle top-down `LICE_GradRect`** (base look, not flat) |
|
||||
| `bg/panel` | a raised region (list, waveform pane) | — (implicit) | **≈ `51,51,51` (`#333333`)** — one step lighter than base; elevation reads without a border |
|
||||
| `bg/cell` | a control/row surface | `44,44,48` | **≈ `58,58,58` (`#3a3a3a`)** (matches REAPER track bg `~#373737`–`#3c3c3c`), with a 1px inner top highlight (the vwnd trick) |
|
||||
| `line/hairline` | separators | `60,60,66` | **≈ `74,74,74` (`#4a4a4a`)** — a subtle step above cell; use sparingly, elevation should carry most separation |
|
||||
| `text/primary` | labels, values | `210,230,220` | **REAPER body light grey ≈ `220,220,220` (`#dcdcdc`)**, **must clear WCAG AA (4.5:1) on `bg/panel`/`bg/cell`** (clears ~8:1 — comfortable) |
|
||||
| `text/dim` | secondary / units | — | a dimmer light-grey step ≈ `~160,160,160` (`#a0a0a0`), **must clear AA 4.5:1 on the greyer surfaces if used for body** (see §2.1 WCAG note — this is the newly tight pair) |
|
||||
| `accent/primary` | live / active / selected layer | `120,200,160` | **pastel lime green** (§4) — the one that means "this is live"; where the punch lives |
|
||||
| `accent/secondary` | supporting categorical role A | — | **pastel teal** — a second categorical hue (e.g. secondary zones, non-primary selection state) |
|
||||
| `accent/tertiary` | supporting categorical role B | — | **pastel purple** — a third categorical hue (e.g. tertiary zones, a distinct affordance class) |
|
||||
| `accent/hot` | hover / live / drag feedback | — (absent) | a brighter tint **of the primary accent**; **today there is no hover color at all** |
|
||||
| `warn` | clip / destructive (prune, delete) | — | a red/amber reserved *only* for byte-deleting or clip states |
|
||||
|
||||
**WCAG-floor discipline (the "punch" rule, concretely):** for each text-on-surface pair,
|
||||
pick the *most* saturated/vibrant accent that still clears its contrast floor — AA 4.5:1
|
||||
for body text, 3:1 for large text and for UI-state indicators (selection borders, active
|
||||
fills). Do not retreat to safe grays "to be sure." The floor is the target, approached
|
||||
from the vibrant side.
|
||||
**Three-accent role assignment (DS-2 revised).** The accent layer is now *three* pastel
|
||||
hues, not one, so the palette can carry categorical meaning without leaning on saturation
|
||||
Daniel finds too loud. The coherent assignment:
|
||||
- **`accent/primary` = pastel lime green** — the single "this is live/active/selected"
|
||||
signal. It does the same job the old single cyan did: it is the eye-magnet, used with
|
||||
discipline for the live layer only (selection, active fill, focus-adjacent, the active
|
||||
zone's glow). One primary keeps the "accent = live, never chrome" rule intact.
|
||||
- **`accent/secondary` = pastel teal** and **`accent/tertiary` = pastel purple** — the
|
||||
*categorical* distinctions that a single-accent palette had to fake with brightness. They
|
||||
mark **kinds** of thing, not intensity: e.g. non-active zone bands on the keyboard strip,
|
||||
a second/third action-cluster identity, or a supporting-state fill. They never out-shout
|
||||
primary — primary is always the "what's live now" answer; secondary/tertiary are "what
|
||||
category is this." The three read as a family (all pastel, adjacent-ish in the cool→warm
|
||||
band), so the UI stays coherent, not carnival.
|
||||
|
||||
Primary/secondary/tertiary is a **role trio in the same constants block** as the rest —
|
||||
adding two accents did not change the "one file, one direction" property (§2.1 opener).
|
||||
|
||||
**WCAG-floor discipline (the "punch" rule, re-read for pastels):** for each text-on-surface
|
||||
pair, pick the value that still clears its contrast floor — AA 4.5:1 for body text, 3:1 for
|
||||
large text and UI-state indicators (selection borders, active fills). With the old vivid
|
||||
cyan the rule was "push to the floor *from the vibrant side*." **Pastels are the inverse
|
||||
approach:** a pastel is intrinsically less saturated and (as a light-ish tint on a dark
|
||||
surface) usually *brighter* than a vivid accent, so it clears the *large/state* floor more
|
||||
easily than a vivid hue — though on the DS-2-revised **grey** surfaces the cushion is much
|
||||
smaller than on near-black (see the grey re-read below). The tight case flips — **text
|
||||
drawn on a pastel fill** (dark text on a light pastel, or the pastel as fill behind
|
||||
`text/primary`) is where contrast can fail. So the rule becomes:
|
||||
**take the most *pastel* (softest, least-saturated) value that still clears the floor,
|
||||
approached from the soft side** — do not over-saturate a pastel back toward neon "to be
|
||||
safe," and do not wash it out so far it drops a text pair below floor. The implementer runs
|
||||
the theme module's WCAG tests and nudges each accent *within the pastel intent* until every
|
||||
drawn pair clears. See §4 for concrete starting values and the pairs expected to be tight.
|
||||
|
||||
**WCAG re-read for the greyer neutrals (DS-2 revised — the load-bearing check).** Moving
|
||||
the neutral surfaces *up* from near-black into REAPER's mid-grey makes two pairs *harder*,
|
||||
because contrast against a lighter surface is smaller. Both must be re-verified against the
|
||||
new grey ladder, not the old near-black:
|
||||
- **`text/dim` on `bg/panel`/`bg/cell` — the classic mid-grey-on-mid-grey floor failure.**
|
||||
A mid-grey dim text against a mid-grey surface is exactly where AA fails. At the starting
|
||||
values a `~#9a9a9a`-`#a0a0a0` dim on `#333333`/`#3a3a3a` lands around **~4:1–4.4:1** — under
|
||||
the AA 4.5:1 body floor and only just clearing the 3:1 large floor. **`text/dim` must be
|
||||
lifted light enough (toward `~#a8a8a8`+) to clear AA 4.5:1 on the greyest surface it draws
|
||||
body text on**, or be confined to large/UI-label use where the 3:1 floor applies. The
|
||||
implementer locks the exact value against the test; the intent is "dim, but never below
|
||||
the floor it is actually drawn against."
|
||||
- **The three pastel accents on the greyer surfaces — the cushion shrank.** Pastels have
|
||||
*less* contrast against mid-grey than against near-black. On near-black the three cleared
|
||||
the 3:1 large/indicator floor by a huge margin (~15:1); on `bg/cell` `#3a3a3a` the same
|
||||
pastels land around **~6:1–7:1** — still clearing 3:1, but the comfortable cushion is
|
||||
gone. Every pastel used as a **state indicator / active fill** (selection border, active
|
||||
zone, focus-adjacent) **must be re-verified to still clear the 3:1 large/indicator floor
|
||||
on `bg/cell`, not on the old near-black.** If any pastel would drop below floor on grey,
|
||||
the "punch from the soft side" rule now means **nudge that hue slightly deeper / more
|
||||
saturated until it clears** — the hues stay pastel lime / teal / purple; only their
|
||||
value/chroma may move a little. This is a real tension: the greyer background pulls the
|
||||
pastels *toward* the floor at the same time the "keep it soft" rule pulls them away from
|
||||
saturation. The implementer resolves it per-hue against the test, staying within the
|
||||
pastel intent.
|
||||
|
||||
### 2.2 Motion of color, not just color
|
||||
|
||||
@@ -198,11 +274,14 @@ and it's exactly what `virtwnd`'s button/slider drawing does. Bake it into the k
|
||||
typographic variety: `title` (~15px semibold), `label` (~12px regular), `value`/`mono`
|
||||
(~12px, tabular for note numbers / ms / dB so digits don't jitter during a drag),
|
||||
`micro` (~10px, dim, for units/counts). Four cached fonts total.
|
||||
- **Font choice:** a clean UI sans is available on every Windows target (Segoe UI is the
|
||||
safe system default; the kit takes an `HFONT`, so the exact face is a one-line change).
|
||||
For the numeric `value` role, a tabular/mono face (Consolas is universally present)
|
||||
keeps dragged numbers from reflowing. Windows-only (D5) means no cross-platform
|
||||
font-fallback worry.
|
||||
- **Font face — keep the kit's current cached-font face (DS-2: no font change).** A
|
||||
stylish/bundled-font upgrade was considered and **declined by Daniel** — he does not want
|
||||
to bundle and redistribute a font. So the kit keeps its **current** face; this doc
|
||||
specifies no new typeface. The win at §3.1 is entirely the *mechanism* — routing all text
|
||||
through a `LICE_CachedFont` (AA glyph cache, one weight/size scale, optional soft shadow
|
||||
on titles) instead of raw GDI `DrawTextA` — not a new type family. The `HFONT` fed to
|
||||
`SetFromHFont` stays the kit's existing choice; the "temple os → modern" jump is the AA
|
||||
cached-glyph pipeline plus the type scale above, not the face.
|
||||
- **Soft shadow on title/accent text only** (`LICE_FONT_FLAG_FX_SHADOW`) — subtle depth,
|
||||
used sparingly; body text stays crisp and flat for legibility.
|
||||
|
||||
@@ -264,7 +343,8 @@ house discipline). The set:
|
||||
- **Keyboard strip** — the bespoke S10 surface: white/black key lanes, zone bars as
|
||||
translucent colored overlays, root markers. No prior art in the kit; it *defines* new
|
||||
kit primitives (key-lane fill, zone overlay). **Direction C's spectral treatment
|
||||
(§4, DS-2 settled) lives here** — the hue-mapped keyboard is the signature surface.
|
||||
(§4, DS-2 settled + revised) lives here** — the hue-mapped keyboard is the signature
|
||||
surface, now a **pastel** sweep anchored on the three accent hues (§4).
|
||||
|
||||
### 3.5 Motion policy — "speed is the selling point," read as a constraint
|
||||
|
||||
@@ -292,12 +372,17 @@ instant, and no decoration may cost that.** Concretely —
|
||||
|
||||
---
|
||||
|
||||
## 4. Three visual directions (DS-2 SETTLED: B + C's spectral keyboard strip)
|
||||
## 4. Three visual directions (DS-2 SETTLED: B + C's spectral keyboard strip; REVISED to pastel accents)
|
||||
|
||||
Each is a complete palette + treatment, not a shade of the same thing. All three are
|
||||
LICE-drawable today (no new dependency); all three honor the WCAG-floor "punch" rule.
|
||||
Ordered safe → bold. **Daniel settled (2026-07-26) on Direction B as the target, with
|
||||
Direction C's spectral keyboard strip as the signature surface.**
|
||||
Direction C's spectral keyboard strip as the signature surface** — then **revised the
|
||||
accent layer (2026-07-26) from a single electric cyan to a three-accent pastel system**
|
||||
(primary pastel lime green / secondary pastel teal / tertiary pastel purple), and
|
||||
**revised the neutral surfaces (2026-07-26) from near-black up into REAPER's mid-grey theme
|
||||
family** so the dock reads as part of REAPER, not a black slab (§2.1). Only the accent layer
|
||||
and the neutral ladder changed; the direction (B + C's spectral strip) is unchanged.
|
||||
|
||||
### Direction A — "Studio Rack" (evolutionary; not selected)
|
||||
|
||||
@@ -311,49 +396,104 @@ controls get the vwnd inner-highlight/shadow treatment.
|
||||
make anyone say "sleek." Retained as the fallback if B/C ever feel too loud for a
|
||||
pro-audio context, but Daniel's taste points away from it.
|
||||
|
||||
### Direction B — "Neon Console" (contemporary synth; SETTLED default)
|
||||
### Direction B — "Neon Console" (contemporary synth; SETTLED default, REVISED to pastel accents)
|
||||
|
||||
A modern soft-synth / plugin look: near-black background (`~18,18,22`) with a **single
|
||||
vivid accent** (electric cyan `~60,200,235` leads; hot magenta `~235,70,170` is the
|
||||
bolder sub-option), used with intent for the *live/active/selected* layer only. Everything
|
||||
else is a calm neutral gray scale; the accent does all the punch. Waveforms and the
|
||||
keyboard strip's active zone glow in the accent; inactive elements are quiet gray. This is
|
||||
the "Serum / Vital / modern Arturia" idiom — vivid-accent-on-near-black.
|
||||
A modern soft-synth / plugin look: **REAPER-theme mid-grey neutrals** (`bg/base` ≈
|
||||
`#2b2b2b`, `bg/panel` ≈ `#333333`, `bg/cell` ≈ `#3a3a3a` — the grey ladder in §2.1, matching
|
||||
Daniel's REAPER theme so the dock is not a black box beside it), and the **accent layer
|
||||
carries all the punch** — used with intent for the *live/active/selected* layer and for a
|
||||
small number of categorical distinctions only. Everything else stays quiet grey. Waveforms
|
||||
and the keyboard strip's active zone glow in the **primary** accent; inactive/categorical
|
||||
elements pick up secondary/tertiary. This is the "Serum / Vital / modern Arturia" idiom —
|
||||
accent-on-dark — but **pastel, not neon,** and on **REAPER-grey rather than near-black**.
|
||||
|
||||
- **Feel:** a 2026 instrument. Sleek, focused, the accent guides the eye to what's live.
|
||||
- **Accent:** one vivid hue (cyan leads). Clears WCAG-large comfortably at full saturation
|
||||
on near-black — "push to the floor from the vibrant side." A second dimmer tint for
|
||||
hover. **This is the settled target** — the strong-but-safe center; the single-accent
|
||||
discipline is easy to keep coherent across VST + embed + panel.
|
||||
- **Watch:** a single vivid accent can feel "gamer" if over-applied — discipline required
|
||||
(accent = live only, never chrome). One hue is a commitment; changing it later is a
|
||||
palette sweep (cheap in the shared kit — one constants block — but a sweep).
|
||||
**Accent layer (DS-2 revised — three pastel accents, replacing the single electric cyan):**
|
||||
Daniel's call — "it's too CYAN, I prefer pastel hues" — swaps the one vivid cyan for a
|
||||
**three-hue pastel family**. Concrete *starting* values (the implementer locks final hex
|
||||
against the WCAG tests — §2.1):
|
||||
|
||||
### Direction C — "Spectral" (bold; SETTLED for the keyboard strip)
|
||||
| Role | Pastel | Starting RGB (hex) | Job |
|
||||
|---|---|---|---|
|
||||
| `accent/primary` | pastel lime green | `~176,224,152` (`#B0E098`) | the live/active/selected signal — the eye-magnet |
|
||||
| `accent/secondary` | pastel teal | `~132,214,208` (`#84D6D0`) | categorical role A (non-active zones, a second cluster) |
|
||||
| `accent/tertiary` | pastel purple | `~194,170,232` (`#C2AAE8`) | categorical role B (tertiary zones, a distinct affordance class) |
|
||||
| `accent/hot` | brighter primary tint | `~200,236,178` (`#C8ECB2`) | hover / live / drag feedback (a lighter pastel-lime) |
|
||||
|
||||
Lean *all the way* into vibrancy and depth. Near-black base, but the accent is a
|
||||
**two-color gradient** — zones and the waveform aren't a flat accent, they're a
|
||||
**hue-mapped gradient** (e.g. low notes cool-blue → high notes hot-magenta across the
|
||||
keyboard strip; the waveform filled with a vertical accent gradient). Selection glows; the
|
||||
active zone has a soft outer bloom (`LICE_GradRect` halo). Multi-zone keymaps become
|
||||
genuinely *beautiful* — each zone a band of the spectrum — which is exactly the
|
||||
"multi-zone-in-one-instance" capability that RS5K structurally lacks (the sharpest
|
||||
"better than RS5K" claim, made *visual*).
|
||||
These are light-ish, low-saturation tints. On the **REAPER-grey surfaces** (`bg/cell` ≈
|
||||
`#3a3a3a`) they still clear **AA-large (3:1)** and the **state-indicator** floor — but the
|
||||
margin is **much smaller than it was on near-black** (roughly ~6:1–7:1 on grey vs. ~15:1
|
||||
on `#12121x`). This is a real DS-2-revision tension: **the greyer background pulls the
|
||||
pastels toward the floor** at the same time the "keep it soft" rule pulls them away from
|
||||
saturation. Approach from the **soft side** (§2.1) — keep them as pastel as possible while
|
||||
still clearing the floor on **grey, not near-black** — but **if any pastel used as a state
|
||||
indicator / active fill drops below 3:1 on `bg/cell`, nudge that hue slightly deeper /
|
||||
more saturated until it clears** (hue stays lime/teal/purple; only value/chroma moves a
|
||||
little). Re-verify against the grey ladder, not the old near-black values.
|
||||
|
||||
- **Feel:** premium, almost visualizer-grade. The keyboard strip becomes a signature — a
|
||||
spectrum you play across.
|
||||
- **Feel:** a 2026 instrument, softer and calmer than a neon single-accent — the pastel
|
||||
family guides the eye to what's live (primary) and quietly categorizes the rest.
|
||||
- **Watch — the tight pairs (flag for the implementer):**
|
||||
- **Body text *on* a pastel fill.** When a pastel accent is a *fill* and `text/primary`
|
||||
(light-grey `~220,220,220` / `#dcdcdc`) or a dark label sits on top, the pair can drop
|
||||
below **AA 4.5:1** — pastels are mid-to-light, so light-grey-on-pastel is the risky
|
||||
combination.
|
||||
Where an accent is used as a filled surface behind body text, either (a) use a *dark*
|
||||
near-black label on the light pastel (which clears easily) or (b) darken that specific
|
||||
pastel fill until near-white clears 4.5:1. The theme test must cover every actual
|
||||
text-on-accent-fill pair the kit draws.
|
||||
- **Secondary vs. tertiary distinguishability.** Pastel teal and pastel purple are both
|
||||
cool-ish and desaturated; verify they read as *distinct* categories, not two greys,
|
||||
when adjacent (e.g. neighboring zone bands). Nudge tertiary warmer/more-violet if they
|
||||
muddy.
|
||||
- **Three pastels can drift "candy" if over-applied** — same discipline as before: accent
|
||||
= live + a few categorical marks, never chrome. Coherence rule: keep all three clearly
|
||||
in the pastel family (no one of them creeping back to full saturation).
|
||||
- **Reversibility:** unchanged — all three accents live in the one constants block, so a
|
||||
future re-pick (or a saturation nudge) is still a single-file change.
|
||||
|
||||
### Direction C — "Spectral" (bold; SETTLED for the keyboard strip; REVISED to a pastel sweep)
|
||||
|
||||
Lean into depth via a **hue-mapped gradient** across the signature surface: zones and the
|
||||
waveform aren't a flat accent — the keyboard strip is a **spectrum you play across** (low
|
||||
notes cool → high notes hot), the waveform filled with a vertical accent gradient. Selection
|
||||
glows; the active zone has a soft outer bloom (`LICE_GradRect` halo, a *static* drawn state
|
||||
— §3.5). Multi-zone keymaps become genuinely *beautiful* — each zone a band of the
|
||||
spectrum — which is exactly the "multi-zone-in-one-instance" capability that RS5K
|
||||
structurally lacks (the sharpest "better than RS5K" claim, made *visual*).
|
||||
|
||||
**How the spectral ramp relates to the three pastel accents (DS-2 revised).** The strip
|
||||
keeps a **full low→high sweep**, but it is now a **pastel spectral ramp anchored on the
|
||||
three accent hues** rather than a neon cool-blue→hot-magenta gradient — so the signature
|
||||
surface stays coherent with "pastel, not neon" and visibly belongs to the same palette as
|
||||
the rest of the UI. Concretely: the ramp runs **pastel-lime (primary, low) → pastel-teal
|
||||
(secondary, mid) → pastel-purple (tertiary, high)** as a three-stop gradient through the
|
||||
accent constants (or a slightly wider pastel arc that passes *through* those three anchor
|
||||
points), keeping every stop in the pastel band. This ties the spectrum to the palette:
|
||||
the same three hues that mean "live / category A / category B" elsewhere are the endpoints
|
||||
and midpoint of the spectrum here, so the strip reads as an extension of the accent system,
|
||||
not a separate neon flourish. The **active** zone still lifts to `accent/primary` +
|
||||
its bloom, so "which zone is live" stays unambiguous over the categorical spectral bands.
|
||||
|
||||
- **Feel:** premium, almost visualizer-grade — but soft and cohesive, a pastel spectrum
|
||||
rather than a rave. The keyboard strip is the signature; it is unmistakably the same
|
||||
palette as the panel.
|
||||
- **Settled scope:** **C's spectral treatment lands on the keyboard strip** (the signature
|
||||
surface), over Direction B's Neon-Console chrome everywhere else. This is the
|
||||
"modern-sleek center with one bold, identity-defining surface" Daniel chose — dial the
|
||||
spectrum up (full C across more surfaces) or down (pure B) after seeing it on the DAW.
|
||||
surface), over Direction B's Neon-Console chrome (now pastel-accented) everywhere else.
|
||||
This is the "modern-sleek center with one bold, identity-defining surface" Daniel chose —
|
||||
dial the spectrum wider (a broader pastel arc) or narrower (tight to the three anchors)
|
||||
after seeing it on the DAW.
|
||||
- **Watch:** gradients/bloom are easy to overdo into "toy"; the glow must stay a static
|
||||
drawn state, never a pulse (§3.5); risks reading as *flashy* over *fast* if the speed
|
||||
drawn state, never a pulse (§3.5); a pastel ramp has *less* inter-note contrast than a
|
||||
neon one, so verify adjacent zone bands stay distinguishable (the same secondary-vs-
|
||||
tertiary caution as Direction B); risks reading as *flashy* over *fast* if the speed
|
||||
discipline slips.
|
||||
|
||||
**Settled recommendation, now spec:** build the **kit palette abstractly** (roles, not
|
||||
hardcoded colors — §2.1) so the direction is *one file of constants*; **default to
|
||||
Direction B (Neon Console)** with **Direction C's spectral keyboard strip** as the
|
||||
signature surface. Because the palette is abstract, a later re-pick is one file.
|
||||
Direction B (Neon Console) with the three-accent pastel system** (primary lime / secondary
|
||||
teal / tertiary purple) and **Direction C's pastel spectral keyboard strip** as the
|
||||
signature surface. Because the palette is abstract, a later re-pick — or a saturation nudge
|
||||
within the pastel intent — is one file.
|
||||
|
||||
---
|
||||
|
||||
@@ -445,8 +585,10 @@ not a forecast of them. If L2 starts before M11 lands, it designs against a movi
|
||||
### 5.3 `L3` — VST editor + embed-strip restyle (GATED on Phase S landing on dev)
|
||||
|
||||
The ReaSampler 9000 VST editor (`IPlugView` LICE surface) and the S6 embed strip get the
|
||||
full kit treatment: cached-font text, kit component draws, the B+spectral palette, the
|
||||
spectral keyboard strip as the signature surface, hover/pressed/drag states everywhere.
|
||||
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.
|
||||
|
||||
**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
|
||||
@@ -495,18 +637,49 @@ is gated on Phase S reaching dev. Phase S feature work proceeds in parallel, ung
|
||||
"temple os" look is drawing at LICE's floor, not hitting its ceiling. No new dependency,
|
||||
fully consistent with D-A.
|
||||
|
||||
**Fork DS-2 — visual direction. SETTLED: Direction B (Neon Console) + Direction C's
|
||||
spectral keyboard strip.**
|
||||
**Fork DS-2 — visual direction. SETTLED 2026-07-26: Direction B (Neon Console) + Direction
|
||||
C's spectral keyboard strip. REVISED 2026-07-26 (Daniel): three-accent pastel system.**
|
||||
|
||||
- **Settled:** **B** (near-black + one vivid accent, modern soft-synth idiom) as the
|
||||
system-wide target, with **C's spectral, hue-mapped keyboard strip** as the signature
|
||||
surface — the multi-zone-in-one-instance advantage made visual.
|
||||
- **Settled (original):** **B** (near-black + one vivid accent, modern soft-synth idiom) as
|
||||
the system-wide target, with **C's spectral, hue-mapped keyboard strip** as the signature
|
||||
surface — the multi-zone-in-one-instance advantage made visual. The single accent was
|
||||
**electric cyan**.
|
||||
- **Revised (2026-07-26, Daniel) — accent layer:** the accent layer changes from **one
|
||||
electric cyan** to a **three-accent pastel system** — **primary = pastel lime green,
|
||||
secondary = pastel teal, tertiary = pastel purple**. The spectral keyboard strip becomes
|
||||
a **pastel** sweep anchored on the three accents (§4 Direction C). This revision is
|
||||
**palette-only.** *Rationale (Daniel, verbatim intent):* "the layout is a huge
|
||||
improvement… the only thing I want to change is the cyan — it's too CYAN, I prefer pastel
|
||||
hues… a three-color accent system, primary / secondary / tertiary as pastel lime green /
|
||||
pastel teal / pastel purple" — too cyan; prefers pastel; wants three-accent
|
||||
primary/secondary/tertiary.
|
||||
- **Revised (2026-07-26, Daniel) — neutral surfaces:** the neutral role ladder moves
|
||||
**from near-black up into REAPER's mid-grey theme family**, so the dock reads as *part of
|
||||
REAPER, not a black slab bolted on beside it*. Concrete starting ladder (§2.1): `bg/base`
|
||||
≈ `#2b2b2b` (REAPER chrome), `bg/panel` ≈ `#333333`, `bg/cell` ≈ `#3a3a3a` (REAPER track
|
||||
bg), `line/hairline` ≈ `#4a4a4a`, `text/primary` ≈ `#dcdcdc`, `text/dim` ≈ `~#a0a0a0`+.
|
||||
The **elevation-ladder discipline is unchanged** (base < panel < cell by a few %, micro-
|
||||
gradient + inner highlight/shadow carry elevation, not hard borders). This shifts the WCAG
|
||||
burden (§2.1 re-read): **`text/dim` on grey** and **the three pastels as state indicators
|
||||
on grey** are now the tight pairs — mid-grey-on-mid-grey for dim text, shrunken pastel
|
||||
cushion for the accents — the implementer re-verifies both against the grey ladder, not
|
||||
near-black. *Rationale (Daniel, verbatim):* "we should adjust the neutral colors to be
|
||||
more grey to match my REAPER theme… Text and surfaces should match" — the dock should
|
||||
read as part of REAPER, not a black box.
|
||||
- **Font upgrade — considered and DECLINED (Daniel, 2026-07-26).** A stylish/bundled-font
|
||||
upgrade was on the table in an earlier draft of this revision and Daniel **declined it**:
|
||||
he does not want to bundle and redistribute a font. The kit keeps its **current**
|
||||
cached-font face; no new typeface is specified (§3.1). Recorded here so the question is
|
||||
not re-raised — the §3.1 win is the AA cached-glyph mechanism, not the face.
|
||||
- **Not selected:** **A Studio Rack** (evolutionary green — retained only as a fallback if
|
||||
B/C read too loud for pro-audio).
|
||||
- **Reasoning preserved:** modern-sleek center + one bold identity surface; Daniel reacts
|
||||
better to bold than to conservative. The kit palette is abstract (roles, one constants
|
||||
block), so this is **reversible for ~one file** — a starting direction, not a permanent
|
||||
lock.
|
||||
- **Reasoning preserved:** modern-sleek center + one bold identity surface; the revision
|
||||
keeps that shape but trades neon punch for pastel calm (Daniel's taste, stated on seeing
|
||||
the landed layout) and adds categorical meaning via the accent trio. The kit palette is
|
||||
abstract (roles, one constants block — now three accent roles instead of one), so this is
|
||||
still **reversible for ~one file** — a starting direction, not a permanent lock. The final
|
||||
hex is the implementer's to lock against the theme module's WCAG tests, staying within the
|
||||
pastel intent (the "soft-side" floor discipline, §2.1).
|
||||
|
||||
**Fork DS-3 — panel refresh scope. SETTLED: thorough layout redesign (not a light
|
||||
re-skin).**
|
||||
@@ -539,7 +712,9 @@ re-skin).**
|
||||
- **Read-only-over-bank untouched** — this is look-and-feel; no data-ownership change.
|
||||
- **The instrument keeps the same VST3 class UID / component-state contract** — a visual
|
||||
refresh is not a compat event (Phase S concern; noted for when L3 runs).
|
||||
- **Windows-only (D5)** — the font/GDI/HFONT choices assume Windows; no cross-platform
|
||||
font fallback concern.
|
||||
- **Windows-only (D5)** — the extension's GDI/HFONT path assumes Windows; no cross-platform
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user