Problem (behavioral)
Per-mode controls read the active mode and write only that mode, yet are visually indistinguishable from shared controls. Affected editors:
- Surface sliders (tint / text accent / desaturate) —
surface-adjustment.tsx, pass m.resolvedMode, no label.
- Role-bindings combobox —
bindings-content.tsx, no mode label.
- md3 / shadcn-role / chart override editors —
override-content.tsx + the color-roles pages, no mode label.
Surface Adjustment mixed granularity (sharpest)
The Surface panel places SHARED controls (Tint/Desaturate tabs, neutral-palette chips) in the same unlabeled collapsible as PER-MODE controls (the 3 level sliders). With surfaceAlgo='tint' (shared) but surfaceTintLevel={light:0.5, dark:0}, toggling to dark shows the Tint tab still selected while the slider reads 0 — contradictory signals in one panel.
Palette-override preview (folded in)
animated-button-color-picker.tsx shows the active mode's derived swatch for setPaletteOverride, which is mode-invariant. The preview changes per mode though the written value is shared, which reads as per-mode. Clarify.
Ask
Per-panel light/dark scoping label (a small pill, not per-control), and disambiguate shared vs per-mode within the Surface panel.
Problem (behavioral)
Per-mode controls read the active mode and write only that mode, yet are visually indistinguishable from shared controls. Affected editors:
surface-adjustment.tsx, passm.resolvedMode, no label.bindings-content.tsx, no mode label.override-content.tsx+ the color-roles pages, no mode label.Surface Adjustment mixed granularity (sharpest)
The Surface panel places SHARED controls (Tint/Desaturate tabs, neutral-palette chips) in the same unlabeled collapsible as PER-MODE controls (the 3 level sliders). With
surfaceAlgo='tint'(shared) butsurfaceTintLevel={light:0.5, dark:0}, toggling to dark shows the Tint tab still selected while the slider reads 0 — contradictory signals in one panel.Palette-override preview (folded in)
animated-button-color-picker.tsxshows the active mode's derived swatch forsetPaletteOverride, which is mode-invariant. The preview changes per mode though the written value is shared, which reads as per-mode. Clarify.Ask
Per-panel light/dark scoping label (a small pill, not per-control), and disambiguate shared vs per-mode within the Surface panel.