- sidecar 슬림화: torch/pyannote 제거, ctranslate2 GPU 감지, /diarize 삭제 - Ollama 번들: resources/ollama/에 포터블 바이너리 배치, LocalLLMService 1순위 탐색 - installer.nsh: VC++ 재배포 x64 자동 다운로드(aka.ms 경유) + 사일런트 설치 - electron-builder: extraResources에 ollama 추가, nsis.include로 installer.nsh 연결 - scripts: download-ollama.ps1/sh 신규 - LLM.PULL_MODEL IPC 핸들러 + LocalLLMService.pullModel() 구현 (api/pull 스트리밍) - 온보딩 모달: gemma4:e4b 미설치 감지 시 자동 표시, 진행률 UI, i18n(ko/en) 키 추가 - .gitlab-ci.yml: Windows 러너에서 sidecar/sox/ollama 준비 후 NSIS 패키징, 태그 시 Release 자동 생성
124 lines
4.5 KiB
YAML
124 lines
4.5 KiB
YAML
appId: com.d3ro.voice
|
|
productName: D3RO Voice
|
|
copyright: Copyright © 2026 D3RO
|
|
|
|
directories:
|
|
buildResources: resources
|
|
output: release/${version}
|
|
|
|
files:
|
|
- out/**/*
|
|
- "!out/**/*.map"
|
|
|
|
# native 모듈은 asar 외부에 배치
|
|
asarUnpack:
|
|
- "node_modules/better-sqlite3/**"
|
|
- "node_modules/uiohook-napi/**"
|
|
- "node_modules/@nut-tree-fork/**"
|
|
|
|
# ────────────────────────────────────────────────────────────────────
|
|
# Windows
|
|
# ────────────────────────────────────────────────────────────────────
|
|
win:
|
|
target:
|
|
- target: nsis
|
|
arch:
|
|
- x64
|
|
icon: resources/icons/icon.ico
|
|
|
|
# ────────────────────────────────────────────────────────────────────
|
|
# macOS
|
|
# ────────────────────────────────────────────────────────────────────
|
|
mac:
|
|
category: public.app-category.productivity
|
|
icon: resources/icons/icon.icns
|
|
target:
|
|
- target: dmg
|
|
arch:
|
|
- arm64
|
|
- x64
|
|
- target: zip
|
|
arch:
|
|
- arm64
|
|
- x64
|
|
hardenedRuntime: true
|
|
gatekeeperAssess: false
|
|
entitlements: build/entitlements.mac.plist
|
|
entitlementsInherit: build/entitlements.mac.plist
|
|
# notarize: 환경변수 APPLE_ID / APPLE_APP_SPECIFIC_PASSWORD / APPLE_TEAM_ID 설정 시 활성화.
|
|
# CI/dev 환경에서는 NOTARIZE=false로 스킵 가능.
|
|
notarize: false
|
|
extendInfo:
|
|
NSMicrophoneUsageDescription: "D3RO Voice는 음성 인식을 위해 마이크 접근이 필요합니다."
|
|
NSCameraUsageDescription: "D3RO Voice는 스크린 컨텍스트 캡처를 위해 화면 녹화 권한이 필요합니다."
|
|
NSAppleEventsUsageDescription: "D3RO Voice는 활성 앱 정보를 가져오기 위해 다른 앱 제어 권한이 필요합니다."
|
|
NSSystemAdministrationUsageDescription: "D3RO Voice는 전역 핫키 등록을 위해 접근성 권한이 필요합니다."
|
|
|
|
dmg:
|
|
writeUpdateInfo: false
|
|
contents:
|
|
- x: 130
|
|
y: 220
|
|
- x: 410
|
|
y: 220
|
|
type: link
|
|
path: /Applications
|
|
|
|
# ────────────────────────────────────────────────────────────────────
|
|
# Linux (참고용)
|
|
# ────────────────────────────────────────────────────────────────────
|
|
linux:
|
|
target:
|
|
- AppImage
|
|
category: Utility
|
|
icon: resources/icons/icon.png
|
|
|
|
# ────────────────────────────────────────────────────────────────────
|
|
# 공통 리소스 번들
|
|
# ────────────────────────────────────────────────────────────────────
|
|
extraResources:
|
|
# 효과음 (플랫폼 공통)
|
|
- from: resources/sounds/
|
|
to: sounds/
|
|
filter:
|
|
- "*.wav"
|
|
|
|
# 앱 아이콘 (트레이 등 런타임에서 참조)
|
|
- from: resources/icons/
|
|
to: icons/
|
|
filter:
|
|
- "**/*"
|
|
|
|
# SoX 바이너리 (번들되어 있으면 번들, 없으면 시스템 PATH)
|
|
- from: resources/sox/
|
|
to: sox/
|
|
filter:
|
|
- "**/*"
|
|
|
|
# Python sidecar (PyInstaller 빌드 결과)
|
|
# 빌드 전: python scripts/build-sidecar.py (플랫폼에서 개별 실행)
|
|
- from: sidecar-dist/sidecar/
|
|
to: sidecar/
|
|
filter:
|
|
- "**/*"
|
|
|
|
# Ollama 바이너리
|
|
# 빌드 전: powershell scripts/download-ollama.ps1 (Windows)
|
|
# bash scripts/download-ollama.sh (macOS/Linux)
|
|
# 번들된 ollama가 있으면 LocalLLMService가 1순위로 사용.
|
|
- from: resources/ollama/
|
|
to: ollama/
|
|
filter:
|
|
- "**/*"
|
|
|
|
nsis:
|
|
oneClick: false
|
|
perMachine: false
|
|
allowToChangeInstallationDirectory: true
|
|
createDesktopShortcut: true
|
|
createStartMenuShortcut: true
|
|
shortcutName: D3RO Voice
|
|
deleteAppDataOnUninstall: false
|
|
include: build/installer.nsh
|
|
|
|
npmRebuild: true
|