- Fixed bug #371 which caused task to mis-apply certain color rules, like
color.alternate, which was (a) not applied first, and (b) not blended
with the other color rules (thanks to Richard Querin).
- 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)
- Implemented replacement Config::get* methods.
- Replaced all calls throughout the code, with the new methods which
have no static values as defaults.
- added new reportdateformat to extend the formatting of due dates
in the reports and "task info"
- added new conversion sequences a, A, b, B and Y to be used with
reportdateformat
- 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
- The custom report limit "report.x.limit" was being used to limit the
rendered rows in the table. Instead, there should be something like
min (limit, actual_rows) used, in Table.cpp.
The symptom was duplicate tasks in a "task oldest" report, when there
were less than 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.
- 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.
- 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.
time ./task lo
old new
real 0.262 0.018
user 0.201 0.013
sys 0.048 0.004
~1200-1400% faster
time ./task completed
old new
real 3.991 4.014
user 2.821 2.832
sys 1.165 1.169
~0.3-0.5% slower