Chores
A chore is a regular activity, usually one that is imposed by the outside world. Chores live in the "chores" view, but they're instantiated as regular tasks in the "inbox".
For example, you can have a chore like "Clean out AC filters every week", or "Pay home insurance every month".
In the chores view, the task templates might look like this:
Properties
Chores have a period and a period interval. The former is set via the period
property and the latter is derived uniquely from this. The period can be one of:
- Daily: a task which needs to happen once a day. In a year there will be 365 or 366 instances of such a task, and the period interval for each one will be each day. The intervals are numbered from 1 to 365.
- Weekly: a task which needs to happen once a week. In a year there will be 52 instances of such a task, and the period interval for each one will be the corresponding week. The intervals are numbered from 1 to 52.
- Monthly: a task which needs to happen once a month. In a year there will be 12 instances of such a task, and the period interval for each one will be the corresponding month. The intervals are numbered from 1 to 12.
- Quarterly: a task which needs to happen once a quarter (group of three months). In a year there will be 4 instances of such a task, and the period interval for each one will be a group of three consecutive months (Jan/Feb/Mar, Apr/May/Jun, Jul/Aug/Sep, and Oct/Nov/Dec). The intervals are numbered from 1 to 4.
- Yearly: a task which needs to happen once a year. In a year there will be 1 instance of such a task, and the period interval for it will be the full year. The intervals are numbered by the year.
Notice that the smallest period is the daily
one, with a period interval of one day. In
general, for a given period interval there can be only one instantiation of a task of that
period.
While in the inbox, the instantiated tasks might look like this:
The instantiated task in the inbox is constructed from the chore template, but it also changes in the following way:
- The name contains the period interval for which the task is active. So "Pay home insurance" becomes "Pay home insurance Mar". The formats are "Mar13" for daily periods, "W13" for weekly periods, "Mar" for monthly periods, "Q1" for quarterly periods, and "2020" for yearly periods.
- There is a link back to the owning chore.
- Most fields are not editable.
Chores can also have an actionable date. By default there is none, and the generated
inbox task won't have an actionable date. If you specify an actionable_from_day
and/or
actionable_from_month
properties, they will determine the inbox tasks to have one. They work like
so:
- For tasks with weekly and monthly periods, the
actionable_from_day
property can be set. This will set the actionable date to be that many days into the period interval. - For tasks with quarterly and yearly periods, the
actionable_from_month
andactionable_from_day
properties can be set. The first parameter will specify the month in the period interval to set the actionable date to. Ifactionable_from_day
is not set, the first day of the month is used, otherwise the specified day is used.
Chores also have a deadline. By default the deadline is the end day of the period
interval, at midnight. You can override it however to specify, via the due_at_day
and
due_at_time
properties. They work like so:
- For tasks with daily period, only the
due_at_time
property can be set. For exampledue_at_time: "17:00"
will mark a task as due at 5PM in the local timezone, as opposed to 11:59PM in the local timezone. - For tasks with weekly and monthly periods, the
due_at_day
anddue_at_time
property can be set. For exampledue_at_day: 10
will set the deadline of a monthly task to be the midnight of the 10th day of the month. Addingdue_at_time: "13:00"
will mark it as due at 1PM in the local timezone on the 10th day of the month. - For tasks with quarterly and yearly periods, the
due_at_month
,due_at_day
anddue_at_time
property can be set. For exampledue_at_month: 3
will set the deadline of a yearly task to be the midnight of the last day of March. Addingdue_at_day: 10
will mark it as due at midnight of the 10th of March. and addingdue_at_time: "13:00"
will mark it as due at 1PM on the 10th of March.
Chores can be configured to skip certain periods via a skip rule. This is
specified via the skip_rule
property, which can be one of:
odd
: keeps the odd numbered intervals for the period. For days this means every other day relative to the first day since Jan 1st 1970, for weeks and months and quarters things are relative to the year, and for years the year itself should be odd.even
: keeps the even numbered intervals for the period. Same rules apply as above.every n k
: keeps just one interval in a consecutive group ofn
. Thenk
determines which one.every 3 1
means that the first interval in a group of three will be kept.every 5 2
means that the second interval in a group of five will be kept.custom_day_rel_weekly x y z ...
: keeps only certain days of the week. Applicable for daily chores.custom_day_rel_monthly x y z ...
: keeps only certian days of the month. Applicable for daily chores.custom_week_rel_yearly x y z ...
: keeps only certain weeks in the year. Applicable for weekly chores.custom_month_rel_yearly x y z ...
: keeps only certain months in the year. Applicable for monthly chores.custom_quarter_rel_yearlly x y z ...
: keeps only certain quarters in the year. Applicable for quarterly chores.
A chore can be mark as "must do", via the Must Do
property. Being marked
as such that will cause it to ignore vacations. For example, paying rent or taking some medicine
can't be interrupted by a vacation.
A chore can also have an active interval. This is a time interval in which tasks should be generated. By default the interval is "empty", so inbox tasks are always generated. But by specifying either a start or an end to this interval, you can control when exactly tasks are generated. The rule is that the period interval for an inbox tasks intersects successfully the active interval.
A chore can be suspended, via the Suspended
property. Being marked as such means
that the task won't be generated at all. For example, going to the gym might be suspended while
you're recovering from an illness.
A chore can also have a difficulty, just like a regular task. This will be copied to all the instantiated tasks that are created.
Similarly, a chore can have the Eisenhower properties. These will be copied to all the instantiated tasks that are created.
Chore inbox tasks are created via task generation.
Chores interact with vacations too. More precisely, if a task's period interval
is fully contained within a vacation, that task won't be instantiated in the inbox via
generation. For example, if you have a vacation from Monday 2020-02-09
to
Sunday 2020-02-15
, then all daily and weekly tasks for that week won't be created, but
all monthly, quarterly and yearly ones will.