Building repeats without typing
Repeating events teaches the rule language. This page covers the picker, which is what most people will use and which can express nearly everything the language can.
The repeat sheet
On the event form, the When section has three modes:
| Mode | For |
|---|---|
| No Repeat | a single date |
| Repeating Rules | the picker (the default) |
| Manual Input | plain English, or the rule written out |
Choosing Repeating Rules opens a sheet with two lists, patterns (dates to include) and exceptions (dates to remove), plus a RULE bar showing what they've compiled to.
Watch that bar. It's the fastest way to learn the language: build something with the pickers, read what it produced.
The ten composers
Adding a pattern or an exception offers ten kinds. Each has its own small editor.
| Composer | Reads as | Example |
|---|---|---|
| Every… | a simple interval | Every 2 weeks |
| Days of week | named weekdays | Mon, Wed & Fri |
| Day of month | a date each month | 16th · last day |
| Nth weekday | positional | 2nd Tue of the month |
| Date each year | an anniversary | Every 25 Dec |
| Exact date | one specific day | a single date |
| Category | a named set of dates | Bank holidays |
| Around a date | shifted to a working day | Workday before Christmas |
| Moon | lunar | Full moon |
| Week of year | ISO weeks | Mon of ISO week 5 |
The same ten are available as exceptions: "every weekday" is a pattern, "bank holidays" is the
same Category composer used as an exception, and together they give you WD, !BankHolidays
without typing anything.
Which to reach for
- Something every N days/weeks/months → Every…
- Specific weekdays → Days of week
- "The 1st" or "the last day" → Day of month
- "Second Tuesday" → Nth weekday
- A birthday or anniversary → Date each year
- Excluding holidays → Category as an exception
- A date that must land on a working day → Around a date
Order matters
Patterns are applied first, then exceptions. The sheet keeps them in separate lists so you can't get
this wrong, which you can if you hand-write a rule and put the ! first.
Limiting to certain months
The sheet has a months control that compiles to LIMIT(...). Tick January and March and the whole
schedule only applies in those months.
Previewing before you commit
Open the calendar preview to see the actual dates the rule produces, month by month. Swipe between months to check the edges: the fifth Monday, February, the end of the year. Most rule mistakes are visible immediately here and invisible in the rule text.
Add / Remove Events: bending the rule for individual days
Some dates don't follow a pattern. Your Tuesday class is cancelled one week; you're covering a shift on a Sunday you don't normally work.
Add / Remove Events opens a calendar you tap directly:
- Tap a day the event doesn't fall on → it's added
- Tap a day it does → it's removed
Nothing is written until you press Confirm. Up to that point you're just marking days, and you can navigate between months freely; your marks are remembered.
On Confirm, each change is folded into the event's rule as a literal inclusion or exclusion. So
WD becomes WD, !2025-12-25 or WD, 2025-12-28.
Why these changes are reversible
Because the changes live in the rule, they're visible and reversible. A date you removed can be tapped again to bring it back. There's no hidden pile of "modified instances" that you can never audit.
It's also how you undo a Delete this occurrence: that does exactly the same thing, adding an exclusion, so the date reappears in this screen ready to be tapped back on.
One caveat: there's no validation step when you Confirm. A rule folded here is written straight back. In normal use this screen can only produce valid rules, but nothing checks the result.
When to stop using the picker
Reach for Manual Input when you want something the composers don't cover:
- Combining two conditions at once:
13Month__&__Frifor Friday the 13th - Picking out of your own events:
-1__Tag(Work)__OF__MONTHfor the last actual working day - Scoping an exception to part of a schedule with braces:
{WD, !Fri}, Sun
You can also type plain English and let the app translate it. And you can always go back: the picker and the rule bar stay in step.
Next
- Repeating events: the rule language itself
- Editing and deleting: one occurrence vs the whole series
- Rule reference: the full syntax, every form