diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-28 00:20:12 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-03-28 00:20:12 +0300 |
| commit | 787786c62009f6c27a0091b61017ae5ad5c95c0e (patch) | |
| tree | e0c21aec008cae69e79514c6c6a25c9d4f411fdf /src/pane.rs | |
| parent | 0403775fd2a9458417c5349d5441125ab9b2553c (diff) | |
fix wrapped foreground job agent detection
Diffstat (limited to 'src/pane.rs')
| -rw-r--r-- | src/pane.rs | 27 |
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; } |
