- Implemented unit tests to verify that the "oldest" report does
indeed show the oldest 10 tasks.
- Implemented unit tests to verify that the "newest" report does
indeed show the newest 10 tasks.
- Added support for the "report.X.limit" configuration variable, to
restrict the number of rows a report generates.
- Added support for Table::render (limit) to limit the number of rows
that are rendered.
- Removed "oldest" and "newest" report code.
- Added "oldest" and "newest" custom report details to Config.cpp
- Updated various documentation.
- Fixed bug whereby if a new month rolls around, and no task is added,
no row of data is shown in the history or ghistory reports, even
though tasks may have been completed or deleted ni the new month.
- Task now displays as many calendars will fit across the window,
unless a lower value is specified in the "monthsperline" configuration
variable.
- Task now obeys the "color" configuration variable when determining
whether to add a legend to the calendar output.
- Added support for the "locking" configuration variable that disables
file locking. This can be helpful to folks who use task on Solaris,
and store their task data files on an NFS mount.
- Added unit tests to verify that the completed.data file is not
created until the first report is run after the task is marked
as done.
- Added unit tests to verify that delete/undelete work as expected.
- Added unit tests for all auto coloration configuration settings.
- Tweaked colorization rule precedence to allow color.due to override
the built-in coloration of due tasks.
- Added color.recurring to the list of valid config values.
- Added message to "version" command hinting that folks should look
periodically for updated versions of task. Task does not "call home"
and check for updates (and never will), and so it is easy to not
realize that there may be newer versions of task with bug fixes and
new features.
- Added new column 'recur' for use in custom reports.
- Implemented Table::ascendingPeriod, Table::descendingPeriod allowing
sorting on the recur column.
- Added unit tests to both use the new column and test the sorting.
- Code cleanup.
- Made Table::optimize a public method.
- Table::optimize called only from handleReportGHistory, where it's
needed.
- Retaining benchmark.txt, to allow further improvements.
- Added Timer class to display high resolution timing information.
- Found terrible bug in Table::optimize that was taking up 99.7%,
on average, of the Table::rendering time, including sorting. This
fix naturally causes a 187-fold speedup of rendering.
- Changed report.cpp in handleCustomReport to only load pending tasks,
instead of all pending tasks. Subtle, but important difference.
- Added tests for attribute abbreviation.
- Added tests for filter permutation testing.
- Added benchmark for ongoing performance measurement.
- Mentioned test suite in docs. Why not?
- Added unit tests to cover automatic colorization by priority.
- Added unit tests to cover automatic disabling of color when !isatty.
- Added unit tests to cover display of unsupported configuration
variable in the 'version' report.
- Added support the '_forcecolor' configuration variable to allow the
possibility of unit tests that test color support, yet redirect
output to a file. This configuration variable will not be
documented.
- Implemented unit tests to verify tag manipulation
- Implemented unit tests to verify nag functionality
- Implemented unit tests to verify bug fix for hang on shadow write
- Implemented unit tests to verify bug fix for unsupported recurrence periods
- Implemented unit tests to verify bug fix for hang on sort
- Corrected typo in add.t
- The sort algorithm (Combsort11) was broken because it didn't
consider all the possible variations of present/missing, same/
different combinations of data, when performing a compare. This
led to an unstable sort, which is an infinite loop in Combsort11.
- No longer writes shadow files based on TDB onChange trigger.
- Addressed bug whereby adding a recurring task trigger a shadow
file rewrite, which in turn performs trigger another rewrite...