mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 00:56:16 +00:00
PR #249 added "hls" unconditionally to TuneIn's Tune.ashx formats= query. That regressed playback on the SoundTouch line: TuneIn returns an .m3u8 HLS playlist for stations like K-LOVE (s33828), the speaker can't parse it, blinks amber and falls silent. Verified that firmware 27 on ST10 and ST20 ships the byte-identical Mozilla CCADB bundle and validates the actual stream chain cleanly, so it isn't a cert-expiry issue (#292's hypothesis) — the speaker simply has no HLS support. Changes: - TuneInStream is now a builder, not a const: takes the station ID plus a formats string (empty falls back to the new exported DefaultTuneInStreamFormats = "mp3,aac,ogg" — matches the pre-#249 request shape). - TuneInPlayback and TuneInPlaybackPodcast take the formats string. - New Settings.TuneInStreamFormats string. Empty by default. Operators with HLS-capable speakers can set it to "mp3,aac,ogg,hls" — or any other comma-separated list — via settings.json. The value is passed through verbatim; AfterTouch does not validate the individual format tokens, so this is also the right knob for trialling additional formats without code changes. - Two regression tests pin both the empty-uses-default contract and the override-passes-through contract (with the whitespace- trim sub-case) so PR #249-style regressions surface at compile/test time. The setting is settings.json-only (matches the existing pattern for AllowInsecureUpstreamTLS / TrustForwardedHeaders / TrustedProxyCIDRs which are also edit-the-file settings). UI surface can be a small follow-up if reporters ask for it. Example settings.json snippet to re-enable HLS (only if your speaker can actually play it): { "server_url": "http://aftertouch.local:8000", "tunein_stream_formats": "mp3,aac,ogg,hls" } Restart soundtouch-service after editing. Related to https://github.com/gesellix/Bose-SoundTouch/issues/292. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>