diff --git a/main.js b/main.js index 70468cf..4271337 100644 --- a/main.js +++ b/main.js @@ -500,11 +500,15 @@ app.whenReady().then(() => { // Auto-check for updates after 3 seconds setTimeout(async () => { try { + debugLog('update-check: starting'); const result = await checkForUpdate(); + debugLog(`update-check: available=${result && result.available}, remote=${result && result.remoteVersion}`); if (result && result.available && mainWindow && !mainWindow.isDestroyed()) { mainWindow.webContents.send('app:update-available', result); } - } catch {} + } catch (err) { + debugLog(`update-check failed: ${err && err.message || err}`); + } }, 3000); }); diff --git a/renderer/app.js b/renderer/app.js index e46b02c..580d0f9 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -1750,6 +1750,11 @@ function renderSettings() { +
Updates
+
+ + +
Log
@@ -1899,6 +1904,23 @@ function renderSettings() { } document.getElementById('chooseLogFilePathBtn')?.addEventListener('click', chooseLogFilePath); + document.getElementById('manualUpdateCheckBtn')?.addEventListener('click', async (e) => { + const btn = e.target; + btn.disabled = true; + btn.textContent = 'Prüfe...'; + try { + const result = await window.api.checkForUpdate(); + if (result && result.available) { + showUpdateBanner(result); + btn.textContent = 'Update gefunden!'; + } else { + btn.textContent = 'Kein Update verfügbar'; + } + } catch { + btn.textContent = 'Fehler beim Prüfen'; + } + setTimeout(() => { btn.disabled = false; btn.textContent = 'Nach Updates suchen'; }, 3000); + }); container.querySelectorAll('.settings-autosave').forEach((input) => { const eventName = input.type === 'checkbox' ? 'change' : 'input'; input.addEventListener(eventName, scheduleSettingsSave);