From 5583d95ecc52657dedb2f3515f4b6aff90d097e9 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sun, 29 Mar 2026 17:25:15 +0200 Subject: [PATCH] feat: preserve activation state when updating or creating Sieve scripts to avoid deactivating server-managed vacation scripts --- stores/filter-store.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/stores/filter-store.ts b/stores/filter-store.ts index 147e1ff4..eced8d15 100644 --- a/stores/filter-store.ts +++ b/stores/filter-store.ts @@ -188,7 +188,10 @@ export const useFilterStore = create()((set, get) => ({ const content = generateScript(rules, vacation.isEnabled ? vacation : undefined); if (activeScript) { - await client.updateSieveScript(activeScript.id, content, true); + // Preserve the script's current activation state — don't pass activate: true + // unconditionally, as that would deactivate the server-managed 'vacation' + // script and cause VacationResponse/get to return isEnabled: false. + await client.updateSieveScript(activeScript.id, content, activeScript.isActive); set({ activeScriptId: activeScript.id, rawScript: content, @@ -197,7 +200,9 @@ export const useFilterStore = create()((set, get) => ({ isOpaque: false, }); } else { - const script = await client.createSieveScript('filters', content, true); + // Don't activate; there may be a server-managed 'vacation' script active. + // The filters script will be activated when the user saves filters normally. + const script = await client.createSieveScript('filters', content, false); set({ activeScriptId: script.id, rawScript: content,