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

@ -0,0 +1,48 @@
// packages/core/src/utils/secure-memory.ts
// Zero Data Retention (ZDR) & Biometric Audio Memory Wiper
// 음성 바이오메트릭 데이터 메모리 상주 방지 — 처리 완료/취소/에러 시 오디오 버퍼 0으로 즉시 초기화
/**
* Node.js Buffer Uint8Array의 0 (Zero-fill)
*/
export function secureZeroBuffer(buffer: Buffer | Uint8Array | null | undefined): void {
if (!buffer) return
try {
if (typeof buffer.fill === 'function') {
buffer.fill(0)
} else {
for (let i = 0; i < buffer.length; i++) {
buffer[i] = 0
}
}
} catch {
// Silent guard against detached buffers
}
}
/**
* Float32Array PCM
*/
export function secureZeroFloat32Array(array: Float32Array | null | undefined): void {
if (!array) return
try {
array.fill(0)
} catch {
// Silent guard
}
}
/**
* (Zero-trace)
*/
export function secureWipeAudioChunks(chunks: Array<Buffer | Uint8Array | Float32Array> | null | undefined): void {
if (!chunks || !Array.isArray(chunks)) return
for (const chunk of chunks) {
if (chunk instanceof Float32Array) {
secureZeroFloat32Array(chunk)
} else {
secureZeroBuffer(chunk)
}
}
chunks.length = 0
}