You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, media preflight verifies microphone activity via passive volume threshold checks (audio-check.js) and audio output via subjective confirmation tone, without allowing candidates to pick specific hardware devices. While audio-output.js already implements robust output routing via setSinkId and device enumeration, it is strictly bound to Google Meet tab-presentation mode (meetOutputSelect).
I propose adding a microphone (audioinput) selector to the preflight gate and making audio output selection available for standard interview sessions.
Current Implementation Analysis
Audio Input:
audio-check.js checks micPeak >= MIC_SILENT_PEAK against pool.trackOf("audio").
Candidates with multiple microphones (e.g., built-in laptop mic vs. external USB condenser / headset) have no way to choose which device feeds into the preflight check or LiveKit room without altering OS-level defaults.
However, this is only rendered under nodes.meetOutputRow when presenting in Google Meet, leaving standard sessions unable to route Jim's voice explicitly to headphones.
Motivation
Built-in microphones often capture loud mechanical keyboard clicking during the REACTO coding phase, reducing Jim's speech recognition accuracy.
Multi-monitor setups often set HDMI/DisplayPort monitor speakers as the OS default, causing echo unless the user manually alters system settings before opening CodeTrial.
Proposed Changes
Preflight Microphone Selector:
Query navigator.mediaDevices.enumerateDevices() for kind === 'audioinput'.
Expose a <select> dropdown in the preflight gate to pass a specific deviceId constraint to the media track pool.
Expose Output Selection in Preflight:
Decouple the device selection logic in audio-output.js from meet-audio.js / nodes.meetOutputRow so that candidates can route Jim's audio to their desired output device directly from the preflight screen.
@s4512138 Accepted as scoped: a microphone selector in the preflight, and the output selector from web/audio-output.js offered outside Meet mode as well. Keep the default device as the default, so a candidate who picks nothing sees no change. #44 and #197 (a silent test tone on some drivers) may be helped by choosing the output explicitly; note in the pull request whether you could check that.
@s4512138 On 2026-10-12 you said you were working on the scope accepted on 2026-10-05, and no pull request has appeared since. Is it still coming? If there is no reply by 2026-10-27, the assignment is removed and the issue stays open for anyone else to take, with Closes #206.
Status of the open pull requests that reference this issue:
Choose audio devices during preflight #411 by @s4512138, the assignee, ends with Closes #206 and covers the accepted scope: a microphone selector and an output selector in the preflight, both starting at the system default, with the output choice also applied outside Meet mode. This answers the 2026-10-27 check-in, and the assignment stands.
Activity
[-][Feature Request] Generalize audio device selection to preflight checks (input selection & non-Meet output routing)[/-][+]Generalize audio device selection to preflight checks (input selection & non-Meet output routing)[/+]jserv commentedon Oct 5, 2026
@s4512138 Accepted as scoped: a microphone selector in the preflight, and the output selector from
web/audio-output.jsoffered outside Meet mode as well. Keep the default device as the default, so a candidate who picks nothing sees no change. #44 and #197 (a silent test tone on some drivers) may be helped by choosing the output explicitly; note in the pull request whether you could check that.s4512138 commentedon Oct 12, 2026
I am working on this change following the agreed scope.
jserv commentedon Oct 20, 2026
@s4512138 On 2026-10-12 you said you were working on the scope accepted on 2026-10-05, and no pull request has appeared since. Is it still coming? If there is no reply by 2026-10-27, the assignment is removed and the issue stays open for anyone else to take, with
Closes #206.s4512138 commentedon Oct 20, 2026
@jserv Yes I am still working on the change, thank you.
Choose audio devices during preflight
Choose audio devices during preflight
Choose audio devices during preflight
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Let the candidate switch microphones mid-interview
Choose audio devices during preflight
jserv commentedon Oct 23, 2026
Status of the open pull requests that reference this issue:
Closes #206and covers the accepted scope: a microphone selector and an output selector in the preflight, both starting at the system default, with the output choice also applied outside Meet mode. This answers the 2026-10-27 check-in, and the assignment stands.web/devices.jsandweb/interview.js, so whichever lands second rebases.@s4512138 the next step is the open review threads on #411.
Choose audio devices during preflight
Let the candidate switch microphones mid-interview
Choose audio devices during preflight
Choose audio devices during preflight
Let the candidate switch microphones mid-interview
Choose audio devices during preflight