Four new tests closing the last attention-tier coverage gaps:
- jump_next_attention_skips_healthy_panes:
Panes [ok, err, ok, stalled, ok] — proves n jumps 0→1→3→wrap→1,
skipping healthy panes. Forward wrapping.
- jump_prev_attention_wraps_backwards:
Same layout — proves N jumps 4→3→1→wrap→3.
Backward wrapping.
- attention_bar_ignores_other_session_panes:
Error pane in session s2, viewing session s1 — bar must NOT
appear. Proves the filtered_panes()-based has_attention fix
from commit 4d95f11.
- jump_next_attention_reports_when_no_attention_panes:
All healthy panes — status message set to 'no attention',
selection unchanged.
18 tests, workspace green (0 failures).
needs_attention() = Error + Blocked + Stalled (free function, single
source of truth). Includes Blocked because glasspane doc comments say
Blocked = 'operator attention needed' (queue_update / pending steering).
Tier 1 — Attention bar:
Red-bordered panel with '⚠ ATTENTION (N)' title replaces the header
when any pane needs attention. Shows pane id, reason, and agent.
Tier 2 — Jump keys (n/N):
n = next attention pane, N = previous (wrapping). Respects session
scope via filtered_panes(). Detail pane follows the jump.
Tier 3 — Attention filter (a key):
Toggles attention_only on App. Composes with session filter.
Tier 4 — Row highlight:
Attention rows get red background when unselected, inverted
dark-gray+light-red+bold when selected. Global row_highlight
neutralized.
Also:
- fix(tui): remove hardcoded dark-terminal assumptions — theme-agnostic
- fix(tui): force crossterm color output — override NO_COLOR=1 inherited
from Hermes sessions (crossterm honours no-color.org standard)