d3ro-voice/docs/phases/phase-3.md
Yun Chan e24bb8378c 초기 프로젝트 설정: 하네스 시스템 + 설계서 + RE 노하우
- CLAUDE.md: 프로젝트 규칙, 기술 스택, 코딩 규칙, 페이즈 로드맵
- .claude/settings.json: 권한, 강제 훅 (매 프롬프트 설계서 규칙 주입)
- .claude/skills/: implement-phase, review-phase, scaffold, test-commit, debug
- .claude/agents/: electron-architect, voice-pipeline-expert, ui-specialist
- docs/design/00-09: 마스터 아키텍처, 서비스 명세(16개), IPC(113채널),
  DB스키마, UI컴포넌트, 검증리포트, 외부엔진연동, 갭분석,
  VoiceMode패턴, 디자인시스템, 히스토리팝업
- docs/phases/1-7+3.5: 전체 구현 페이즈 문서
- docs/re-findings/: Speakly RE 노하우 5개 문서
2026-04-05 01:03:03 +09:00

1.6 KiB

Phase 3: 텍스트 삽입 + 기본 UI

목표

전사된 텍스트를 활성 앱에 삽입하고, 녹음 상태/결과를 표시하는 UI 구축.

태스크

3.1 TextInsertService

  • src/main/services/TextInsertService.ts
  • Speakly ClipboardPaste 패턴:
    1. 클립보드 전체 백업
    2. 텍스트를 클립보드에 설정
    3. @nut-tree/nut-js로 Ctrl+V 시뮬레이션
    4. 클립보드 복원
  • 삽입 검증 (옵션)

3.2 RecordingTipWindow (Vanilla JS 팝업)

  • 녹음 상태 표시 (opening → recording → thinking → result/error)
  • 9개 웨이브 바 애니메이션 (Speakly 패턴)
  • 2-phase 리사이즈
  • 프리로딩 방식

3.3 ResultPopupWindow (Vanilla JS 팝업)

  • 전사 결과 텍스트 표시
  • 복사 버튼, 닫기 버튼
  • 자동 숨김 + 마우스 호버 시 유지

3.4 Dashboard (React)

  • 통계: 총 시간, 단어 수, 세션 수
  • 최근 세션 목록
  • Speakly 패턴: MUI Drawer(240px) + Content Area

3.5 Settings (React Modal)

  • 언어, 테마(light/dark/auto), 핫키 설정
  • 마이크 선택 + 테스트
  • Ollama 서버 URL 설정

Speakly RE 참조

  • ClipboardPaste 의사코드: save→set→SendInput(Ctrl+V)→restore
  • RecordingTip: wave-bar cos 분포, thinking 점근 수렴
  • ResultPopup: requestAnimationFrame 높이 측정, mouseenter/leave
  • App.js: MUI 테마, Drawer 네비게이션, 라우팅 패턴
  • Settings: HotkeyRecordModal, 마이크 선택 UI

완료 조건

  • 전사된 텍스트가 활성 앱(메모장 등)에 삽입됨
  • RecordingTip 웨이브 애니메이션 작동
  • Dashboard에 통계 표시
  • Settings에서 핫키/마이크 변경 가능