From 4fdf8bfdf87f4e4f74267fc6f8bcf3922d7eaab1 Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Wed, 22 Jul 2026 04:06:43 +0900 Subject: [PATCH] =?UTF-8?q?fix(config):=20v0.2.1-alpha=20=E2=80=94=20CONFI?= =?UTF-8?q?G=5FDEFAULTS=207=ED=82=A4=20=EA=B8=B0=EB=B3=B8=EA=B0=92=20?= =?UTF-8?q?=EB=88=84=EB=9D=BD=20=ED=95=AB=ED=94=BD=EC=8A=A4=20(=EC=95=B1?= =?UTF-8?q?=20=EC=8B=A4=ED=96=89=20=EB=B6=88=EA=B0=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor-wave WS2가 AppConfig 인터페이스에 7키 추가 + as never 16건 제거했으나 CONFIG_DEFAULTS(ConfigService.ts) 기본값 누락 → 기존 사용자 config(0.1.x) 마이그레이션 시 configGet undefined → main 프로세스 .map() 크래시 (v0.2.0-alpha 앱 실행 불가). 수정: CONFIG_DEFAULTS에 7키 기본값 추가. 검증: dev 실행 — main 빌드 + electron start 정상 (수정 전엔 이 단계 크래시). 교훈: 배포 전 dev 실행 + 산물 e2e 필수. typecheck GREEN ≠ 런타임 안전. --- CHANGELOG.md | 6 ++++++ apps/desktop/src/main/services/ConfigService.ts | 11 +++++++++++ memory/project_status.md | 10 ++++++++++ 3 files changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 947f95c..adc95d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Cloud-optional backup (encrypted, opt-in) - Plugin system for custom pipelines +## [0.2.1-alpha] - 2026-07-22 + +### Fixed +- **v0.2.0-alpha 치명적 버그 (앱 실행 불가)**: refactor-wave WS2(AppConfig SSOT)에서 7개 키(`customInstructions`, `llmChains`, `voiceCommandRules`, `voiceCommandsEnabled`, `activeInstructionId`, `activeChainId`, `captionAudioSource`)를 AppConfig 인터페이스에 추가하고 `as never` 16건을 제거했으나 **`CONFIG_DEFAULTS`(ConfigService.ts) 기본값을 누락** → 기존 사용자 config(0.1.x) 마이그레이션 시 `configGet()`이 `undefined` 반환 → main 프로세스 `.map()` 크래시. `CONFIG_DEFAULTS`에 기본값(`[]`, `[]`, `[]`, `false`, `''`, `null`, `'mic'`) 추가. +- **교훈**: typecheck/lint/unit test가 GREEN이어도 런타임을 보장하지 않음. **배포 전 `npm run dev` 실행 + 산물 설치 e2e 필수** — 이번에 e2e를 건너뛰어 사용자가 발견. + ## [0.2.0-alpha] - 2026-07-22 > **다운로드**: Windows `D3RO-Voice-Setup-0.2.0-alpha-x64.exe` · macOS `D3RO-Voice-0.2.0-alpha-arm64.dmg` diff --git a/apps/desktop/src/main/services/ConfigService.ts b/apps/desktop/src/main/services/ConfigService.ts index 2195875..87ccf8d 100644 --- a/apps/desktop/src/main/services/ConfigService.ts +++ b/apps/desktop/src/main/services/ConfigService.ts @@ -80,6 +80,17 @@ const CONFIG_DEFAULTS: AppConfig = { supabaseAnonKey: '', cloudSyncLastAt: null, onboardingCompleted: false, + // Phase 6/10+: AppConfig 키 기본값 (WS2 SSOT 강화 대응). + // as never 제거 후 configGet이 이 키들을 반환 — 기존 사용자 config(0.1.x)에 + // 없고 CONFIG_DEFAULTS에도 없으면 undefined → .map() 등에서 main 크래시. + // v0.2.0-alpha 핫픽스. + customInstructions: [], + llmChains: [], + voiceCommandRules: [], + voiceCommandsEnabled: false, + activeInstructionId: '', + activeChainId: null, + captionAudioSource: 'mic', } let store: ElectronStore | null = null diff --git a/memory/project_status.md b/memory/project_status.md index ef983b2..a973270 100644 --- a/memory/project_status.md +++ b/memory/project_status.md @@ -1,5 +1,15 @@ # D3RO-VOICE 프로젝트 현황 +## v0.2.1-alpha 핫픽스 (2026-07-22) 🐛 + +v0.2.0-alpha 치명적 버그(앱 실행 불가) 핫픽스. 사용자 보고 "설치 실행 안 됨". + +- **원인**: refactor-wave WS2(AppConfig SSOT)가 AppConfig 인터페이스에 7키 추가 + `as never` 16건 제거했으나 **`CONFIG_DEFAULTS`(ConfigService.ts) 기본값 누락**. 기존 사용자 config(0.1.x) 마이그레이션 시 `configGet()`이 undefined → ChainService/VoiceCommandService `.map()` 크래시 → main 시작 실패. typecheck는 통과(런타임 값 검사 못 함). +- **수정**: CONFIG_DEFAULTS에 7키 기본값 추가(`[]`,`[]`,`[]`,`false`,`''`,`null`,`'mic'`). +- **검증**: dev 실행 — main 빌드 성공 + electron start(① 수정 전엔 이 단계에서 configGet undefined 크래시). ② getI18n(main 번들 포함)은 순수 함수라 문제 아님. +- **근본 교훈**: **배포 전 dev 실행 + 산물 설치 e2e 필수**. typecheck GREEN ≠ 런타임 안전. refactor-wave SKILL R7에 "배포 전 런타임 게이트(dev 실행 + 산물 e2e)" 추가 필요 (현재 R7은 typecheck/lint/test만). +- **배포**: tag v0.2.1-alpha → CI 재빌드 → Windows 자동업데이트로 전달. + ## v0.2.0-alpha 릴리스 (2026-07-22) 🚀 Midnight Glass v2 + refactor-wave Wave 1/2 + TiltCard 정리를 묶은 첫 마이너 릴리스.