- Moved alias mapping to Context.
- Added Context::canonicalize to resolve aliases.
- Added Context::loadAliases to reload on config file change.
- Removed old alias processing from Cmd.
- Doesn't work yet, but the data is loaded.
- Added a tri-state confirmation function for confirming bulk operations
allowing the user to answer yes/no/all to and optionally allow,
disallow or bulk-allow big changes.
- .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.
- Fixed bug in calendar that failed to consider only pending tasks
when coloring in the calendar display, and when calculating the
most overdue task to be displayed.
- Modified util.cpp/formatSeconds to stop displaying fractional days,
because having a task age represented as 5.1 days is silly.
- Added new tips file, in the correct format (unix fortune), with
dummy entries. If we are to support a "task tip" command in future
versions, we need to start gathering the tips now.
- "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 oldest.t unit tests that relied on "task oldest 3" instead of
the new "task oldest limit:3".
- Fixed tag.t so that it uses example tags +one +two instead of the
original +1 +2, because when it comes time to remove those tags
with -1 -2, the tags are interpreted as a malformed sequence.
- Fixed but that required all known attributes to be listed by name
in order to be recognized by creating new Att::validInternalName
method.
- Fixed bug in non-global Subst that failed to save a modified
annotation.
- 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.
- Fixed bug that caused colorization to be way, way off. Silly
mistake.
- Fixed bug whereby due dates and durations were stored as-is, but
should have been converted.
- On a related note, added Date::toEpochString,
Duration::operator (std::string).