- The Timers ▾ menu's rows are rebuilt only when the row set or a switch
changes, not on every snapshot — rows no longer vanish from under a
click. Their on-state fill uses the shell's accent: the menu hangs off the
title bar, outside the tile root, where the tile's colour properties
don't reach.
- A long timer label ends in an ellipsis (the label is its own box inside
the flex name row).
- The warning window is capped at half a timer's length, so a 20 s
countdown isn't amber for its whole run (it warns under 10 s; a 25 min
one under 2:30).
- Server: the change key that gates SSE frames ignores startedAt (derived
from a whole-second value, it jittered ±500 ms per poll and doubled the
frame rate); ProPresenter errors name the cause (ECONNREFUSED) rather
than fetch's "fetch failed".
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>