feat: Google provider OAuth for Calendar and Tasks sync #290

Closed
opened 2026-05-11 18:30:38 +00:00 by barrettruth · 2 comments
Owner

Problem

Google Calendar sync and Google Tasks pull both need a working Google provider connection, but that must not become app login again.

The owner should connect one Google account from a self-hosted single-user Delta instance. The OAuth redirect URI must match the deployed app origin and be documented clearly enough that the operator can configure Google Cloud without guessing.

Solution

  • Add or repair the Google provider OAuth connect/callback flow for integrations.
  • Keep this separate from app authentication and sessions.
  • Store access/refresh tokens through the encrypted integration settings path.
  • Document required Google Cloud project setup, redirect URI, client ID/secret env names, and scopes.
  • Include the scopes needed by Calendar sync (#123) and Tasks pull (#291).
  • Surface redirect/provider errors in settings instead of failing silently.

Acceptance criteria

  • A self-hosted instance can connect and disconnect one Google account from settings.
  • The documented redirect URI matches the actual route used by the app.
  • Tokens are not exposed in logs, issues, docs, PR descriptions, or client-rendered output.
  • #123 and #291 build on this provider connection without creating their own auth flows.
## Problem Google Calendar sync and Google Tasks pull both need a working Google provider connection, but that must not become app login again. The owner should connect one Google account from a self-hosted single-user Delta instance. The OAuth redirect URI must match the deployed app origin and be documented clearly enough that the operator can configure Google Cloud without guessing. ## Solution - Add or repair the Google provider OAuth connect/callback flow for integrations. - Keep this separate from app authentication and sessions. - Store access/refresh tokens through the encrypted integration settings path. - Document required Google Cloud project setup, redirect URI, client ID/secret env names, and scopes. - Include the scopes needed by Calendar sync (#123) and Tasks pull (#291). - Surface redirect/provider errors in settings instead of failing silently. ## Acceptance criteria - A self-hosted instance can connect and disconnect one Google account from settings. - The documented redirect URI matches the actual route used by the app. - Tokens are not exposed in logs, issues, docs, PR descriptions, or client-rendered output. - #123 and #291 build on this provider connection without creating their own auth flows.
barrettruth added this to the v0.1.0 milestone 2026-05-11 18:30:38 +00:00
Author
Owner

Foundation dependency note: #355 should land or be deliberately trimmed before this starts, especially #356 and #357 so Google provider OAuth builds on one provider registry and server-owned provider mutation path.

Foundation dependency note: #355 should land or be deliberately trimmed before this starts, especially #356 and #357 so Google provider OAuth builds on one provider registry and server-owned provider mutation path.
Author
Owner

Completed by the current Google provider sync path and merged read-only stack: Settings can connect/disconnect one Google account through /api/integrations/google, tokens use encrypted integration config storage, docs cover redirect URI/env/scopes, and Google Tasks/Calendar now build on this provider connection without separate auth flows.

Completed by the current Google provider sync path and merged read-only stack: Settings can connect/disconnect one Google account through /api/integrations/google, tokens use encrypted integration config storage, docs cover redirect URI/env/scopes, and Google Tasks/Calendar now build on this provider connection without separate auth flows.
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#290
No description provided.