fix(themes): P2 contrast floors retuned + gated across 9 themes (item 28b done)
All checks were successful
Check / eval (push) Successful in 3m10s
All checks were successful
Check / eval (push) Successful in 3m10s
18 hex retunes, hue-preserving OKLCH minimal raises except where the upstream palette defines a canonical value: muted lifted to >= 2.0 on lumon/white/retro-82/everforest (solved), gruvbox (bg4 #7c6f64), nord (#616e88, the community comment-brightening), catppuccin-latte (overlay1 #8c8fa1); text-on-surface >= 4.5 via surface nudges (ristretto darker, latte lighter); accentAlt >= 3.0 (latte, summer-day darkened); warn >= 2.5 — the bar's battery tint — darkened on the light bases (latte, rose-pine dawn, summer-day) and flexoki-light's four status colors moved to their canonical light-mode 600 series. check-theme-contrast.py now gates all four adopted floors (7 pairings x 21 themes, green). good/bad stay audit-only — identity themes sit at 2.0-2.3 there by design, so no exemption mechanism was needed. The design audit's contrast findings drop 20 -> 1 (miasma's earthy `bad`, kept as identity). Item 28 slice (b) complete. Verified: V0, checks.theme-contrast green, flake check green, re-audit. Rendering is V3 -> HARDWARE-QUEUE eyeball entries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,8 +55,15 @@ P1s ✓ shipped 2026-07-05 (iteration #32): summer-day + flexoki-light
|
|||||||
subtext/surface/overlay/muted retuned (flexoki to its canonical
|
subtext/surface/overlay/muted retuned (flexoki to its canonical
|
||||||
upstream tones), miasma + kanagawa surfaces raised (kanagawa to
|
upstream tones), miasma + kanagawa surfaces raised (kanagawa to
|
||||||
sumiInk4); `subtext/base ≥ 3` now GATED in check-theme-contrast.py
|
sumiInk4); `subtext/base ≥ 3` now GATED in check-theme-contrast.py
|
||||||
(all 21 pass). Remaining (b): the P2 floors below + the per-theme
|
(all 21 pass). P2s ✓ shipped 2026-07-05 (iteration #33): 18 hex
|
||||||
exemption-list mechanism, then re-audit;
|
retunes across 9 themes (OKLCH hue-preserving minimal raises;
|
||||||
|
canonical where upstream defines one — gruvbox bg4, nord #616e88,
|
||||||
|
latte overlay1, flexoki 600-series statuses for light mode) and the
|
||||||
|
four floors GATED: muted ≥ 2, text/surface ≥ 4.5, accentAlt ≥ 3,
|
||||||
|
warn ≥ 2.5 (21×7 pairings green; audit contrast findings 20 → 1 —
|
||||||
|
miasma's earthy `bad` stays as identity, good/bad floors stay
|
||||||
|
audit-only so no exemption list was needed). Remaining (b): nothing —
|
||||||
|
further palette work graduates from slices (c)/(d) findings;
|
||||||
(c) per-surface polish slices;
|
(c) per-surface polish slices;
|
||||||
(d) the whole-swap themes brought to the same bar. Visual work is
|
(d) the whole-swap themes brought to the same bar. Visual work is
|
||||||
V3-bound by nature — screenshots are the review artifact, hardware
|
V3-bound by nature — screenshots are the review artifact, hardware
|
||||||
|
|||||||
@@ -153,6 +153,13 @@ QA machine), the **T14s** (webcam case).
|
|||||||
applies the matching profile within ~3s (toast names it);
|
applies the matching profile within ~3s (toast names it);
|
||||||
unplugging switches back; Auto-switch off stops that; with two
|
unplugging switches back; Auto-switch off stops that; with two
|
||||||
profiles naming the same outputs, no flapping (ties do nothing).
|
profiles naming the same outputs, no flapping (ties do nothing).
|
||||||
|
- [ ] **P2 retunes eyeball (item 28b)** — spot-check on top of the P1
|
||||||
|
entry below: gruvbox/nord/lumon/everforest/retro-82/white dimmed
|
||||||
|
text (inactive workspaces, muted volume) now visible-but-dim;
|
||||||
|
latte + rose-pine(dawn) + summer-day warn/battery tint reads on
|
||||||
|
the light bases; flexoki-light statuses are the deeper canonical
|
||||||
|
600s; latte selected-row/alt-accent pink darker. Anything that
|
||||||
|
lost its "dim" feel → reopen 28b.
|
||||||
- [ ] **Retuned palettes eyeball (item 28b P1)** — switch through
|
- [ ] **Retuned palettes eyeball (item 28b P1)** — switch through
|
||||||
summer-day, flexoki-light, kanagawa, miasma: chips/menus/toasts
|
summer-day, flexoki-light, kanagawa, miasma: chips/menus/toasts
|
||||||
now draw on a *raised* surface (summer-day's was slate-on-cream,
|
now draw on a *raised* surface (summer-day's was slate-on-cream,
|
||||||
|
|||||||
@@ -17,6 +17,28 @@ Template:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-07-05 — P2 floors retuned + gated (iteration #33, item 28b done)
|
||||||
|
- **Task:** item 28 slice (b) remainder — the P2 contrast floors.
|
||||||
|
- **Did:** 18 hex retunes across 9 themes: muted raised on lumon/
|
||||||
|
white/retro-82/everforest (OKLCH hue-preserving minimal solve to
|
||||||
|
≥2.05) + gruvbox→bg4 #7c6f64, nord→#616e88 (community standard),
|
||||||
|
latte→overlay1 #8c8fa1; text-on-surface via surface nudges
|
||||||
|
(ristretto darker, latte lighter); accentAlt darkened (latte,
|
||||||
|
summer-day); warn darkened on the light themes (latte, summer-day,
|
||||||
|
rose-pine-dawn) and flexoki-light's four statuses moved to the
|
||||||
|
canonical 600 series. check-theme-contrast.py gates all four
|
||||||
|
adopted floors (muted ≥2, text/surface ≥4.5, accentAlt ≥3, warn
|
||||||
|
≥2.5 — warn is the battery tint); good/bad stay audit-only
|
||||||
|
(identity), so no exemption mechanism was needed. Slice (b) done.
|
||||||
|
- **Verified:** V0 + checks.theme-contrast GREEN (21×7); re-audit:
|
||||||
|
contrast findings 20→1 (miasma bad = identity); flake check green.
|
||||||
|
Rendering is V3 → queued (P2 eyeball entry).
|
||||||
|
- **Pending:** slices (c) per-surface polish (needs 1080p captures)
|
||||||
|
and (d) whole-swap bar parity; ansi[] conventions decision still
|
||||||
|
open (audit notes).
|
||||||
|
- **Next suggestion:** slice (c) prep — 1080p captures via the VM
|
||||||
|
recipe, or hardware captures if Bernardo prefers eyeballing first.
|
||||||
|
|
||||||
## 2026-07-05 — P1 palette retunes + gated subtext floor (iteration #32, item 28b)
|
## 2026-07-05 — P1 palette retunes + gated subtext floor (iteration #32, item 28b)
|
||||||
- **Task:** item 28 slice (b), P1s from the #31 audit.
|
- **Task:** item 28 slice (b), P1s from the #31 audit.
|
||||||
- **Did:** summer-day: surface #5c6a72(=text!)→#efe7d0 raised cream,
|
- **Did:** summer-day: surface #5c6a72(=text!)→#efe7d0 raised cream,
|
||||||
|
|||||||
@@ -7,15 +7,15 @@
|
|||||||
"colors": {
|
"colors": {
|
||||||
"base": "#eff1f5",
|
"base": "#eff1f5",
|
||||||
"mantle": "#cbcdd0",
|
"mantle": "#cbcdd0",
|
||||||
"surface": "#bcc0cc",
|
"surface": "#bfc4d0",
|
||||||
"overlay": "#acb0be",
|
"overlay": "#acb0be",
|
||||||
"text": "#4c4f69",
|
"text": "#4c4f69",
|
||||||
"subtext": "#5c5f77",
|
"subtext": "#5c5f77",
|
||||||
"muted": "#acb0be",
|
"muted": "#8c8fa1",
|
||||||
"accent": "#1e66f5",
|
"accent": "#1e66f5",
|
||||||
"accentAlt": "#ea76cb",
|
"accentAlt": "#d260b5",
|
||||||
"good": "#40a02b",
|
"good": "#40a02b",
|
||||||
"warn": "#df8e1d",
|
"warn": "#d6860a",
|
||||||
"bad": "#d20f39"
|
"bad": "#d20f39"
|
||||||
},
|
},
|
||||||
"border": {
|
"border": {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#475258",
|
"overlay": "#475258",
|
||||||
"text": "#d3c6aa",
|
"text": "#d3c6aa",
|
||||||
"subtext": "#d3c6aa",
|
"subtext": "#d3c6aa",
|
||||||
"muted": "#475258",
|
"muted": "#59646a",
|
||||||
"accent": "#7fbbb3",
|
"accent": "#7fbbb3",
|
||||||
"accentAlt": "#d699b6",
|
"accentAlt": "#d699b6",
|
||||||
"good": "#a7c080",
|
"good": "#a7c080",
|
||||||
|
|||||||
@@ -13,10 +13,10 @@
|
|||||||
"subtext": "#6F6E69",
|
"subtext": "#6F6E69",
|
||||||
"muted": "#878580",
|
"muted": "#878580",
|
||||||
"accent": "#205EA6",
|
"accent": "#205EA6",
|
||||||
"accentAlt": "#CE5D97",
|
"accentAlt": "#A02F6F",
|
||||||
"good": "#879A39",
|
"good": "#66800B",
|
||||||
"warn": "#D0A215",
|
"warn": "#AD8301",
|
||||||
"bad": "#D14D41"
|
"bad": "#AF3029"
|
||||||
},
|
},
|
||||||
"border": {
|
"border": {
|
||||||
"active": "accent",
|
"active": "accent",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#3c3836",
|
"overlay": "#3c3836",
|
||||||
"text": "#d4be98",
|
"text": "#d4be98",
|
||||||
"subtext": "#d4be98",
|
"subtext": "#d4be98",
|
||||||
"muted": "#3c3836",
|
"muted": "#7c6f64",
|
||||||
"accent": "#7daea3",
|
"accent": "#7daea3",
|
||||||
"accentAlt": "#d3869b",
|
"accentAlt": "#d3869b",
|
||||||
"good": "#a9b665",
|
"good": "#a9b665",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#304860",
|
"overlay": "#304860",
|
||||||
"text": "#d6e2ee",
|
"text": "#d6e2ee",
|
||||||
"subtext": "#d6e2ee",
|
"subtext": "#d6e2ee",
|
||||||
"muted": "#304860",
|
"muted": "#3c556e",
|
||||||
"accent": "#f2fcff",
|
"accent": "#f2fcff",
|
||||||
"accentAlt": "#8bc9eb",
|
"accentAlt": "#8bc9eb",
|
||||||
"good": "#5e95bc",
|
"good": "#5e95bc",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#4c566a",
|
"overlay": "#4c566a",
|
||||||
"text": "#d8dee9",
|
"text": "#d8dee9",
|
||||||
"subtext": "#e5e9f0",
|
"subtext": "#e5e9f0",
|
||||||
"muted": "#4c566a",
|
"muted": "#616e88",
|
||||||
"accent": "#81a1c1",
|
"accent": "#81a1c1",
|
||||||
"accentAlt": "#b48ead",
|
"accentAlt": "#b48ead",
|
||||||
"good": "#a3be8c",
|
"good": "#a3be8c",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#134e5a",
|
"overlay": "#134e5a",
|
||||||
"text": "#f6dcac",
|
"text": "#f6dcac",
|
||||||
"subtext": "#a7c9c6",
|
"subtext": "#a7c9c6",
|
||||||
"muted": "#134e5a",
|
"muted": "#19525f",
|
||||||
"accent": "#faa968",
|
"accent": "#faa968",
|
||||||
"accentAlt": "#3f8f8a",
|
"accentAlt": "#3f8f8a",
|
||||||
"good": "#028391",
|
"good": "#028391",
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"colors": {
|
"colors": {
|
||||||
"base": "#2c2525",
|
"base": "#2c2525",
|
||||||
"mantle": "#251f1f",
|
"mantle": "#251f1f",
|
||||||
"surface": "#72696a",
|
"surface": "#675e5f",
|
||||||
"overlay": "#948a8b",
|
"overlay": "#948a8b",
|
||||||
"text": "#e6d9db",
|
"text": "#e6d9db",
|
||||||
"subtext": "#e6d9db",
|
"subtext": "#e6d9db",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"accent": "#56949f",
|
"accent": "#56949f",
|
||||||
"accentAlt": "#907aa9",
|
"accentAlt": "#907aa9",
|
||||||
"good": "#286983",
|
"good": "#286983",
|
||||||
"warn": "#ea9d34",
|
"warn": "#d68a16",
|
||||||
"bad": "#b4637a"
|
"bad": "#b4637a"
|
||||||
},
|
},
|
||||||
"border": {
|
"border": {
|
||||||
|
|||||||
@@ -13,9 +13,9 @@
|
|||||||
"subtext": "#6e828a",
|
"subtext": "#6e828a",
|
||||||
"muted": "#829181",
|
"muted": "#829181",
|
||||||
"accent": "#3a94c5",
|
"accent": "#3a94c5",
|
||||||
"accentAlt": "#df69ba",
|
"accentAlt": "#d863b4",
|
||||||
"good": "#8da101",
|
"good": "#8da101",
|
||||||
"warn": "#dfa000",
|
"warn": "#ca9210",
|
||||||
"bad": "#f85552"
|
"bad": "#f85552"
|
||||||
},
|
},
|
||||||
"border": {
|
"border": {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"overlay": "#c0c0c0",
|
"overlay": "#c0c0c0",
|
||||||
"text": "#000000",
|
"text": "#000000",
|
||||||
"subtext": "#000000",
|
"subtext": "#000000",
|
||||||
"muted": "#c0c0c0",
|
"muted": "#b5b5b5",
|
||||||
"accent": "#6e6e6e",
|
"accent": "#6e6e6e",
|
||||||
"accentAlt": "#2e2e2e",
|
"accentAlt": "#2e2e2e",
|
||||||
"good": "#3a3a3a",
|
"good": "#3a3a3a",
|
||||||
|
|||||||
@@ -26,6 +26,14 @@ PAIRINGS = [
|
|||||||
# shipped subtext == base (ratio 1.0 — invisible secondary text; the
|
# shipped subtext == base (ratio 1.0 — invisible secondary text; the
|
||||||
# palette-level cause of items 25/27). Never again.
|
# palette-level cause of items 25/27). Never again.
|
||||||
("subtext", "base", 3.0, "secondary text (tooltips, hints, fastfetch labels)"),
|
("subtext", "base", 3.0, "secondary text (tooltips, hints, fastfetch labels)"),
|
||||||
|
# Item-28 P2 floors (all 21 themes retuned to pass, 2026-07-05).
|
||||||
|
# warn IS held to a floor — it's the bar's 25%-battery color and the
|
||||||
|
# low-battery toast tint; good/bad stay audit-only (identity themes
|
||||||
|
# sit at 2.0–2.3 there by design — see tools/audit-theme-design.py).
|
||||||
|
("muted", "base", 2.0, "dimmed text (inactive workspaces, muted volume)"),
|
||||||
|
("text", "surface", 4.5, "text on chips / raised rows"),
|
||||||
|
("accentAlt", "base", 3.0, "alt-accent glyphs"),
|
||||||
|
("warn", "base", 2.5, "battery warning tint (bar + toast)"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user