# Device testing checklist Simulator verification covered connect/disconnect, transcripts (text mode), tasks panel, and the hardening pass. The items below need a **real iPhone on the LAN** (`https://192.168.86.2:9178`) because mic input, WebRTC capture, and audio session behavior don't work in this simulator environment (CoreAudio `-4010`, 0 input channels). Setup: build with Xcode for a physical device (or `xcodebuild ... -destination`), install, ensure the server cert pin is current (see README — re-export after any server restart). ## 1. Mic input with real speech - [ ] Start → agent joins → mic enables **without** `-4010`. - [ ] Speak: Lightwell/status transitions to **listening**; mic meter moves with voice level. - [ ] Stop speaking, wait >2 s while agent is silent → **thinking** chip appears. - [ ] Agent replies: state goes to **speaking** (remote audio drives it), TTS audible. - [ ] User transcript finals arrive in the list with correct role/timestamps. ## 2. Barge-in - [ ] While the agent is speaking, start talking → conversation continues without a "barge-in" glitch; state returns to listening/thinking as expected. - [ ] Text mode: barge-in hint line visible while in text mode. ## 3. Wake lock (screen off) - [ ] During an active conversation, observe that auto-lock is suppressed (`isIdleTimerDisabled` prevents the device from locking due to inactivity). - [ ] Note: `isIdleTimerDisabled` does **not** prevent a user from pressing the side button to lock the device. It only disables the automatic idle timeout. - [ ] After hang-up, auto-lock returns (idle timer re-enabled). ## 4. Audio interruption (phone call / Siri) - [ ] Mid-conversation, trigger an interruption (incoming call or "Hey Siri"). - [ ] On end (with `shouldResume`), mic and conversation resume automatically. ## 5. Mic permission denied fallback - [ ] Deny microphone permission in iOS Settings for the app, relaunch. - [ ] Start → session reaches **ready** despite mic failure (non-fatal); orange error banner shows the mic error; text mode remains fully usable. ## 6. General device sanity - [ ] Connect / hang-up / reconnect matrix (3×) — no crashes, state resets cleanly. - [ ] Change server URL in Settings while idle → session recreates without crash. - [ ] Reconnect banner appears on network loss mid-call; recovers on return. - [ ] Voice/model picker changes take effect live on the agent and survive relaunch.