aboutsummaryrefslogtreecommitdiff
path: root/src/pane.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-03-28 00:20:12 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-03-28 00:20:12 +0300
commit787786c62009f6c27a0091b61017ae5ad5c95c0e (patch)
treee0c21aec008cae69e79514c6c6a25c9d4f411fdf /src/pane.rs
parent0403775fd2a9458417c5349d5441125ab9b2553c (diff)
fix wrapped foreground job agent detection
Diffstat (limited to 'src/pane.rs')
-rw-r--r--src/pane.rs27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/pane.rs b/src/pane.rs
index 821cdec9..c9ab3649 100644
--- a/src/pane.rs
+++ b/src/pane.rs
@@ -227,15 +227,26 @@ impl PaneRuntime {
last_process_check = now;
let pid = child_pid.load(Ordering::Acquire);
if pid > 0 {
- if let Some(name) = detect::foreground_process_name(pid) {
- let new_agent = detect::identify_agent(&name);
+ if let Some(job) = detect::foreground_job(pid) {
+ let identified = detect::identify_agent_in_job(&job);
+ let new_agent = identified.as_ref().map(|(agent, _)| *agent);
if new_agent != agent {
- info!(
- pane = pane_id.raw(),
- ?new_agent,
- process = %name,
- "agent changed"
- );
+ if let Some((_, process_name)) = identified {
+ info!(
+ pane = pane_id.raw(),
+ ?new_agent,
+ process = %process_name,
+ pgid = job.process_group_id,
+ "agent changed"
+ );
+ } else {
+ info!(
+ pane = pane_id.raw(),
+ ?new_agent,
+ pgid = job.process_group_id,
+ "agent changed"
+ );
+ }
agent = new_agent;
agent_changed = true;
}