Repository navigation
Conversation
…vent Whether an attendee gets an iMIP mail was decided on the event as a whole: any new recurrence exception grew every attendee's set of instances, and the significant-change hash covered all components. Processing a REPLY for a single occurrence, or adding or removing an attendee on one occurrence, therefore mailed every attendee. Decide significance per attendee instead, over the occurrences they take part in before or after the change. A new exception that matches the occurrence it replaces, such as one storing another attendee's participation status, is not significant. The attendee's calendar copy is still updated. Fixes nextcloud#60452 Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Rikdekker <Rikdekker@users.noreply.github.com>
Rikdekker
requested review from
ChristophWurst,
SebastianKrupinski and
tcitworld
as code owners
October 27, 2026 14:58
Contributor
Author
|
/backport to stable35 |
Contributor
Author
|
/backport to stable34 |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
When something changes for a single occurrence of a recurring event, every attendee gets an iMIP mail, even when nothing changed for them. This happens when an attendee declines one occurrence (processing the REPLY adds an override to the organizer's copy), and when the organizer adds or removes someone on one occurrence.
TipBroker::parseEventForOrganizerdecides significance for the event as a whole, for two reasons:significantChangeHashis computed over all components, so any new override changes it for everyone.This PR decides significance per attendee instead, over the occurrences they take part in before or after the change. A new override that matches the occurrence it replaces, such as one that only stores another attendee's PARTSTAT, is not significant. Attendees' calendar copies are still updated; they just don't get a mail for it.
Testing
TipBrokerTest; 5 of them fail on master. The CalDAV unit suite passes (776 tests), and psalm and php-cs-fixer are clean.This complements #64635: that PR makes sure the added or removed attendee gets a mail at all, and this one stops the mails to everyone else. With both applied, only the affected attendee is notified. It builds on #64317, which handled the series-level case.
Checklist
3. to review, feature component)stable32)AI (if applicable)
The analysis, fix and tests were made with the help of Claude Code (Anthropic). I verified the results myself on a 35.0.2 instance.