fix(config): v0.2.1-alpha — CONFIG_DEFAULTS 7키 기본값 누락 핫픽스 (앱 실행 불가)
Some checks failed
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 4s

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 ≠ 런타임 안전.
This commit is contained in:
Yun Chan 2026-07-22 04:06:43 +09:00
parent c8fb3abbaf
commit 4fdf8bfdf8
3 changed files with 27 additions and 0 deletions

View file

@ -13,6 +13,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Cloud-optional backup (encrypted, opt-in) - Cloud-optional backup (encrypted, opt-in)
- Plugin system for custom pipelines - 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 ## [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` > **다운로드**: Windows `D3RO-Voice-Setup-0.2.0-alpha-x64.exe` · macOS `D3RO-Voice-0.2.0-alpha-arm64.dmg`

View file

@ -80,6 +80,17 @@ const CONFIG_DEFAULTS: AppConfig = {
supabaseAnonKey: '', supabaseAnonKey: '',
cloudSyncLastAt: null, cloudSyncLastAt: null,
onboardingCompleted: false, 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<AppConfig> | null = null let store: ElectronStore<AppConfig> | null = null

View file

@ -1,5 +1,15 @@
# D3RO-VOICE 프로젝트 현황 # 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) 🚀 ## v0.2.0-alpha 릴리스 (2026-07-22) 🚀
Midnight Glass v2 + refactor-wave Wave 1/2 + TiltCard 정리를 묶은 첫 마이너 릴리스. Midnight Glass v2 + refactor-wave Wave 1/2 + TiltCard 정리를 묶은 첫 마이너 릴리스.