diff options
Diffstat (limited to 'crates/dinggerd/src/watcher.rs')
| -rw-r--r-- | crates/dinggerd/src/watcher.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/crates/dinggerd/src/watcher.rs b/crates/dinggerd/src/watcher.rs index 56107d6..f039456 100644 --- a/crates/dinggerd/src/watcher.rs +++ b/crates/dinggerd/src/watcher.rs @@ -113,6 +113,20 @@ impl Watcher { debug!(target = %pane.target, "observation skipped (viewer screen)"); continue; }; + + // Keep the pane's agent label current even when the state is + // unchanged (e.g. an agent swap between two idle panes). + let agent_label = pane + .agent + .map(detect_core::agent_label) + .unwrap_or("") + .to_string(); + if pane.written_agent != agent_label { + if let Err(err) = tmux::set_agent(&pane.pane_id, pane.agent) { + warn!(target = %pane.target, %err, "failed to write @agent"); + } + } + if new_state == prev_state { continue; } @@ -123,11 +137,7 @@ impl Watcher { warn!(target = %pane.target, %err, "failed to write @agent_state"); } - let agent_label = pane - .agent - .map(detect_core::agent_label) - .unwrap_or("agent") - .to_string(); + if let Some(kind) = notification_kind_for_transition(prev_state, new_state) { if pane.suppresses_notifications() { debug!(target = %pane.target, "suppressed (active pane)"); |
