diff --git a/settings.html b/settings.html index a52825d..d6acc83 100644 --- a/settings.html +++ b/settings.html @@ -223,36 +223,44 @@ - // OK: alles final speichern + // OK: alles final speichern – eine fehlschlagende Einstellung darf die + // anderen nicht blockieren und das Fenster muss sich immer schließen. ok.addEventListener('click', async () => { - await window.settingsAPI.setSkipPrompt(cbSkip.checked); - await window.settingsAPI.setAutostart(cbAutostart.checked); - await window.settingsAPI.setCloseToTray(cbCloseToTray.checked); - await window.settingsAPI.setTheme(themeSelect.value || fallbackTheme); - await window.settingsAPI.setRewordMode(rewordModeSelect.value || 'ask'); + const errors = []; + const safe = async (name, promise) => { + try { await promise; } catch (e) { errors.push(`${name}: ${e}`); } + }; + + await safe('Skip-Prompt', window.settingsAPI.setSkipPrompt(cbSkip.checked)); + await safe('Autostart', window.settingsAPI.setAutostart(cbAutostart.checked)); + await safe('Close-to-Tray', window.settingsAPI.setCloseToTray(cbCloseToTray.checked)); + await safe('Theme', window.settingsAPI.setTheme(themeSelect.value || fallbackTheme)); + await safe('Reword-Mode', window.settingsAPI.setRewordMode(rewordModeSelect.value || 'ask')); // Threshold speichern (immer Wert aus Feld nehmen!) let threshold = parseInt(thresholdInput.value, 10); if (isNaN(threshold)) threshold = 10; if (threshold < 1) threshold = 1; if (threshold > 1000) threshold = 1000; - await window.settingsAPI.setIntelligentCommitThreshold(threshold); + await safe('Commit-Threshold', window.settingsAPI.setIntelligentCommitThreshold(threshold)); let minutes = parseInt(minutesInput.value, 10); if (isNaN(minutes)) minutes = 10; if (minutes < 1) minutes = 1; if (minutes > 1000) minutes = 60; - await window.settingsAPI.setMinutesCommitThreshold(minutes); + await safe('Minutes-Threshold', window.settingsAPI.setMinutesCommitThreshold(minutes)); // Dropdowns speichern const commitSel = document.getElementById('commitModelSelect'); const readmeSel = document.getElementById('readmeModelSelect'); - if (commitSel) await window.settingsAPI.setCommitModel(commitSel.value); - if (readmeSel) await window.settingsAPI.setReadmeModel(readmeSel.value); - - await window.settingsAPI.setGiteaToken(giteaTokenInput.value.trim()); + if (commitSel) await safe('Commit-Model', window.settingsAPI.setCommitModel(commitSel.value)); + if (readmeSel) await safe('Readme-Model', window.settingsAPI.setReadmeModel(readmeSel.value)); + await safe('Gitea-Token', window.settingsAPI.setGiteaToken(giteaTokenInput.value.trim())); + if (errors.length) { + alert('Nicht alle Einstellungen konnten gespeichert werden:\n\n' + errors.join('\n')); + } window.settingsAPI.close(); }); // Cancel / Close: Theme zurücksetzen, dann schließen diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 8b24427..9b55ed7 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -3557,6 +3557,7 @@ fn set_autostart(state: tauri::State<'_, AppState>, enabled: bool) -> CommandRes let auto = auto_launch::AutoLaunchBuilder::new() .set_app_name("Auto-Git") .set_app_path(exe.to_string_lossy().as_ref()) + .set_use_launch_agent(true) .build() .map_err(|e| e.to_string())?; if enabled {