- Disallowed @ and / from an attribute name or modifier. This causes
input like 'user@host:path' to now be parsed as description, and not
as an unrecognized attribute.
- Migrated taskd JSON parser into task, to provide encode/decode
capability to Task::composeJSON.
- Migrated taskd utf8 code, replacing old unused code.
- Added unit tests or JSON.
- Migrated Tree updates from taskd.
- Applied patch to fix bug #581, in which backslashes in annotations and
descriptions caused problems (thanks to Itay Perl).
- Corrected unit tests that were shown to be incorrect, after the patch
corrected other behavior.
- Fixed bug #542, which sorted the countdown columns incorrectly (thanks to
Michelle Crane).
- Duration could not parse all varieties of it's own output, which is why the
sorting was broken, in particular negative durations and real numbers in
durations (such as (1.2y').
- Sorting in Table::sort_compare for Table::periodAscending and
Table::periodDescending was broken.
- Missing unit tests for countdown_compact.
- Imported Nibbler::getNumber from the Attitash project.
- Additional Duration unit tests.
- Additional Nibbler unit tests.
- Additional countdown.t unit tests.
- Nibbler: Now locally stores input length rather than repeatedly calling
std::string::length.
- Nibbler: Makes greater use of std::string::find_first_not_of, instead of
looping.
- TDB: No longer applies empty filters to lists - just copies the lists.
- TDB: Now caches data when reading completed.data.
- TDB: During loadPending and loadCompleted, makes fewer copies of the data.
- TDB: In commit, breaks out of search loops after finding the right data.
- TDB: In gc, only writes out minimal pending or completed data, instead of
all data, all the time.
- TDB: No longer reads completed.data in gc, and simply appends completed
and deleted tasks to it.