Steps: Open Familiar in Brave with default Shields. Click any track. Player UI shows activity but no audio plays.
Root cause: Brave's AudioContext fingerprint protection and strict autoplay policy prevent the AudioContext from leaving suspended state unless resume() is called synchronously within a direct user gesture handler.
Workaround for users: In Brave, go to brave://settings/content/autoplay, add your Familiar domain to the Allow list. Or click the Shields icon and lower to "Standard."
Suggested fix: Add an unlockAudioContext() call early in the click handler chain (before async dispatch), using the silent-buffer unlock pattern. Also check audioContext.state before calling .play() and log a warning if it's not "running".
Steps: Open Familiar in Brave with default Shields. Click any track. Player UI shows activity but no audio plays.
Root cause: Brave's AudioContext fingerprint protection and strict autoplay policy prevent the AudioContext from leaving suspended state unless resume() is called synchronously within a direct user gesture handler.
Workaround for users: In Brave, go to brave://settings/content/autoplay, add your Familiar domain to the Allow list. Or click the Shields icon and lower to "Standard."
Suggested fix: Add an unlockAudioContext() call early in the click handler chain (before async dispatch), using the silent-buffer unlock pattern. Also check audioContext.state before calling .play() and log a warning if it's not "running".