--- title: Building repeats description: How to build almost any repeating schedule with the pickers, without typing a rule. order: 3 --- # Building repeats without typing [Repeating events](/docs/everyday-use/repeating-events.html) 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__&__Fri` for Friday the 13th - Picking out of your own events: `-1__Tag(Work)__OF__MONTH` for 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](/docs/everyday-use/repeating-events.html): the rule language itself - [Editing and deleting](/docs/everyday-use/editing-and-deleting.html): one occurrence vs the whole series - [Rule reference](/docs/rules-reference.html): the full syntax, every form