The Missing ToDoist Tools - TMDT for short - is a collection of scriptable tools designed to automate the tedious act of Inbox triage and general task management.
- Automatically create projects, labels, tasks
- 'Seed' a project from a template file
- Apply labels and projects to tasks
- Reschedule tasks with
relative
orexplicit
dates - Set reminders on tasks
- Download ToDoist backups to your computer
Configurations that do things like:
Apply the label
@at_work
to all tasks that:
- are in the
Inbox
project- (and) have no label
- (and) end in
at work
orat the office
.
- Remove the
at work
orat the office
portion of the task when saving it with the labels
Or
For every task in the
GarageSale
project:
- make a new project named after the task
- locate the new project under the
GarageSale
project- 'Seed' the project with tasks from
sale-tasks.csv
file- delete the original task from
#GarageSale
And so much more become possible.
If you squint 🔍, you can see the examples outlined above actually being used to cleanup an Inbox in the screencast:
If the above GIF wasn't helpful, you can see the exact jobs
file from the demo.
There are several additional example jobs based off of my original use cases that - conveniently - serve as a guide to how I use TMTDT and complement the documentation for each tool.
-
Tests. I kept changing my mind about how to do most things as I re-wrote things. As such, there are no tests :(.
-
More 'useful' backup and restore
action
s. As of right now, TMTDT only downloads the nightly backups that ToDoist provides for their users. There is no 'point in time' restore functionality. I have some vague ideas about how to implement this with something likepickle
. -
Add support for searching by comment tasks.
-
A web service version.
-
a PIP installable version (
pip3 install tmtdt
or similar sotmtdt.py
in installed into users$PATH
) -
Support for multiple selectors of a given component per filter so queries can be properly bounded
-
Better 'event' emitting integration. If you look deep in the code, there are a few 'pre-wired' hooks that don't do much right now. I'd like to change that so other software can be made aware of when, for example, a
job
just ranapply_label
to some task.
Take the GNU LGPLv3
and add on this:
Absolutely no commercial use for any reason without my express written consent.
Is something that I will in the time that I can afford to spare for support.
All support will be done via github issues, so please make sure you've gone through the
getting started) guide for setup related questions and the
troubleshooting
guide for a few useful tips / tools for further debugging.
If, after you've confirmed a proper python3 environment and checked through the troubleshooting guide, search through the current issues before opening a new one!
Before submitting an issue, make sure you're asking a good question
You can always buy some time and have it allocated to your issue :).
This code is littered with #TODO:
comments to add more polish and more. Like support, I'll get to those in my spare time.
You are encouraged to use the backup
action to download the most recent backup
from ToDoist before using ANY other action
!
You are encouraged to read through the source code as it has plenty of comments which should also explain my thinking (the good and the bad) and answer specific feature/implementation questions.
That said, pull requests are absolutely welcome. Please open an issue to discuss any significant refactor, first. See CONTRIBUTING for more.
TL;DR:
Manage your expectations accordingly.