Skip to content

Commit ebabc51

Browse files
authored
refactor(tui): remove [i] prefix from system messages and use red color for errors (#121)
- 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
1 parent ac6398e commit ebabc51

File tree

1 file changed

+17
-32
lines changed

1 file changed

+17
-32
lines changed

src/cortex-tui/src/views/minimal_session/rendering.rs

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -89,50 +89,35 @@ pub fn render_message_with_theme(
8989
lines.extend(rendered_lines);
9090
}
9191
MessageRole::System => {
92-
// Detect error messages - no prefix, show in error color
92+
// Detect error messages - show in error color
9393
let is_error = msg.content.contains("Check your")
9494
|| msg.content.contains("Access denied")
9595
|| msg.content.contains("timed out")
9696
|| msg.content.contains("failed")
9797
|| msg.content.contains("Invalid")
9898
|| msg.content.contains("limit")
99-
|| msg.content.starts_with("Error:");
100-
101-
let (prefix, text_color) = if is_error {
102-
// Error messages: no prefix, use error color
103-
(Span::raw(""), colors.error)
99+
|| msg.content.starts_with("Error:")
100+
|| msg.content.contains("provider appears to be overloaded")
101+
|| msg.content.contains("internet connection")
102+
|| msg.content.contains("proxy is experiencing issues");
103+
104+
// No prefix for any system messages - use error color for errors, muted for info
105+
let text_color = if is_error {
106+
colors.error
104107
} else {
105-
// Info messages: [i] prefix, use muted color
106-
(
107-
Span::styled("[i] ", Style::default().fg(colors.text_muted)),
108-
colors.text_muted,
109-
)
108+
colors.text_muted
110109
};
111110

112-
// Calculate available width for text
113-
let prefix_width = if is_error { 0 } else { 2 };
114-
let text_width = (width as usize).saturating_sub(prefix_width + 1);
111+
// Calculate available width for text (no prefix)
112+
let text_width = (width as usize).saturating_sub(1);
115113

116114
// Wrap text and render each line
117115
let wrapped_lines = wrap_text(&msg.content, text_width);
118-
for (i, line_content) in wrapped_lines.iter().enumerate() {
119-
if i == 0 {
120-
let mut spans = Vec::new();
121-
if !is_error {
122-
spans.push(prefix.clone());
123-
}
124-
spans.push(Span::styled(
125-
line_content.clone(),
126-
Style::default().fg(text_color),
127-
));
128-
lines.push(Line::from(spans));
129-
} else {
130-
let indent = if is_error { "" } else { " " };
131-
lines.push(Line::from(vec![
132-
Span::raw(indent.to_string()),
133-
Span::styled(line_content.clone(), Style::default().fg(text_color)),
134-
]));
135-
}
116+
for line_content in wrapped_lines.iter() {
117+
lines.push(Line::from(vec![Span::styled(
118+
line_content.clone(),
119+
Style::default().fg(text_color),
120+
)]));
136121
}
137122
}
138123
MessageRole::Tool => {

0 commit comments

Comments
 (0)