mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 09:06:14 +00:00
Adds a Service URLs section to the Plan card with four free-form URL inputs (margeServerUrl, statsServerUrl, swUpdateUrl, bmxRegistryUrl), a "Current on Device" column populated from telnet getpdo (falling back to the SSH-read XML config), a Soundcork-mode checkbox that flips the /marge suffix on margeServerUrl, and a Reset-to-defaults button. Validation runs on every keystroke (oninput) and on each summary render: each URL must parse via the URL constructor, the scheme must be http or https, the hostname must be non-empty, and "localhost" or "127.0.0.1" are explicitly rejected (the speaker can't reach this machine via that name). Invalid inputs get a red border, an inline error list surfaces under the table, and the Apply Suggested Plan button is disabled until everything is valid. migrate() also gates on validatePlanURLs() and surfaces a clear status message rather than sending typoed URLs that would silently brick the speaker. The Plan card's per-field URLs feed both XML and Telnet migrations via the marge_url / stats_url / sw_update_url / bmx_url options the backend's applyURLOverrides honors. The legacy XML dropdowns (self/proxied/original) and the duplicate URL Targets table inside the Telnet pane stay in the markup for now — the next iteration removes them once we're confident the Plan card flow covers everything. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>