aboutsummaryrefslogtreecommitdiff
path: root/src/ui/sidebar.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/sidebar.rs')
-rw-r--r--src/ui/sidebar.rs26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/ui/sidebar.rs b/src/ui/sidebar.rs
index 23e9afd4..50796e81 100644
--- a/src/ui/sidebar.rs
+++ b/src/ui/sidebar.rs
@@ -10,7 +10,7 @@ use ratatui::{
use self::tokens::{ResolvedToken, ResolvedTokenKind, SpaceTokenContext};
use super::scrollbar::{render_scrollbar, should_show_scrollbar};
-use super::status::{state_dot, state_label, state_label_color};
+use super::status::{state_icon, state_label, state_label_color};
use super::text::{display_width, display_width_u16, truncate_end};
use crate::app::state::{AgentPanelSort, Palette};
use crate::app::{AppState, Mode};
@@ -781,7 +781,7 @@ pub(super) fn render_sidebar_collapsed(app: &AppState, frame: &mut Frame, area:
break;
}
let (agg_state, agg_seen) = ws.aggregate_state(&app.terminals);
- let (icon, icon_style) = state_dot(agg_state, agg_seen, p);
+ let (icon, icon_style) = state_icon(agg_state, agg_seen, app.status_indicators, p);
let is_selected = visible_idx == app.selected && is_navigating;
let is_active = Some(visible_idx) == app.active;
let row_style = if is_selected {
@@ -842,7 +842,8 @@ pub(super) fn render_sidebar_collapsed(app: &AppState, frame: &mut Frame, area:
}
let position = detail_idx + 1;
let position_style = Style::default().fg(p.overlay0);
- let (icon, icon_style) = state_dot(detail.state, detail.seen, p);
+ let (icon, icon_style) =
+ state_icon(detail.state, detail.seen, app.status_indicators, p);
frame.render_widget(
Paragraph::new(Line::from(vec![
Span::styled(format!("{position:<2}"), position_style),
@@ -1275,7 +1276,7 @@ fn render_workspace_list(
.filter(|(_, collapsed)| *collapsed)
.map(|(key, _)| space_aggregate_state(app, key))
.unwrap_or((agg_state, agg_seen));
- let state_icon = state_dot(display_state, display_seen, p);
+ let state_icon = state_icon(display_state, display_seen, app.status_indicators, p);
let state_text_style = Style::default()
.fg(state_label_color(display_state, display_seen, p))
.add_modifier(Modifier::DIM);
@@ -1488,7 +1489,7 @@ fn render_agent_detail(
Style::default().fg(label_color).add_modifier(Modifier::DIM)
};
let agent_style = Style::default().fg(p.overlay0).add_modifier(Modifier::DIM);
- let state_icon = state_dot(detail.state, detail.seen, p);
+ let state_icon = state_icon(detail.state, detail.seen, app.status_indicators, p);
for (row_index, resolved) in rows.iter().take(height as usize).enumerate() {
let mut spans = vec![Span::raw(if row_index == 0 { " " } else { " " })];
@@ -2209,6 +2210,7 @@ rows = [[{ token = "git_status", fg = "#123456" }]]
app.workspaces = vec![first, second];
app.ensure_test_terminals();
app.agent_panel_sort = crate::app::state::AgentPanelSort::Priority;
+ app.status_indicators = crate::config::StatusIndicatorStyle::Symbols;
let set_state = |app: &mut crate::app::state::AppState, ws_idx: usize, pane_id, state| {
let terminal_id = app.workspaces[ws_idx].tabs[0].panes[&pane_id]
@@ -2218,9 +2220,14 @@ rows = [[{ token = "git_status", fg = "#123456" }]]
terminal.detected_agent = Some(Agent::Claude);
terminal.state = state;
};
- set_state(&mut app, 0, first_pane, AgentState::Working);
+ set_state(&mut app, 0, first_pane, AgentState::Idle);
set_state(&mut app, 1, second_pane, AgentState::Working);
set_state(&mut app, 1, urgent_pane, AgentState::Blocked);
+ app.workspaces[0].tabs[0]
+ .panes
+ .get_mut(&first_pane)
+ .unwrap()
+ .seen = false;
assert_eq!(app.workspaces[1].public_pane_number(urgent_pane), Some(2));
assert_eq!(agent_panel_entries(&app)[0].pane_id, urgent_pane);
@@ -2238,11 +2245,16 @@ rows = [[{ token = "git_status", fg = "#123456" }]]
assert_eq!(buffer[(detail_area.x, detail_area.y)].symbol(), "1");
assert_eq!(buffer[(detail_area.x, detail_area.y + 1)].symbol(), "2");
assert_eq!(buffer[(detail_area.x, detail_area.y + 2)].symbol(), "3");
- assert_eq!(buffer[(detail_area.x + 2, detail_area.y)].symbol(), "●");
+ assert_eq!(buffer[(detail_area.x + 2, detail_area.y)].symbol(), "×");
assert_eq!(
buffer[(detail_area.x + 2, detail_area.y)].style().fg,
Some(app.palette.red)
);
+ assert_eq!(buffer[(detail_area.x + 2, detail_area.y + 1)].symbol(), "✓");
+ assert_eq!(
+ buffer[(detail_area.x + 2, detail_area.y + 1)].style().fg,
+ Some(app.palette.teal)
+ );
}
#[cfg(unix)]