Skip to content

Repeat and scheduling

Recurring work is configured in a picker and shown back to you in plain language, so a rule you wrote months ago is still readable.

Repeat rules

A task can repeat on a rule, and that rule is set through a dedicated picker rather than by typing a string into a due-date field. The task then carries the rule with it: the same item comes back when it is due, in the same place in the tree, instead of a copy you have to re-file.

Repeats are a first-class part of the task model, not a calendar app bolted onto the side — the rules are stored alongside the tasks in the local database.

Dates and times

Due dates go through the same date and time picker used everywhere else in the app, with a calendar to jump by month. Scheduling is deliberately a small set of explicit choices: a date, optionally a time, and optionally a repeat — which is enough to answer "when does this come back" without inventing a grammar.

Rules cover daily, weekly (including specific weekdays), and monthly (including a day of the month) rhythms. Each new occurrence is generated from the rule when it comes due, in the same place in the tree.

Start times and sequences

A repeat can have a start time as well as a due time: the occurrence stays hidden until it becomes doable, then appears. Repeats can also be chained, so one occurrence of a rule waits on the same-day occurrence of another — "shower after gym", every day, in the right order. A repeat can even schedule a workflow run instead of a plain task, which is how recurring checklists stay automatic.

Why a picker

Free-text recurrence is where task managers quietly go wrong: the rule is unreadable after a month, invisible when it misfires, and different every time someone types it. A picker trades a little speed at entry for a rule the app can display, edit, and reason about later.

Made to be reviewed
Rules that are visible are rules you will fix. If a task repeats more often than you meant, the picker is where you correct it — see Task details for the fields a task carries.

Edit this page on GitHub