Skip to content

[v1.8.0] Use taskw-ng to Interact with TaskWarrior, make TW filtering more powerful

Latest
Compare
Choose a tag to compare
@bergercookie bergercookie released this 29 Jan 10:00
· 35 commits to master since this release

Use taskw-ng for interacting with Taskwarrior

Synchronizations that interact with Taskwarrior will now use the taskw-ng python wrapper instead of the currently unmaintained taskw wraper. This will allow faster development of new features and quicker bugfixing since we're also developing and publishing the taskw-ng package.

IMPORTANT When transitioning to the v1.8.0 release, you 'll need to update your cache files situated in ~/.config/syncall/. taskw-ng is largely compatible with taskw, except its very name. As part of the caching of objects, we pickle items that we write to Taskwarrior and as a result, already cached items, will not be read back correctly since we 've now stopped depending on taskw and instead depend on taskw-ng. To fix this, you have to **replace all occurrences of taskw with takw_ng in the cache directory. To do that you can run a command like the following. Note that I'm using the sd and ripgrep to execute the replacements:

sd "taskw\b" tasnw_ng (rg --hidden -l "taskw\b")

If this doesn't work you can reset your synchronization as explained in the repo FAQ. If you still have problems after this please create a issue.

Rename twgcalsyncduration -> syncallduration

A task that 's written to / read from taskwarrior in the past could have a UDA twgcalsyncduration of type duration. We can now make use of this UDA in synchronizations other than the TW <> Google Calendar and we 've therefore renamed it to syncallduration to reflect this.

Please include the following snippet in your TASKRC file to correctly read/write this UDA:

uda.syncallduration.type=duration
uda.syncallduration.label=Task Duration

Introduce more powerful Taskwarrior filtering

We now have more powerful Taskwarrior filtering across all synchronizations that interact with Taskwarrior. This means you can now use the following options:

 -f, --tw-filter TEXT            Taskwarrior filter for specifying the tasks
                                 to synchronize. These filters will be
                                 concatenated using OR  with potential tags
                                 and projects potentially specified.
 --all, --taskwarrior-all-tasks  Sync all taskwarrior tasks (potentially very
                                 slow).
 -t, --taskwarrior-tags TEXT     Taskwarrior tags to synchronize.
 -p, --tw-project TEXT           Taskwarrior project to synchronize.
 --days, --only-modified-last-X-days TEXT
                                 Only synchronize Taskwarrior tasks that have
                                 been modified in the last X days (specify X,
                                 e.g., 1, 30, 0.5, etc.).
 --prefer-scheduled-date         Prefer using the "scheduled" date field
                                 instead of the "due" date if the former is
                                 available.

This affects the following synchronizations:

  • tw_asana_sync.py
  • tw_caldav_sync.py
  • tw_gcal_sync.py
  • tw_gkeep_sync.py
  • tw_gtasks_sync.py
  • tw_notion_sync.py

You can read more about this in the taskwarrior-filtering page


Full Changelog: v1.7.2...v1.8.0