diff --git a/.github/markdown-link-check.json b/.github/markdown-link-check.json index b7db2f9..2b2a49f 100644 --- a/.github/markdown-link-check.json +++ b/.github/markdown-link-check.json @@ -27,7 +27,7 @@ "pattern": "^https://pkg.go.dev.*badge" }, { - "pattern": "^/images/(dashboard-home|account-creation|account-dashboard|usb-remote-services|device-discovery|device-registration|account-migration|migration-setup|migration-progress|migration-health|migration-complete|backup-setup)\\.png$" + "pattern": "^/images/[^/]+\\.png$" }, { "pattern": "https://www.contributor-covenant.org/version/2/0/code_of_conduct.html" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0bc0012..b154627 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -88,7 +88,7 @@ When filing a bug report, include: Feature requests are welcome! Please: 1. **Check if the feature already exists** in documentation -2. **Verify it's supported by the SoundTouch API** (see [official API docs](docs/reference/API-ENDPOINTS.md)) +2. **Verify it's supported by the SoundTouch API** (see [official API docs](docs/content/docs/reference/API-ENDPOINTS.md)) 3. **Explain the use case** and how it benefits users ### πŸ”§ Contributing Code @@ -489,8 +489,8 @@ Sponsorship is entirely optional. Code, docs, and bug reports remain the most us - [Go Documentation](https://golang.org/doc/) - [Effective Go](https://golang.org/doc/effective_go.html) -- [Bose SoundTouch API Documentation](docs/reference/API-ENDPOINTS.md) -- [Project Architecture](docs/PROJECT-PATTERNS.md) +- [Bose SoundTouch API Documentation](docs/content/docs/reference/API-ENDPOINTS.md) +- [Project Architecture](docs/content/docs/appendix/PROJECT-PATTERNS.md) - [Development Status](docs/archive/STATUS.md) --- diff --git a/README.md b/README.md index ce72ed4..f44e27a 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ See the [Survival Guide](https://gesellix.github.io/Bose-SoundTouch/guides/SURVI A local server that replaces the Bose cloud ("AfterTouch"). Once your speaker is redirected to it, you have full control without any Bose cloud dependency. The built-in web UI at `http://localhost:8000` handles all setup β€” no config files needed to get started. -Not sure which approach fits your situation? See the [Deployment Overview](./docs/guides/DEPLOYMENT-OVERVIEW.md) β€” it compares running AfterTouch on a Raspberry Pi or other always-on host against running it directly on the SoundTouch speaker, with links to step-by-step walkthroughs for each path. +Not sure which approach fits your situation? See the [Deployment Overview](./docs/content/docs/guides/DEPLOYMENT-OVERVIEW.md) β€” it compares running AfterTouch on a Raspberry Pi or other always-on host against running it directly on the SoundTouch speaker, with links to step-by-step walkthroughs for each path. **Getting started:** diff --git a/docs/content/docs/appendix/CLAUDE.md b/docs/content/docs/appendix/CLAUDE.md index c1ed7da..1926c4a 100644 --- a/docs/content/docs/appendix/CLAUDE.md +++ b/docs/content/docs/appendix/CLAUDE.md @@ -10,10 +10,9 @@ sidebar: This document contains important development guidelines for working on the Bose SoundTouch project. Please also read the following documentation: -- **[PLAN.md](archive/PLAN.md)** - Project planning and roadmap +- **[PLAN.md](../../../archive/PLAN.md)** - Project planning and roadmap - **[PROJECT-PATTERNS.md](PROJECT-PATTERNS.md)** - Project structure and design patterns -- **[API-ENDPOINTS.md](reference/API-ENDPOINTS.md)** - API endpoints overview -- **[SoundTouch Web API.pdf](2025.12.18%20SoundTouch%20Web%20API.pdf)** - Official API documentation +- **[API-ENDPOINTS.md](../reference/API-ENDPOINTS.md)** - API endpoints overview ## Development Guidelines diff --git a/docs/content/docs/appendix/CONTENT-SELECTION-IMPLEMENTATION.md b/docs/content/docs/appendix/CONTENT-SELECTION-IMPLEMENTATION.md index 01f4b4e..09b5759 100644 --- a/docs/content/docs/appendix/CONTENT-SELECTION-IMPLEMENTATION.md +++ b/docs/content/docs/appendix/CONTENT-SELECTION-IMPLEMENTATION.md @@ -218,9 +218,9 @@ soundtouch-cli --host 192.0.2.100 source internet-radio \ - [SoundTouch WebServices API Wiki](https://github.com/thlucas1/homeassistantcomponent_soundtouchplus/wiki/SoundTouch-WebServices-API) - [LOCAL_INTERNET_RADIO - streamUrl format](https://github.com/thlucas1/homeassistantcomponent_soundtouchplus/wiki/SoundTouch-WebServices-API#select-local_internet_radio---streamurl-format) - [LOCAL_MUSIC](https://github.com/thlucas1/homeassistantcomponent_soundtouchplus/wiki/SoundTouch-WebServices-API#select-local_music) -- [Content Selection Example](../examples/content-selection/README.md) -- [CLI Reference](guides/CLI-REFERENCE.md) -- [Content Selection Example (Direct)](../examples/content-selection/) +- [Content Selection Example](https://github.com/gesellix/Bose-SoundTouch/tree/main/examples/content-selection/README.md) +- [CLI Reference](../guides/CLI-REFERENCE.md) +- [Content Selection Example (Direct)](https://github.com/gesellix/Bose-SoundTouch/tree/main/examples/content-selection) ## βœ… Verification diff --git a/docs/content/docs/appendix/DEVICE-LOGGING.md b/docs/content/docs/appendix/DEVICE-LOGGING.md index c9f0285..a485b20 100644 --- a/docs/content/docs/appendix/DEVICE-LOGGING.md +++ b/docs/content/docs/appendix/DEVICE-LOGGING.md @@ -86,7 +86,7 @@ If you have a managed switch or a router capable of port mirroring, you can use ### "IsItBose" Validation Failures If the device fails to connect to your custom service despite correct configuration, it may be failing the internal `IsItBose` regex check. - **Evidence**: Look for SSL handshake failures or "Unauthorized" errors in your service logs. -- **Solution**: See the [Binary Patching section in DEVICE-REDIRECT-METHODS.md](analysis/DEVICE-REDIRECT-METHODS.md#method-3-binary-patching). +- **Solution**: See the [Binary Patching section in DEVICE-REDIRECT-METHODS.md](../analysis/DEVICE-REDIRECT-METHODS.md#method-3-binary-patching). ### Disappearing Sources (TuneIn/Local Radio) If `TUNEIN` or `LOCAL_INTERNET_RADIO` sources disappear after a reboot in an offline environment. diff --git a/docs/content/docs/appendix/NAVIGATION-GUIDE.md b/docs/content/docs/appendix/NAVIGATION-GUIDE.md index 1bd7b80..7f19744 100644 --- a/docs/content/docs/appendix/NAVIGATION-GUIDE.md +++ b/docs/content/docs/appendix/NAVIGATION-GUIDE.md @@ -901,4 +901,4 @@ For additional help: --- -*This guide covers the complete navigation and station management functionality. For preset management, see [PRESET-MANAGEMENT.md](reference/PRESET-MANAGEMENT.md).* +*This guide covers the complete navigation and station management functionality. For preset management, see [PRESET-MANAGEMENT.md](../reference/PRESET-MANAGEMENT.md).* diff --git a/docs/content/docs/appendix/PARITY-SOUNDCORK.md b/docs/content/docs/appendix/PARITY-SOUNDCORK.md index e644b2a..7c85afc 100644 --- a/docs/content/docs/appendix/PARITY-SOUNDCORK.md +++ b/docs/content/docs/appendix/PARITY-SOUNDCORK.md @@ -60,4 +60,4 @@ Group support and ZeroConf Spotify priming are now feature-complete in AfterTouc - **BMX service extensibility**: the `bmx_services.json` registry makes it trivial to add or mock new streaming providers without code changes (step C above). - **Group pairing logic**: master/slave relationship management for SoundTouch 10 stereo pairs goes beyond the CRUD AfterTouch implements. -For the broader ecosystem context (feature matrix across all community projects, AfterTouch open tasks, and cross-project observations) see [docs/analysis/bose-soundtouch-community-tools.md](analysis/bose-soundtouch-community-tools.md). +For the broader ecosystem context (feature matrix across all community projects, AfterTouch open tasks, and cross-project observations) see [docs/analysis/bose-soundtouch-community-tools.md](../analysis/bose-soundtouch-community-tools.md). diff --git a/docs/content/docs/appendix/PRESET-QUICKSTART.md b/docs/content/docs/appendix/PRESET-QUICKSTART.md index cd67852..e100b0b 100644 --- a/docs/content/docs/appendix/PRESET-QUICKSTART.md +++ b/docs/content/docs/appendix/PRESET-QUICKSTART.md @@ -338,11 +338,11 @@ soundtouch-cli --host 192.0.2.100 info ## Next Steps -- πŸ“– [Complete CLI Reference](guides/CLI-REFERENCE.md) -- πŸ”§ [Full Implementation Guide](reference/PRESET-MANAGEMENT.md) -- πŸ“‘ [WebSocket Events Documentation](reference/WEBSOCKET-EVENTS.md) -- πŸ’» [Preset Management Example](../examples/preset-management/) -- πŸ“š [API Endpoints Overview](reference/API-ENDPOINTS.md) +- πŸ“– [Complete CLI Reference](../guides/CLI-REFERENCE.md) +- πŸ”§ [Full Implementation Guide](../reference/PRESET-MANAGEMENT.md) +- πŸ“‘ [WebSocket Events Documentation](../reference/WEBSOCKET-EVENTS.md) +- πŸ’» [Preset Management Example](https://github.com/gesellix/Bose-SoundTouch/tree/main/examples/preset-management) +- πŸ“š [API Endpoints Overview](../reference/API-ENDPOINTS.md) ## Need Help? diff --git a/docs/content/docs/appendix/SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md b/docs/content/docs/appendix/SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md index fbf6b10..9e32573 100644 --- a/docs/content/docs/appendix/SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md +++ b/docs/content/docs/appendix/SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md @@ -150,10 +150,10 @@ LOG_PROXY_BODY=true soundtouch-service ## πŸ“š Documentation -- **[Complete Service Guide](guides/SOUNDTOUCH-SERVICE.md)**: Comprehensive setup and configuration -- **[API Reference](guides/SOUNDTOUCH-SERVICE.md#api-reference)**: Full endpoint documentation -- **[Migration Guide](guides/SOUNDTOUCH-SERVICE.md#device-migration)**: Step-by-step device migration -- **[Troubleshooting](guides/SOUNDTOUCH-SERVICE.md#troubleshooting)**: Common issues and solutions +- **[Complete Service Guide](../guides/SOUNDTOUCH-SERVICE.md)**: Comprehensive setup and configuration +- **[API Reference](../guides/SOUNDTOUCH-SERVICE.md#api-reference)**: Full endpoint documentation +- **[Migration Guide](../guides/SOUNDTOUCH-SERVICE.md#device-migration)**: Step-by-step device migration +- **[Troubleshooting](../guides/SOUNDTOUCH-SERVICE.md#troubleshooting)**: Common issues and solutions ## 🀝 Contributing @@ -178,9 +178,9 @@ The collaborative spirit of reverse engineering and documentation in the SoundTo ## πŸ”— Links - **[Main Repository](https://github.com/gesellix/bose-soundtouch)** -- **[Service Documentation](guides/SOUNDTOUCH-SERVICE.md)** -- **[CLI Documentation](guides/CLI-REFERENCE.md)** -- **[Getting Started Guide](guides/GETTING-STARTED.md)** +- **[Service Documentation](../guides/SOUNDTOUCH-SERVICE.md)** +- **[CLI Documentation](../guides/CLI-REFERENCE.md)** +- **[Getting Started Guide](../guides/GETTING-STARTED.md)** - **[SoundCork Project](https://github.com/deborahgu/soundcork)** - **[ÜberBΓΆse API](https://github.com/julius-d/ueberboese-api)** diff --git a/docs/content/docs/guides/CAPTURE-DEVICE-PAIRING.md b/docs/content/docs/guides/CAPTURE-DEVICE-PAIRING.md index bcac421..6c0674f 100644 --- a/docs/content/docs/guides/CAPTURE-DEVICE-PAIRING.md +++ b/docs/content/docs/guides/CAPTURE-DEVICE-PAIRING.md @@ -372,7 +372,7 @@ Frida artefacts live in `scripts/android/` (gitignored) and persist between sess - [BOSE-APP-ADB-Emulator.md](../analysis/BOSE-APP-ADB-Emulator.md) β€” full MITM + Frida setup - [DEVICE-INITIAL-SETUP.md](DEVICE-INITIAL-SETUP.md) β€” factory reset sequences + AP mode detail -- [DEVICE-SETUP.md](../DEVICE-SETUP.md) β€” WebSocket and cloud pairing protocol reference +- [DEVICE-SETUP.md](../appendix/DEVICE-SETUP.md) β€” WebSocket and cloud pairing protocol reference --- diff --git a/docs/content/docs/guides/RASPBERRY-PI.md b/docs/content/docs/guides/RASPBERRY-PI.md index ab56d43..5382f83 100644 --- a/docs/content/docs/guides/RASPBERRY-PI.md +++ b/docs/content/docs/guides/RASPBERRY-PI.md @@ -75,4 +75,4 @@ sudo systemctl restart soundtouch-service Configuration is stored in `/etc/soundtouch-service/soundtouch-service.env`. Note that settings saved via the Web UI (in `settings.json`) will take precedence over these environment variables once the service is running. -For more details, see the [scripts/raspberry-pi/README.md](../https://github.com/gesellix/Bose-SoundTouch/blob/main/scripts/raspberry-pi/README.md) in the repository. +For more details, see the [scripts/raspberry-pi/README.md](https://github.com/gesellix/Bose-SoundTouch/blob/main/scripts/raspberry-pi/README.md) in the repository. diff --git a/docs/content/docs/guides/TROUBLESHOOTING.md b/docs/content/docs/guides/TROUBLESHOOTING.md index 40c97f7..a194606 100644 --- a/docs/content/docs/guides/TROUBLESHOOTING.md +++ b/docs/content/docs/guides/TROUBLESHOOTING.md @@ -141,7 +141,7 @@ The Devices list also shows a `⚠ Not paired β€” re-pair` badge. To resolve, ** #### 3. What does `logread` say while you trigger a failing source? -SSH into the speaker (see [DEVICE-LOGGING.md](../DEVICE-LOGGING.md#1-accessing-system-logs-requires-root)) and capture: +SSH into the speaker (see [DEVICE-LOGGING.md](../appendix/DEVICE-LOGGING.md#1-accessing-system-logs-requires-root)) and capture: ```bash logread -f | grep -v '127.0.0.1:' @@ -161,7 +161,7 @@ logread -f | grep -v '127.0.0.1:' **Symptoms:** -In the speaker's log (see [DEVICE-LOGGING.md](../DEVICE-LOGGING.md#1-accessing-system-logs-requires-root) for the SSH/`logread` setup β€” the filtered command `logread -f | grep -v '127.0.0.1'` is what you want here): +In the speaker's log (see [DEVICE-LOGGING.md](../appendix/DEVICE-LOGGING.md#1-accessing-system-logs-requires-root) for the SSH/`logread` setup β€” the filtered command `logread -f | grep -v '127.0.0.1'` is what you want here): ``` SimpleURLFetcher: retry needed, Curl 7, http 0 @@ -211,7 +211,7 @@ A factory reset wipes `/mnt/nv/BoseApp-Persistence/1/Marge.xml` β€” the file tha 5. Press a preset. It should play normally. -If presets still won't play after step 5, capture `logread -f | grep -v '127.0.0.1:'` on the speaker (see [DEVICE-LOGGING.md](../DEVICE-LOGGING.md#1-accessing-system-logs-requires-root)) while pressing the preset and file an issue with the snippet β€” the lines around the failed playback name the deeper cause. +If presets still won't play after step 5, capture `logread -f | grep -v '127.0.0.1:'` on the speaker (see [DEVICE-LOGGING.md](../appendix/DEVICE-LOGGING.md#1-accessing-system-logs-requires-root)) while pressing the preset and file an issue with the snippet β€” the lines around the failed playback name the deeper cause. ### ❌ "Connection refused" diff --git a/docs/content/docs/reference/BASS-CONTROLS.md b/docs/content/docs/reference/BASS-CONTROLS.md index 79d066d..dc1f269 100644 --- a/docs/content/docs/reference/BASS-CONTROLS.md +++ b/docs/content/docs/reference/BASS-CONTROLS.md @@ -425,7 +425,7 @@ soundtouch-cli -host -bass # Verify final state - **[API Endpoints Overview](API-ENDPOINTS.md)** - Complete API reference - **[Volume Controls](VOLUME-CONTROLS.md)** - Related audio control documentation - **[Client Usage Examples](https://github.com/gesellix/Bose-SoundTouch/blob/main/cmd/soundtouch-cli/main.go)** - CLI implementation reference -- **[Models](../../pkg/models/bass.go)** - Bass model implementation +- **[Models](https://github.com/gesellix/Bose-SoundTouch/blob/main/pkg/models/bass.go)** - Bass model implementation ## API Compliance diff --git a/docs/content/docs/reference/SOURCE-SELECTION.md b/docs/content/docs/reference/SOURCE-SELECTION.md index b3d3994..3103435 100644 --- a/docs/content/docs/reference/SOURCE-SELECTION.md +++ b/docs/content/docs/reference/SOURCE-SELECTION.md @@ -351,8 +351,8 @@ The implementation follows the official SoundTouch API: ## Related Documentation - **[API Endpoints Overview](API-ENDPOINTS.md)** - Complete API reference -- **[Sources](../../pkg/models/sources.go)** - Source model implementation -- **[Now Playing](../../pkg/models/nowplaying.go)** - ContentItem model +- **[Sources](https://github.com/gesellix/Bose-SoundTouch/blob/main/pkg/models/sources.go)** - Source model implementation +- **[Now Playing](https://github.com/gesellix/Bose-SoundTouch/blob/main/pkg/models/nowplaying.go)** - ContentItem model - **[Client Usage Examples](https://github.com/gesellix/Bose-SoundTouch/blob/main/cmd/soundtouch-cli/main.go)** - CLI implementation reference ---