all repos — dingger @ a7e065cd4f39abda178af58127ead1ab502e0f3b

Watches the AI coding agents in your tmux panes on macOS and tells you which need you, from the menu bar, a floating panel, the status line and notifications; jumps to them, and restores tmux sessions and agents after a crash

pi: no footer line for the importance

it took a line of its own in pi's footer. pi says the level when it is
set, and /importance alone shows it; pi clears the old line at /reload.
Igor Soarez igor@soarez.org
Tue, 27 Oct 2026 14:25:44 +0200
commit

a7e065cd4f39abda178af58127ead1ab502e0f3b

parent

7455ddfcf6158ec1304d1188a9530f7973e845d5

4 files changed, 8 insertions(+), 8 deletions(-)

jump to
M README.md → README.md

@@ -104,7 +104,7 @@ lightly dimmed, its second line says "low", and it makes no sound (it

still notifies, and waits in line like any other). In pi, type `/importance high|normal|low` (no argument: the current level); pi saves it with the session, so it comes back after `/reload`, a restart, or a - restore, and its footer shows a level other than normal. For other agents, + restore. For other agents, run `dingger importance high|normal|low` in the agent's pane (in Claude Code: `! dingger importance high`, which Claude may answer with a model turn), or pass `--pane`; it lasts until the agent exits.
M crates/dinggerd/assets/pi/pi-agent-state.ts → crates/dinggerd/assets/pi/pi-agent-state.ts

@@ -194,8 +194,8 @@ blockedMessage = data.label;

publishState(); }); - function showImportance(ctx: any) { - ctx?.ui?.setStatus?.("dingger-importance", importance === "normal" ? undefined : `importance: ${importance}`); + // No footer status: it would take a line of its own in pi. + function announceImportance() { pi.events.emit("dingger:importance", { level: importance }); }

@@ -221,7 +221,7 @@ }

if (wanted !== importance) { importance = wanted as Importance; pi.appendEntry(importanceEntry, { level: importance }); - showImportance(ctx); + announceImportance(); // Without a state: the state stays as last reported. if (enabled()) { void report(undefined);

@@ -263,7 +263,7 @@ agentActive = ctx?.isIdle?.() === false;

updateSessionFile(ctx); // Each session has its own: /new starts at normal, /resume brings its own back. importance = savedImportance(ctx); - showImportance(ctx); + announceImportance(); publishState(true); });
M tests/e2e.sh → tests/e2e.sh

@@ -905,7 +905,7 @@ iext() { SESSION_ENTRIES="$ENTRIES" EXT_LOG="$EXTLOG" ext "$@"; }

iext "$I2" session_start "/importance high" expect "/importance high reaches dingger" "opt $I2 @dingger_importance" high expect "saved in the session" "grep -c '\"customType\":\"dingger-importance\",\"data\":{\"level\":\"high\"}' $ENTRIES" 1 - expect "shown in pi's footer" "grep -c '^status dingger-importance importance: high$' $EXTLOG" 1 + expect "no footer status in pi" "grep -c '^status' $EXTLOG" 0 expect "announced to other extensions" "grep -c '^event dingger:importance {\"level\":\"high\"}$' $EXTLOG" 1 report "$I2" "" normal expect "imp: set back by hand" "opt $I2 @dingger_importance" ""

@@ -927,7 +927,6 @@ : >"$EXTLOG"; iext "$I2" session_start "/importance urgent" "complete:importance h" "/importance normal"

expect "an unknown level is refused" "grep -c '^notify importance is high, normal, or low$' $EXTLOG" 1 expect "levels complete" "grep '^complete' $EXTLOG" "complete high" expect "normal reaches dingger" "opt $I2 @dingger_importance" "" - expect "and leaves the footer" "grep -c '^status dingger-importance $' $EXTLOG" 1 fi # --- 22. mark as unread ----------------------------------------------------
M tests/pi-live.sh → tests/pi-live.sh

@@ -110,7 +110,8 @@ t send-keys -t main:agent Escape

sleep 0.5 type_line agent "/importance high" expect "/importance high: the pane option" "t show -pv -t main:agent @dingger_importance 2>/dev/null" high 50 -expect "and pi's footer (its last line)" "t capture-pane -p -t main:agent | grep -v '^ *$' | tail -1 | sed 's/^ *//'" "importance: high" 30 +expect "pi says so" "t capture-pane -p -t main:agent | grep -c 'importance: high'" 1 30 +expect "and adds no footer line" "t capture-pane -p -t main:agent | grep -v '^ *$' | tail -1 | grep -c 'importance'" 0 expect "saved in the session file" "grep -c '\"customType\":\"dingger-importance\"' \"\$(t show -pv -t main:agent @agent_session)\"" 1 30 # Seen (what a jump does; no client is attached here), then marked unread. t set -p -t main:agent @dingger_ack 1; "$DINGGER" poke