From b14ef7735f2c0d7d4f20a35fe3c087a336b962df Mon Sep 17 00:00:00 2001 From: sunilkumarvalmiki Date: Wed, 27 May 2026 19:17:46 +0530 Subject: [PATCH] Fix workspace save icon contrast --- CHANGELOG.md | 4 ++++ static/style.css | 7 ++++--- tests/test_issue2998_panel_primary_contrast.py | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 tests/test_issue2998_panel_primary_contrast.py diff --git a/CHANGELOG.md b/CHANGELOG.md index c365129f..c785188f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ ## [Unreleased] +### Fixed + +- Dark-mode panel header save buttons now use a theme-aware foreground token, keeping workspace and other detail-pane check icons visible on the default gold accent. (#2998) + ## [v0.51.145] — 2026-05-26 — Release DQ (stage-batch27 — sidebar running-state preservation) ### Fixed diff --git a/static/style.css b/static/style.css index 7e607f9f..f106f43f 100644 --- a/static/style.css +++ b/static/style.css @@ -3922,9 +3922,10 @@ main.main > .main-view:not([id="mainChat"]):not([id="mainSettings"]) .main-view- .detail-form-row label.detail-form-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);cursor:pointer;font-weight:400;} .detail-form-row label.detail-form-check input{accent-color:var(--accent,var(--link));} .detail-form-error{font-size:12px;color:var(--error,#e05);padding:8px 10px;border:1px solid color-mix(in srgb,var(--error,#e05) 35%,transparent);background:color-mix(in srgb,var(--error,#e05) 8%,transparent);border-radius:8px;line-height:1.5;} -.panel-head-btn.primary{background:var(--accent,var(--link));color:#fff;border:none;} -.panel-head-btn.primary:hover{background:var(--accent-hover,var(--accent,var(--link)));color:#fff;} -.panel-head-btn.primary svg{color:#fff;} +:root.dark{--panel-head-primary-fg:var(--bg);} +.panel-head-btn.primary{background:var(--accent,var(--link));color:var(--panel-head-primary-fg,#fff);border:none;} +.panel-head-btn.primary:hover{background:var(--accent-hover,var(--accent,var(--link)));color:var(--panel-head-primary-fg,#fff);} +.panel-head-btn.primary svg{color:var(--panel-head-primary-fg,#fff);} /* Skill-picker inside in-main forms reuses the sidebar styles but needs light tweaks */ .detail-form-row .skill-picker-wrap{position:relative;} .detail-form-row .skill-picker-tags{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px;} diff --git a/tests/test_issue2998_panel_primary_contrast.py b/tests/test_issue2998_panel_primary_contrast.py new file mode 100644 index 00000000..fe4dce43 --- /dev/null +++ b/tests/test_issue2998_panel_primary_contrast.py @@ -0,0 +1,17 @@ +"""Regression coverage for #2998: gold panel save buttons need visible icons.""" + +from pathlib import Path + + +CSS = (Path(__file__).resolve().parent.parent / "static" / "style.css").read_text(encoding="utf-8") + + +def test_panel_primary_buttons_use_foreground_token_for_icon_contrast(): + assert "--panel-head-primary-fg" in CSS + assert ".panel-head-btn.primary{background:var(--accent,var(--link));color:var(--panel-head-primary-fg,#fff);border:none;}" in CSS + assert ".panel-head-btn.primary:hover{background:var(--accent-hover,var(--accent,var(--link)));color:var(--panel-head-primary-fg,#fff);}" in CSS + assert ".panel-head-btn.primary svg{color:var(--panel-head-primary-fg,#fff);}" in CSS + + +def test_dark_theme_panel_primary_buttons_use_dark_foreground_on_bright_accents(): + assert ":root.dark{--panel-head-primary-fg:var(--bg);}" in CSS