feat: implement Google Calendar manual pull sync #448

Closed
opened 2026-05-13 18:43:22 +00:00 by barrettruth · 0 comments
Owner

Parent: #123
Depends on: #444, #445, #446, #447
Related: #290

Problem

Delta needs a manual Google Calendar pull path that imports selected Google calendars into read-only task rows without duplicates, using per-calendar source state and operator-visible summaries.

Decisions

  • Google Calendar v1 is manual-only, matching Google Tasks.
  • Scheduled/background sync is required later, but not part of this issue.
  • Pull selected calendars from source rows.
  • Store per-calendar sync tokens/cursors in source state.
  • On Google Calendar 410 Gone, clear the affected calendar token, perform a full resync during the same manual pull, and report that a full resync happened.
  • Use the read-only summary vocabulary: seen, created, updated, cancelled, skipped, duplicate skipped, errors.
  • Hard disconnect removes imported Google Calendar rows, external links, and source state.

Acceptance criteria

  • A manual pull endpoint exists for Google Calendar under explicit Google integration routes.
  • The pull route uses the shared Google OAuth connection and selected calendar source rows.
  • Repeated pulls are idempotent by google_calendar external links.
  • Existing Google Calendar linked rows update from Google through the sync engine despite read-only user guards.
  • Likely .ics duplicates by iCalUID are skipped and counted.
  • Cancelled/deleted Google events are handled deliberately for non-recurring and recurring events.
  • Per-calendar sync tokens are stored and advanced only after successful page completion.
  • 410 Gone recovery is tested and visible in the summary.
  • Manual pull results and errors are visible in Settings/status bar.
  • Disconnect hard-removes imported Calendar rows/links/source state.
  • Docs update the Google integration runbook for Calendar pull, scopes, source selection, manual sync, duplicate skipping, and destructive disconnect behavior.

Non-goals

  • Do not add writes to Google Calendar.
  • Do not add scheduled/background sync here.
  • Do not add full conflict resolution UI; imported rows are read-only.
Parent: #123 Depends on: #444, #445, #446, #447 Related: #290 ## Problem Delta needs a manual Google Calendar pull path that imports selected Google calendars into read-only task rows without duplicates, using per-calendar source state and operator-visible summaries. ## Decisions - Google Calendar v1 is manual-only, matching Google Tasks. - Scheduled/background sync is required later, but not part of this issue. - Pull selected calendars from source rows. - Store per-calendar sync tokens/cursors in source state. - On Google Calendar `410 Gone`, clear the affected calendar token, perform a full resync during the same manual pull, and report that a full resync happened. - Use the read-only summary vocabulary: `seen`, `created`, `updated`, `cancelled`, `skipped`, `duplicate skipped`, `errors`. - Hard disconnect removes imported Google Calendar rows, external links, and source state. ## Acceptance criteria - A manual pull endpoint exists for Google Calendar under explicit Google integration routes. - The pull route uses the shared Google OAuth connection and selected calendar source rows. - Repeated pulls are idempotent by `google_calendar` external links. - Existing Google Calendar linked rows update from Google through the sync engine despite read-only user guards. - Likely `.ics` duplicates by `iCalUID` are skipped and counted. - Cancelled/deleted Google events are handled deliberately for non-recurring and recurring events. - Per-calendar sync tokens are stored and advanced only after successful page completion. - `410 Gone` recovery is tested and visible in the summary. - Manual pull results and errors are visible in Settings/status bar. - Disconnect hard-removes imported Calendar rows/links/source state. - Docs update the Google integration runbook for Calendar pull, scopes, source selection, manual sync, duplicate skipping, and destructive disconnect behavior. ## Non-goals - Do not add writes to Google Calendar. - Do not add scheduled/background sync here. - Do not add full conflict resolution UI; imported rows are read-only.
barrettruth added this to the v0.1.0 milestone 2026-05-13 18:43:22 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
barrettruth/delta#448
No description provided.