feat(dashboard): highlight proposals pane + bell on new proposal #50
Reference in New Issue
Block a user
Delete Branch "proposal-arrival-highlight"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
When a fresh proposal lands in the supervise queue, the dashboard:
curses.beep()so tmux'smonitor-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.proposals:pane label and suffixes it with(new!)so a glance at the dashboard screen catches the alert.Mechanics
saw_first_tickguard so pre-existing queue entries on dashboard startup don't ring the bell — only proposals that arrive after the dashboard is up trigger it.proposals_have_recentderived in_renderfrom the existing_is_recentwindow (5s). Tracks the per-row green-highlight rule already in place, so label + rows go hot together.Status
489 unit tests pass (existing tests unchanged).
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.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.