- Fixed bug whereby if no columns labels were specified, it was
considered a column count mismatch.
- Fixed unit tests to use m/d/Y not M/D/Y dateformat.
- Guaranteed the correct Config::get call via cast. There is some
doubt as to the correct call being made otherwise. This is not a
very likely fix, but does eliminate one possibility.
- Added support for "annotate" command to annotate existing tasks.
- Bumped file format to version 3, due to the annotations.
- Added unit tests to verify that annotations work.
- Changed 'description' column everywhere to include annotations.
- Added 'description_only' column to exclude the annotations.
- Fixed bug in Table.cpp that calculated the width of multi-line
columns by using the cell length, instead of the length of the
longest individual line.
- Updated documentation with new feature.
- Updated documentation with new column.
- Enhanced t.t unit tests to cover format 43
- 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 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 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.
- 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...
- Validates specified columns in custom reports against list of good
column names.
- Validates list of sort columns in custom reports against list of
specified column names.
- Minor fix to grammar file.
Doesn't work, and is commented out for now. Need a better approach
because of the priority attribute validation of "!H" failing, and the
Unix shell interpreting "!", thus requiring an escape, which makes the
command ("task list pri:\!H") ugly.
- Removed TDB::gc calls from report.cpp.
- Made TDB::gc calls from task.cpp whenever necessary.
- Disabled TDB::gc calls when running a report for the sake of the shadow file.
- Shadow file overwrite now implemented using ostream, instead of cout.rdbuf trickery, for the well-being of cygwin.