diff --git a/js/app.js b/js/app.js index 60c1695..642a48c 100644 --- a/js/app.js +++ b/js/app.js @@ -8938,7 +8938,15 @@ async function init() { Bridge.setPref(SYNC_PREFS.preBackup, e.target.checked ? '1' : '')); if (syncSetPwd) syncSetPwd.addEventListener('click', syncSetEncPwdFlow); if (syncTest) syncTest.addEventListener('click', syncTestConnection); - if (syncNow) syncNow.addEventListener('click', runSyncNow); + // Guard the user entry point: ignore clicks while a sync is running (no + // concurrent syncs) and call runSyncNow() with NO arg — the click event + // must not land in its `_attempt` retry counter. Internal retries call + // runSyncNow directly, so they're unaffected. + if (syncNow) syncNow.addEventListener('click', async () => { + if (syncNow.disabled) return; + syncNow.disabled = true; + try { await runSyncNow(); } finally { syncNow.disabled = false; } + }); $('#settingAutoBackupEnabled').addEventListener('change', onToggleAutoBackup); $('#autoBackupPickDirBtn').addEventListener('click', pickAutoBackupFolder);