diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-03 01:52:25 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-04-03 01:52:25 +0300 |
| commit | 1468436fe39b65c8052f1df42d545843061266a6 (patch) | |
| tree | 5b273577d1efe95ac6cbf399aa095b13dc79c364 /src | |
| parent | 94e6a2ff646715cb214c6f9bac8d146c5486dd35 (diff) | |
fix sidebar agent list to hide shells
Diffstat (limited to 'src')
| -rw-r--r-- | src/app/input.rs | 13 | ||||
| -rw-r--r-- | src/workspace.rs | 26 |
2 files changed, 30 insertions, 9 deletions
diff --git a/src/app/input.rs b/src/app/input.rs index 7341059c..83d1d579 100644 --- a/src/app/input.rs +++ b/src/app/input.rs @@ -2458,7 +2458,7 @@ impl AppState { #[cfg(test)] mod tests { use super::*; - use crate::{config::Config, workspace::Workspace}; + use crate::{config::Config, detect::Agent, workspace::Workspace}; use crossterm::event::{KeyModifiers, MouseEvent}; use ratatui::layout::Rect; @@ -2986,8 +2986,19 @@ mod tests { let mut app = app_for_mouse_test(); let mut ws = Workspace::test_new("test"); ws.tabs[0].set_custom_name("main".into()); + let first_pane = ws.tabs[0].root_pane; + ws.tabs[0] + .panes + .get_mut(&first_pane) + .unwrap() + .detected_agent = Some(Agent::Pi); let second_tab = ws.test_add_tab(Some("logs")); let second_pane = ws.tabs[second_tab].root_pane; + ws.tabs[second_tab] + .panes + .get_mut(&second_pane) + .unwrap() + .detected_agent = Some(Agent::Claude); app.state.workspaces = vec![ws]; app.state.active = Some(0); app.state.selected = 0; diff --git a/src/workspace.rs b/src/workspace.rs index 24c17521..4090593c 100644 --- a/src/workspace.rs +++ b/src/workspace.rs @@ -205,24 +205,22 @@ impl Tab { self.layout .pane_ids() .iter() - .map(|id| { + .filter_map(|id| { let pane = self.panes.get(id); - let agent = pane.and_then(|p| p.detected_agent); + let agent = pane.and_then(|p| p.detected_agent)?; let state = pane.map(|p| p.state).unwrap_or(AgentState::Unknown); let seen = pane.map(|p| p.seen).unwrap_or(true); - let agent_label = agent - .map(|a| agent_name(a).to_string()) - .unwrap_or_else(|| "shell".to_string()); - PaneDetail { + let agent_label = agent_name(agent).to_string(); + Some(PaneDetail { pane_id: *id, tab_idx: self.number.saturating_sub(1), tab_label: self.display_name(), label: agent_label.clone(), agent_label, - agent, + agent: Some(agent), state, seen, - } + }) }) .collect() } @@ -828,6 +826,18 @@ mod tests { } #[test] + fn pane_details_hide_plain_shells() { + let mut ws = Workspace::test_new("test"); + let root_pane = ws.tabs[0].root_pane; + ws.tabs[0].panes.get_mut(&root_pane).unwrap().detected_agent = Some(Agent::Pi); + ws.test_split(Direction::Horizontal); + + let details = ws.pane_details(); + assert_eq!(details.len(), 1); + assert_eq!(details[0].label, "pi"); + } + + #[test] fn pane_details_include_tab_context_when_workspace_has_multiple_tabs() { let mut ws = Workspace::test_new("test"); ws.tabs[0].set_custom_name("main".into()); |
