kitlangton / kitlangton/Hex

Selected microphone ignored in clamshell mode; Hex always uses macOS default input instead

Open
#260 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
2.9k
Forks
226
PR merge metrics
No merged PRs in 30d

Description

## Describe the bug

When using Hex in macOS clamshell mode with an external monitor and external microphone, Hex does not use the microphone explicitly selected in Hex’s settings.

With the MacBook lid open, Hex correctly records from the external microphone selected within Hex, even when macOS’s system input is still set to the built-in MacBook microphone.

After closing the MacBook lid, the Hex recording shortcut and recording overlay continue to work, but recording does not actually begin: the normal recording sound is not played and no transcription is produced.

Changing **System Settings → Sound → Input** to the external microphone immediately allows Hex to record successfully with the lid closed.

This indicates that, after entering clamshell mode, Hex uses the macOS default input device instead of the microphone explicitly selected within Hex.

## To reproduce

1. Connect an external monitor and an external microphone to a MacBook.
2. In **System Settings → Sound → Input**, leave the built-in MacBook microphone selected as the system input.
3. In Hex settings, explicitly select the external microphone as Hex’s recording input.
4. With the MacBook lid open, trigger a recording.
5. Confirm that Hex records and transcribes successfully using the external microphone.
6. Close the MacBook lid and continue using the external display in clamshell mode.
7. Trigger another Hex recording.
8. Observe that:

* The Hex shortcut is recognized.
* The recording overlay appears.
* The normal recording sound is not played when the hotkeys are released.
* No audio is captured or transcribed.
9. While the lid remains closed, change **System Settings → Sound → Input** to the external microphone.
10. Trigger another recording.
11. Hex now records and transcribes successfully.

## Expected behaviour

Hex should continue using the external microphone explicitly selected in Hex’s settings, regardless of:

* whether the MacBook lid is open or closed;
* whether the built-in microphone becomes unavailable in clamshell mode; or
* which microphone is selected as the macOS system-default input.

If Hex cannot use the selected microphone, it should display an error or update the selected-device state rather than silently falling back to the system-default input.

## Actual behaviour

With the lid open, Hex honours its explicitly selected external microphone.

With the lid closed, Hex appears to ignore that selection and attempts to use the macOS default input. Since the system default is the now-disabled built-in MacBook microphone, Hex displays the recording UI but does not record.

Selecting the external microphone as the macOS system input works around the problem.

## Environment

* Hex version: **0.8.3**
* macOS version: **Version 15.7.3**
* Mac model: **MacBook Pro, 16" M4, 2024**
* External microphone: **Yeti Stereo Microphone**
* External display connection: **HDMI, via Thunderbolt**
* Super Fast Mode: Reproduced with Super Fast Mode enabled and disabled
* Recording shortcut: Recognized correctly in both open-lid and clamshell modes

## Additional context

This appears related to audio-device routing or restoration when the built-in MacBook microphone is removed from the available-device list as the lid closes.

The behaviour differs from general microphone failure because:

* the same external microphone works in Hex with the lid open;
* the external microphone works with the lid closed once it is selected as the macOS system input;
* Hex continues to recognize the recording shortcut and display its recording overlay; and
* the microphone remains explicitly selected in Hex’s settings.

Possibly related issues include #234, #251 and #252, although none describes this specific clamshell-mode/default-input behaviour.

Contributor guide

No contributing guide indexed for this repository

Research direction

No source files or tests are named. Start by reproducing the issue from the recording shortcut and overlay while switching between open-lid and clamshell modes, then trace microphone selection and audio-device restoration. Done means the selected external microphone records in both modes, or Hex reports a clear error when it is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, swift
Domain
audio-video-rtc, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.