aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIgor Soarez <igor@soarez.org>2026-10-20 14:24:11 +0300
committerIgor Soarez <igor@soarez.org>2026-10-20 14:24:11 +0300
commit0f8438547e50e10b3c09f17356b1d88b93718b79 (patch)
tree325e8b45af647af653c10318197b0ad361d277a7 /tests
parent6bccc5f786c479a335c55ad83487e077195cff44 (diff)
floating panel: always-on-top agent HUD with a global shortcut
a non-activating HUD panel (every Space, over full-screen apps, never takes focus) listing the agents waiting for you, with working and idle summarized on one line; rows jump to the agent, drag moves the panel and it remembers its place. modes: when agents are waiting (default), always, off; ctrl+opt+ cmd+e shows or hides it on top of the mode, and a manual hide lasts until another agent starts waiting. the shortcut is a carbon hotkey (no accessibility permission; clashes are reported in the menu) configured in ~/.config/dingger/config.toml, reloaded on save. the menu bar app is split into model, panel, hotkey and main. tested: --selftest checks the visibility rules (it fails if a newly waiting agent no longer re-shows a dismissed panel); e2e step 13 checks the panel content through the real binary.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/e2e.sh14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/e2e.sh b/tests/e2e.sh
index 015d6aa..054bd51 100755
--- a/tests/e2e.sh
+++ b/tests/e2e.sh
@@ -282,6 +282,20 @@ else
fail "node not found; cannot test the pi extension"
fi
+# --- 13. the floating panel: visibility rules and compact content -----------
+echo "13. floating panel"
+if [ -x "$MENUBAR" ]; then
+ mb() { DINGGER_TMUX_SOCKET="$SOCK" DINGGER_BIN="$DINGGER" "$MENUBAR" "$@"; }
+ expect "panel visibility rules (selftest)" "mb --selftest | tail -1" "selftest ok"
+ expect "panel lists the waiting agent" "mb --print-panel | head -1 | cut -f1,2 | tr '\t' '|'" "โœ“ done|pi"
+ expect "panel summarizes the rest" "mb --print-panel | tail -1" "โ—‹ 3 idle"
+ DINGGER_TMUX_SOCKET="$SOCK" "$DINGGER" focus --client "$CLIENT" --pane "$A2"
+ expect "A2 idle after the jump" "opt $A2 @agent_state" idle
+ expect "panel with nothing waiting" "mb --print-panel" "Nothing waiting ยท โ—‹ 4 idle"
+else
+ fail "menu bar binary not found at $MENUBAR"
+fi
+
echo
echo "$PASSES passed, $FAILS failed"
[ "$FAILS" -eq 0 ] || { echo "--- daemon log tail"; tail -30 "$DIR/daemon.log"; exit 1; }