feat(dashboard): highlight proposals pane + bell on new proposal #50

Merged
didericis merged 2 commits from proposal-arrival-highlight into main 2026-05-26 16:07:15 -04:00

2 Commits

Author SHA1 Message Date
didericis 3a7b7d054b feat(dashboard): auto-focus dashboard pane + proposals on new arrival
test / unit (pull_request) Successful in 18s
test / integration (pull_request) Successful in 1m10s
When a fresh proposal arrives, the dashboard now also:

  - Runs `tmux select-pane -t \$TMUX_PANE` (the dashboard's own
    pane id, captured at startup) so tmux focus jumps to the
    dashboard from wherever the operator was (typically claude
    in the right pane).
  - Flips internal focus to PANE_PROPOSALS so j/k navigates the
    queued items immediately.
  - Lands the selected cursor on the first new proposal —
    proposals are sorted by arrival ascending, so the earliest
    new arrival in the batch gets the cursor.

Stacks with the bell + label highlight from the previous
commit. The operator gets:
  1. Audible bell (or tmux activity marker)
  2. Tmux focus on the dashboard pane
  3. Dashboard's internal focus on the proposals list
  4. Cursor on the actual new proposal
  5. Pane label flashing `(new!)` in bold green

— all without leaving the keyboard.
2026-05-26 16:04:23 -04:00
didericis 9ac05c1a63 feat(dashboard): highlight proposals pane + bell on new proposal
test / unit (pull_request) Successful in 17s
test / integration (pull_request) Successful in 1m8s
When a fresh proposal lands in the supervise queue, the
dashboard:

  1. Rings the terminal bell via `curses.beep()` so tmux's
     `monitor-bell` (or the terminal's own bell-on-activity)
     surfaces a notice in the dashboard pane even when the
     operator is focused on claude in the right pane.
  2. Bolds + green-attrs the `proposals:` pane label and
     suffixes it with `(new!)` so a glance at the dashboard
     screen catches the alert at a glance.

The highlight tracks the existing per-row green-highlight
window (`_NEW_PROPOSAL_HIGHLIGHT_SEC`). The bell only fires for
NEWLY arrived proposals after the first tick — pre-existing
queue entries on dashboard startup don't ring.
2026-05-26 15:55:47 -04:00