feat(desktop): Voice Conversation 몰입 UX 패널 + 사운드 피드백 + Bug 13 빈 STT (빅뱅 Phase 5 Part 6)

listening 상태에서 풀 몰입 계측기 모드로 전환되는 VoiceRecordingPanel 추가.
recording-tip 팝업의 9바 cos-분포 waveform(BAR_COUNT=9, SMOOTHING=0.5,
RANDOM_FACTOR=0.35, 100ms)을 React로 포팅해 REC LED + elapsed 타이머 +
"SPEAK NOW" 힌트까지 구성. thinking/speaking 상태에서는 메시지 리스트로
복귀해 대화 맥락 유지 + 점 3개 typing indicator 버블 추가.

VoiceConversationService에 AudioCaptureService audio-level forwarding과
사운드 훅 4개(recording-start / recording-stop / chime / error)를 삽입.
chime은 recording-stop.wav 재사용(SoundEffectService SoundName 확장).
VOICE_CONVERSATION.AUDIO_LEVEL 채널 신설 + preload onAudioLevel API.

U8 Bug 13 동반 해소: finishListening에서 minBytes 미달 또는 VAD 무음 판정으로
빈 텍스트가 나오는 경우 조용히 listening으로 복귀하던 것을 _emitError('stt')로
사용자 피드백(에러 사운드 + 에러 이벤트)을 노출하도록 수정. 사용자가 "⏹ 눌러도
반응 없음"으로 오해하던 증상 해소.
This commit is contained in:
윤찬 2026-04-11 23:16:34 +09:00
parent e420e35ade
commit 412a2e71f9
9 changed files with 385 additions and 94 deletions

View file

@ -1,8 +1,32 @@
# D3RO-VOICE 프로젝트 현황
> 마지막 갱신: 2026-04-11 (Mac 부트스트랩)
> 마지막 갱신: 2026-04-11 (빅뱅 Phase 5 Part 6 — Voice Conversation 몰입 패널 구현)
> 규칙 13: 작업 완료 즉시 이 파일 갱신 의무
## 빅뱅 Phase 5 Part 6 (2026-04-11) — Voice Conversation UX 몰입 패널 ✅
Part 5-C 설계를 구현으로 완결. 사용자가 listening 상태에서 풀 몰입 계측기 모드 + 사운드 피드백 + 상태별 UI 분기를 실제로 경험할 수 있는 상태.
**변경 파일 (6)**
- `packages/core/src/ipc-channels.ts``VOICE_CONVERSATION.AUDIO_LEVEL` 채널 추가
- `apps/desktop/src/main/services/SoundEffectService.ts``SoundName``'chime'` 추가 (recording-stop.wav 재사용)
- `apps/desktop/src/main/services/VoiceConversationService.ts``_onAudioLevel` forwarding + 사운드 훅 4개(start/stop/chime/error) + Bug 13(빈 STT 피드백)
- `apps/desktop/src/preload/index.ts``voiceConversation.onAudioLevel` 구독 API
- `apps/desktop/src/renderer/components/voice-conversation/VoiceRecordingPanel.tsx`**신규** 9바 phosphor waveform(BAR_COUNT=9, cos 분포, 100ms, SMOOTHING=0.5, RANDOM_FACTOR=0.35) + REC LED + elapsed 타이머 + "SPEAK NOW" 힌트
- `apps/desktop/src/renderer/pages/VoiceConversationPage.tsx` — state 분기(listening=VoiceRecordingPanel / 그 외=메시지 리스트) + thinking 시 typing indicator 버블 + TextField listening 시 숨김·thinking/speaking 시 disabled
- `packages/i18n/src/locales/{ko,en}.json``conversation.recording.hint`, `conversation.thinking.placeholder`, `conversation.state.recording` 3개 키
**해소 이슈**
- U6 Voice Conversation UX 몰입 패널 구현
- U8 Bug 13 빈 STT 피드백 부재 (minBytes 미달 + VAD 무음 판정 양쪽 모두 `_emitError('stt', ...)` 훅 추가)
**검증**
- desktop `tsc --noEmit` EXIT 0
- Vite renderer HMR 자동 반영, Electron kill + nohup 재기동(PID 9635/9641)
- 사용자 녹음 테스트: 한국어 5.1초 오디오 전사 성공(`"에이에이에이에이 또 검중이래요"`) → 파이프라인 살아있음 확인
## Mac 환경 부트스트랩 (2026-04-11)
Windows → Mac 핸드오프 완료 (`memory/handoff-latest.md` 참조).