aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-03 01:52:25 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-03 01:52:25 +0300
commit1468436fe39b65c8052f1df42d545843061266a6 (patch)
tree5b273577d1efe95ac6cbf399aa095b13dc79c364 /src
parent94e6a2ff646715cb214c6f9bac8d146c5486dd35 (diff)
fix sidebar agent list to hide shells
Diffstat (limited to 'src')
-rw-r--r--src/app/input.rs13
-rw-r--r--src/workspace.rs26
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());