Skip to content

Calendar named team/department calendars (1.9.0) — Production Readiness Audit ​

FieldValue
Date2026-10-08
Re-verified2026-10-08 — Pest NamedCalendarTest (7) + catalog bump 1.9.0; headed Playwright named-calendar in one-session overlay-sync + workflow (7/7)
StatusGo for production
ScopeEloSync-first named calendars with optional department auto-share; calendar.manage_calendars; catalog calendar 1.8.0 → 1.9.0
CompanionCalendar deployment · Developer guide · CHANGELOG

Executive summary ​

1.9.0 adds a calendars table and nullable calendar_events.calendar_id (null = personal, unchanged). Visibility for named calendars: creator + department members/manager when Departments is entitled + calendar.view_all / manage. CRUD is gated by new calendar.manage_calendars (admin/manager defaults). Provider sync remains per-organizer OAuth — no separate team Google calendar resource. Overlay upserts stay calendar_id = null.

GateResult
Platform freezePass (soft hasModule('departments') only)
CRUD authz (manage_calendars)Pass (Pest)
Department member sees team event; outsider does notPass
Soft departments missing / unentitledPass
Personal calendar behavior unchanged when calendar_id nullPass
Catalog migrate-only 1.9.0 + permission grantPass
SPA filter chips + manage dialog + event pickerPass
Playwright named-calendar workflowPass

Upgrade & staging smoke ​

  1. php artisan migrate --force — calendars table, calendar_id FK, permission grant, catalog → 1.9.0 (do not db:seed).
  2. Confirm admin/manager have calendar.manage_calendars.
  3. Deploy SPA — Manage calendars, filter chips, event form Calendar picker.
  4. Smoke: create named calendar (optionally link department) → post event → filter → department member sees it; non-member staff does not (unless view_all).

Rollback ​

Catalog/permission data migrations are forward-only in spirit; roll code + leave calendars / calendar_id rows inert if you must revert. Prefer forward fix.

Official documentation for the EloSync SaaS Platform.