diff options
| author | Igor Soarez <igor@soarez.org> | 2026-10-20 13:59:29 +0300 |
|---|---|---|
| committer | Igor Soarez <igor@soarez.org> | 2026-10-20 13:59:29 +0300 |
| commit | 6bccc5f786c479a335c55ad83487e077195cff44 (patch) | |
| tree | 7777eb50a5e264719a92bd34c653aba9edd133c5 /crates/dinggerd/src/main.rs | |
| parent | 3731a80384f5e2b7d3343eb3e4999f626bbc7f91 (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.rs | 9 |
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(()) } |
