d3ro-voice/memory
윤찬 ceadf1b6f3 feat(desktop): SaaS [6] 로컬 우선 sync + login_required UI (빅뱅 Phase 3)
Phase 3 재정의: Supabase = source of truth 방향 철회.
로컬 entry point 철학 하에 "로컬이 SoT, 클라우드는 로그인 시 mirror"로 확정.

CloudSyncService._initialSync():
- _onAuthenticated 끝에 fire-and-forget 호출
- pushAll → pullAll 순차 실행
- signin: 익명 로컬 데이터를 사용자 계정으로 업로드
- restore: 다른 기기 변경 반영
- 실패 시 warn만, 수동 Sync 버튼으로 재시도 가능

types.ts:
- FeatureAccess.reason: 'login_required' 추가
- UpgradePromptEvent.reason: 'login_required' 추가

LicenseService:
- consumeQuota(): login_required 케이스 — promptUpgrade + D3ROError(TierRequired)
- promptUpgrade(): login_required 시 requiredTier='free'
  (로그인만 하면 free로 바로 사용 가능)
- quota_exceeded 시 현재 tier 상위로 승격 제안

UpgradePromptModal:
- isLoginRequired 분기 — title/desc 교체
- Primary button: "로그인하기" → d3ro:open-settings event (tab=cloud)

i18n ko/en:
- license.loginRequired.title/desc/signIn 추가
2026-04-11 10:35:17 +09:00
..
handoff-archive chore: 빅뱅 사이클 wrap-up — 핸드오프 + 상세 다음 세션 프롬프트 2026-04-11 09:45:20 +09:00
big-bang-prompt.md chore: 빅뱅 사이클 wrap-up — 핸드오프 + 상세 다음 세션 프롬프트 2026-04-11 09:45:20 +09:00
handoff-latest.md chore: 빅뱅 사이클 wrap-up — 핸드오프 + 상세 다음 세션 프롬프트 2026-04-11 09:45:20 +09:00
project_status.md feat(desktop): SaaS [6] 로컬 우선 sync + login_required UI (빅뱅 Phase 3) 2026-04-11 10:35:17 +09:00