diff --git a/AUTHORS b/AUTHORS index f8f96fc81..4a9718225 100644 --- a/AUTHORS +++ b/AUTHORS @@ -30,6 +30,7 @@ The following submitted code, packages or analysis, and deserve special thanks: Kevin Owens Mick Koch Kathryn Andersen + Alexander Schremmer Thanks to the following, who submitted detailed bug reports and excellent suggestions: @@ -59,6 +60,5 @@ suggestions: Seneca Cunningham Dirk Deimeke Michelle Crane - Alexander Schremmer Elizabeth Maxson diff --git a/ChangeLog b/ChangeLog index 5e81c64d3..cd7a8af86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -77,15 +77,12 @@ worked. + Fixed bug #466, which gave the wrong error message when a custom report was missing a direction indicator for the sort order. - + Fixed bug #467, where recurring tasks were not honoring wait values. + Fixed bug #470, which caused task to not support the color 'none'. + Fixed bug #476, so that task now issues a warning when a wait date falls after a due date (thanks to T. Charles Yun). + Fixed bug #480, which didn't properly support @ characters in tags. This also now supports $ and #. + Fixed bug #489, which caused the filter 'tags.none:' to fail. - + Fixed bug $493, which made waiting, recurring tasks invisible (thanks to - Alexander Schremmer). + Fixed bug #494, causing imported text files to ultimately lack uuids (thanks to Elizabeth Maxson). + Fixed problem with command line configuration overrides that had no diff --git a/src/Task.cpp b/src/Task.cpp index ca61e5285..82765b813 100644 --- a/src/Task.cpp +++ b/src/Task.cpp @@ -647,7 +647,7 @@ void Task::validate () const if (has ("wait")) { Date wait (::atoi (get ("wait").c_str ())); - if (wait > due) + if (wait < due) throw std::string ("A 'wait' date must be after a 'due' date."); } diff --git a/src/recur.cpp b/src/recur.cpp index 198f03a1f..e8d06eafe 100644 --- a/src/recur.cpp +++ b/src/recur.cpp @@ -95,18 +95,32 @@ void handleRecurrence () { if (mask.length () <= i) { - mask += '-'; changed = true; Task rec (*t); // Clone the parent. rec.set ("uuid", uuid ()); // New UUID. - rec.setStatus (Task::pending); // Shiny. rec.set ("parent", t->get ("uuid")); // Remember mom. char dueDate[16]; sprintf (dueDate, "%u", (unsigned int) d->toEpoch ()); rec.set ("due", dueDate); // Store generated due date. + if (t->get ("wait").size()) + { + Date old_wait (atoi (t->get ("wait").c_str ())); + Date old_due (atoi (t->get ("due").c_str ())); + Date due (*d); + sprintf (dueDate, "%u", (unsigned int) (due + (old_wait - old_due)).toEpoch ()); + rec.set ("wait", dueDate); + rec.setStatus (Task::waiting); + mask += 'W'; + } + else + { + mask += '-'; + rec.setStatus (Task::pending); + } + char indexMask[12]; sprintf (indexMask, "%u", (unsigned int) i); rec.set ("imask", indexMask); // Store index into mask.