Hi, I have looked into this and according to the RFC 5545 spec, I think the plugin is doing the right thing by what the ics file specifies. Although what is in the ics file is a bit confusing.:-), I guess due to changes over time.
I will explore this further, to see if there is a code change that should be made that would not ‘break’ other possibilities.
However the quick, short fix for you may be to ‘clean up’ those special teachings. Maybe when one wants to create the specific instance, change the recurring one to start the month after, then create the special instance for the immediate next month ? You may want to delete historical instances too. Reason is that your ics file will grow and grow over time – google issues all the old stuff, not just the future, and they all have to be read and parsed to determine if they are relevant to the current date range. Simple reduces error risk.
—————————
Allow me to explain this problem, (you might want to open your ics file in a notepad editor to see the data. And perhaps have a cup of coffe or some Yerba mate to get the brain ready)
Your main recurring rule created CREATED:20120423T150309Z but with modifications….
had an infinitely recurring rule
RRULE:FREQ=MONTHLY;BYDAY=4SU
starting DTSTART;TZID=America/New_York:20120729T110000 (probably had some other start date back in time, judging by all the exceptions)
identified by
UID:[email protected]
that should generate instances as follows:
20120729
20120826
etc
Then come the modifications which are identified/matched by the UIDUID:[email protected]
and matched to the instance that they relate to by RECURRENCE-ID’s DATETIME.
EG The event below says “take the instance for 20120722T110000 and CHANGE it to 20120729T110000”
Now there currently is NO instance for 20120722T110000, so recurrence just gets added.
IF IT WERE to REPLACE the 20120729 instance, this
RECURRENCE-ID;TZID=America/New_York:20120722T110000
should rather be
RECURRENCE-ID;TZID=America/New_York:20120729T110000
Testing in some calendar apps, I see windows calendar does what the human expects, as does google if I reimport the calendar. In that they “rationalise” the two instances that have the same UID and date and time and length. While I could add such a check, I am wondering what would happen if one wanted to shift a previous instance to ‘overlap’ with another – like a catchup held at the same time in different location as the next instance? How should that be specified in a ics file ?
I’ve tried playing to create similar sets like you have, but cannot create that same data situation.
BEGIN:VEVENT
DTSTART;TZID=America/New_York:20120729T110000
DTEND;TZID=America/New_York:20120729T153000
DTSTAMP:20120802T072808Z
UID:[email protected]
RECURRENCE-ID;TZID=America/New_York:20120722T110000
CREATED:20120423T150309Z
..
LAST-MODIFIED:20120614T224715Z
..
SUMMARY:Special Teaching: Clear Light Mind and Buddha Nature
END:VEVENT
Specification References:
https://tools.ietf.org/html/rfc5545#section-3.8.4.4
recurid = “RECURRENCE-ID” ridparam “:” ridval CRLF
ridparam = *(
;
; The following are OPTIONAL,
; but MUST NOT occur more than once.
;
(“;” “VALUE” “=” (“DATE-TIME” / “DATE”)) /
(“;” tzidparam) / (“;” rangeparam) /
;
; The following is OPTIONAL,
; and MAY occur more than once.
;
(“;” other-param)
;
)
ridval = date-time / date
;Value MUST match value type
…..
Description: The full range of calendar components specified by a
recurrence set is referenced by referring to just the “UID”
property value corresponding to the calendar component. The
“RECURRENCE-ID” property allows the reference to an individual
instance within the recurrence set.
…
The DATE-TIME value is set to the time when the original
recurrence instance would occur; meaning that if the intent is to
change a Friday meeting to Thursday, the DATE-TIME is still set to
the original Friday meeting.
https://wiki.mozilla.org/Calendar:Recurrence_and_Exceptions
https://www.imc.org/ietf-calendar/mail-archive/msg06473.html