From 89db8601e6729d13918ebe9245c2fc6366806ae9 Mon Sep 17 00:00:00 2001 From: Alex Southwell <4596216+saphid@users.noreply.github.com> Date: Tue, 3 Nov 2026 13:35:44 +1100 Subject: [PATCH] fix(web): a scheduled task with a cleared run time no longer saves as 09:00 Co-Authored-By: Claude Opus 5.5 --- .../settings/scheduledTasksSettings.logic.test.ts | 10 ++++++++++ .../settings/scheduledTasksSettings.logic.ts | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/settings/scheduledTasksSettings.logic.test.ts b/apps/web/src/components/settings/scheduledTasksSettings.logic.test.ts index c4c66c1cfbae0..990f75f98f92f 100644 --- a/apps/web/src/components/settings/scheduledTasksSettings.logic.test.ts +++ b/apps/web/src/components/settings/scheduledTasksSettings.logic.test.ts @@ -170,6 +170,16 @@ describe("editing scheduled task branch settings", () => { }); }); +it("keeps a fixed run time and rejects a cleared one", () => { + const draft = taskToDraft({ + ...legacyTask, + schedule: { type: "fixed_time", timeOfDay: "14:30" }, + }); + expect(scheduleFromDraft(draft)).toEqual({ type: "fixed_time", timeOfDay: "14:30" }); + // A native time input reports "" when it is cleared or only partly filled. + expect(scheduleFromDraft({ ...draft, timeOfDay: "" })).toBeNull(); +}); + describe("one-time scheduled tasks", () => { afterEach(() => vi.unstubAllEnvs()); diff --git a/apps/web/src/components/settings/scheduledTasksSettings.logic.ts b/apps/web/src/components/settings/scheduledTasksSettings.logic.ts index 9e0d0dad27cb9..c1c411810539b 100644 --- a/apps/web/src/components/settings/scheduledTasksSettings.logic.ts +++ b/apps/web/src/components/settings/scheduledTasksSettings.logic.ts @@ -118,6 +118,8 @@ export function scheduleDraftErrors(draft: DraftState) { ]; return []; } + if (draft.scheduleMode === "fixed" && !draft.timeOfDay) + return [{ title: "Invalid run time", description: "Pick a time." }]; if (draft.scheduleMode !== "webhook") return []; if (parseMaxDeliveryAge(draft.maxDeliveryAgeMinutes) === undefined) return [ @@ -228,7 +230,7 @@ export function scheduleFromDraft(draft: DraftState): ScheduledTaskUpsertSchedul const selectedEveryDay = draft.weekdays.size === 0 || draft.weekdays.size === 7; return { type: "fixed_time", - timeOfDay: draft.timeOfDay || "09:00", + timeOfDay: draft.timeOfDay, ...(selectedEveryDay ? {} : { weekdays: [...draft.weekdays].toSorted() }), }; }