// ---------- profiles ---------- let _knownRemotes = []; // ["cq:", "gdrive:", ...] from rclone listremotes let _cfgDefaults = { source: [], target: [] }; let _remotesLoaded = false; async function fetchRemotes() { const status = document.getElementById("profiles-status"); if (_remotesLoaded) return; _remotesLoaded = true; if (status) status.textContent = "loading remotes..."; try { const r = await chrome.runtime.sendMessage({ type: "list-remotes" }); if (r && r.ok) { _knownRemotes = r.remotes || []; _cfgDefaults = { source: r.default_source || [], target: r.default_target || [] }; if (status) status.textContent = `${_knownRemotes.length} remote(s) loaded`; // Re-render to populate selects now that we have data const profiles = readProfiles(); renderProfiles(profiles); updateSectionSummaries(); } } catch (e) { _remotesLoaded = false; if (status) status.textContent = "failed to load remotes"; } } document.querySelector('.side .item[data-pane="profiles"]').addEventListener("click", fetchRemotes); document.getElementById("load-remotes").addEventListener("click", () => { _remotesLoaded = false; fetchRemotes(); }); /** * Build a remote picker widget. * Shows: a