refactor: saasMode 분기 제거 — 항상 SaaS(OAuth only)로 동작

Mac/Windows 환경 불일치 해소. BUILD_TIME 상수, CONFIGURE 채널,
개발자 모드 UI 전부 제거. Supabase 설정은 supabase-config.ts SSOT.
This commit is contained in:
yunchan8804 2026-04-13 17:20:55 +09:00
parent feb82abbf7
commit 541f04d02b
12 changed files with 566 additions and 9587 deletions

View file

@ -542,21 +542,19 @@ V2 6차 고도화 (2026-04-11):
> 사용자가 Settings에서 Supabase URL/Key를 직접 입력해야 하는 UX였음.
> Notion/Linear/Slack 데스크톱 패턴으로 정정.
### SaaS [1] 빌드 타임 Supabase env 주입
- `electron.vite.config.ts`: `defineConfig(({ mode }) => ...)`로 변경, `loadEnv(mode, cwd, 'D3RO_')`
`.env.local` 자동 로드 → main 번들에 `define`으로 inline 박음
- `apps/desktop/.env.local` 생성 (gitignored): `D3RO_SUPABASE_URL`, `D3RO_SUPABASE_ANON_KEY`
- `apps/desktop/env.example` 템플릿 (committed)
- `ConfigService`:
- `BUILD_TIME_SUPABASE_URL` / `BUILD_TIME_SUPABASE_ANON_KEY` 상수 (process.env에서 읽음)
- `isSupabaseBuildTimeConfigured()` 헬퍼 export
- `configGet('supabaseUrl'/'supabaseAnonKey')`은 빌드 타임 값 절대 우선
- `configSet`는 빌드 타임 모드일 때 supabaseUrl/AnonKey 변경 거부
### SaaS [1] Supabase 연결 — 소스 하드코딩 (2026-04-13 리팩토링)
- **이전**: `.env.local` + `BUILD_TIME_SUPABASE_*` + `saasMode` 분기 → Mac/Windows UI 불일치
- **현재**: `packages/core/src/supabase-config.ts`에 URL/Anon Key 하드코딩 (SSOT)
- Anon key는 클라이언트용 공개 키(RLS 보호)이므로 소스 포함 안전
- `saasMode` 분기 전체 제거, 항상 OAuth(Google/GitHub) only
- `env.example` 삭제, `loadSupabaseEnv()` 삭제, `isSupabaseBuildTimeConfigured()` 삭제
- `CLOUD_SYNC.CONFIGURE` IPC 채널 삭제
- `CloudSyncSection`: 개발자 모드 UI(URL/Key 입력) 완전 제거
### SaaS [2] OAuth 첫 실행 강제 게이트 → **철회 (Phase 1.5에서 로컬 모드 entry point로 변경)**
- `CloudSyncState``saasMode: boolean` 필드 추가 (유지)
- `CloudSyncSection`: saasMode에서 OAuth 버튼만, legacy에서는 URL/Key 입력 UI (유지)
- ~~`LoginScreen.tsx` 강제 게이트~~ → 제거 (App.tsx에서 사용 안 함, 파일 자체는 유지)
### SaaS [2] OAuth 로그인 전략
- 로그인 없으면 로컬 Ollama로 동작 (무료)
- 로그인은 Google/GitHub OAuth only (Supabase Auth)
- ~~`LoginScreen.tsx` 강제 게이트~~ → 제거
- ~~`App.tsx` AuthGate 상태머신~~ → 제거 (항상 메인 UI 렌더)
**철회 이유** (2026-04-11 빅뱅 Phase 1.5):