Reminders
A note can notify users ahead of its scheduled time. You set the notification type, the recipients, and how far in advance on the note itself.
Configuration
Section titled “Configuration”Reminder fields sit in the Reminder fieldset on the note sheet.
| Field | Description |
|---|---|
| Notification Type | none, toast, chat, or dialog |
| Notify | Who receives the reminder |
| Notify Before | How far ahead of the event to fire |
| Increment | Unit applied to Notify Before: hour, day, week, month, or year |
| Users | Specific user selection when the target is specific |
| Save as To-Do | Copies the fired reminder into each notified user’s Don’t Forget list |
Save as To-Do appears only when the Don’t Forget module is active.
Notify Before takes whole numbers from zero up. Zero fires the reminder at event time.
Setting the type to none disables the other reminder fields.
Increment
Section titled “Increment”Increment sets the unit for Notify Before. Hours, days, weeks, and years are measured against the active calendar’s own hours per day, weekday count, and year length. A month is the calendar’s average month length, the year length divided by the number of months. Months of uneven length do not shift the reminder. The reminder message reads in the unit you chose.
Defaults
Section titled “Defaults”A note created by a GM defaults to the gm target. A note created by anyone else defaults to author.
Notification types
Section titled “Notification types”Every reminder carries the note’s icon. A note with no icon falls back to a bell in the note’s color.
No notification is delivered.
A brief popup near the top of the screen. It dismisses itself.
A message posted to the chat log with a link that opens the note. It is whispered to the targeted users unless the target is all.
Dialog
Section titled “Dialog”A window with an Open Note button and a Dismiss button, Dismiss focused by default. It does not block the rest of the interface. Closing the window has the same effect as Dismiss.
Target options
Section titled “Target options”| Target | Recipients |
|---|---|
all | All users |
gm | Only GM users |
author | Only the note creator |
viewers | Users with at least Observer permission on the note |
specific | Manually selected users |
The viewers target respects the note’s visibility. On a hidden or secret note it resolves to GM users only.
Don’t Forget integration
Section titled “Don’t Forget integration”With Save as To-Do checked, firing the reminder adds a to-do for every user the reminder targets. The label is the reminder text with its markup stripped, because Don’t Forget renders plain text.
A user who already has an open mirrored to-do for that note is skipped, but one whose mirrored to-do is already marked done receives a fresh one.
Deleting the note, setting its notification type to none, or unchecking Save as To-Do removes every to-do the note produced, including ones already marked done. Cleanup runs on the primary GM client only.
How reminders work
Section titled “How reminders work”ReminderScheduler watches world time and fires reminders as it advances.
- It runs only on the primary GM client, using
ATLAS.isPrimaryGM. - It considers only notes belonging to the active calendar. A note stored under a different calendar is skipped until you make that calendar active.
- It checks for pending reminders at most once per 60 seconds of game time.
- It compares the current time against each note’s start time minus the offset, and fires when the current time falls in the window between the two.
- It tracks fired reminders by occurrence key (
noteId:year-month-day), so a recurring event fires once per occurrence. - It clears the fired list when the date changes.
- It clears the fired list and re-checks immediately when time moves backwards.
Jumping the clock from the Set Date dialog suppresses the next reminder check while Skip Event Triggers is checked, and that box is checked by default. Nothing fires for the span you skipped over, and checking resumes on the following time update.
The fired list lives in memory on the primary GM’s client. Reloading that client clears it, so a reminder whose window is still open fires a second time on the next time update.
Recurring events
Section titled “Recurring events”For a recurring note, including one with conditions, the scheduler checks whether the event occurs today or on the reminder day N days ahead. N comes from the reminder offset and the event’s time of day, and a large offset can push it more than one day out. The day-ahead case runs the same recurrence check against that day.
For an all-day event occurring today, the reminder fires when the current time is at or before the offset in minutes, or immediately when the offset is zero.
Multi-day events
Section titled “Multi-day events”For a non-recurring multi-day event, the scheduler treats the event time as midnight on in-range days after the first.
- With a nonzero offset, the reminder window cannot be satisfied, so nothing fires on those later days.
- With a zero offset, the reminder fires at midnight of each spanned day.
- For a timed event, the reminder fires before the start time on the first day only.
Silent notes
Section titled “Silent notes”Notes flagged silent are skipped.
Multiplayer synchronization
Section titled “Multiplayer synchronization”Toast and dialog reminders are broadcast from the primary GM over socket, and each targeted client renders its own. Chat reminders are ChatMessage documents and sync on their own.
For developers
Section titled “For developers”See API Reference and Hooks.