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:
@@ -111,12 +111,15 @@ void ConsoleTab::refreshColors()
|
||||
ImU32 defInf = dark ? IM_COL32(191, 209, 229, 255) : IM_COL32(21, 101, 192, 255);
|
||||
ImU32 defRpc = dark ? IM_COL32(120, 180, 255, 210) : IM_COL32(25, 118, 210, 220);
|
||||
|
||||
COLOR_COMMAND = !cmd.color.empty() ? S.resolveColor(cmd.color, defCmd) : defCmd;
|
||||
COLOR_RESULT = !res.color.empty() ? S.resolveColor(res.color, defRes) : defRes;
|
||||
COLOR_ERROR = !err.color.empty() ? S.resolveColor(err.color, defErr) : defErr;
|
||||
COLOR_DAEMON = !dmn.color.empty() ? S.resolveColor(dmn.color, defDmn) : defDmn;
|
||||
COLOR_INFO = !inf.color.empty() ? S.resolveColor(inf.color, defInf) : defInf;
|
||||
COLOR_RPC = !rpc.color.empty() ? S.resolveColor(rpc.color, defRpc) : defRpc;
|
||||
// The schema console colors are authored for the dark terminal (light-on-dark); honor them only
|
||||
// in dark themes. Light themes always use the dark-text defaults so log text stays legible on the
|
||||
// now near-white console surface (otherwise the schema's light-blue text sat pale-on-white ~1.2:1).
|
||||
COLOR_COMMAND = (dark && !cmd.color.empty()) ? S.resolveColor(cmd.color, defCmd) : defCmd;
|
||||
COLOR_RESULT = (dark && !res.color.empty()) ? S.resolveColor(res.color, defRes) : defRes;
|
||||
COLOR_ERROR = (dark && !err.color.empty()) ? S.resolveColor(err.color, defErr) : defErr;
|
||||
COLOR_DAEMON = (dark && !dmn.color.empty()) ? S.resolveColor(dmn.color, defDmn) : defDmn;
|
||||
COLOR_INFO = (dark && !inf.color.empty()) ? S.resolveColor(inf.color, defInf) : defInf;
|
||||
COLOR_RPC = (dark && !rpc.color.empty()) ? S.resolveColor(rpc.color, defRpc) : defRpc;
|
||||
} else {
|
||||
// No schema — use hardcoded defaults per theme
|
||||
COLOR_COMMAND = dark ? IM_COL32(191, 209, 229, 255) : IM_COL32(21, 101, 192, 255);
|
||||
@@ -145,7 +148,7 @@ ImU32 ConsoleTab::channelTextColor(ConsoleChannel channel) const
|
||||
case ConsoleChannel::JsonKey: return WithAlpha(Secondary(), 255);
|
||||
case ConsoleChannel::JsonString: return WithAlpha(Success(), 255);
|
||||
case ConsoleChannel::JsonNumber: return WithAlpha(Warning(), 255);
|
||||
case ConsoleChannel::JsonBrace: return IM_COL32(200, 200, 200, 150);
|
||||
case ConsoleChannel::JsonBrace: return IsLightTheme() ? IM_COL32(90, 90, 90, 180) : IM_COL32(200, 200, 200, 150);
|
||||
case ConsoleChannel::None:
|
||||
default: return COLOR_RESULT;
|
||||
}
|
||||
@@ -266,7 +269,10 @@ void ConsoleTab::render(ConsoleCommandExecutor& exec)
|
||||
// Terminal-dark overlay: dim the glass so console text reads like a real terminal.
|
||||
{
|
||||
int darkA = static_cast<int>(schema::UI().drawElement("tabs.console", "bg-darken-alpha").sizeOr(110.0f));
|
||||
dlOut->AddRectFilled(outPanelMin, outPanelMax, IM_COL32(0, 0, 0, darkA), outGlass.rounding);
|
||||
// Light skins get a near-white terminal surface (not a black darken) so the dark, theme-aware
|
||||
// log text stays legible instead of sitting dark-on-dark-grey.
|
||||
ImU32 termOverlay = IsLightTheme() ? IM_COL32(255, 255, 255, 205) : IM_COL32(0, 0, 0, darkA);
|
||||
dlOut->AddRectFilled(outPanelMin, outPanelMax, termOverlay, outGlass.rounding);
|
||||
}
|
||||
|
||||
int consoleParentVtx = dlOut->VtxBuffer.Size;
|
||||
|
||||
Reference in New Issue
Block a user