diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-18 04:24:24 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-19 14:27:41 +0300 |
| commit | b04c4ca3dab872b3e9dfe05f1af767e5b6af1127 (patch) | |
| tree | 4ada71a7ae58c2a5862b81c1f6d2db9a56f42cf4 /src/workspace/aggregate.rs | |
| parent | d616bcd6b86742762fec5f0696a5c13701fe717c (diff) | |
fix: show agent names in sidebar
refs #145
Diffstat (limited to 'src/workspace/aggregate.rs')
| -rw-r--r-- | src/workspace/aggregate.rs | 28 |
1 files changed, 27 insertions, 1 deletions
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), @@ -173,6 +177,28 @@ mod tests { } #[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"); ws.tabs[0].custom_name = Some("main".into()); |
