mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-12 05:36:13 +00:00
make screenshots was producing artifacts: a ghost Spotify pill on
ui-devices, empty Plan-card URL inputs on ui-migration with cascading
"localhost" warnings, and "Checking configuration…" placeholder text
instead of "❌ Not configured" on ui-settings. Two root causes, fixed
together so the run is deterministic again.
1. Fakespeaker too thin for the post-wizard inspect pipeline. The new
migration wizard probes /supportedURLs and reads /networkInfo and
/sources alongside the existing /info, /presets, /recents. Those
routes now exist with sanitized fixtures (deviceID DEADBEEFCAFE,
loopback IPs, no real MACs or account IDs). The full group endpoint
set is also wired: /getGroup and /removeGroup return the empty
<group/> shape a real un-paired device emits; /addGroup and
/updateGroup echo the posted body with <status>GROUP_OK</status>
inserted before </group>, matching the success path documented in
issue #252. /supportedURLs lists everything the fake now serves so
any caller that probes capabilities first (e.g. marge_pairing.go)
sees a coherent picture. Tests cover the GET routes' XML roots, the
POST echo + GROUP_OK insertion contract, and /removeGroup's
GET-only contract (405 with Allow: GET on other methods).
2. run.sh seed hit a DNS cliff. The :443 preflight shipped in 3727ae6
resolves server_url on every /setup/settings call, and the
populatePlannedNetworkConfig step does it again. With the previous
seed of http://aftertouch.local:8000 each lookup burned ~5s on DNS
timeout, which compounded across the wizard calls and pushed
ui-migration past chromedp's 30s per-shot budget. Switched the seed
to http://aftertouch.localhost:8000 — RFC 6761 means *.localhost
resolves to loopback via the system resolver in milliseconds
(verified ~8ms on macOS / glibc / systemd-resolved) — so the brand-
friendly hostname survives in the captured PNGs without the
timeout. Manifest settle times bumped (ui-settings 300→2000ms,
ui-devices 500→2500ms, ui-sync 300→1000ms) to give fetchSettings +
fetchSpotifyStatus time to complete in headless Chrome.
While here, softened validateURL's loopback message to acknowledge the
on-device-install case (AfterTouch running on the speaker itself, where
loopback works) instead of unconditionally telling users they're
wrong. The validation still flags 127.0.0.1 / localhost since it's the
wrong answer 99% of the time, but the message now frames the
constraint rather than scolding.
docs/images/ui-*.png regenerated against the new pipeline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
23 lines
765 B
XML
23 lines
765 B
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<supportedURLs deviceID="DEADBEEFCAFE">
|
|
<URL location="/info"/>
|
|
<URL location="/capabilities"/>
|
|
<URL location="/supportedURLs"/>
|
|
<URL location="/volume"/>
|
|
<URL location="/presets"/>
|
|
<URL location="/recents"/>
|
|
<URL location="/nowPlaying"/>
|
|
<URL location="/key"/>
|
|
<URL location="/sources"/>
|
|
<URL location="/serviceAvailability"/>
|
|
<URL location="/name"/>
|
|
<URL location="/networkInfo"/>
|
|
<URL location="/setZone"/>
|
|
<URL location="/addZoneSlave"/>
|
|
<URL location="/removeZoneSlave"/>
|
|
<URL location="/getGroup"/>
|
|
<URL location="/addGroup"/>
|
|
<URL location="/updateGroup"/>
|
|
<URL location="/removeGroup"/>
|
|
<URL location="/setMargeAccount"/>
|
|
</supportedURLs> |