fix(desktop): AudioCaptureService.getDevices Mac 분기 — system_profiler CoreAudio 열거 (U7, 빅뱅 Phase 5 Part 6)

getDevices()가 powershell -NoProfile을 플랫폼 불문 호출해 Mac에서
"Failed to enumerate audio devices via PowerShell" 경고 + 1 device fallback이
발생하던 문제. process.platform 분기로 _getDevicesWindows / _getDevicesMac
helper로 분리하고, Mac은 system_profiler SPAudioDataType -json 을 파싱해
coreaudio_device_input > 0 인 항목만 input 디바이스로 추출.

macOS SoX 빌드는 실제 캡처 경로에서 -d(default) 고정이므로 deviceId는
'default'로 통일하고 label만 사용자 구분용으로 노출한다. Linux는 default
1개만 반환(pulseaudio/alsa 열거는 sox -d 로 충분).

Electron 재기동 후 로그: "Found 2 audio device(s) on darwin" 확인.
V2-5 플랫폼 감사 누락 항목 해소.
This commit is contained in:
윤찬 2026-04-11 23:18:18 +09:00
parent 412a2e71f9
commit dd591d06e7
2 changed files with 118 additions and 28 deletions

View file

@ -3,6 +3,20 @@
> 마지막 갱신: 2026-04-11 (빅뱅 Phase 5 Part 6 — Voice Conversation 몰입 패널 구현)
> 규칙 13: 작업 완료 즉시 이 파일 갱신 의무
## 빅뱅 Phase 5 Part 6+ (2026-04-11) — U7 AudioCaptureService Mac 분기 ✅
`AudioCaptureService.getDevices()``powershell -NoProfile`만 호출하던 것을
`process.platform` 분기로 교체. Mac에서 `system_profiler SPAudioDataType -json`으로
CoreAudio input 디바이스 열거(`coreaudio_device_input > 0` 필터). macOS SoX는
실제 캡처 경로에서 `-d`(default) 고정이므로 `deviceId='default'`, `label`만 사용자
구분용으로 노출. 기존 "Failed to enumerate audio devices via PowerShell" 경고
+ 1 device fallback 해소.
**변경 파일 (1)**: `apps/desktop/src/main/services/AudioCaptureService.ts`
`_getDevicesWindows` / `_getDevicesMac` helper 추출 + 분기 디스패처.
**검증**: Electron 재기동 후 로그 `Found 2 audio device(s) on darwin` 확인 (경고 없음).
## 빅뱅 Phase 5 Part 6 (2026-04-11) — Voice Conversation UX 몰입 패널 ✅
Part 5-C 설계를 구현으로 완결. 사용자가 listening 상태에서 풀 몰입 계측기 모드 + 사운드 피드백 + 상태별 UI 분기를 실제로 경험할 수 있는 상태.