From b04c4ca3dab872b3e9dfe05f1af767e5b6af1127 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Mon, 18 May 2026 04:24:24 +0300 Subject: fix: show agent names in sidebar refs #145 --- src/workspace/aggregate.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/workspace') diff --git a/src/workspace/aggregate.rs b/src/workspace/aggregate.rs index 3ac7ea9b..4024f081 100644 --- a/src/workspace/aggregate.rs +++ b/src/workspace/aggregate.rs @@ -36,7 +36,11 @@ impl Tab { .filter_map(|id| { let pane = self.panes.get(id)?; let terminal = terminals.get(&pane.attached_terminal_id)?; - let agent_label = terminal.effective_agent_label()?.to_string(); + let agent_label = terminal + .agent_name + .as_deref() + .or_else(|| terminal.effective_agent_label())? + .to_string(); Some(PaneDetail { pane_id: *id, tab_idx: self.number.saturating_sub(1), @@ -172,6 +176,28 @@ mod tests { assert!(!seen); } + #[test] + fn pane_details_prefers_agent_name_over_detected_agent_label() { + let ws = Workspace::test_new("test"); + let root_pane = ws.tabs[0].root_pane; + let mut terminals = HashMap::new(); + let mut terminal = terminal_for_pane(&ws, root_pane); + terminal.set_detected_state(Some(Agent::Pi), AgentState::Working); + terminal.set_agent_name("planner".into()); + terminals.insert(terminal.id.clone(), terminal); + + let labels: Vec<_> = ws + .pane_details(&terminals) + .into_iter() + .map(|detail| (detail.label, detail.agent_label, detail.agent)) + .collect(); + + assert_eq!( + labels, + vec![("planner".into(), "planner".into(), Some(Agent::Pi))] + ); + } + #[test] fn pane_details_includes_tab_context_for_multi_tab_workspace() { let mut ws = Workspace::test_new("test"); -- cgit v1.2.3