Phase 1+2 구현: Electron 뼈대 + STT/핫키/오케스트레이터
Phase 1: - 프로젝트 초기화 (TypeScript strict, electron-vite, ESLint, Prettier) - shared 타입 (ipc-channels 113채널, types, errors, constants) - 메인 프로세스 뼈대 (bootstrap, lifecycle, 단일 인스턴스) - LoggerService, ConfigService (electron-store ESM dynamic import) - React 19 + MUI 7 Dashboard, 시스템 트레이 Phase 2: - AudioCaptureService (node-record-lpcm16, PCM16 16kHz mono) - HotkeyService (uiohook-napi, 더블프레스, holdMode/toggleMode) - LocalSTTService (faster-whisper Python sidecar, 이중 조건 플러시) - VoiceModeService 오케스트레이터 (이중 상태머신, Action Queue) - Python sidecar (FastAPI: health/load/transcribe/shutdown) - IPC 핸들러 (voice, stt, hotkey) + Preload API 확장
This commit is contained in:
parent
e24bb8378c
commit
1d152d01a1
46 changed files with 10828 additions and 4 deletions
26
CLAUDE.md
26
CLAUDE.md
|
|
@ -77,10 +77,28 @@ npm run typecheck # tsc --noEmit
|
|||
6. **녹음 UI**: 9개 웨이브 바, cos 분포 가중치, 100ms 애니메이션
|
||||
|
||||
## 현재 상태
|
||||
Phase: 0 (하네스 설정 완료, 구현 시작 전)
|
||||
마지막 완료: 하네스 시스템 구축
|
||||
다음 작업: Phase 1 — 프로젝트 초기화 + Electron 뼈대
|
||||
차단 이슈: 없음
|
||||
Phase: 2 완료
|
||||
마지막 완료: Phase 2 — 로컬 STT (faster-whisper sidecar) + 핫키 (uiohook-napi) + VoiceModeService 오케스트레이터
|
||||
다음 작업: Phase 3 — 텍스트 삽입 + 기본 UI (RecordingTip, ResultPopup)
|
||||
차단 이슈: SoX 미설치 시 AudioCaptureService 동작 불가 (수동 설치 필요)
|
||||
|
||||
### Phase 2 구현 내용
|
||||
- AudioCaptureService: node-record-lpcm16 + SoX 실제 마이크 캡처 (PCM16 16kHz mono, 60ms 프레임, RMS 레벨)
|
||||
- HotkeyService: uiohook-napi 글로벌 키후킹, 더블프레스(300ms), holdMode/toggleMode, VK→uiohook 매핑
|
||||
- LocalSTTService: faster-whisper Python sidecar 관리, STTState 상태머신, 이중 조건 플러시, 자동 재시작(3회)
|
||||
- VoiceModeService: RecognitionState(9상태) + AudioState(4상태) 이중 상태머신, Action Queue 직렬화, accidentalPress(<700ms), Dictation/HandsFree 모드
|
||||
- Python sidecar: FastAPI (GET /health, POST /load, POST /transcribe, POST /shutdown)
|
||||
- IPC 핸들러: voice, stt, hotkey 추가 (기존 audio, config, window, system에 추가)
|
||||
- Preload: voice/stt/hotkey API 전체 노출
|
||||
- Bootstrap: 7단계 초기화 (logger→config→windows→tray→ipc→hotkey→voice-mode)
|
||||
|
||||
### Phase 1 구현 내용
|
||||
- 프로젝트 초기화: package.json, TypeScript strict, electron-vite, ESLint, Prettier
|
||||
- shared 타입: ipc-channels.ts (113채널), types.ts, errors.ts (ErrorCode enum), constants.ts
|
||||
- 메인 프로세스: index.ts (단일 인스턴스), bootstrap.ts, lifecycle.ts
|
||||
- 서비스: LoggerService, ConfigService (ESM dynamic import)
|
||||
- Renderer: React 19 + MUI 7, AppLayout (Drawer 240px), DashboardPage
|
||||
- 시스템 트레이, closeToTray
|
||||
|
||||
## 페이즈 로드맵
|
||||
- Phase 1: 프로젝트 초기화 + Electron 뼈대 + 마이크 캡처
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue