--- id: dulatx date: 2026-02-28T12:37:24+0300 languages: [en] aliases: reviews: tags: - draft - invention - snippet - taskwarrior --- # Fix for recurrent tasks in Taskwarrior I made this patch to fix the issue of `until` and `scheduled` being not recalculated: ```diff diff --git a/src/recur.cpp b/src/recur.cpp index 482fc1060..5e2627b40 100644 --- a/src/recur.cpp +++ b/src/recur.cpp @@ -118,6 +118,30 @@ void handleRecurrence() { rec.setStatus(Task::pending); } + if (t.has("scheduled")) { + Datetime old_scheduled(t.get_date("scheduled")); + Datetime old_due(t.get_date("due")); + Datetime due(d); + auto scheduled = checked_add_datetime(due, old_scheduled - old_due); + if (scheduled) { + rec.set("scheduled", format(scheduled->toEpoch())); + } else { + rec.remove("scheduled"); + } + } + + if (t.has("until")) { + Datetime old_until(t.get_date("until")); + Datetime old_due(t.get_date("due")); + Datetime due(d); + auto until = checked_add_datetime(due, old_until - old_due); + if (until) { + rec.set("until", format(until->toEpoch())); + } else { + rec.remove("until"); + } + } + rec.set("imask", i); rec.remove("mask"); // Remove the mask of the parent. ``` ## Up - ## Related - [Recurrent tasks в TaskWarrior](cmyx2d)