Canceling and editing recurring events is currently a bit weird.
Other software generally gives you a modal choice: edit/cancel this instance vs edit/cancel all future instances. We should probably do the same, although this is a bit complex.
When you edit or cancel an instance and choose "all future instances", we need to:
- update the original event to stop prior to the new event;
- make the edited event a new recurring parent;
- copy adjusted recurrence rules from the old parent;
- realign any concrete instances to the new parent;
- apply the change unconditionally? Or conditionally?
- probably retain the original parent so the entire series can still be shown.
This isn't insurmountable but is a bit of a mess.
Also, when you edit "just this instance" but the instance you edit is the current parent, we need to do this whole thing on the next event.
Google Calendar has an additional "All Events" mode which I think acts as an "Edit all Future Events", but applied to the parent retroactively. It has some different conflict resolution behavior, too.
This creates weird issues, but other calendaring software has the same issues:
- If you have events A, B, C, D, ...
- Rename "D" to "Apple", "Edit all future events".
- Rename "B" to "Banana", "Edit all future events".
- In Calendar.app, "D" is still named "Apple", because the first rename severed the relationship.
- In Google Calednar, "D" is now named "Banana".
- If you have events A, B, C, D, ...
- Add a note to "D", "Edit only this event".
- Add a note to "B", "Edit all future events".
- In Calendar.app, your note on "D" is destroyed, because the all-future edit overwrites it.
- In Google Calendar, your note is also destroyed, although it provides you a hint.
- If you have events A, B, C, D, ...
- Change the name of "B" or "D" or whatever.
- Change the name of "A", "Apply to All Events".
- In Google Calendar, your other names are destroyed (even though it says "Any changes made to other events will be kept.").
- If you have events A, B, C, D, ...
- Reschedule C to occur before B, "Apply to All Events".
- In Calendar.app, this fails silently (your edit is discarded)..
- In Google Calendar, there does not appear to be a way to reschedule all later events. Also it somehow deleted my on-by-default video call?
- If you have events A, B, C, D, ...
- Reschedule B, "Only This Event".
- Rename B.
- In Calendar.app, no opportunity to edit series.
- In Google Calendar, no opportunity to edit series.
Basically no consistent model exists for these operations so if we're somewhat plausible that's apparently good enough.