- Completed support for 'task 1 depends:2,-3' to manipulate the
dependencies.
- Now supports rc.dependency.reminder to indicate when to nag about
dependency chain violations, defaulting to on.
- Now supports rc.dependency.confirm to require confirmation before
fixing dependency chains, defaulting to on.
- New source file dependency.cpp which implements a low-level API for
determining dependency status, and assorted handlers for task state
changes.
- Adds blocking tasks to the 'next' report.
- Added more dependency unit tests, changed the wording in a couple of
them and numbered them for easy reference.
- Added dependencyGetBlocking and dependencyGetBlocked API calls, in
the ongoing effort to find a workable API for dependencies. The
goal is to make the calling code as small as possible when dealing
with dependencies.
- Corrected the algorithm for determining whether a task is blocked or
blocking to also check that the other task is pending or waiting.
For example:
task add one
task add two depends:1
task do 1
As the first task is completed, task 2 still depends on 1, but is
no longer blocked due to the completed status.
- Modified the "info" report to use the modified API.
- Cleaned up message that is generated when a recurring task is past
its until: date and all child tasks have been dismissed, as the
parent task is deleted.
- Added unit tests recur.until.t to prove that the above is working.
- Context::autoFilter was suppressing 'tags' filter terms due to the
+tag/-tag syntax, which we now know only augments attribute modifiers,
and doesn't replace them.
- Fixed three sets of unit tests that recently broke when TDB::add
started checking whether the uuid was really unique. This was
intended to prevent accidental double import, but also caused these
tests to break because they all shared the same uuid, which is wrong.
- Fixed bug #461, in which the filter 'due:today' failed, but 'due.is:today'
worked. This is because while iterating over tasks, not every task has a
due date, in which case Date::Date ("") was called, which fails.
- Moved 'wait' up to second position in the Att::type method, for efficiency.
- Added feature #481, allowing for user control of the color rule order
of precedence via the 'rule.precedence.color' configuration variable.
- Color rules now obey the rc.search.case.sensitive configuration option.
- The color.keyword.XXX color rule now applies to annotations too.
- Fixed a precision problem with average age on the summary report.
The problem was that average age is calculated as the sum of all
ages, divided by the count. The sum was already being stored as
a double, to allow for very high values, but was being truncated
to an int before being divided by the count. Classic precision
mishandling.