Skip to content

Google Calendar Phase 2: redesign M7 as QR-link auth transfer - #290

Merged
h4yfans merged 2 commits into
mainfrom
feat/calendar-phase2-m7-redesign
Apr 19, 2026
Merged

Google Calendar Phase 2: redesign M7 as QR-link auth transfer#290
h4yfans merged 2 commits into
mainfrom
feat/calendar-phase2-m7-redesign

Conversation

@h4yfans

@h4yfans h4yfans commented Apr 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • redesign M7 so Google refresh tokens transfer only during trusted QR device linking, not through durable record sync
  • add provider-auth payload support to the linking contracts, sync-server linking session, and desktop linking flow
  • keep Google auth device-local outside linking, add reconnect-required status semantics, and sweep the related multi-account routing fixes
  • update the Phase 2 spec to make the redesigned M7 source of truth explicit

Security Review Conclusion

The original M7 design was blocked: durable synced refresh-token blobs in calendar_sources and the normal encrypted sync pipeline were rejected.

Approved redesign: transfer Google refresh tokens only during trusted QR device linking through the existing short-lived encrypted linking session. Tokens remain device-local during normal operation, access tokens never leave the device, and stale devices recover via Reconnect Google instead of durable cross-device token sync.

Verification

  • pnpm --dir apps/desktop exec vitest run --config config/vitest.config.ts src/main/calendar src/main/sync src/main/crypto src/renderer/src/components/calendar src/renderer/src/components/settings
  • pnpm typecheck
  • pnpm ipc:check
  • pnpm lint (repo-wide warning-only baseline remains; touched Google files were checked clean)

Notes

  • real Google / webhook E2E was not run locally in this branch
  • spec updated: docs/superpowers/specs/2026-04-18-google-calendar-phase-2-design.md

@h4yfans
h4yfans merged commit b4a26de into main Apr 19, 2026
7 checks passed
@h4yfans
h4yfans deleted the feat/calendar-phase2-m7-redesign branch April 19, 2026 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant