From 7cc899470f7d8fee0d8371f8f8f5af442fcb49a1 Mon Sep 17 00:00:00 2001 From: Tristan Michael Date: Sun, 5 Apr 2026 19:11:10 -0700 Subject: [PATCH] Polish: suppress error banner for transient sync failures and sort remote folders Only show the error banner for non-transient sync failures; connectivity issues (timeout, refused, unreachable) just update the status dot. Sort workspace entries above regular folders in the remote folder browser. --- apps/tauri/src/lib/screens/SetupScreen.svelte | 4 +++- apps/tauri/src/lib/stores/app.svelte.ts | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/tauri/src/lib/screens/SetupScreen.svelte b/apps/tauri/src/lib/screens/SetupScreen.svelte index 3351296..0f15b03 100644 --- a/apps/tauri/src/lib/screens/SetupScreen.svelte +++ b/apps/tauri/src/lib/screens/SetupScreen.svelte @@ -106,12 +106,14 @@ browseLoading = true; browseError = null; try { - browseEntries = await invoke("list_remote_folder", { + const entries: typeof browseEntries = await invoke("list_remote_folder", { url: webdavUrl, username: webdavUser, password: webdavPass, path: currentBrowsePath, }); + entries.sort((a, b) => (a.is_workspace === b.is_workspace ? 0 : a.is_workspace ? -1 : 1)); + browseEntries = entries; } catch (e) { browseError = String(e); browseEntries = []; diff --git a/apps/tauri/src/lib/stores/app.svelte.ts b/apps/tauri/src/lib/stores/app.svelte.ts index 23b901b..a52071f 100644 --- a/apps/tauri/src/lib/stores/app.svelte.ts +++ b/apps/tauri/src/lib/stores/app.svelte.ts @@ -184,7 +184,14 @@ async function loadLists() { async function loadTasks() { if (!activeListId) return; try { - tasks = await invoke("list_tasks", { listId: activeListId }); + const loaded = await invoke("list_tasks", { listId: activeListId }); + // Deduplicate by task ID — sync conflicts can produce files with the same UUID + const seen = new Set(); + tasks = loaded.filter((t) => { + if (seen.has(t.id)) return false; + seen.add(t.id); + return true; + }); } catch (e) { error = String(e); }