mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-19 09:06:14 +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>
Bose SoundTouch Toolkit Documentation
Welcome to the documentation for the Bose SoundTouch Toolkit. This comprehensive toolkit helps you keep your Bose SoundTouch speakers functional even after the Bose Cloud shutdown in May 2026, with enhanced local management and monitoring capabilities.
🚀 Start Here
For New Users
- Complete Migration Guide - Step-by-step guide from Bose Cloud to local control
- Getting Started - Quick introduction to the toolkit
For Existing Users
- Cloud Shutdown Survival Guide - Prepare for the May 2026 shutdown
- Backup Tool - Back up your cloud account and speaker data before shutdown
- SoundTouch Service Guide - Advanced service configuration
📋 Essential Documentation
The documentation is organized into three main categories:
1. User Guides - For everyday users migrating and managing devices
2. Technical Reference - For developers and advanced configuration
3. Concept Documentation - For contributors and system architects
🗂 Documentation Structure
🗂 User Guides
Migration & Setup
- Complete Migration Guide - 📖 Main guide for migrating from Bose Cloud
- Cloud Shutdown Survival Guide - Prepare for service shutdown
- Migration & Safety Guide - Advanced migration strategies
- Initial Device Setup - First-time device configuration
- Raspberry Pi Setup - Installing on Raspberry Pi
Daily Management
- SoundTouch Service Guide - Service operation and maintenance
- Troubleshooting - Common issues and solutions
- HTTPS Setup - Secure connections
- Deployment Guide - Production deployments
Advanced Features
- MAC Address Mapping - Device identification
- CLI Reference - Command-line tools
- Backup Tool - Cloud account and speaker data backup
- IoT Implementation Guide - IoT integrations
- MQTT Integration Design - MQTT setup
📚 Technical Reference
API Documentation
- API Endpoints - REST API reference
- Spotify Account Addition - Technical requests for Spotify
- WebSocket Events - Real-time events
- Zone Management - Multi-room control
- Preset Management - Preset operations
Analysis & Research
- Upstream URLs - Bose service endpoints
- Device Redirect Methods - Migration techniques
- IoT Configuration Analysis - Device configurations
- IoT Config Summary - Configuration summaries
Device Lifecycle & Network Independence
- Device Lifecycle and /power_on Enhancement - Complete analysis of device registration and network independence improvements
- /power_on Implementation Guide - Technical implementation details for enhanced device management
🏗 Concept Documentation
Enhanced Service Architecture
- Concept Overview - High-level architecture vision
- Upstream Service Simulation - Complete concept design
- Implementation Plan - Development roadmap
- Technical Specification - Detailed specifications
Development Planning
- Implementation Roadmap - Project phases and milestones
💡 Quick Reference
Common Tasks
- Migrate first device: Follow Migration Guide Step 5
- Check device health: Dashboard → Devices → [Device Name] → Health Status
- Backup configuration: Dashboard → Settings → Backup → Create Backup
- Add new device: Dashboard → Devices → Discover Devices → Register
Getting Help
- Issues & Bugs: GitHub Issues
- Questions & Discussion: GitHub Discussions
- Documentation: Check troubleshooting guides first
- Community: Share experiences and help others
For a complete list of all documents, see the Summary.