diff --git a/CHANGELOG.md b/CHANGELOG.md index fc2772c..947f95c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,59 @@ All notable changes to D3RO Voice will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Planned +- macOS / Linux support +- Additional Whisper model management UI +- Cloud-optional backup (encrypted, opt-in) +- Plugin system for custom pipelines + +## [0.2.0-alpha] - 2026-07-22 + +> **다운로드**: Windows `D3RO-Voice-Setup-0.2.0-alpha-x64.exe` · macOS `D3RO-Voice-0.2.0-alpha-arm64.dmg` +> (Release assets 첨부) — 기존 Windows 사용자는 자동 업데이트(4시간 주기)로 수신됩니다. +> macOS는 ad-hoc 서명 — Gatekeeper 차단 시 우클릭→열기. + +Midnight Glass v2 전면 재설계 + refactor-wave 대규모 코드 품질 정리. 기능 추가보다 시각·구조 개선 중심. + +### Added +- **Midnight Glass v2 전면 리디자인**: 미드나이트 네이비 + 글래스모피즘 카드(헤어라인 그라디언트 + 앰비언트 글로우) + 시안→블루→퍼플→마젠타 그라디언트. 6종 테마(dark/light/nord/solarized/catppuccin/dracula) 전환. 보더리스 UI + 커스텀 TitleBar. Pretendard Variable 폰트 오프라인 번들. +- **TiltCard DS**: 커서 추종 3D 틸트 + 스페큘러 빛 반사 (reduced-motion 완전 존중) +- **GradientWave / StatRing DS** 신규 (기존 CrtDisplay WebGL 오실로스코프를 그라디언트 스펙트럼 웨이브로 교체) +- **실시간 부분 전사**: 받아쓰기 홀드 중 RecordingTip에 interim 전사 표시 +- **Windows 자동 업데이트**: electron-updater + GitLab Generic Registry feed (4시간 주기, 재시작 다이얼로그) +- **멀티플랫폼 배포**: macOS arm64(ad-hoc 서명) + Windows 동시 릴리스. GitLab Package Registry(버전별+latest) + Release 자동 생성 +- **번들 Ollama v0.32.1**: 온보딩 gemma4:e4b pull 412 실패 해소, GPU 런타임 가지치기로 ~1GB→119MB 슬림화 +- **gpt-realtime-2.1 라이브 음성 대화** (Premium 백엔드, OpenAI Realtime) — 로컬 파이프라인 자동 fallback +- **Whisper large-v3-turbo 기본 STT**: 6배 빠름, 사이드카 백그라운드 다운로드 API + +### Fixed +- **한국어 날짜 "TODAY"/"YESTERDAY" 표시 버그** — `date.today/yesterday` 중복 정의(JSON last-wins) 해소 +- **팝업/렌더러 색상 충돌** — 팝업이 v1 주황(`#f25b29`)으로 렌더되던 것을 파랑(`#3b82f6`)으로 SSOT 정합 +- **받아쓰기 파이프라인 4버그**: press 액션이 STT 초기화를 await하며 큐 점유→release 지연/유령 세션; 사이드카 crash 루프; RecordingTip hide 타이머 leak; 빈 STT 가드 +- **온보딩 무진행 구간 UX**: verifying(모델 검증) 단계 피드백 + 중복 실행 가드 +- **마이크 테스트 조기 종료**: 초기 `level:0`을 종료 신호로 오인하던 버그 +- **트레이 아이콘 빈 이미지** 버그 + +### Changed +- **`accent.amber` → `accent.main` 전면 통일** (162건, deprecated 별칭 2곳 제거) — desktop/web/admin/mobile/ui-native 전역. 6 테마 일관. +- **IPC 채널 SSOT 일원화**: `ipc-channels.ts`에 9 그룹/키 추가(INSTRUCTION, POPUP_*, CLIPBOARD, APP 등), 하드코딩 채널 문자열 제거, `ipcSuccess/ipcError` 헬퍼 통일, `catch(error)` 패턴 32건 +- **AppConfig 타입 강화**: 7개 누락 키 추가, `as never` 16건 제거, dynamic `require` → static import +- **팝업 i18n**: 4종 팝업(command/history/result/recording-tip) 한국어/영어 하드코딩 → `t()` 키 주입 (`popup.*` 17키) +- **매직 리터럴 토큰화**: 인라인 fontSize/fontWeight/borderRadius → `d3roTypo`/`d3roRadius` 토큰 (렌더러 전역) + +### Removed +- DS 미사용 3종: **MetalDial, ButtonGroup, CrtDisplay** (barrel export 포함) +- **미사용 의존성 8종**: `@mui/icons-material`, `@d3ro/api-client`, `fluent-ffmpeg`(+`@types`), `pdf-parse`, `node-record-lpcm16`(+`.d.ts`), `electron-audio-loopback`, `@electron-toolkit/preload` +- **i18n 고아 키 967건** (12 locale) — camelCase license.feature 15키 등 동적 참조는 P1 재검증으로 보존 +- `services/index.ts` 데드 레지스트리, `electron-builder.yml` Linux 섹션 + +### Internal +- **refactor-wave Wave 1+2**: 정책(`docs/REFACTOR_POLICY.md`) 수립 → 공격적 감사(106건) → 9 워크스트림 병렬 → 분리 커밋 9개 + 메타 2. 공유 패키지 토큰 SSOT, IPC/타입 정합, 데드코드 대량 제거. 보고서 `docs/REFACTOR_WAVE1_REPORT.md`·`WAVE2_REPORT.md`. + +--- + ## [1.0.0] - 2026-04-06 ### Added @@ -116,11 +169,3 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Supported languages (landing): 10 - Test count: 41 unit tests - Build target: Windows x64 NSIS installer - -## [Unreleased] - -### Planned -- macOS / Linux support -- Additional Whisper model management UI -- Cloud-optional backup (encrypted, opt-in) -- Plugin system for custom pipelines diff --git a/docs/deployment/release-guide.md b/docs/deployment/release-guide.md index 892f497..f622a5d 100644 --- a/docs/deployment/release-guide.md +++ b/docs/deployment/release-guide.md @@ -68,7 +68,36 @@ latest.yml의 url과 레지스트리 파일명이 어긋나면 업데이트 다 | macOS 서명/공증 | ❌ ad-hoc 서명 (`identity=-`, switchboard 검증 조합) — Gatekeeper가 차단하면 우클릭→열기 또는 `xattr -dr com.apple.quarantine "/Applications/D3RO Voice.app"` | Apple Developer 계정($99/년) 확보 시 switchboard의 prepare/cleanup-macos-keychain.mjs + 공증 패턴 이식. 주의: D3RO는 asarUnpack native 모듈 + ollama/sox 바이너리 다중 서명 필요 | | macOS 자동 업데이트 | ❌ 미지원 (Squirrel.Mac이 서명 요구) | 서명 도입 후 latest-mac.yml feed 연결 | | 업데이트 무결성 서명 | latest.yml SHA-512 (electron-builder 기본) | switchboard의 Ed25519 update-policy 매니페스트 체계 이식 검토 | -| CHANGELOG | 없음 — Release 노트는 기본 안내문 | `CHANGELOG.md` 작성 시 publish 스크립트가 해당 버전 섹션을 자동 추출 | +| CHANGELOG | ✅ v0.2.0-alpha부터 운영 | `publish-gitlab-release.mjs`가 `## [버전]` 섹션을 Release 노트로 자동 추출. CHANGELOG를 풍부하게 = Release 페이지 품질 직결 | + +## Release 페이지 운영 (v0.2.0-alpha부터) + +GitLab Release 페이지는 **CHANGELOG가 단일 진실 원천**이다. 릴리스 품질을 올기려면 CHANGELOG를 잘 쓴다. + +### Release 노트 = CHANGELOG 섹션 (자동) +`publish-gitlab-release.mjs`의 `extractChangelogSection(changelog, version)`가 태그 버전(`0.2.0-alpha`)과 매칭되는 `## [0.2.0-alpha]` 섹션을 Release 노트로 추출. **CHANGELOG를 고치면 Release 노트에 자동 반영** — 릴리스 후수정해도 다음 릴리스에 반영되지 않으니 릴리스 "전"에 CHANGELOG를 확정. + +### 권장 섹션 구조 (Keep a Changelog) +``` +## [버전] - YYYY-MM-DD +> 다운로드 안내 (Windows exe / macOS dmg 파일명 + 자동업데이트/서명 메모) +### Added / Changed / Fixed / Removed / Internal +``` +- 상단 인용 블록(`>`)에 다운로드 파일명·자동업데이트·macOS 서명 안내를 적으면 사용자가 Release 페이지에서 바로 확인. +- 내부 작업(refactor-wave 등)은 `### Internal`로 분리 — 사용자 관심사(Added/Fixed)가 위에 오도록. + +### 릴리스 체크리스트 +1. CHANGELOG `[버전]` 섹션 작성 (위 구조) +2. `memory/project_status.md` 최신화 (규칙 13) +3. `git tag vX.Y.Z && git push origin vX.Y.Z` +4. GitLab 파이프라인 모니터링 (package-windows / package-macos / release-create) +5. Release 페이지에서 노트·asset 링크·latest.yml 확인 +6. (검증) 기존 앱에서 자동 업데이트 수신 확인 + +### 버전 정책 +- `0.x.y-alpha`: 개발 프리릴리스 (현재 단계). 자동업데이트 feed는 alpha 체널. +- minor 범프: 대규모 재설계/정리(Midnight Glass v2, refactor-wave). patch: 버그 수정 중심. +- alpha→정식 전환은 기능·안정성 기준 충족 시 (별도 합의). | mac x64 (Intel) | 빌드 안 함 (사이드카가 arm64 전용) | 수요 발생 시 Intel Mac runner 추가 | ## 참고 파일 diff --git a/memory/project_status.md b/memory/project_status.md index 9a106dc..cac3f92 100644 --- a/memory/project_status.md +++ b/memory/project_status.md @@ -1,5 +1,17 @@ # D3RO-VOICE 프로젝트 현황 +## v0.2.0-alpha 릴리스 (2026-07-22) 🚀 + +Midnight Glass v2 + refactor-wave Wave 1/2 + TiltCard 정리를 묶은 첫 마이너 릴리스. + +- **CHANGELOG `[0.2.0-alpha]` 섹션 작성** (switchboard 스타일 — `## [Unreleased]` 최상단 정렬, Added/Changed/Fixed/Removed/Internal). `publish-gitlab-release.mjs`가 Release 노트로 자동 추출. +- **release-guide.md 보강**: "Release 페이지 운영" 섹션 추가 (CHANGELOG = Release 노트, 권장 구조, 릴리스 체크리스트, 버전 정책). switchboard(`D:\workspace\agent-switchboard-client`) 패턴 벤치마크. +- **포함**: Wave 1(amber 91/i18n 967/IPC SSOT 9그룹/AppConfig 7키/DS 3종 삭제) + Wave 2(web-admin amber 21/ui-native 50/팝업 i18n+토큰/의존성 8/catch 32) + 사용자 노출 버그 3건 해소. +- **배포**: `git tag v0.2.0-alpha` + push → GitLab CI (Win NSIS exe + Mac dmg/zip + GitLab Release + Package Registry). Windows 자동업데이트 feed 갱신 → 기존 사용자 4시간 내 수신. +- **후속**: switchboard의 `check-release.mjs`/`verify-*-release.mjs` 빌드 검증 스크립트 이식 검토 (D3RO는 publish만 이식 상태). + +--- + ## 리팩토링 Wave 2 (2026-07-22 /refactor-wave) ✅ `/refactor-wave` Wave 2. Wave 1 이월 항목 처리 + 범위 확장(web/admin/site/mobile/ui-native). 5 WS 병렬 → 분리 커밋 5개. 보고서 `docs/REFACTOR_WAVE2_REPORT.md`.