mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 09:06:14 +00:00
Two related fixes for the Plan-card → Customize-pane preview flow: 1. Live planned-XML preview. The Customize panel's "Planned Config (AfterTouch)" pane previously showed summary.planned_config — server-rendered, only updated on the next showSummary fetch. So editing a URL field in the Plan card had no visible effect on the preview until the user manually refreshed. The new renderPlannedXMLPreview composes the same XML client-side from plan-target-url + the four override inputs, mirroring exactly what migrateViaXML writes (target-derived defaults + applyURLOverrides), and is called from validatePlanURLs which already runs on every keystroke. 2. Per-device form-state isolation on speaker switch. The Plan card inputs preserve manual edits across summary refreshes (force=false) so a user's typed URL doesn't get clobbered by a re-fetch. That semantic is right within one device but wrong across devices: if the user edited a URL on speaker A and then picked speaker B in the dropdown, A's value silently appeared in B's preview. showSummary now compares the previous summary-device-id to the new one and, on change, calls resetPlanCardForDeviceSwitch to clear the four URL inputs, the Soundcork checkbox, the "saved" hint dataset, the URL-validation banner, and both apply-status lines. The downstream fillPlanURLInputs(defaults, force=false) then fills the now-empty inputs with the new device's canonical defaults. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>