Editing a recurring event prompts choice of 'this only', 'this and future', or 'all'
Why it matters
Without a scope prompt, editing a single weekly-recurring slot rewrites every past and future occurrence, corrupting historical schedules and silently changing appointments customers have already booked. Hosts lose the ability to handle one-off changes (vacation, a shifted single week) without breaking the entire series. This erodes trust in the scheduling tool, forces manual database fixes, and can cause calendar-invite mismatches where the host's system shows one time and the attendee's another.
Severity rationale
Info because this is a capability gap rather than an active defect, but absence blocks common scheduling workflows and causes data churn when workarounds are used.
Remediation
Before applying any edit to a recurring event, open a dialog offering three choices: 'this only' (insert a row into availability_exceptions with the occurrence date), 'this and future' (set a new dtstart on a cloned rule), and 'all' (mutate the original rrule). Branch your persistence logic on the returned scope. See src/components/RecurringEditScopeDialog.tsx:
const scope = await showScopeDialog() // 'this' | 'thisFuture' | 'all'
if (scope === 'this') await db.availabilityExceptions.create({ recurringId, exceptionDate })
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Calendar & Availability Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from booking-calendar-availability·automated