Skip to content

fix(ios): avoid inactive Voice Wake audio startup#100370

Merged
steipete merged 3 commits into
mainfrom
codex/ios-voice-wake-simulator-launch
Jul 5, 2026
Merged

fix(ios): avoid inactive Voice Wake audio startup#100370
steipete merged 3 commits into
mainfrom
codex/ios-voice-wake-simulator-launch

Conversation

@steipete

@steipete steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

The iOS Debug app aborted during launch on Simulator even when Voice Wake was disabled. NodeAppModel disables Voice Wake during initialization; teardown still accessed AVAudioEngine.inputNode, which initializes RemoteIO. The simulator audio service deadlocked and CoreAudio aborted the process after its RPC timeout.

Why This Change Was Made

Voice Wake teardown now uses the existing recognition request as the pipeline-lifetime sentinel. It removes the input tap only after startRecognition created a pipeline that may have installed one, then clears the request. Inactive teardown no longer touches inputNode; active and failed-start teardown still remove the tap before releasing the request.

This is the narrow owner-boundary fix: no simulator special case, no audio fallback, and no change to enabled Voice Wake behavior.

User Impact

The iOS app launches normally when Voice Wake is disabled, including Simulator development builds, and avoids unnecessary microphone audio initialization on inactive cleanup.

Evidence

  • Before: two exact app launches aborted after about nine seconds with Initialize: RPC timeout. Apparently deadlocked; the crash stack was VoiceWakeManager.tearDownRecognitionPipeline()AVAudioEngine.inputNodeAURemoteIO::Initialize().
  • xcodebuild ... -only-testing:OpenClawTests/AppCoverageTests test — 2/2 passed on iPhone 17 Simulator, including voiceWakeStartReportsUnsupportedOnSimulator() and its stop() cleanup.
  • scripts/ios-run.sh — full iOS Debug build passed, installed, and launched on iPhone 17 Simulator.
  • After: the app remained alive beyond the prior abort window and rendered the onboarding screen after 10 seconds.
  • SwiftFormat and SwiftLint — clean for VoiceWakeManager.swift.
  • Codex autoreview — clean, no accepted/actionable findings.

@openclaw-barnacle openclaw-barnacle Bot added app: ios App: ios size: XS maintainer Maintainer-authored PR labels Jul 5, 2026
@clawsweeper

clawsweeper Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Codex review: stale review; fresh review needed.

Summary
The latest durable ClawSweeper review was for head 4dddf96269a8cfb489c1dd4a2b557b256c0aa681, but the PR head is now 33f9d08f5b24df038189e616e900e29ec611cdef. Its old verdict and PR readiness labels are no longer current.

Next step
Run or wait for a fresh ClawSweeper review on the current PR head.

Review history (3 earlier review cycles)
  • reviewed 2026-07-05T16:00:09.872Z sha 3b98711 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T16:06:42.532Z sha 3b98711 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T16:49:28.043Z sha 4dddf96 :: found issues before merge. :: [P3] Remove the release-owned root changelog edit

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P1 High-priority user-facing bug, regression, or broken workflow. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jul 5, 2026
@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui gateway Gateway runtime scripts Repository scripts size: XL and removed size: XS labels Jul 5, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. labels Jul 5, 2026
@clawsweeper clawsweeper Bot removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jul 5, 2026
@steipete
steipete merged commit 444d54c into main Jul 5, 2026
72 of 76 checks passed
@steipete
steipete deleted the codex/ios-voice-wake-simulator-launch branch July 5, 2026 16:58
@steipete

steipete commented Jul 5, 2026

Copy link
Copy Markdown
Contributor Author

Merged via squash.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

const message = await client.createDirectMessage(dm.id, params.text);

P2 Badge Forward provenance on ClickClack DM replies

When agentActivity is enabled for a direct-message account, handleClickClackInbound passes the resolved turnProvenance into sendClickClackText, but this DM branch drops it because createDirectMessage has no provenance option. Channel and thread replies get author_model/author_thinking, while DM final replies do not, contradicting the new docs/channels/clickclack.md attribution behavior for final agent-authored posts. Please thread the provenance through the DM create path too.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 6, 2026
* fix(ios): avoid inactive voice wake audio startup

* fix(ios): avoid inactive voice wake audio startup

* fix(ios): avoid inactive voice wake audio startup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios app: web-ui App: web-ui docs Improvements or additions to documentation gateway Gateway runtime maintainer Maintainer-authored PR P1 High-priority user-facing bug, regression, or broken workflow. scripts Repository scripts size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant