- If a color is specified using the deprecated 'on_red' instead of
'on red', generate a warning in the version report. The version
report is becoming a report where .taskrc sanity checks occur.
Is this good?
- Added a warning when modifying recurring tasks, that all instances of
that task may be modified. When task confirms a bulk edit the
recurrence is again indicated (thanks to Cory Donnelly).
- Made Color::colorize (const std::string&, const std::string&) static,
so that it is now simple to colorize a string:
std::cout << Color::colorize ("text", "red");
- Added sample foreground and background colors to the "color" command,
and used the above shortcut to simplify handleOnColor.
- Fixed bug whereby the start, stop and delete commands were not
complaining when filter arguments were specified, even though they
were ignored. Thanks to Charles T. Yun.
- Fixed bug that prevented the chaining of two attributes with
different modifiers to effect a date range, such as:
task ls due.after:8/1/2009 due.before:8/31/2009
Thanks to John Florian.
- Now supports "rc:complete.all.projects" to show all historical
project names.
- Now supports "rc:complete.all.tags" to show all historical tags names.
- Fixed bug in modify and append that was erroneously reporting "No
changes" when a bulk update occurred.
- Added bug.bulk.t unit tests to cover this example.
- Fixed bug that generated an export file that was incompatible with
task 1.7.1 import. Now there is a smooth migration path back to
1.7.1 in case 1.8.0 proves unacceptable.
- Fixed bug that caused code to use a combination of srandom and rand,
or srand and random. Should be srandom/random, srand/rand, not a
mix.
- Fixed bug that failed to set uuid in handleAdd, such that the uuid
already assigned in context.task was used, which was generated before
srand/srandom was is called.
- Implemented confirmation on big changes. That means if the description is
changed, or more than 2 tasks are modified in a single command.
- Implemented taskDiff to detect differences between two tasks.
- Implemented taskDifferences to describe differences between two tasks.
- .taskrc debug= now defaults to 'off', which will reduce clutter
and won't surprise beta testers.
- interactive.cpp did not compile when ncurses was not detected by
autoconf. That code branch obviously never got executed.
- The interactive shell now instructs the user to type 'quit' to
leave the shell.
- "debug" now considered a valid configuration variable.
- "alias.*" now considered a valid configuration variable.
- Moved some messages over to use Context::debug.
- When a task is added, the new ID is echoed back, for convenience.
This requires a scan of the pending file, so there is a performance
hit, and the feature is controlled by the FEATURE_NEW_ID define.
- Fixed bug whereby handleRecurrence was being called after the tasks
were loaded and filtered, and thus handleRecurrence operated on a
filtered set, and failed. The fix is to move the call to before the
TDB::load call, and to add another TDB::loadPending call inside
handleRecurrence. This means TDB::load needs to be reentrant without
re-reading the file, and can therefore be called twice, with the
likelihood of there being a different filter for each call. This in
turn led to the problem whereby handleRecurrence would generate the
synthetic tasks, which then sat uncommitted in TDB::mNew. The fix
for this is that every call to TDB::loadPending gets the contents of
TDB::mNew appended (with correct IDs). This bug is what you might
call a good one.
- Fixed bug where "foo:bar" was not recognized as an attribute, and
generated an error rather than demoting is to part of the description.
- Fixed bug where en-passant deltas were applied only to the first task
in a sequence.
- Fixed various unit test.