- Shipped
- September 7, 2026 at 11:13 PM UTC
- Author
- Kamo
- Commit
- c29971f
Swept the app for the failure the notification deck's repeat turned out to be: work whose correctness depends on a timer firing while nobody is looking. Chrome clamps timers in a tab hidden five minutes to one wake-up a minute, so any interval shorter than that is a wish, not a guarantee. The lead pane lock was the other real one and is fixed server-side. These two are the near misses in this repo, both widened rather than rebuilt: - SIP credentials renewed within 60s of expiry, checked on a 30s timer. At one check a minute that is a single chance to hit the window, and a missed one lets the registration lapse — which does not fail loudly, it just stops the phone ringing, in a tab left open in the background, which is where a phone lives. Three minutes of lead time, three chances. (A live call is exempt anyway: WebRTC keeps the page unthrottled. The renewal deliberately runs only when the line is idle, so it is not.) - The lead pane lock now re-asserts itself the moment the tab comes back, rather than waiting out an interval that may be a minute long. Measured, not assumed, and it corrected two guesses. An open WebSocket does NOT exempt a page — but the brokers negotiate 0/0 STOMP heartbeats and never enforce the client's, and inbound frames keep arriving on time, so realtime delivery is unaffected. And writing document.title on a timer DOES exempt a page, which is why TabAttention's tab flash keeps perfect time on its own and needed no change.