Activity Digest: April 2015

This is an ongoing series of activity reports, published monthly, to highlight activity in the Taskwarrior project. Here is what happened in April 2015.

2015-04-01The Hooks v2 API was implemented. While nothing changed with respect to the events or interfaces to the hooks scripts, there are now arguments passed to the hooks script.
Whereas in the v1 Hooks API a hook script was effectively called like this:
script <input >output
The v2 API now effectively does this:
script 'api:v2' 'args:task list' 'command:list' 'rc:~/.taskrc' 'data:~/.task' 'version:2.4.3' <input >output
This allows a hook script to determine which API is in effect, and offers access to some important information.
What will hook scripts do with this information? Who knows, let’s see, and hope it isn’t all used for evil purposes.
2015-04-01Taskwarrior learned that running hooks scripts while attempting to run shell completion is a bad idea.
2015-04-02The command line lexer was improved, or perhaps just made less awful, now allowing both task calc now + 3 days work as well as task calc now+3days, making whitespace irrelevant.
2015-04-02Recurring tasks now inherit more attributes from the parent task, and rc.default.* settings are no longer applied.
2015-04-02The .isnt and .not attribute modifiers are now the performing exact non-match, therefore providing symmetry to the .is modifier.
2015-04-03Tasks that are downloaded during a sync no longer get local default settings applied to them.
2015-04-03Taskwarrior learned that \n in a description does not have a character width of -1, which borked the formatting.
2015-04-04Objects returning std::string, now return const std::string&. This can reduce the number of data copies in memory, which makes things better on the inside. How about that for a crowd-pleasing improvement!
2015-04-04All task attributes are now sortable. “Why weren’t they before?” you might ask. Umm…
2015-04-04Task sorting duplicated code that was implemented better elsewhere, and so this was eliminated.
2015-04-04UDA string attributes that specify discrete values are now sorted (high-to-low) in the order that they are defined. If one day the priority attribute is removed, then this means the priority UDA that replaces it can now have an arbitrary set of priority values that sort properly.
2015-04-04The priority attribute is removed from the core, and reimplemented as a (standard) UDA. The change is made such that users should not notice. Unless they read.
2015-04-05The info command urgency display was cleaned up and fixed.
2015-04-05The rc.debug.hooks=2 setting now shows the arguments that are passed to hook scripts.
2015-04-05The color themes were updated to accommodate the new form of the priority attribute.
2015-04-05When calculating report formatting, fixed-width columns are now only sized once, not once per task.
2015-04-05The rc file syntax was described in the man page, finally.
2015-04-06The test framework is updated to handle the Hooks v2 API.
2015-04-06The codebase took some early steps towards using C++11 features. It’s been four years after all, and compilers have caught up, somewhat. Future releases will mandate newer Clang/GCC versions in order to use new features.
2015-04-06The summary.all.projects setting allows the summary report to consider all finished projects.
2015-04-06Some spa-ESP localization changes were made. The other languages are getting quite out of date. Any volunteers?
2015-04-12The info command now prints urgency details when the urgency values is negative.
2015-04-16Various text-themed helper code was migrated into the Lexer.
2015-04-1832-bit systems have ambiguous int/time_t types, which are now disambiguated, which means Taskwarrior now builds for 32-bit OSes.
2015-04-19Taskwarrior 2.4.3 released, which includes the Hooks v2 API, and the conversion of priority from a core attribute to a UDA.
2015-04-21Starting with the 2.4.4 release, Taskwarrior will require a compiler that supports most of the C++11 standard, for example GCC 4.7 and Clang 3.3.
2015-04-21With Taskwarrior released, the development focus now shifts to Taskserver 1.1.0. Taskserver inherits a lot of code improvements from Taskwarrior because they share code. Obsolete code removed.
2015-04-24The Taskserver setup script is renamed to ‘setup_server.bash’, and walks the user through the whole setup process for a server, and users. Although not for advanced users, this script will automate the steps that cause much difficulty among Taskserver users.
2015-04-24Starting with the 1.1.0 release, Taskserver will require a compiler that supports most of the C++11 standard, for example GCC 4.7 and Clang 3.3.
2015-04-25Taskserver inherits Taskwarrior’s Python test framework, so future tests can be written in Python.
2015-04-25Taskserver documentation begins to mention the new setup_server.bash script, which, come to think of it, really ought to be tested.
2015-04-25Taskserver documentation hallucinated functionality triggered by SIGHUP and SIGUSR1. The code was improved to the point where it now just looks like an omission.
2015-04-25Taskserver inherits Taskwarrior’s I18N/L10N framework, as the basis for possible localizations.
2015-04-25Taskserver tests now include a ‘statistics’ request that doesn’t work. Progress!
2015-04-25Taskserver loses some vestigial (broken) code that supported hooks and extension scripts. Future releases will include a proper hook system, once we figure out what that is.
2015-04-26Taskwarrior and Taskserver no longer report ‘pthreads’ linkage in diagnostic output. There will be no pthreads usage, instead the C++11 std::thread will be used, one day.
2015-04-26Taskwarrior gains a nearly useless feature: when using the new configuration setting:
$ task rc.obfuscate=1 ...
All output text is replaced by xxx, xxx xxxxxxx xx, so that we can share formatted output without revealing private task data. This eliminates the need to xxxx.
2015-04-26The Taskserver PKI scripts now use CN properly, and no longer specify DNSNAMES and IPADDRS. This is better.
2015-04-26Taskserver reluctantly now provides more clues in debug mode as to why certificate validation failed.
2015-04-26Taskserver’s malformed request tests now fail because they are deliberately malformed. They did fail because the client command was broken. Progress!
2015-04-26Recent Taskserver fixes now allow tests to run with strict certificate validation.
2015-04-28The beginnings of a Japanese translation is submitted for Taskwarrior.
2015-04-26Taskwarrior displays more details in debug mode when sync fails certificate validation.
2015-04-26Reduced the number of segfaults in Taskserver when the incoming request contains incorrect types. For the children.
2015-04-26Taskserver statistics request is working again.