Skip to content

Reminders

Calendaria notifies users before scheduled note events occur. You configure reminders per note, and each note supports four notification types.

You configure reminders in the note sheet under the Reminder fieldset.

FieldDescription
TypeNotification method: none, toast, chat, or dialog
TargetsWho receives the reminder
Notify BeforeHow far ahead of the event to trigger
IncrementUnit applied to Notify Before: hour, day, week, month, or year
UsersSpecific user selection when the target is “specific”

The Notify Before input enforces a minimum of 0, with no maximum. A value of 0 triggers the reminder at event time.

The Increment selector sets the unit for the Notify Before value. You can choose hour, day, week, month, or year. The reminder fires that far ahead of the event, with each unit measured against the active calendar’s own definitions for hours per day, days per week, days per month, and days per year. The reminder message reads in the chosen unit, so a Notify Before of 1 with the week increment reads “1 week”.

Selecting none as the type disables the reminder and its other inputs.

User TypeDefault Targets
GM usersGM
Non-GM usersAuthor

Disables reminders for this note. The other reminder fields are disabled when selected.

A brief popup in the top-center of the screen. It auto-dismisses after a few seconds.

A message posted to the chat log with a link to open the note. It can be whispered to specific users based on the target settings.

A modal dialog requiring acknowledgment. It includes “Open Note” and “Dismiss” buttons.

TargetRecipients
allAll users
gmOnly GM users
authorOnly the note creator
viewersUsers with at least Observer permission on the note
specificManually selected users

The ReminderScheduler class monitors world time and triggers reminders.

  1. It runs only on the primary GM client, using CalendariaSocket.isPrimaryGM().
  2. It checks for pending reminders every 60 game seconds as time advances.
  3. It compares the current time against each note’s start time minus the offset.
  4. It fires reminders when the current time falls within the reminder window, after the offset time and before the event time.
  5. It tracks fired reminders using occurrence-based keys (noteId:year-month-day) to support recurring events.
  6. It clears the fired reminders list when the date changes.
  7. It resets all state and re-checks immediately if time moves backwards.

For recurring notes, including those with conditions, the scheduler checks whether the event occurs today, or on the computed reminder day N days ahead. N (daysBefore) is derived from the reminder offset and the event’s time of day. With larger offsets that day can be more than one day ahead, so it is not necessarily tomorrow.

For all-day events occurring today, the scheduler triggers the reminder when the current time is at or before the offset minutes, or immediately when the offset is zero. The scheduler handles the next-day case through the generic recurring-match-on-reminder-day check, not a tomorrow-specific midnight-window rule.

For a non-recurring multi-day event, the scheduler treats the event time as midnight (eventMinutes=0) on in-range days after the first day.

  • With a nonzero offset, the reminder window (currentMinutes < 0) is unsatisfiable, so no reminder fires on those subsequent days.
  • With a zero offset, the reminder fires at the start (midnight) of each spanned day.
  • For timed events, the reminder fires before the start time on the first day only.

Notes with silent: true are skipped by the reminder system.

For toast and dialog notification types, the primary GM broadcasts the reminder to all targeted users via socket. Each client then displays the notification locally. Chat reminders are created as ChatMessage documents and sync automatically.

See API Reference and Hooks.