mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 08:36:13 +00:00
og-gh's #343 reproducer is built-in radio sources sitting on non-canonical IDs (the 2000001+i fallback that GetConfiguredSources hands out when on-disk sources lack canonical IDs). After re-pair churn, presets binding by <sourceid> end up rebound to whichever source happened to get the colliding numeric ID — silently rewriting e.g. a TUNEIN preset to RADIOPLAYER on the next /full fetch. The strict-match commit (aa449fb) keeps that drift from corrupting emission downstream, but the underlying Sources.xml is still wrong and the operator has to either pull-from-speaker (online) or hand-edit XML (tedious). This commit adds an offline QuickFix that rewrites the source IDs in Sources.xml back to canonical (TUNEIN→10004, INTERNET_RADIO→10002, LOCAL_INTERNET_RADIO→10003, RADIO_BROWSER→10005) and updates every <sourceid> reference in Presets.xml/Recents.xml in lockstep. Skipped when the canonical ID is already in use by another source (e.g. duplicate TUNEIN entries from manual XML editing) — collisions need operator review. Idempotent: a second click is a no-op when everything is already canonical. The fix is reachable from the consistency check finding, gated by the framework's standard Confirm dialog which enumerates the exact ID rewrites before executing. No speaker contact required; the speaker re-fetches /full on its own and picks up the new IDs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>