aboutsummaryrefslogtreecommitdiff
path: root/crates/dinggerd/src/main.rs
diff options
context:
space:
mode:
authorIgor Soarez <igor@soarez.org>2026-10-20 13:59:29 +0300
committerIgor Soarez <igor@soarez.org>2026-10-20 13:59:29 +0300
commit6bccc5f786c479a335c55ad83487e077195cff44 (patch)
tree7777eb50a5e264719a92bd34c653aba9edd133c5 /crates/dinggerd/src/main.rs
parent3731a80384f5e2b7d3343eb3e4999f626bbc7f91 (diff)
menu rows lead with the agent's session name; harness and place move below
herdr's sidebar shows the session name in place of the harness label (via the user's herdr-session-name extension). dingger reads it from the title pi already sets ("π - <name> - <dir>"); other agents use herdr's terminal_title_stripped rule, and claude's default "Claude Code" title or tmux's host-name title count as no name. the daemon stores it as @agent_name for every surface. menu rows: colored status symbol + name as the title (the harness, dimmed, only when unnamed), and a native subtitle "session · window · harness", plus how long done/blocked agents have been waiting; one separator between agents waiting for you and the rest. dingger status shows the same.
Diffstat (limited to 'crates/dinggerd/src/main.rs')
-rw-r--r--crates/dinggerd/src/main.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/dinggerd/src/main.rs b/crates/dinggerd/src/main.rs
index f458e18..285f83a 100644
--- a/crates/dinggerd/src/main.rs
+++ b/crates/dinggerd/src/main.rs
@@ -3,6 +3,7 @@
mod hooks;
mod integrations;
mod manifest_update;
+mod names;
mod notify;
mod tmux;
mod watcher;
@@ -201,11 +202,13 @@ fn status() -> Result<(), String> {
let since = pane.written_since.parse::<u64>().unwrap_or(u64::MAX);
(std::cmp::Reverse(status.priority()), since, pane.display_target.clone())
});
- println!("{:<8} {:<10} TARGET", "STATUS", "AGENT");
- for pane in panes {
+ let place = |pane: &tmux::Pane| pane.display_target.replacen(':', " · ", 1);
+ let width = panes.iter().map(|pane| place(pane).chars().count()).max().unwrap_or(5).max(5);
+ println!("{:<8} {:<width$} {:<7} NAME", "STATUS", "WHERE", "AGENT");
+ for pane in &panes {
let state = if pane.written_state.is_empty() { "-" } else { &pane.written_state };
let agent = pane.agent.map(detect_core::agent_label).unwrap_or("-");
- println!("{state:<8} {agent:<10} {}", pane.display_target);
+ println!("{state:<8} {:<width$} {agent:<7} {}", place(pane), pane.written_name);
}
Ok(())
}