- 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.
- 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.
- Modified argument parsing to prevent assertions and seg faults.
- Added support for month names, with autocomplete.
- Added autocomplete for "due".
- Added unit tests to exercise all combinations, and errors.
- Now dates (due, wait, limit) are parsed first as Durations, and on
error reparsed as Date. When a Duration is found instead of a Date,
the Duration is added to the current date/time.
- The "next" command had two control paths. One was via custom reports
(correct) and the other was a residual handler (obsolete), which is
now removed. This also simplifies a handleCustomReport/runCustomReport
issue.
- Found some inefficient string initialization in Table.cpp, report.cpp,
and in switching over to using more std::string capabilities, realized
a 25% boost in Table::render speed.
- Eliminated Table::suppressWS.
- Eliminated Table::clean.
- Relocated util/formatSeconds and util/formatSecondsCompact into
Duration object.
- Relocated unit tests.
- Upgraded Duration object to use seconds, not days.
- Enhanced Duration so that it can now parse '4 mins' etc.
- Added feature #415, which supports displaying just a single page of tasks,
by specifying either 'limit:page' to a command, or 'report.xxx.limit:page'
in a report specification (thanks to T. Charles Yun).
- Modified the 'next' report to only display a page, by default.
- introduced new show command to display configuration settings
- config command is used to just set config values
- modified documentation
- modified some unit tests calling 'task config' to 'task show'
- Added features #36 and #37, providing annual versions of the 'history'
and 'ghistory' command as 'history.annual' and 'ghistory.annual'.
- Uses new canonical names history.monthly, history.annual, ghistory.monthly
and ghistory.annual, with aliases providing original history and ghistory
commands.
- Updated man pages.
- Added feature #326, allowing tasks to be added in the completed state,
by using the 'log' command in place of 'add' (thanks to Cory Donnelly).
- Added log command to task.1 man page.
- Added log command to task-tutorial.5 man page.
- Added log command to help text.
- Added log command unit tests.
- The new auto-info command interfered with task modification. Should
have run all the unit tests before committing that change.
- Added auto-info command to the help text.
- Implemented all command hooks.
- Implemented several field hooks.
- Implemented several task hooks.
- Reorganized event validation code.
- Finalized Hooks -> API::call* mechanism.
- Implemented several hook unit tests.
- Corrected unit tests that didn't specify rc.hooks=on.
- Corrected builds that include Lua.
- improved dateformat handling now defaulting to YMD set via
dateformat.holiday variable
- fixed missing sorting in holiday table output when running
calendar.holidays=full
- renamed reportdateformat to dateformat.report
- added config file checking for calendar.holidays and calendar.details
- added 2 holiday files for SE and US (watertown, MA)
- added displaying of holidays in 'task cal'
via calendar.holidays
- the legend in the calendar can now be turned off
- weeknumbers in the calendar can now be color-coded