Phase D — two-way external calendar sync — is not yet started. Only the one-way foundation exists:
- one-way busy import in
server/lib/calendar/sync-busy.ts
- fire-and-forget push in
server/lib/calendar/google-calendar.ts (carries a TODO to persist gcalEventId so remote entries can be updated/deleted)
Scope
- external-id link table (OI ↔ Google event id map)
- event update/delete on change (replace the fire-and-forget push)
- import/sync engine
- assigned-schedule ICS feed catalog (beyond the existing "my busy" feed)
- Apple CalDAV (enum placeholder
auth_type ['oauth','caldav'] exists; no impl)
- auto-sync cron in
server/scheduled.ts with last_synced_at / last_sync_error
Phase D — two-way external calendar sync — is not yet started. Only the one-way foundation exists:
server/lib/calendar/sync-busy.tsserver/lib/calendar/google-calendar.ts(carries a TODO to persistgcalEventIdso remote entries can be updated/deleted)Scope
auth_type ['oauth','caldav']exists; no impl)server/scheduled.tswithlast_synced_at/last_sync_error