From d131efae3665873a5b41e5f8c221450e95426e00 Mon Sep 17 00:00:00 2001 From: Stanislaw Grams Date: Mon, 16 Mar 2026 23:27:54 +0100 Subject: [PATCH] [feat](trx-frontend-http): show distinct connection loss messages in UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the SSE stream drops (onerror or 15s heartbeat timeout) show "trx-client connection lost, retrying…". When the stream is live but server_connected is false, show "trx-server connection lost". Co-authored-by: Claude Sonnet 4.6 Signed-off-by: Stanislaw Grams --- .../trx-frontend/trx-frontend-http/assets/web/app.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js index 00c8eb4..7afa997 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js @@ -3103,7 +3103,9 @@ function connect() { lastRendered = evt.data; render(data); lastEventAt = Date.now(); - if (data.initialized) { + if (data.server_connected === false) { + powerHint.textContent = "trx-server connection lost"; + } else if (data.initialized) { powerHint.textContent = readyText(); } } catch (e) { @@ -3122,7 +3124,7 @@ function connect() { es.onerror = () => { // Check if this is an auth error by looking at readyState if (es.readyState === EventSource.CLOSED) { - powerHint.textContent = "Disconnected, retrying…"; + powerHint.textContent = "trx-client connection lost, retrying\u2026"; es.close(); pollFreshSnapshot(); scheduleReconnect(1000); @@ -3132,6 +3134,7 @@ function connect() { esHeartbeat = setInterval(() => { const now = Date.now(); if (now - lastEventAt > 15000) { + powerHint.textContent = "trx-client connection lost, retrying\u2026"; es.close(); pollFreshSnapshot(); scheduleReconnect(250);