Activity Digest: July 2015

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

This is not a complete list of all activity, just work that results in a non-trivial change. For a full list, see the full Git history.


  • Task: C++ unit tests now produce the same colorful output in TTY mode as the Python tests.
  • Task: The notion of ‘ambiguity’ was dropped from Lexer, Eval, calc. It is no longer needed.
  • Flod: ‘Prevent collapsible links to jump to top of page’ fixed


  • Task: Test assumed that if /foo/ appears in the output, all is well, but there is a false positive case where ‘foo’ is also in the path name of unrelated output.
  • Task: TAP: Show name of file containing the test(s)
  • Task: TAP: Don’t show __main__ in output if description is undefined
  • Task: TAP: self.t() single-arg call now propagated to self.t.runError()
  • Task: json.array now defaults to on, which means export works out-of-the-box with all JSON parser


  • Task: Lexer added look-behind rules to improve tag recognition
  • Task: Lexer uses maximal matching for pair args
  • Task: Oops, restored YYYYMMDDThhmmssZ and YYYYMMDDThhmmss ISO form support, which should not have been removed
  • Task: Lexer learned that when there are two -- separators, the second one is a literal --, not a separator


  • Task: Lexer dropped support for UUID lists
  • Task: ISO8601 date parsing added range checking, preventing 25 as an hour, for example
  • Task: CLI2 refactoring removed lots of code and bugs


  • Task: Lexer learned to decompose pair arguments into their components, for example name.not:value has a name, an attribute modifier, a separator :and a value
  • Task: CLI2 no longer attempts to canonicalize everything, just most things
  • Task: Lexer learned how to read UTF8 words out of strings, taking into consideration quotes, escaped characters and U+NNNN, \uNNNN Unicode sequences
  • Task: Fixed zsh completion autoload function boilerplate
  • Task: The _tags helper command now also shows virtual tags


  • Task: The test suite now supports Python3 in addition to Python2.7


  • Task: All <name>:<value> pairs now support escapes, quotes and Unicode escapes for <value>
  • Clog: ‘Blank input lines are silently eaten’ fixed


  • Task: Recurring template tasks are no longer include in the +OVERDUE virtual tag
  • Task: With patterns /pattern/ and substitutions /from/to/[g], there is now the possibility of added other flags than g at the end
  • Task: Removed a performance shortcut fir fixed-width columns that was preventing print.empty.columns from working on indicator columns


  • Task: New command _unique queries unique values from the specified attribute, which will ultimately replace several helper functions





  • Task: Incorporated the latest wcwidth.c from Markus Kuhn
  • Task: Fixed bug where two feedback messages were concatenated without intervening space


  • Task: Fixed bug where the width of ID columns was mis-calculated for 5-digit task IDs
  • Task: Fixed bug where UDAs were missing from the columns command output
  • Task: Fixed typos in translation files




  • Task: Test Framework gained a MetaTest capability, which simplifies dynamic test creation



  • #1665: ’edit’ should process or reject arguments fixed
  • Task: RX: Was missing REG_ENHANCED, which omits \d support
  • Task: Commands that do not accept filters or modifications now generate an error when extra arguments are specified
  • Task: There are now a class of command to which context does not apply


  • Task: DOM references are now detected using precise templates, rather than patterns, which makes them more reliable
  • Task: zsh completion now categorizes commands


  • Task: The last traces of Perl in the test suite are removed. This concludes the first phase of the test suite refactoring. Remaining is the effort to organize tests in feature-specific scripts, which is not complete
  • Task: Added support for free-form JSON input, as well as the traditional one-line-per-task form