diff --git a/renderer/app.js b/renderer/app.js index 0fa7e2f..7356b5f 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -840,12 +840,10 @@ async function requestUpdateCheck({ forceRefresh = true } = {}) { if (_updateCheckBusy) return null; _updateCheckBusy = true; _syncHeaderUpdateState(); - showCopyToast('Suche nach Updates…'); try { const result = await window.api.checkForUpdate({ forceRefresh }); if (result && result.available) { showUpdateBanner(result); - showCopyToast('Update gefunden!'); } else if (result && result.error) { showCopyToast('Updateprüfung fehlgeschlagen'); } else { @@ -7436,7 +7434,7 @@ function setupListeners() { if (e.target.id === 'jobLogModal') hideJobLogModal(); }); - document.getElementById('headerUpdateBtn')?.addEventListener('click', requestUpdateCheck); + document.getElementById('headerUpdateBtn')?.addEventListener('click', () => requestUpdateCheck({ forceRefresh: false })); document.getElementById('installUpdateBtn')?.addEventListener('click', installKnownUpdate); document.getElementById('dismissUpdateBtn')?.addEventListener('click', handleUpdateDismiss); document.getElementById('updateCloseBtn')?.addEventListener('click', closeUpdateDialog); diff --git a/renderer/i18n.js b/renderer/i18n.js index 9b3706b..7572221 100644 --- a/renderer/i18n.js +++ b/renderer/i18n.js @@ -582,7 +582,6 @@ ['Speichern vor dem Beenden hat zu lange gedauert', 'Saving before quitting took too long'], ['Stoppt nach aktiven Uploads...', 'Stopping after active uploads...'], ['Suche nach Aktualisierungen…', 'Checking for updates…'], - ['Suche nach Updates…', 'Checking for updates…'], ['System wird heruntergefahren in', 'System will shut down in'], ['Übernehmen', 'Apply'], ['Übersprungen', 'Skipped'], diff --git a/renderer/styles.css b/renderer/styles.css index bd9f81f..66ad6aa 100644 --- a/renderer/styles.css +++ b/renderer/styles.css @@ -2405,14 +2405,14 @@ select.hs-input { max-width: none; width: auto; min-width: 140px; } border: 1px solid transparent; border-radius: 6px; background: transparent; - color: var(--text-dim); + color: var(--danger); cursor: pointer; } .update-close-button:hover { - border-color: var(--border); - background: var(--bg-active); - color: var(--text); + border-color: transparent; + background: var(--danger); + color: #000; } .update-close-button svg { diff --git a/tests/ui-smoke.js b/tests/ui-smoke.js index 08b1160..76deb5f 100644 --- a/tests/ui-smoke.js +++ b/tests/ui-smoke.js @@ -2445,6 +2445,8 @@ setTimeout(async () => { const updateDialogActions = await wc.executeJavaScript('[document.getElementById("dismissUpdateBtn")?.textContent?.trim(), document.getElementById("installUpdateBtn")?.textContent?.trim()].join("|")'); check('Update dialog offers cancel and install actions', updateDialogActions === 'Abbrechen|Jetzt installieren'); + const updateCloseColor = await wc.executeJavaScript('getComputedStyle(document.getElementById("updateCloseBtn")).color'); + check('Update dialog exposes a red close action', updateCloseColor === 'rgb(255, 133, 140)'); const updateDialogChangelog = await wc.executeJavaScript('(() => { const title = document.querySelector(".update-release-notes-title"); const body = document.getElementById("updateReleaseNotesBody"); const titleRect = title?.getBoundingClientRect(); const bodyRect = body?.getBoundingClientRect(); return { hidden: document.getElementById("updateReleaseNotes")?.hidden, title: title?.textContent?.trim(), body: body?.textContent, gap: bodyRect && titleRect ? bodyRect.top - titleRect.bottom : null }; })()'); check('Update dialog renders a compact normalized changelog', updateDialogChangelog.hidden === false && updateDialogChangelog.title === 'Changelog' && updateDialogChangelog.body === 'New in this version\\n\\nMenus and navigation\\n\\n• Added live language switching.\\n• Improved settings layout.' && updateDialogChangelog.gap <= 10);