fix: stop using ANSI blue (#2421)

- One less color.
- Replaced with cyan which looks better next to other cyan components.
This commit is contained in:
ae
2025-08-18 09:02:25 -07:00
committed by GitHub
parent be6a4faa45
commit da69d50c60
6 changed files with 19 additions and 16 deletions

View File

@@ -101,7 +101,7 @@ pub(crate) fn render_rows(
if Some(i) == state.selected_idx { if Some(i) == state.selected_idx {
cell = cell.style( cell = cell.style(
Style::default() Style::default()
.fg(Color::Blue) .fg(Color::Cyan)
.add_modifier(Modifier::BOLD), .add_modifier(Modifier::BOLD),
); );
} else if *is_current { } else if *is_current {

View File

@@ -711,7 +711,7 @@ pub(crate) fn new_plan_update(update: UpdatePlanArgs) -> PlainHistoryCell {
Span::styled( Span::styled(
step, step,
Style::default() Style::default()
.fg(Color::Blue) .fg(Color::Cyan)
.add_modifier(Modifier::BOLD), .add_modifier(Modifier::BOLD),
), ),
), ),
@@ -913,9 +913,9 @@ fn format_mcp_invocation<'a>(invocation: McpInvocation) -> Line<'a> {
.unwrap_or_default(); .unwrap_or_default();
let invocation_spans = vec![ let invocation_spans = vec![
Span::styled(invocation.server.clone(), Style::default().fg(Color::Blue)), Span::styled(invocation.server.clone(), Style::default().fg(Color::Cyan)),
Span::raw("."), Span::raw("."),
Span::styled(invocation.tool.clone(), Style::default().fg(Color::Blue)), Span::styled(invocation.tool.clone(), Style::default().fg(Color::Cyan)),
Span::raw("("), Span::raw("("),
Span::styled(args_str, Style::default().add_modifier(Modifier::DIM)), Span::styled(args_str, Style::default().add_modifier(Modifier::DIM)),
Span::raw(")"), Span::raw(")"),

View File

@@ -130,8 +130,8 @@ impl AuthModeWidget {
let line1 = if is_selected { let line1 = if is_selected {
Line::from(vec![ Line::from(vec![
format!("{} {}. ", caret, idx + 1).blue().dim(), format!("{} {}. ", caret, idx + 1).cyan().dim(),
text.to_string().blue(), text.to_string().cyan(),
]) ])
} else { } else {
Line::from(format!(" {}. {text}", idx + 1)) Line::from(format!(" {}. {text}", idx + 1))
@@ -139,7 +139,7 @@ impl AuthModeWidget {
let line2 = if is_selected { let line2 = if is_selected {
Line::from(format!(" {description}")) Line::from(format!(" {description}"))
.fg(Color::Blue) .fg(Color::Cyan)
.add_modifier(Modifier::DIM) .add_modifier(Modifier::DIM)
} else { } else {
Line::from(format!(" {description}")) Line::from(format!(" {description}"))
@@ -163,6 +163,8 @@ impl AuthModeWidget {
)); ));
lines.push(Line::from("")); lines.push(Line::from(""));
lines.push( lines.push(
// AE: Following styles.md, this should probably be Cyan because it's a user input tip.
// But leaving this for a future cleanup.
Line::from(" Press Enter to continue") Line::from(" Press Enter to continue")
.style(Style::default().add_modifier(Modifier::DIM)), .style(Style::default().add_modifier(Modifier::DIM)),
); );
@@ -194,7 +196,7 @@ impl AuthModeWidget {
lines.push(Line::from(" If the link doesn't open automatically, open the following link to authenticate:")); lines.push(Line::from(" If the link doesn't open automatically, open the following link to authenticate:"));
lines.push(Line::from(vec![ lines.push(Line::from(vec![
Span::raw(" "), Span::raw(" "),
state.auth_url.as_str().blue().underlined(), state.auth_url.as_str().cyan().underlined(),
])); ]));
lines.push(Line::from("")); lines.push(Line::from(""));
} }
@@ -238,7 +240,7 @@ impl AuthModeWidget {
]) ])
.style(Style::default().add_modifier(Modifier::DIM)), .style(Style::default().add_modifier(Modifier::DIM)),
Line::from(""), Line::from(""),
Line::from(" Press Enter to continue").fg(Color::Blue), Line::from(" Press Enter to continue").fg(Color::Cyan),
]; ];
Paragraph::new(lines) Paragraph::new(lines)
@@ -267,7 +269,7 @@ impl AuthModeWidget {
Line::from( Line::from(
" To use Codex with the OpenAI API, set OPENAI_API_KEY in your environment", " To use Codex with the OpenAI API, set OPENAI_API_KEY in your environment",
) )
.style(Style::default().fg(Color::Blue)), .style(Style::default().fg(Color::Cyan)),
Line::from(""), Line::from(""),
Line::from(" Press Enter to return") Line::from(" Press Enter to return")
.style(Style::default().add_modifier(Modifier::DIM)), .style(Style::default().add_modifier(Modifier::DIM)),

View File

@@ -75,7 +75,7 @@ impl WidgetRef for &TrustDirectoryWidget {
|idx: usize, option: TrustDirectorySelection, text: &str| -> Line<'static> { |idx: usize, option: TrustDirectorySelection, text: &str| -> Line<'static> {
let is_selected = self.highlighted == option; let is_selected = self.highlighted == option;
if is_selected { if is_selected {
Line::from(format!("> {}. {text}", idx + 1)).blue() Line::from(format!("> {}. {text}", idx + 1)).cyan()
} else { } else {
Line::from(format!(" {}. {}", idx + 1, text)) Line::from(format!(" {}. {}", idx + 1, text))
} }
@@ -109,6 +109,8 @@ impl WidgetRef for &TrustDirectoryWidget {
lines.push(Line::from(format!(" {error}")).fg(Color::Red)); lines.push(Line::from(format!(" {error}")).fg(Color::Red));
lines.push(Line::from("")); lines.push(Line::from(""));
} }
// AE: Following styles.md, this should probably be Cyan because it's a user input tip.
// But leaving this for a future cleanup.
lines.push(Line::from(" Press Enter to continue").add_modifier(Modifier::DIM)); lines.push(Line::from(" Press Enter to continue").add_modifier(Modifier::DIM));
Paragraph::new(lines) Paragraph::new(lines)

View File

@@ -145,7 +145,7 @@ impl UserApprovalWidget<'_> {
} => { } => {
let cmd = strip_bash_lc_and_escape(command); let cmd = strip_bash_lc_and_escape(command);
let mut contents: Vec<Line> = to_command_display( let mut contents: Vec<Line> = to_command_display(
vec!["? ".fg(Color::Blue), "Codex wants to run ".bold()], vec!["? ".fg(Color::Cyan), "Codex wants to run ".bold()],
cmd, cmd,
vec![], vec![],
); );

View File

@@ -7,16 +7,15 @@
# Foreground colors # Foreground colors
- **Default:** Most of the time, just use the default foreground color. `reset` can help get it back. - **Default:** Most of the time, just use the default foreground color. `reset` can help get it back.
- **Selection:** Use ANSI `blue`. (Ed & AE want to make this cyan too, but we'll do that in a followup since it's riskier in different themes.) - **User input tips, selection, and status indicators:** Use ANSI `cyan`.
- **User input tips and status indicators:** Use ANSI `cyan`.
- **Success and additions:** Use ANSI `green`. - **Success and additions:** Use ANSI `green`.
- **Errors, failures and deletions:** Use ANSI `red`. - **Errors, failures and deletions:** Use ANSI `red`.
- **Codex:** Use ANSI `magenta`. - **Codex:** Use ANSI `magenta`.
# Avoid # Avoid
- Avoid custom colors because there's no guarantee that they'll contrast well or look good in various terminal color themes. - Avoid custom colors because there's no guarantee that they'll contrast well or look good in various terminal color themes. (`shimmer.rs` is an exception that works well because we take the default colors and just adjust their levels.)
- Avoid ANSI `black` & `white` as foreground colors because the default terminal theme color will do a better job. (Use `reset` if you need to in order to get those.) The exception is if you need contrast rendering over a manually colored background. - Avoid ANSI `black` & `white` as foreground colors because the default terminal theme color will do a better job. (Use `reset` if you need to in order to get those.) The exception is if you need contrast rendering over a manually colored background.
- Avoid ANSI `yellow` because for now the style guide doesn't use it. Prefer a foreground color mentioned above. - Avoid ANSI `blue` and `yellow` because for now the style guide doesn't use them. Prefer a foreground color mentioned above.
(There are some rules to try to catch this in `clippy.toml`.) (There are some rules to try to catch this in `clippy.toml`.)