fix(ios): keep gateway speech providers native#98212
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 30, 2026, 9:19 PM ET / 01:19 UTC. Summary PR surface: Other +265. Total +265 across 2 files. Reproducibility: yes. at source level. Current main still misclassifies non-ElevenLabs Gateway speech providers as realtime and lacks iOS Gateway Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Land one canonical iOS fix that routes both final and incremental native speech through Gateway Do we have a high-confidence way to reproduce the issue? Yes, at source level. Current main still misclassifies non-ElevenLabs Gateway speech providers as realtime and lacks iOS Gateway Is this the best way to solve the issue? No, not yet. The iOS routing/playback boundary is the right fix location, but the branch must also cover the always-enabled incremental speech path and provide real iOS proof. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 3669280b9aec. Label changesLabel justifications:
Evidence reviewedPR surface: Other +265. Total +265 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
@clawsweeper re-review Updated the PR body with the required |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review Updated the PR body to include the required |
|
Pushed a follow-up fix for the red iOS compile blocker and the gateway-owned native speech provider readiness gap:
Validation on this Linux runner:
CI should now be able to exercise the macOS @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Summary
talk.speakRPC before falling back to iOS system speechIssue / Motivation
Fixes #98153.
Current iOS Talk enables realtime whenever the resolved Gateway provider is not ElevenLabs, so a speech/TTS provider with no realtime config starts the realtime path and then falls back to iOS system speech instead of using the configured Gateway TTS provider.
What Problem This Solves
The iOS app now distinguishes Gateway realtime mode from Gateway speech/TTS providers. Speech-only providers stay on the native Talk path and call the Gateway
talk.speakRPC, so configuring a non-ElevenLabs Gateway TTS provider no longer silently falls back to system speech.Changes
talk.speakplayback path for non-local speech providers, including directive params and PCM-vs-compressed playback selection fromoutputFormat.Testing
node scripts/run-vitest.mjs src/gateway/server-methods/talk.test.ts— passed locally: 62 tests passed across gateway client/method shards.git diff --check— passed.git diff origin/main...HEAD—SECRET_SCAN_MATCHES 0.pnpm ios:gen— attempted, blocked on this Linux host becausexcodegenis not installed after signing/version prep.pnpm exec tsc --noEmit --pretty false— attempted, Node heap OOM at default limit.NODE_OPTIONS=--max-old-space-size=4096 pnpm exec tsc --noEmit --pretty false— attempted, timed out after 600s.xcodebuildcould not be run in this environment because the host does not provide Xcode/iOS Simulator tooling.Evidence
talk.speakregression test covers the server RPC contract used by the new iOS native speech path and passed locally with 62 tests.src/gateway/server-methods/talk.test.ts: 62 tests passed.git diff --check: clean.SECRET_SCAN_MATCHES 0.