From 65943e759919f3505cdb2500c775474630935e3a Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 13 Feb 2026 17:07:00 +0200 Subject: [PATCH] Fix remaining multi-weekday recurrence bugs (#838) --- backend/modules/tasks/operations/recurring.js | 19 ++++++++++++++++++- backend/modules/tasks/routes.js | 5 +++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/modules/tasks/operations/recurring.js b/backend/modules/tasks/operations/recurring.js index 00a478e..8ded1ff 100644 --- a/backend/modules/tasks/operations/recurring.js +++ b/backend/modules/tasks/operations/recurring.js @@ -148,7 +148,24 @@ async function calculateNextIterations(task, startFromDate, userTimezone) { ); } else if (task.recurrence_type === 'weekly') { const interval = task.recurrence_interval || 1; - if ( + if (task.recurrence_weekdays) { + const weekdays = Array.isArray(task.recurrence_weekdays) + ? task.recurrence_weekdays + : JSON.parse(task.recurrence_weekdays); + let found = false; + for (let daysAhead = 1; daysAhead <= 7; daysAhead++) { + const testDate = new Date(nextDate); + testDate.setUTCDate(testDate.getUTCDate() + daysAhead); + if (weekdays.includes(testDate.getUTCDay())) { + nextDate = testDate; + found = true; + break; + } + } + if (!found) { + nextDate.setUTCDate(nextDate.getUTCDate() + interval * 7); + } + } else if ( task.recurrence_weekday !== null && task.recurrence_weekday !== undefined ) { diff --git a/backend/modules/tasks/routes.js b/backend/modules/tasks/routes.js index 30d636d..fb9c13a 100644 --- a/backend/modules/tasks/routes.js +++ b/backend/modules/tasks/routes.js @@ -461,6 +461,7 @@ router.patch('/task/:uid', requireTaskWriteAccess, async (req, res) => { recurrence_interval, recurrence_end_date, recurrence_weekday, + recurrence_weekdays, recurrence_month_day, recurrence_week_of_month, completion_based, @@ -504,6 +505,10 @@ router.patch('/task/:uid', requireTaskWriteAccess, async (req, res) => { recurrence_weekday !== undefined ? recurrence_weekday : parentTask.recurrence_weekday, + recurrence_weekdays: + recurrence_weekdays !== undefined + ? recurrence_weekdays + : parentTask.recurrence_weekdays, recurrence_month_day: recurrence_month_day !== undefined ? recurrence_month_day