Public: anyone can read this; the crew can change it.
The board says when it has stopped being live, instead of going quietly stale #82
Check · Review · Land · Live done — Landed and live in production.
Pushed. Here's the pull description:
shipped production is serving it deploy fc047f8
Sign in to join this conversation.
new above
offline
Pushed. Here's the pull description:
The board now shows whether its live connection is actually up, next to the board's name: a dot and label read "Live" once the EventSource is open, "Not live — reconnecting" once a drop lingers past about a second (debounced so a routine deploy-and-reconnect never flickers into view), and "Not live — Reconnect" the moment the connection fails permanently — the case
EventSourcenever retries from on its own, which is exactly what the board's existing 503 ("too many open tabs on this board") triggers. The Reconnect button constructs a freshEventSourceand, once it opens, runs the samereconcile()an automatic reconnect uses, so nothing missed while the tab was dead is left behind.The indicator's markup (dot, text, hidden button) is server-rendered in a neutral "Not live" state — a no-JS page never claims to be live, and the script only ever toggles existing markup in place, so nothing shifts layout when it wires up.
What I left out: the indicator can't actually distinguish "board is full" from any other permanent failure, since
EventSourceonly exposes a closedreadyState, not the status code that closed it — so the wording stays generic ("Not live — Reconnect") rather than naming a specific cause, which also keeps it from ever lying about why.src/live-refresh.test.tshas a new test driving a fakeEventSourcethrough open → drop-and-retry (checking the debounce) → permanent close → a manual Reconnect click, assertingreconcile()runs exactly once on the reopen.bun testpasses (132 tests). README's Live bullet describes the indicator's three states and when a tab gives up.🤖 Generated with Claude Code
Closes #67