feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped

This commit is contained in:
Yun Chan 2026-08-20 11:12:05 +09:00
parent 5cd1de6859
commit 708e20f747
406 changed files with 42464 additions and 6199 deletions

View file

@ -26,7 +26,9 @@ class TTSPlaybackService extends EventEmitter {
* 큐에 추가되어 순차 재생된다.
*/
async speak(text: string): Promise<void> {
if (!text.trim()) return
if (!text.trim()) {
throw new D3ROError(ErrorCode.TTSTextEmpty, 'TTS text is empty')
}
this._queue.push(text.trim())
if (!this._speaking) {
await this._processQueue()
@ -205,6 +207,11 @@ class TTSPlaybackService extends EventEmitter {
// ── 싱글톤 ──
let instance: TTSPlaybackService | null = null
export function resetTTSPlaybackServiceForTests(): void {
if (instance) instance.removeAllListeners()
instance = null
}
export function getTTSPlaybackService(): TTSPlaybackService {
if (!instance) {
instance = new TTSPlaybackService()