feat(V2-1a): Monorepo 구조 전환 — apps/desktop으로 V1 이동
- npm workspaces 루트 (apps/*, packages/*) 세팅 - V1 전체를 apps/desktop/으로 git mv (src, resources, tests, sidecar, scripts, electron.vite.config.ts, electron-builder.yml, vitest.config.ts, tsconfig.node.json, tsconfig.web.json) - apps/desktop/package.json 신규 (name=@d3ro/desktop) - productName: 'd3ro-voice' 명시 — app.getName()을 고정하여 userData 경로 %APPDATA%\d3ro-voice\ 그대로 유지 (기존 DB/설정 연속성 보장) - 루트 package.json을 workspace 루트로 재구성, 공통 devDep만 유지 (typescript, eslint, prettier) - turbo.json, tsconfig.base.json 추가 (Turborepo 자체 설치는 별도 sub-phase) - memory/project_status.md 생성 (규칙 13) 검증: - npm run typecheck 통과 - npm run build 통과 (electron-vite main+preload+renderer) - npm run dev 실제 실행 → DB/핫키/Ollama 자동 실행 모두 정상
This commit is contained in:
parent
3a160b9032
commit
45a580878a
178 changed files with 214 additions and 0 deletions
98
memory/project_status.md
Normal file
98
memory/project_status.md
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
# D3RO-VOICE 프로젝트 현황
|
||||
|
||||
> 마지막 갱신: 2026-04-08
|
||||
> 규칙 13: 작업 완료 즉시 이 파일 갱신 의무
|
||||
|
||||
## 현재 단계
|
||||
|
||||
**V1 (Electron) 완료** → **V2 (Monorepo) 진행 중**
|
||||
- Phase V2-1a ✅ 완료 (Monorepo 구조 이동)
|
||||
- 다음: Phase V2-1b (packages/core 추출) — 별도 세션
|
||||
|
||||
## V1 완료 페이즈
|
||||
|
||||
| Phase | 내용 | 상태 |
|
||||
|---|---|---|
|
||||
| 1~9 | 기본 음성 어시스턴트 (STT/LLM/TTS/핫키/팝업) | ✅ |
|
||||
| 10 | Killer features (메모, 보이스 커맨드, 스크린 컨텍스트, 체인, 캡션) | ✅ |
|
||||
| 11 | Monetization (라이선스, 쿼터) | ✅ |
|
||||
| 12 | Pro features (파일 전사, 회의 요약, 딕테이션 템플릿) | ✅ |
|
||||
| 13 | 음성 대화, RAG, 보이스 액션 | ✅ |
|
||||
| 14 | 회의 모드 | ✅ |
|
||||
| 14.5 | 회의 고도화 (다중 문서 생성/편집/내보내기) | ✅ |
|
||||
| 15 | Auto Polish + AI 채팅 + 마인드맵 + 공유 | ✅ |
|
||||
| 15.5 | 화자 구분 (LLM 추정 + pyannote) | ✅ |
|
||||
|
||||
**추가 개선사항 (post-15.5)**
|
||||
- 히스토리/회의 목록 반응형 그리드 + 카드 UI
|
||||
- 설정 LLM 모델 드롭다운
|
||||
- 오디오 테스트 실시간 레벨 미터
|
||||
- Ollama 미실행 시 설치 경로 탐색 후 자동 스폰 (2026-04-08)
|
||||
|
||||
## V2 진행 상황
|
||||
|
||||
### Phase V2-1: Monorepo + Core 추출 — **진행 중**
|
||||
|
||||
| Sub-phase | 범위 | 상태 |
|
||||
|---|---|---|
|
||||
| V2-1a | npm workspaces + apps/desktop으로 V1 이동 | ✅ 완료 |
|
||||
| V2-1b | packages/core 추출 (types, errors, utils) | ⏸️ 대기 |
|
||||
| V2-1c | packages/ui 추출 (DS 컴포넌트 + theme) | ⏸️ 대기 |
|
||||
| V2-1d | packages/i18n 추출 (locale JSON + 훅) | ⏸️ 대기 |
|
||||
|
||||
**V2-1a 완료 내역**
|
||||
- 루트 `package.json`을 npm workspaces 루트로 재구성 (workspaces: apps/*, packages/*)
|
||||
- `turbo.json`, `tsconfig.base.json` 추가 (Turborepo 자체 설치는 뒤로 미룸)
|
||||
- V1 파일 전체를 `apps/desktop/`으로 `git mv`:
|
||||
- src/, resources/, tests/, sidecar/, scripts/
|
||||
- electron.vite.config.ts, electron-builder.yml, vitest.config.ts
|
||||
- tsconfig.node.json, tsconfig.web.json (+ 새 tsconfig.json)
|
||||
- `apps/desktop/package.json` 신규 (`name: "@d3ro/desktop"`, 기존 deps 그대로)
|
||||
- `@electron/rebuild --version=33.4.11`로 native 모듈 재빌드 (better-sqlite3, uiohook-napi)
|
||||
- 루트 tsconfig.json → apps/desktop references 형태
|
||||
|
||||
**V2-1a 결정사항**
|
||||
- **패키지 매니저**: npm workspaces 유지 (pnpm 전환은 별도 sub-phase)
|
||||
- 이유: Turborepo는 npm workspaces와 호환, 구조 이동과 PM 전환을 동시에 하면 롤백 불가
|
||||
- **site/**: 루트 유지 (랜딩 페이지, V2 무관)
|
||||
- **docs/**, **memory/**, **CLAUDE.md**: 루트 유지
|
||||
- **productName: "d3ro-voice"** 필수 — package name을 `@d3ro/desktop`으로 바꾸면 Electron의 `app.getName()`이 바뀌어 userData 경로가 `%APPDATA%\@d3ro\desktop\`으로 이동(기존 DB/설정 유실). `productName`을 명시하면 `app.getName()`이 이를 우선 반환하여 `%APPDATA%\d3ro-voice\` 그대로 유지됨.
|
||||
|
||||
**검증 결과**
|
||||
- `npm run typecheck` ✅
|
||||
- `npm run build` ✅ (electron-vite main+preload+renderer)
|
||||
- `npm run dev` ✅ 실제 실행 → DB 경로 `d3ro-voice/`로 복원, 기존 핫키(Alt keyCode=2) 로드, Ollama 자동 실행 감지 모두 정상
|
||||
- `npm run dist` (electron-builder installer)은 V2-1 완료 후 별도 검증
|
||||
|
||||
### Phase V2-2~V2-8: 미착수
|
||||
Supabase 인프라, Web App MVP, 데스크톱 동기화, Mac 빌드, Mobile App, 팀 기능, 결제/출시
|
||||
|
||||
## 알려진 차단/이슈
|
||||
|
||||
- **@nut-tree-fork/nut-js 포크 사용** (V1 잔여 이슈)
|
||||
- **Ollama 의존성**: 없으면 LLM 기능 사용 불가 (2026-04-08 자동 실행 기능 추가로 UX 개선)
|
||||
|
||||
## 디렉토리 구조 (V2-1a 목표)
|
||||
|
||||
```
|
||||
d3ro-voice/ # 루트 (monorepo)
|
||||
├── apps/
|
||||
│ └── desktop/ # 기존 V1 전체
|
||||
│ ├── src/
|
||||
│ ├── resources/
|
||||
│ ├── build/
|
||||
│ ├── package.json # name: @d3ro/desktop
|
||||
│ ├── electron.vite.config.ts
|
||||
│ ├── electron-builder.yml
|
||||
│ ├── tsconfig*.json
|
||||
│ └── drizzle.config.ts
|
||||
├── packages/ # V2-1b/c/d에서 채움
|
||||
├── site/ # 랜딩 페이지 (루트 유지)
|
||||
├── docs/ # 설계서/페이즈 문서
|
||||
├── memory/ # 이 파일
|
||||
├── pnpm-workspace.yaml # 또는 package.json "workspaces"
|
||||
├── turbo.json
|
||||
├── package.json # 루트 workspace
|
||||
├── tsconfig.base.json
|
||||
└── CLAUDE.md
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue