Skip to content

Calendar named-calendar provider sync/watches (1.10.0) — Production Readiness Audit ​

FieldValue
Date2026-10-13
StatusGo for production (pending headed Playwright calendar integrations + named-calendar smoke after SPA deploy)
ScopeSecondary Google/Outlook calendars + watches for EloSync named calendars; per-provider calendar_event_provider_mappings; Google OAuth scope → full calendar; catalog calendar 1.9.0 → 1.10.0
CompanionCalendar deployment · Developer guide · CHANGELOG

Executive summary ​

1.10.0 closes the deferred named-calendar provider sync/watches gap after 1.9.0 named calendars and 1.8.0 webhook inbound.

CapabilityBehavior
calendar_provider_linksOne row per named calendar + provider; stores external_calendar_id + meta.watch
Create / Sync now / OAuth connectensureNamedCalendarLinks creates secondary provider calendars for calendars owned by the connected user and ensures watches
Outbound pushNamed-calendar events push to the link’s secondary calendar via the link owner’s OAuth connection; personal events stay on primary
Per-provider mappingscalendar_event_provider_mappings keeps one external event id per provider (fixes dual-connect clobber on calendar_events.external_*)
InboundPull for each link; ingest with calendar_id set; webhook resolves connection or link watch ids
Google scopeConfig uses https://www.googleapis.com/auth/calendar (required to create secondary calendars). Existing Google connections must reconnect
GateResult
Platform freezePass (Calendar depth only)
Soft-fail push / watch / link createPass (mirrors 1.4.0–1.8.0)
Pest NamedCalendarProviderSyncTestPass (5)
Catalog migrate-only 1.10.0Pass
SPA Manage calendars provider badges + Sync panel copyPass (code)
Playwright calendar integrations named-calendar copyPending headed run

Upgrade & staging smoke ​

  1. php artisan migrate --force — calendar_provider_links, calendar_event_provider_mappings, catalog → 1.10.0 (do not db:seed).
  2. Deploy Backend + SPA.
  3. Admins who connected Google before 1.10.0: Disconnect → Connect (full calendar scope).
  4. Smoke: connect Google/Outlook → create named calendar → confirm Manage calendars shows Google/Outlook synced badge → post event on that calendar → Sync now → External events on linked calendars stay scoped.

Rollback ​

Prefer forward fix. Schema tables are additive; rolling code back leaves unused link/mapping rows inert.

Official documentation for the EloSync SaaS Platform.