CalDAV: Are future instances of recurring events no longer regenerated after a certain time?

Hello @bertrandda,

I’m having an issue with a CalDAV calendar containing annually recurring birthdays.

Today, I have a birthday that is present in my CalDAV calendar Birthdays, but the event of the day does not appear in Gladys.

The CalDAV connection seems to be working correctly:

  • Gladys correctly discovers the Birthdays calendar during synchronizations;
  • other calendars, including Family, work;
  • I tried disabling/re-enabling the calendar and restarting a synchronization, without success.

Looking at the CalDAV code of Gladys, I noticed that recurring events are developed within a limited time window, including:


const rangeStart = this.dayjs().subtract(1, 'years');

const rangeEnd = this.dayjs().add(2, 'years');

I wonder if the following scenario could occur:

  1. An annual event with an RRULE is synchronized.
  2. Gladys creates its occurrences up to +2 years.
  3. The years pass without modification of the source event.
  4. The ctag of the calendar does not change.
  5. Gladys does not reprocess the recurring event.
  6. The pre-calculated occurrences eventually reach the end of the initially generated window.

Is this scenario possible with the current CalDAV synchronization functionality?

This could explain why a birthday always present on the CalDAV side no longer appears in Gladys several years after its initial import.

If it’s useful to confirm, I can perform tests on my installation, for example, force a complete resynchronization of the calendar and check if the occurrence reappears.

Thanks!