mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 09:06:14 +00:00
UpdatePreset returned "invalid account/source" with a 500 when the speaker's preset PUT referenced a source that wasn't in AfterTouch's per-device configured-sources list. After a factory reset the speaker locally knows the built-in radio sources but AfterTouch's Sources.xml may not, so a long-press appeared to succeed on the speaker but the preset was never persisted — and the next /full sync wiped the local copy. Closes GH-314 (and the underlying trigger described in GH-253). For the canonical built-in IDs (10001..10005) AfterTouch now auto-adds the source from the same template post-pair would have used, then lets the preset land. Non-canonical / account-bound IDs (Spotify "100004", Amazon, custom) are still rejected — we can't fabricate per-account credentials. The rejection now logs the diagnostic context so users don't have to grep source to understand why their long-press didn't stick. Also accepts the Stockholm mobile app's <username> field as the preset name when <name> is empty (soundcork documents the same divergence). Every code path that silently repairs preset data now logs at info level: synthesised /full source blocks, skipped presets, auto-added canonical sources, and the Stockholm name fallback. This makes user diagnostic dumps actionable without source-spelunking. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>