Add connection overlay and Gitea CI/CD workflow

Show full-screen overlay with spinner when server is unreachable,
with periodic health checks that auto-hide on reconnect.
Add Gitea Actions workflow for auto-deploy on release tags.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-11 11:07:13 +03:00
parent bf212c86ec
commit 99d8c4b8fb
8 changed files with 134 additions and 5 deletions

View File

@@ -7,7 +7,7 @@ import { apiKey, setApiKey, refreshInterval } from './core/state.js';
import { Modal } from './core/modal.js';
// Layer 1: api, i18n
import { loadServerInfo, loadDisplays, configureApiKey } from './core/api.js';
import { loadServerInfo, loadDisplays, configureApiKey, startConnectionMonitor, stopConnectionMonitor } from './core/api.js';
import { t, initLocale, changeLocale } from './core/i18n.js';
// Layer 2: ui
@@ -506,6 +506,7 @@ window.addEventListener('beforeunload', () => {
if (refreshInterval) {
clearInterval(refreshInterval);
}
stopConnectionMonitor();
stopEventsWS();
disconnectAllKCWebSockets();
disconnectAllLedPreviewWS();
@@ -552,6 +553,10 @@ document.addEventListener('DOMContentLoaded', async () => {
// Setup form handler
document.getElementById('add-device-form').addEventListener('submit', handleAddDevice);
// Always monitor server connection (even before login)
loadServerInfo();
startConnectionMonitor();
// Show modal if no API key is stored
if (!apiKey) {
setTimeout(() => {
@@ -563,7 +568,6 @@ document.addEventListener('DOMContentLoaded', async () => {
}
// User is logged in, load data
loadServerInfo();
loadDisplays();
loadTargetsTab();