feat: add Google Calendar source discovery and selection #446

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

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

Problem

Google Calendar pull needs explicit source selection. Users should see the calendars Google exposes, avoid surprise imports from hidden calendars, and get sensible default category/color mapping without a large settings surface.

Decisions

  • Calendar selection is configurable.
  • By default, preselect all visible Google calendars.
  • Hidden calendars are shown in the same list, unchecked, with a compact [hidden] attribute marker.
  • Include calendars with event-detail access, including read-only calendars.
  • Exclude freeBusyReader calendars from event sync because they do not expose event details.
  • Map each selected Google calendar to a Delta category by default using the Google calendar name.
  • Seed category color from the Google calendar color only if that category has no existing local color.
  • Keep the settings UI dense and consistent with the existing Settings -> Calendar -> Google style.

Acceptance criteria

  • Delta can list Google calendars through the shared Google OAuth connection.
  • Source rows are created/updated for Google calendars with title, source id, hidden/selected/access attributes, calendar time zone, color metadata, enabled state, and category mapping.
  • Visible calendars are preselected by default.
  • Hidden calendars are visible but unchecked and marked [hidden].
  • freeBusyReader calendars are excluded or clearly unavailable for event-detail sync.
  • The settings UI allows enabling/disabling individual calendars without adding a broad knobs panel.
  • Category colors are seeded only when a local category color does not already exist.
  • Tests cover visible/default selection, hidden unchecked display, freeBusy exclusion, read-only calendar inclusion, category mapping, and color preservation.

Non-goals

  • Do not pull events in this issue.
  • Do not implement native free/busy rendering here.
  • Do not add scheduled sync here.
Parent: #123 Depends on: #444, #445 Related: #290 ## Problem Google Calendar pull needs explicit source selection. Users should see the calendars Google exposes, avoid surprise imports from hidden calendars, and get sensible default category/color mapping without a large settings surface. ## Decisions - Calendar selection is configurable. - By default, preselect all visible Google calendars. - Hidden calendars are shown in the same list, unchecked, with a compact `[hidden]` attribute marker. - Include calendars with event-detail access, including read-only calendars. - Exclude `freeBusyReader` calendars from event sync because they do not expose event details. - Map each selected Google calendar to a Delta category by default using the Google calendar name. - Seed category color from the Google calendar color only if that category has no existing local color. - Keep the settings UI dense and consistent with the existing Settings -> Calendar -> Google style. ## Acceptance criteria - Delta can list Google calendars through the shared Google OAuth connection. - Source rows are created/updated for Google calendars with title, source id, hidden/selected/access attributes, calendar time zone, color metadata, enabled state, and category mapping. - Visible calendars are preselected by default. - Hidden calendars are visible but unchecked and marked `[hidden]`. - `freeBusyReader` calendars are excluded or clearly unavailable for event-detail sync. - The settings UI allows enabling/disabling individual calendars without adding a broad knobs panel. - Category colors are seeded only when a local category color does not already exist. - Tests cover visible/default selection, hidden unchecked display, freeBusy exclusion, read-only calendar inclusion, category mapping, and color preservation. ## Non-goals - Do not pull events in this issue. - Do not implement native free/busy rendering here. - Do not add scheduled sync here.
barrettruth added this to the v0.1.0 milestone 2026-05-13 18:42:18 +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#446
No description provided.