From d7b9dc47ae4e8ee65c12c7f78b5c1900a5b1c521 Mon Sep 17 00:00:00 2001 From: echobt Date: Thu, 5 Feb 2026 11:21:51 +0000 Subject: [PATCH] refactor(tui): remove [i] prefix from system messages and use red color for errors - Remove [i] prefix from info system messages for cleaner output - Add error detection for provider overload and connection issues - Display error messages in red color (colors.error) - Display info messages in muted color without prefix - Simplify text wrapping loop without indent handling --- .../src/views/minimal_session/rendering.rs | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/src/cortex-tui/src/views/minimal_session/rendering.rs b/src/cortex-tui/src/views/minimal_session/rendering.rs index 6c8c9727..7381603e 100644 --- a/src/cortex-tui/src/views/minimal_session/rendering.rs +++ b/src/cortex-tui/src/views/minimal_session/rendering.rs @@ -89,50 +89,35 @@ pub fn render_message_with_theme( lines.extend(rendered_lines); } MessageRole::System => { - // Detect error messages - no prefix, show in error color + // Detect error messages - show in error color let is_error = msg.content.contains("Check your") || msg.content.contains("Access denied") || msg.content.contains("timed out") || msg.content.contains("failed") || msg.content.contains("Invalid") || msg.content.contains("limit") - || msg.content.starts_with("Error:"); - - let (prefix, text_color) = if is_error { - // Error messages: no prefix, use error color - (Span::raw(""), colors.error) + || msg.content.starts_with("Error:") + || msg.content.contains("provider appears to be overloaded") + || msg.content.contains("internet connection") + || msg.content.contains("proxy is experiencing issues"); + + // No prefix for any system messages - use error color for errors, muted for info + let text_color = if is_error { + colors.error } else { - // Info messages: [i] prefix, use muted color - ( - Span::styled("[i] ", Style::default().fg(colors.text_muted)), - colors.text_muted, - ) + colors.text_muted }; - // Calculate available width for text - let prefix_width = if is_error { 0 } else { 2 }; - let text_width = (width as usize).saturating_sub(prefix_width + 1); + // Calculate available width for text (no prefix) + let text_width = (width as usize).saturating_sub(1); // Wrap text and render each line let wrapped_lines = wrap_text(&msg.content, text_width); - for (i, line_content) in wrapped_lines.iter().enumerate() { - if i == 0 { - let mut spans = Vec::new(); - if !is_error { - spans.push(prefix.clone()); - } - spans.push(Span::styled( - line_content.clone(), - Style::default().fg(text_color), - )); - lines.push(Line::from(spans)); - } else { - let indent = if is_error { "" } else { " " }; - lines.push(Line::from(vec![ - Span::raw(indent.to_string()), - Span::styled(line_content.clone(), Style::default().fg(text_color)), - ])); - } + for line_content in wrapped_lines.iter() { + lines.push(Line::from(vec![Span::styled( + line_content.clone(), + Style::default().fg(text_color), + )])); } } MessageRole::Tool => {