diff --git a/assets/js/app.js b/assets/js/app.js index 9762a72..4f4df44 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -1101,6 +1101,9 @@ function translatePage() { // Populate the language selector dropdown function _populateLanguageSelector() { const sel = document.getElementById('setting-language'); + // Screensaver toggle + const ssEl = document.getElementById('setting-screensaver-enabled'); + if (ssEl) ssEl.checked = s.screensaver_enabled === true; if (!sel) return; sel.innerHTML = ''; for (const [code, name] of Object.entries(_SUPPORTED_LANGS)) { @@ -2124,6 +2127,9 @@ async function saveSettings() { s.dietary = document.getElementById('setting-dietary').value.trim(); // Camera s.camera_facing = document.getElementById('setting-camera-facing').value; + // Screensaver + const ssEl = document.getElementById('setting-screensaver-enabled'); + if (ssEl) s.screensaver_enabled = ssEl.checked; // Meal plan enabled toggle const mpEnabledEl = document.getElementById('setting-meal-plan-enabled'); if (mpEnabledEl) s.meal_plan_enabled = mpEnabledEl.checked; @@ -11691,6 +11697,8 @@ function initScreensaverShortcuts() { } function initInactivityWatcher() { + const s = getSettings(); + if (!s.screensaver_enabled) return; // disabled by default const events = ['pointerdown', 'pointermove', 'keydown', 'scroll', 'touchstart']; events.forEach(evt => { document.addEventListener(evt, () => { diff --git a/index.html b/index.html index 573c652..b2b19b8 100644 --- a/index.html +++ b/index.html @@ -1088,6 +1088,17 @@

La pagina verrà ricaricata per applicare la nuova lingua.

+
+

🌑 Salvaschermo

+

Mostra un orologio con fatti utili dopo 5 minuti di inattività. Di default è disattivato.

+
+ +
+
diff --git a/translations/de.json b/translations/de.json index 05ae61a..89a8afc 100644 --- a/translations/de.json +++ b/translations/de.json @@ -595,6 +595,9 @@ "label": "🌐 Sprache", "restart_notice": "Die Seite wird neu geladen, um die neue Sprache anzuwenden." }, + "screensaver": { + "label": "Bildschirmschoner aktivieren" + }, "scale": { "title": "⚖️ Smart-Waage", "hint": "Verbinde eine Bluetooth-Waage über das Android-Gateway, um das Gewicht automatisch auszulesen.", diff --git a/translations/en.json b/translations/en.json index 009d2ea..44140dc 100644 --- a/translations/en.json +++ b/translations/en.json @@ -594,6 +594,9 @@ "label": "🌐 Language", "restart_notice": "The page will reload to apply the new language." }, + "screensaver": { + "label": "Enable screensaver" + }, "scale": { "title": "⚖️ Smart Scale", "hint": "Connect a Bluetooth scale via the Android gateway to automatically read weight.", diff --git a/translations/it.json b/translations/it.json index 7cf3ca0..9aee3b5 100644 --- a/translations/it.json +++ b/translations/it.json @@ -594,6 +594,9 @@ "label": "🌐 Lingua", "restart_notice": "La pagina verrà ricaricata per applicare la nuova lingua." }, + "screensaver": { + "label": "Attiva salvaschermo" + }, "scale": { "title": "⚖️ Bilancia Smart", "hint": "Collega una bilancia Bluetooth tramite il gateway Android per leggere il peso automaticamente.",