Skip to content

2.8.0 — phone-only audio works, on every route

Latest

Choose a tag to compare

@Asgermolgaard Asgermolgaard released this 01 Sep 17:58

Phone-only audio was telephone audio, and the assistant was ducked. Both fixed, verified on an iPhone 12 / iOS 26.1 against the live gateway, on a bare phone, on AirPods and on Ray-Ban Meta.

Fixed

Full-band audio by default. outgoingAudioFidelity defaulted to .narrowband, and SystemAudioTransport declared it outright. That flag selects the realtime session INPUT format as well as playback, so the speaker own voice was decimated to 8 kHz mu-law before being sent and transcription read telephone audio. The default is now .hiFi with no override; a narrow wire is a specific fact a transport declares, and Brilliant declares it.

No crash when the audio route changes. installTap raises an ObjC exception on an unusable format, which Swift cannot catch, so the process aborted when a session started with glasses connected. The format is validated and a Swift error thrown instead; the existing 1 Hz retry then succeeds once the route settles.

The assistant is audible. Instantiating the Voice-Processing I/O unit attenuates playback on the output scope — Apple behaviour, unfixed since iOS 6, and invisible to the API. Fixed with the iOS 17 ducking configuration plus a category re-assert, scoped to built-in outputs so it never pulls audio off a connected device.

Breaking

Two source-breaking removals land in this minor, both with one-line replacements:

  • AssistantConfig.wakeSoundEnabled is removed on both platforms.
  • The named-sound registry is removed — audio.playSound, registerSound and soundNames are gone. Use audio.sendAudio(pcm16:sampleRate:) / audio.stopAudio(), and read audio.outputFidelity to ask your model for the right format.

The wake PHRASE engine is untouched — the two features share a name and nothing else.

Android ships in lockstep at com.extentos:glasses:2.8.0 on Maven Central.