Some checks failed
deploy-site / deploy (push) Failing after 40s
Release notes for 1.1.0 were split between an Unreleased section and the version section, so the published notes would have omitted the update-feed and desktop changes. Everything shipping in this version now sits under one `## [1.1.0]` heading. `docs/map/` becomes the entry point for what infrastructure exists per platform and how far each feature is developed, with a documented update protocol so feature work and this map do not drift apart again. The release guide now states that installer binaries live in the update feed rather than the repository.
78 lines
4.3 KiB
Markdown
78 lines
4.3 KiB
Markdown
# D3RO-VOICE — 로컬 AI 음성 어시스턴트
|
|
|
|
Speakly RE 기반 완전 로컬 음성 어시스턴트. Ollama + Whisper + TTS.
|
|
|
|
> **에이전트 진입점**: 작업 전 `AGENTS.md`를 읽고, 기능/인프라 현황은 `docs/map/`를
|
|
> 참조한다. 기능 추가·삭제·변경·백로그 이관 시 `docs/map/10-feature-catalog.md`와
|
|
> `docs/map/11-gap-backlog.md`를 반드시 함께 갱신한다 (규칙: `docs/map/12-update-protocol.md`).
|
|
|
|
## 기술 스택
|
|
Electron 33+ | React 19 + MUI 7 + Vite | TypeScript 5.7+ strict
|
|
better-sqlite3 + drizzle-orm | faster-whisper (Python sidecar) | Ollama REST
|
|
uiohook-napi | @nut-tree-fork/nut-js | electron-store | electron-log
|
|
|
|
## 빌드
|
|
```bash
|
|
npm run dev # Electron + Vite dev
|
|
npm run build # 프로덕션 빌드
|
|
npm run test # vitest
|
|
npm run typecheck # tsc --noEmit
|
|
```
|
|
|
|
## 코딩 규칙
|
|
- strict mode, any 금지, console.log 금지 (logger 사용)
|
|
- 서비스: 싱글톤 + EventEmitter
|
|
- IPC: `${feature}:${action}`, D3ROError + ErrorCode
|
|
- 메인앱=React+MUI, 팝업=Vanilla JS
|
|
- 테마 SSOT: d3roPalette/d3roShadow만 사용, hex 하드코딩 금지 (theme.ts 제외)
|
|
- i18n: t() 함수, 하드코딩 한국어/영어 금지
|
|
- Co-Authored-By, Claude 관련 커밋 문구 금지
|
|
- **Windows 데스크톱 실행**: AI 에이전트 서브쉘(가상 데스크톱 `exebox`)에서 GUI 백그라운드 구동을 반복하지 말고, 사용자가 `run-desktop.bat` 또는 외부 터미널에서 실행하도록 안내.
|
|
- **Single Instance Lock**: `app.setName('d3ro-voice')`와 `app.setAppUserModelId`를 최상단 선언하고 dev 모드 사일런트 종료 방지.
|
|
- **오디오 장치 탐색**: `execSync` 동기 블로킹 금지 (반드시 `exec` 비동기 논블로킹).
|
|
- **GPU 충돌 방지**: `app.disableHardwareAcceleration()` 및 `--disable-gpu` 유지.
|
|
|
|
## 핵심 패턴 (Speakly 차용)
|
|
- RecognitionState(9) + AudioState(4) 이중 상태머신
|
|
- 이중 조건 플러시 (모델 로딩 + 오디오 버퍼링 병렬)
|
|
- 텍스트 삽입: clipboard save→set→Ctrl+V→restore
|
|
- 윈도우: 프리로딩 + 2-phase 리사이즈
|
|
- 녹음 UI: 9개 웨이브 바, cos 분포, 100ms
|
|
|
|
## 현재 상태
|
|
Phase 1~15.5 전체 완료 + 랜딩 페이지(site/).
|
|
차단 이슈: @nut-tree-fork/nut-js 포크 사용
|
|
|
|
## 업데이트 / 릴리스
|
|
자동 업데이트는 electron-updater + **canonical Forgejo feed**
|
|
(`git.chanpaca.net/api/packages/yunchan/generic/d3ro-voice/latest`). GitLab project 1172은
|
|
legacy mirror다. 채널·최소 지원 버전·강제 업데이트·증분/전체·staged rollout·킬 스위치는
|
|
`release/update-policy.json`이 정본이다. 릴리스는 annotated `vX.Y.Z` 태그에서만 게시하며
|
|
태그는 불변이다. 규칙은 `AGENTS.md` §6, 평가·방법론은
|
|
`docs/deployment/update-system-assessment.md` 참조.
|
|
|
|
## 설계 문서 (구현 시 Read 도구로 참조)
|
|
- docs/design/00-master-architecture.md — 시스템 아키텍처, 초기화/종료, 서비스 목록
|
|
- docs/design/01-service-specifications.md — 서비스 인터페이스, 상태머신, 이벤트
|
|
- docs/design/02-ipc-and-types.md — IPC 채널 전체, 타입, 에러코드, preload API
|
|
- docs/design/03-db-and-ui.md — DB 스키마, React 컴포넌트, 팝업 명세, MUI 테마
|
|
|
|
## 서비스 목록 (src/main/services/)
|
|
Core: LoggerService, ConfigService, VoiceModeService(오케스트레이터)
|
|
Audio: AudioCaptureService, LocalSTTService, LocalLLMService, TTSPlaybackService
|
|
Input: HotkeyService, TextInsertService, SoundEffectService, AutoLaunchService
|
|
Data: HistoryService, DictionaryService, CustomInstructionService, LicenseService
|
|
Phase10+: MemoService, VoiceCommandService, ScreenContextService, ChainService, CaptionService
|
|
Phase12+: FileTranscriptionService, MeetingSummaryService, DictationTemplateService
|
|
Phase13+: VoiceConversationService, RAGService, VoiceActionService
|
|
Phase14: MeetingModeService
|
|
Phase14.5: MeetingDocTemplateService + 다중 문서 생성/편집/내보내기
|
|
Phase15: Auto Polish + AI 채팅 + 마인드맵 + 공유
|
|
Phase15.5: 화자 구분 (LLM 추정 + pyannote 준비)
|
|
|
|
## DS 컴포넌트 (src/renderer/components/ds/)
|
|
CrtDisplay, InstrumentPanel, Led, PhysicalButton, MetalCard,
|
|
PhosphorText(13변형), MetalDial, ScreenPanel, ButtonGroup
|
|
|
|
## 디자인 토큰 (theme.ts)
|
|
d3roPalette(색상) | d3roTypo(13단계) | d3roShadow(10종) | d3roRadius(7종)
|