From f7fe0f203e0f349df33819aab239c0aade016f79 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Sun, 17 May 2026 01:41:17 +0300 Subject: fix: polish terminal-core agent semantics --- src/app/agents.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/app/agents.rs') diff --git a/src/app/agents.rs b/src/app/agents.rs index f9e410f5..15b93674 100644 --- a/src/app/agents.rs +++ b/src/app/agents.rs @@ -17,7 +17,6 @@ impl App { .filter_map(move |pane_id| self.agent_info(ws_idx, pane_id)) }) }) - .filter(|agent| agent.name.is_some() || agent.agent.is_some()) .collect() } @@ -88,8 +87,11 @@ impl App { })); }; match normalized_name { - Some(name) => terminal.set_manual_label(name), - None => terminal.clear_manual_label(), + Some(name) => { + terminal.set_agent_name(name.clone()); + terminal.set_manual_label(name); + } + None => terminal.clear_agent_name(), } self.state.mark_session_dirty(); self.agent_info(resolved.ws_idx, resolved.pane_id) @@ -195,6 +197,7 @@ impl App { let Some(terminal) = self.state.terminals.get_mut(&terminal_id) else { return Err(AgentStartError::SpawnFailed("terminal disappeared".into())); }; + terminal.set_agent_name(name.clone()); terminal.set_manual_label(name); self.state.mark_session_dirty(); @@ -403,10 +406,16 @@ impl App { ws_idx: usize, pane_id: crate::layout::PaneId, ) -> Option { + let ws = self.state.workspaces.get(ws_idx)?; + let pane_state = ws.pane_state(pane_id)?; + let terminal = self.state.terminals.get(&pane_state.attached_terminal_id)?; + if !terminal.is_agent_terminal() { + return None; + } let pane = self.pane_info(ws_idx, pane_id)?; Some(crate::api::schema::AgentInfo { terminal_id: pane.terminal_id, - name: pane.label, + name: terminal.agent_name.clone(), agent: pane.agent, agent_status: pane.agent_status, workspace_id: pane.workspace_id, -- cgit v1.2.3