Flow explanation
- Startup order is fixed: create the session first, request microphone permission next, and request screen-sharing audio only when "system audio" is enabled.
- System audio is not an independent device. It comes from the browser sharing stream:
getDisplayMedia({ video: true, audio: true }). - When "system audio is enabled but the interviewer cannot be heard," check the sharing dialog checkbox first instead of assuming the recognition service failed.
Expected behavior, not failures
- If "share system audio / tab audio" is not checked in the sharing dialog, the frontend automatically falls back to microphone-only capture.
- If the shared object has no audio track, the frontend disables system audio and prompts that system audio is not enabled and only microphone will be captured.
- Adding system audio midway through a session is limited. If the current session has not established the interviewer channel, it prompts you to stop and restart.
- After an input-source toggle is turned off, clearing the draft is a protection behavior. It prevents old drafts from being committed by mistake.
Standard troubleshooting steps
- Check browser site permissions: whether microphone is allowed.
- Check system permissions: whether microphone and screen recording are allowed.
- Start the session and check "share system audio / tab audio" in the sharing dialog.
- If system audio is still missing, stop the session and restart fully instead of repeatedly switching toggles inside the session.
Acceptance criteria
- 10-second system audio test: interviewer draft or committed text appears.
- 10-second microphone test: your own speech commits continuously.
- Enter a formal interview only after both channels are stable.