Skip to content

feat(dashboard): add dictation and live voice API controls - #4395

Draft
lidge-jun wants to merge 9 commits into
codex/audio-streamingfrom
codex/audio-connections
Draft

feat(dashboard): add dictation and live voice API controls#4395
lidge-jun wants to merge 9 commits into
codex/audio-streamingfrom
codex/audio-connections

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add separate Dictation and Live Voice sections under Connections/API keys, with configured versus observed state, ephemeral data-key input, bounded file upload/cancel and native session readiness checks.
  • Publish validated audio endpoint metadata through the existing management response. Keep audio calls outside management credential injection, and keep secrets out of caches, examples and event displays.
  • Ordinary dependent stack: feat(audio): expose standalone transcription API #4391 (file transcription) -> feat(audio): expose streaming dictation and owned live calls #4392 (streaming and call ownership) -> this PR (dashboard). Parent branch is codex/audio-streaming; final integration target remains dev. No native GitHub stack or merge requested.

Verification

  • Local product tests, typecheck, build and install: NOT RUN, explicitly prohibited by the owner. Commit and push use --no-verify.
  • Final head 066091134b5d30297fb9b9c4460378a689ecb41f: remote gates 103544812802 passed lint, typecheck, 1,998 dashboard tests / 0 failures, privacy and build. Screenshot/description gate also passed. Runtime/UI source is unchanged from f5aefd88af3116bec4f2ddc72c0c6fa974f52a83, whose remote metadata tests passed 10/10.
  • Actual CI-built dashboard, synthetic responses only: upload/copy, HTTP 401, cancellation, native session readiness/disconnect, inactive-tab cleanup and no key persistence passed. No page JavaScript errors. Desktop/tablet/mobile widths 1440/1024/768/390/320 and Korean narrow labels inspected. Artifact merge bb0f30fbab4496b2b69bbc1e8148e59035ba3778 GUI tree exactly equals the runtime/UI source tree.
  • Independent security/component source reviews closed all actionable findings, including metadata extras, post-readiness errors, replacement races, idle status and mobile scroll-spy. Final delegated review used xai/grok-4.6 as requested.

Desktop Dictation and Live Voice
Mobile Dictation and Live Voice
Narrow Korean audio controls

  • Parent head 011f2dff5ca3667b88f090fe711c4b2c77efd190 passed all new audio cases and gates in run 34687731903. Existing journal restore failures remain separately recorded per owner scope; no whole-suite-green claim.
  • No personal recordings, real upstream audio requests, account changes, service restart or deployment used for QA.
  • Final-head test 2/4 has only the separately scoped journal restore failures: hashless native restore refusal and damaged managed-default fallback cleanup. Other platform shards may still be completing. No whole-run-green claim; leave this PR draft and unmerged.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Sep 12, 2026
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed.

Hygiene

Deterministic PR hygiene checks passed.

@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 50 / 80

이 PR은 오디오 스택 wp3(대시보드)입니다. 부모는 #4392(codex/audio-streaming)이고, Connections/API keys에 Dictation·Live Voice 구역을 나란히 둡니다. 지금 dev HEAD 20861aebf의 GUI에는 이 패널이 없고, management buildApiAccessEndpoints도 오디오 메타데이터를 주지 않습니다. 이 브랜치는 gui/src/components/apikeys-workspace/AudioApiPanel.tsx, gui/src/audio-api-client.ts, audio-api-examples.ts, i18n, 스타일을 추가하고 src/server/management/api-access.tsaudio 블록(엔드포인트·모델·configured 플래그)을 붙입니다. 관리 API 응답으로 URL/설정 여부만 공개하고, 실제 오디오 호출에는 management 자격증명을 주입하지 않으며, 키는 입력창 ephemeral 상태로만 둡니다(캐시·예제·이벤트에 시크릿 없음).

dev 본선 작업(#4390 등)과 직접 충돌하지 않지만, #4391#4392 → 이 PR 의존이라 부모 두 개가 모두 draft·CI 미완료면 여기도 머지할 자리가 없습니다. PR 본문도 스크린샷 붙이기 전엔 draft를 유지하고, 로컬 제품 테스트는 금지·원격 CI만 게이트라고 적었습니다. 이 시각 기준 상위 스택 CI에 test 2/4 실패가 남아 있고, 이 PR 자체 hygiene/label 등은 재실행 중입니다. GUI 회귀 테스트(audio-api-panel, audio-api-client, auth-memory)는 추가돼 있습니다.

UI 역할 분리는 분명합니다. DictationPanel은 파일 업로드+취소+트랜스크립트 표시와 스트리밍 예제(복붙)를 보여주고, LiveVoicePanel은 WebSocket 연결 상태·이벤트 타입 몇 줄을 보여 줍니다. “configured”는 계정 health/ entitlement가 아니라 프로바이더 설정 존재만 뜻한다고 api-access.ts 주석에 박혀 있어, 초록 표시만 보고 받아쓰기가 된다고 오해할 여지는 문서로 더 막아야 합니다. 스트리밍 받아쓰기는 예제 코드만 있고 패널에서 직접 마이크 세션을 열지는 않습니다(의도적 범위로 보임).

src/server/management/api-access.ts AudioApiAccess - transcriptionConfigured/dictationConfigured/liveConfigured가 설정 존재만 본다. GUI 배지 문구(audio.configured)가 “준비됨”처럼 들리면 사용자 오해가 난다. “설정됨(계정 검증 별도)” 쪽으로 i18n을 다듬자.
gui/src/components/apikeys-workspace/AudioApiPanel.tsx DictationPanel - 파일 선택 acceptaudio/*,.mp4,.webm만 있다. 서버가 받는 포맷과 다르면 업로드 후 400만 난다. 서버 allow-list와 맞추거나 힌트 문장을 달자.
gui/src/audio-api-client.ts connectLiveAudio - 브라우저가 마이크/SDP를 어떻게 준비하는지가 패널 UX에 안 보인다. 지금은 “연결”만 있어, 실제 통화 성립 여부를 기여자가 스크린샷으로 검증하기 어렵다. draft 해제 전 데스크톱·모바일 캡처가 필수인 이유다.
의존 스택 #4391/#4392 - 부모 CI가 빨간 동안 이 PR만 고쳐도 통합 검증이 안 끝난다. 스크린샷·i18n만 먼저 닫지 말고 부모 exact-head 녹색을 기다리자.
docs-site proxy-formats 다국어 - 오디오 엔드포인트 문서가 여러 로케일에 퍼진다. 영문 기준 문장과 번역이 어긋나면 로케일 패리티 테스트에 걸릴 수 있으니 한 줄씩 맞추자.

메인테이너의 판단이 필요한 지점

  • wp3를 스택 통째로 리뷰할지, wp1/wp2가 dev에 들어간 뒤 UI만 리베이스할지
  • 대시보드에 마이크/스트리밍 받아쓰기 실조작 UI가 이번 범위인지, 예제+파일 업로드만으로 충분한지
  • configured 배지를 설정/관측/엔타이틀먼트로 더 쪼갤지
  • draft 해제 조건으로 스크린샷 종류(데스크톱/모바일/다크)를 어디까지 요구할지

너의 추천
이 PR은 대기가 맞다. #4391·#4392 CI와 계약을 먼저 고정하고, configured 문구·accept 힌트·실기 스크린샷을 채운 다음에 review-ready로 올리자. 지금은 merge하지 말고 스택 아래부터 녹색을 만들자.

이 댓글은 grok-bot이 작성했습니다

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant