fix(theme): per-skin legibility polish from the sweep review
Address the high-severity, systemic legibility issues found in the per-skin screenshot review (verified across all 9 skins): - Status pills (history): "Confirmed" text was 55%-alpha (dim); make it full opacity, and give status/shield pills a visible tinted fill (a48) + 1px border (a90) so they stop vanishing on dark-red / near-white / gradient skins. - Console light theming: light skins now use a near-white terminal surface, and the log text/JsonBrace colors switch to the dark defaults in light themes (the schema colors are dark-terminal-authored — honor them only in dark themes) so text isn't pale-on-white. - Dark-skin muted text: bump --on-surface-medium 0.85 / --on-surface-disabled 0.58 on dragonx/dark/color-pop-dark/obsidian (obsidian addresses were ~1.1:1). - Disabled Send button: the disabled fill was hardcoded white (invisible on light skins) — use a dark overlay in light themes. - Light-skin inputs: stronger frame fill + border color and a 1px frame border for light themes so fields (and buttons) have defined boundaries on white/ pastel surfaces. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -372,7 +372,7 @@ void ApplyColorThemeToImGui(const ColorTheme& theme)
|
||||
colors[ImGuiCol_Border] = ImVec4(1.0f, 1.0f, 1.0f, 0.15f);
|
||||
colors[ImGuiCol_BorderShadow] = ImVec4(0, 0, 0, 0.08f);
|
||||
} else {
|
||||
colors[ImGuiCol_Border] = ImVec4(0, 0, 0, 0.12f);
|
||||
colors[ImGuiCol_Border] = ImVec4(0, 0, 0, 0.22f);
|
||||
colors[ImGuiCol_BorderShadow] = ImVec4(0, 0, 0, 0.04f);
|
||||
}
|
||||
|
||||
@@ -383,10 +383,11 @@ void ApplyColorThemeToImGui(const ColorTheme& theme)
|
||||
colors[ImGuiCol_FrameBgActive] = ImVec4(1.0f, 1.0f, 1.0f, 0.15f);
|
||||
} else {
|
||||
// Light themes: the old 4/7/10% black fills were nearly invisible on a white surface (input
|
||||
// fields blended in). Darker fills so inputs/dropdowns read as defined boxes.
|
||||
colors[ImGuiCol_FrameBg] = ImVec4(0, 0, 0, 0.09f);
|
||||
colors[ImGuiCol_FrameBgHovered] = ImVec4(0, 0, 0, 0.14f);
|
||||
colors[ImGuiCol_FrameBgActive] = ImVec4(0, 0, 0, 0.18f);
|
||||
// fields blended in). Darker fills + a 1px frame border (below) so inputs/dropdowns read as
|
||||
// defined boxes even on the pastel/gradient light skins (iridescent, color-pop-light).
|
||||
colors[ImGuiCol_FrameBg] = ImVec4(0, 0, 0, 0.11f);
|
||||
colors[ImGuiCol_FrameBgHovered] = ImVec4(0, 0, 0, 0.16f);
|
||||
colors[ImGuiCol_FrameBgActive] = ImVec4(0, 0, 0, 0.20f);
|
||||
}
|
||||
|
||||
// Title bar
|
||||
@@ -508,7 +509,10 @@ void ApplyColorThemeToImGui(const ColorTheme& theme)
|
||||
style.WindowBorderSize = bwElem.extraFloats.count("window") ? bwElem.extraFloats.at("window") : 1.0f;
|
||||
style.ChildBorderSize = bwElem.extraFloats.count("child") ? bwElem.extraFloats.at("child") : 1.0f;
|
||||
style.PopupBorderSize = bwElem.extraFloats.count("popup") ? bwElem.extraFloats.at("popup") : 1.0f;
|
||||
style.FrameBorderSize = bwElem.extraFloats.count("frame") ? bwElem.extraFloats.at("frame") : 0.0f;
|
||||
// Light themes get a 1px frame border so inputs have a defined boundary on white/pastel surfaces;
|
||||
// dark themes stay borderless (their translucent glass FrameBg is enough). Schema can override.
|
||||
style.FrameBorderSize = bwElem.extraFloats.count("frame") ? bwElem.extraFloats.at("frame")
|
||||
: (s_isDarkTheme ? 0.0f : 1.0f);
|
||||
style.TabBorderSize = 0.0f;
|
||||
|
||||
style.AntiAliasedLines = true;
|
||||
|
||||
Reference in New Issue
Block a user