docs: migrate Jekyll site to Hugo + Hextra

Replace docs/_config.yml + docs/SUMMARY.md with Hugo + Hextra theme.
Move all content into docs/content/, images into docs/static/images/.
Update docs_consistency_test.go to check Hugo front matter instead of
SUMMARY.md inclusion. Update CI workflow and screenshot script paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tobias Gesellchen
2026-05-24 13:30:36 +02:00
co-authored by Claude Sonnet 4.6
parent 794a5b3a8f
commit 34f0fec4ad
113 changed files with 620 additions and 237 deletions
+1 -1
View File
@@ -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/(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": "https://www.contributor-covenant.org/version/2/0/code_of_conduct.html"
+4 -4
View File
@@ -215,8 +215,8 @@ jobs:
)
for img in "${IMAGES[@]}"; do
if [ ! -f "docs/images/$img" ]; then
echo "::warning file=docs/guides/MIGRATION-GUIDE.md::Pending image '$img' is missing from docs/images/"
if [ ! -f "docs/static/images/$img" ]; then
echo "::warning file=docs/content/docs/guides/MIGRATION-GUIDE.md::Pending image '$img' is missing from docs/static/images/"
fi
done
@@ -226,7 +226,7 @@ jobs:
echo "Validating API documentation consistency..."
# Check API cookbook
if [ -f "docs/reference/API-COOKBOOK.md" ]; then
if [ -f "docs/content/docs/reference/API-COOKBOOK.md" ]; then
echo "✓ API Cookbook exists"
else
echo "✗ API Cookbook missing"
@@ -234,7 +234,7 @@ jobs:
fi
# Check getting started guide
if [ -f "docs/guides/GETTING-STARTED.md" ]; then
if [ -f "docs/content/docs/guides/GETTING-STARTED.md" ]; then
echo "✓ Getting Started guide exists"
else
echo "✗ Getting Started guide missing"
+8 -4
View File
@@ -23,11 +23,15 @@ jobs:
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
- name: Build with Jekyll
uses: actions/jekyll-build-pages@44a6e6beabd48582f863aeeb6cb2151cc1716697 # v1.0.13
- name: Setup Hugo
uses: peaceiris/actions-hugo@75d2a84ef14cf28a37009d2a8f1d0d6e67eb56e8 # v3.0.0
with:
source: 'docs/'
destination: '_site'
hugo-version: 'latest'
extended: true
- name: Build with Hugo
run: hugo --source docs/ --minify --destination ../_site
env:
HUGO_ENVIRONMENT: production
- name: Upload artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
+20 -1
View File
@@ -1,4 +1,4 @@
.PHONY: all build build-cli test test-coverage test-http-client test-http-client-rotate check fmt vet lint clean dev help screenshots build-stockholm-image prepare-stockholm update-static-deps
.PHONY: all build build-cli test test-coverage test-http-client test-http-client-rotate check fmt vet lint clean dev help screenshots build-stockholm-image prepare-stockholm update-static-deps dev-docs dev-docs-tidy hugo
# Load .env if present (simple KEY=VALUE format, no shell quoting)
-include .env
@@ -454,6 +454,22 @@ screenshots:
@echo "Capturing documentation screenshots..."
@bash scripts/screenshots/run.sh
# Documentation site (Hugo + Hextra via Docker)
# First run: make dev-docs-tidy (downloads Hextra, writes docs/go.sum)
# Then: make dev-docs (http://localhost:1313, live reload)
dev-docs:
docker compose -f docker-compose.docs.yml up
dev-docs-tidy:
docker compose -f docker-compose.docs.yml run --rm hugo mod tidy --source docs/
# Run any hugo CLI command inside the docs container:
# make hugo ARGS="version"
# make hugo ARGS="new content/docs/guides/my-guide.md"
ARGS ?=
hugo:
docker compose -f docker-compose.docs.yml run --rm hugo --source docs/ $(ARGS)
help:
@echo "Available targets:"
@echo " build - Build the CLI tool, service, and examples"
@@ -478,6 +494,9 @@ help:
@echo " dev-service-proxy - Build and run service with proxy (PROXY_URL=url required)"
@echo " dev-service-stockholm - Build and run service with Stockholm frontend (requires prior 'make prepare-stockholm')"
@echo " screenshots - Capture documentation screenshots (headless Chrome via chromedp)"
@echo " dev-docs - Serve documentation site locally via Docker (http://localhost:1313)"
@echo " dev-docs-tidy - Run hugo mod tidy (first run, or after hugo.toml module changes)"
@echo " hugo ARGS=... - Run any hugo CLI command via Docker (e.g. make hugo ARGS=version)"
@echo " dev-discover - Build and run device discovery"
@echo " dev-info - Build and get device info (HOST=ip required)"
@echo " dev-mdns - Build and run mDNS discovery example"
+30
View File
@@ -0,0 +1,30 @@
# Local Hugo/Hextra documentation server.
#
# Usage:
# make dev-docs # start the live-reload server (http://localhost:1313)
# make dev-docs-tidy # run hugo mod tidy (required on first run, or after
# # changing hugo.toml module imports)
# make hugo ARGS="..." # run any other hugo CLI command, e.g.
# # make hugo ARGS="version"
# # make hugo ARGS="new content/blog/my-post.md"
#
# The hugomods/hugo:exts image bundles Hugo extended + Go so Hugo modules
# (Hextra) work without any extra tooling on the host.
services:
hugo:
image: hugomods/hugo:exts
# --source docs/ because docs/ is the Hugo root inside the repo.
# The full repo is mounted so enableGitInfo can read git history.
command: server --source docs/ --bind 0.0.0.0 --buildDrafts --navigateToChanged
ports:
- "1313:1313"
volumes:
- .:/src
# Persist the Hugo module cache across runs so 'hugo mod tidy' only
# downloads Hextra once.
- hugo-mod-cache:/root/.cache/hugo_cache
working_dir: /src
volumes:
hugo-mod-cache:
-119
View File
@@ -1,119 +0,0 @@
# Table of Contents
* [Introduction](README.md)
## User Guides
* [Deployment Overview](guides/DEPLOYMENT-OVERVIEW.md)
* [Local Network Host Walkthrough](guides/EXTERNAL-HOST-WALKTHROUGH.md)
* [Cloud / VPS Walkthrough](guides/CLOUD-DEPLOY-WALKTHROUGH.md)
* [On-Device Install Walkthrough](guides/ON-DEVICE-INSTALL-WALKTHROUGH.md)
* [Cloud Shutdown Survival Guide](guides/SURVIVAL-GUIDE.md)
* [Self-Hosting AfterTouch](guides/SELF-HOSTING.md)
* [Connecting Music Services](guides/MUSIC-SERVICES.md)
* [Migration & Safety Guide](guides/MIGRATION-SAFETY.md)
* [CLI Reference](guides/CLI-REFERENCE.md)
* [Backup Tool](../cmd/soundtouch-backup/README.md)
* [Getting Started](guides/GETTING-STARTED.md)
* [SoundTouch Service](guides/SOUNDTOUCH-SERVICE.md)
* [Initial Device Setup](guides/DEVICE-INITIAL-SETUP.md)
* [Capture Device Pairing Traffic](guides/CAPTURE-DEVICE-PAIRING.md)
* [Capture Migration Traffic](guides/CAPTURE-MIGRATION-TRAFFIC.md)
* [Device Setup Flow](DEVICE-SETUP.md)
* [MAC Address Mapping](guides/MAC-ADDRESS-MAPPING.md)
* [HTTPS Setup](guides/HTTPS-SETUP.md)
* [Deployment](guides/DEPLOYMENT.md)
* [Raspberry Pi Guide](guides/RASPBERRY-PI.md)
* [Troubleshooting](guides/TROUBLESHOOTING.md)
* [IoT Implementation Guide](guides/IOT-IMPLEMENTATION-GUIDE.md)
* [Migration Guide](guides/MIGRATION-GUIDE.md)
* [MQTT Integration Design](guides/MQTT-INTEGRATION-DESIGN.md)
* [Useful Links](#useful-links)
### Useful Links
* [Cloud Shutdown Survival Guide](guides/SURVIVAL-GUIDE.md)
* [Raspberry Pi Installer](../scripts/raspberry-pi/README.md)
* [Updating the Service](../scripts/raspberry-pi/README.md#updating-to-a-new-version)
* [CLI Reference](guides/CLI-REFERENCE.md)
## Technical Reference
* [API Cookbook](reference/API-COOKBOOK.md)
* [API Endpoints](reference/API-ENDPOINTS.md)
* [Spotify Account Addition](reference/spotify-account-addition.md)
* [Cloud API Emulation](reference/CLOUD-API.md)
* [System Endpoints](reference/SYSTEM-ENDPOINTS.md)
* [Speaker Endpoint](reference/SPEAKER-ENDPOINT.md)
* [WebSocket Events](reference/WEBSOCKET-EVENTS.md)
* [Device Pairing Flow](reference/DEVICE-PAIRING-FLOW.md)
* [Discovery](reference/DISCOVERY.md)
* [Zone Management](reference/ZONE-MANAGEMENT.md)
* [Preset Management](reference/PRESET-MANAGEMENT.md)
* [Source Selection](reference/SOURCE-SELECTION.md)
* [Volume Controls](reference/VOLUME-CONTROLS.md)
* [RadioBrowser](reference/radio-browser.md)
* [Bass Controls](reference/BASS-CONTROLS.md)
* [Key Controls](reference/KEY-CONTROLS.md)
* [Feature Mapping](reference/FEATURE-MAPPING.md)
## Concepts
* [Request Recording](REQUEST_RECORDING_CONCEPT.md)
* [Spotify Overview](concepts/spotify-overview.md)
* [Spotify Priming Strategy](concepts/spotify-priming-strategy.md)
* [Spotify OAuth](concepts/spotify-oauth.md)
* [Amazon Music OAuth](concepts/amazon-music-oauth.md)
* [Encrypted Export](concepts/ENCRYPTED-EXPORT.md)
* [Diagnostic Export (Maintainer Setup)](DIAGNOSTIC-EXPORT.md)
* [soundtouch-web Roadmap](soundtouch-web-roadmap.md)
## Architecture
* [Device-Local Install Journeys](architecture/DEVICE-LOCAL-INSTALL.md)
## Analysis & Research
* [API Coverage Analysis](analysis/API-COVERAGE.md)
* [Supported URLs](analysis/SUPPORTED-URLS.md)
* [Upstream URLs](analysis/UPSTREAM-URLS.md)
* [Anonymization Summary](analysis/ANONYMIZATION-SUMMARY.md)
* [Device Redirect Methods](analysis/DEVICE-REDIRECT-METHODS.md)
* [Telnet (Port 17000) Migration Method](analysis/TELNET-MIGRATION-METHOD.md)
* [Telnet Command Reference](analysis/TELNET-COMMAND-REFERENCE.md)
* [Setup WebSocket Experiment](analysis/SETUP-WEBSOCKET-EXPERIMENT.md)
* [Factory Reset Protocol](analysis/FACTORY-RESET-PROTOCOL.md)
* [Wiki API Comparison](analysis/WIKI-COMPARISON.md)
* [IoT Config Summary](analysis/IOT-CONFIG-SUMMARY.md)
* [IoT Configuration Analysis](analysis/IOT-CONFIGURATION-ANALYSIS.md)
* [Bose Lab Runbook](analysis/BOSE-LAB-RUNBOOK.md)
* [Missing Routes Spotify](analysis/MISSING-ROUTES-SPOTIFY.md)
* [Bose App ADB Emulator](analysis/BOSE-APP-ADB-Emulator.md)
* [Community Tools](analysis/bose-soundtouch-community-tools.md)
## Parity Analysis
* [Parity Improvements](PARITY-IMPROVEMENTS.md)
* [Parity SoundCork](PARITY-SOUNDCORK.md)
* [Parity OpenCloudTouch](PARITY-OPENCLOUDTOUCH.md)
## Appendix (Other Documents)
* [External Services Abstraction](EXTERNAL-SERVICES-ABSTRACTION.md)
* [API Navigation Reference](API-NAVIGATION-REFERENCE.md)
* [Claude Instructions](CLAUDE.md)
* [Content Selection Implementation](CONTENT-SELECTION-IMPLEMENTATION.md)
* [Device Customization Setup](DEVICE-CUSTOMIZATION-SETUP.md)
* [Device Logging](DEVICE-LOGGING.md)
* [Feature History](FEATURE_HISTORY.md)
* [Host/Port Parsing](HOST-PORT-PARSING.md)
* [Manual Network Discovery](MANUAL-NETWORK-DISCOVERY.md)
* [Navigation Guide](NAVIGATION-GUIDE.md)
* [Official API Verification](OFFICIAL-API-VERIFICATION.md)
* [Preset Quickstart](PRESET-QUICKSTART.md)
* [Project Patterns](PROJECT-PATTERNS.md)
* [Service Availability Implementation](SERVICE-AVAILABILITY-IMPLEMENTATION.md)
* [SoundTouch Service Announcement](SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md)
* [Undocumented Community Features](UNDOCUMENTED-COMMUNITY-FEATURES.md)
* [Unimplemented Endpoints](UNIMPLEMENTED-ENDPOINTS.md)
* [Preset Store](preset-store.md)
* [SCMUDC Enrichment Implementation](SCMUDC-ENRICHMENT-IMPLEMENTATION.md)
* [Device Lifecycle and Power On Enhancement](device-lifecycle-and-power-on-enhancement.md)
* [Device Lifecycle Summary](device-lifecycle-summary.md)
* [Power On Implementation Guide](power-on-implementation-guide.md)
* [SCMUDC Events Analysis](scmudc-events-analysis.md)
* [Parity Improvements](PARITY-IMPROVEMENTS.md)
* [Parity SoundCork](PARITY-SOUNDCORK.md)
* [Stockholm Port Guide](stockholm-port-guide.md)
-11
View File
@@ -1,11 +0,0 @@
title: Bose SoundTouch Toolkit
description: Documentation for controlling and preserving Bose SoundTouch devices
remote_theme: pages-themes/minimal@v0.2.0
plugins:
- jekyll-remote-theme
- jekyll-relative-links
relative_links:
enabled: true
collections: true
include:
- SUMMARY.md
+65
View File
@@ -0,0 +1,65 @@
---
title: AfterTouch
layout: hextra-home
---
{{< hextra/hero-badge >}}
<div class="hx-w-2 hx-h-2 hx-rounded-full hx-bg-primary-400"></div>
<span>Free, open source</span>
{{< icon name="arrow-circle-right" attributes="height=14" >}}
{{< /hextra/hero-badge >}}
<div class="hx-mt-6 hx-mb-6">
{{< hextra/hero-headline >}}
Keep Your Bose SoundTouch&nbsp;Speakers Alive
{{< /hextra/hero-headline >}}
</div>
<div class="hx-mb-12">
{{< hextra/hero-subtitle >}}
Bose shut down SoundTouch cloud services on May 6, 2026.&nbsp;<br class="sm:hx-block hx-hidden" />AfterTouch replaces the cloud — presets, music browsing, stereo pairing, all restored.
{{< /hextra/hero-subtitle >}}
</div>
<div class="hx-mb-6">
{{< hextra/hero-button text="Get Started" link="/docs/guides/GETTING-STARTED" >}}
{{< hextra/hero-button text="Survival Guide" link="/docs/guides/SURVIVAL-GUIDE" style="outline" >}}
</div>
<div class="hx-mt-6">
{{< hextra/feature-grid >}}
{{< hextra/feature-card
title="Presets Restored"
subtitle="Preset buttons, long-press assignment, and recently-played sync — fully working."
icon="star"
>}}
{{< hextra/feature-card
title="Music Browsing"
subtitle="TuneIn, Internet Radio, RadioBrowser, and Spotify via soundtouch-web and soundtouch-cli."
icon="speakerphone"
>}}
{{< hextra/feature-card
title="Stereo Pairing"
subtitle="SoundTouch 10 stereo pairing via soundtouch-cli, no Bose cloud required."
icon="adjustments"
>}}
{{< hextra/feature-card
title="Three Deployment Options"
subtitle="Run on a Raspberry Pi, a VPS, or directly on the speaker itself."
icon="server"
link="/docs/guides/DEPLOYMENT-OVERVIEW"
>}}
{{< hextra/feature-card
title="CLI Control"
subtitle="soundtouch-cli for scripting, home automation, and direct device control."
icon="terminal"
link="/docs/guides/CLI-REFERENCE"
>}}
{{< hextra/feature-card
title="Open Source"
subtitle="MIT licensed. Not affiliated with Bose Corporation."
icon="shield-check"
link="https://github.com/gesellix/Bose-SoundTouch"
>}}
{{< /hextra/feature-grid >}}
</div>
+3
View File
@@ -0,0 +1,3 @@
---
title: News & Updates
---
@@ -1,3 +1,7 @@
---
title: "Navigation API Reference"
---
# Navigation API Reference
## Overview
@@ -1,3 +1,7 @@
---
title: "CLAUDE.md - Development Guidelines for Bose SoundTouch Project"
---
# CLAUDE.md - Development Guidelines for Bose SoundTouch Project
## Documentation Overview
@@ -1,3 +1,7 @@
---
title: "Content Selection Implementation Summary"
---
# Content Selection Implementation Summary
This document summarizes the implementation of advanced content selection features for the Bose SoundTouch Go client, including full support for the LOCAL_INTERNET_RADIO streamUrl format and LOCAL_MUSIC/STORED_MUSIC content selection.
@@ -1,3 +1,7 @@
---
title: "Device Customization Setup Guide"
---
# Device Customization Setup Guide
This guide documents the manual steps required to configure your Bose SoundTouch device for customization using the SoundCork approach.
@@ -1,3 +1,7 @@
---
title: "Device Logging & Troubleshooting"
---
# Device Logging & Troubleshooting
Accessing logs from SoundTouch devices is critical for debugging custom service integrations and understanding internal device behavior. This document outlines the methods for collecting logs, as discovered by the **SoundCork** and **ÜberBöse API** communities.
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Device Setup Flow"
---
# Bose SoundTouch Device Setup Flow
This document details the multi-step process required to fully set up a Bose SoundTouch device, as derived from the Stockholm firmware (`setup/js/`) analysis.
@@ -1,3 +1,7 @@
---
title: "Encrypted Diagnostic Export"
---
# Encrypted Diagnostic Export
AfterTouch can produce an encrypted diagnostic report that users can download and
@@ -1,3 +1,7 @@
---
title: "Technical Proposal: External Service Provider Abstraction"
---
# Technical Proposal: External Service Provider Abstraction
This document outlines a strategy to refactor the SoundTouch Service's content handling into a modular provider-based system.
@@ -1,3 +1,7 @@
---
title: "Feature Development History"
---
# Feature Development History
This document tracks the detailed evolution of features and capabilities in the Bose SoundTouch API client library.
@@ -1,3 +1,7 @@
---
title: "Host:Port Parsing Feature"
---
# Host:Port Parsing Feature
This document describes the automatic host:port parsing functionality added to the SoundTouch CLI, which allows users to specify both host and port in a single `-host` flag.
@@ -1,3 +1,7 @@
---
title: "Manual Network Discovery on macOS"
---
# Manual Network Discovery on macOS
This document provides comprehensive guidance for manually discovering network services and devices using built-in macOS tools and command-line utilities. This is particularly useful for troubleshooting network discovery issues or understanding what services are available on your local network.
@@ -1,3 +1,7 @@
---
title: "Navigation and Station Management Guide"
---
# Navigation and Station Management Guide
## Overview
@@ -1,3 +1,7 @@
---
title: "Official SoundTouch Web API Verification"
---
# Official SoundTouch Web API Verification
**Source**: Official Bose SoundTouch Web API v1.0 Documentation (January 7, 2026)
@@ -1,3 +1,7 @@
---
title: "Parity Improvements"
---
### Overview of Recent Improvements and Next Steps
This document summarizes the improvements made to the **Marge service** to improve parity with the upstream Bose SoundTouch service, along with open issues and proposed next steps.
@@ -1,3 +1,7 @@
---
title: "Parity Analysis: Bose-SoundTouch (Go) vs. OpenCloudTouch (Python)"
---
# Parity Analysis: Bose-SoundTouch (Go) vs. OpenCloudTouch (Python)
This document provides a comparative analysis of the current Go implementation and the `scheilch/opencloudtouch` project, identifying functional gaps and potential improvements.
@@ -1,3 +1,7 @@
---
title: "Parity Analysis: Bose-SoundTouch (Go) vs. SoundCork (Python)"
---
# Parity Analysis: Bose-SoundTouch (Go) vs. SoundCork (Python)
This document provides a comparative analysis of the current Go implementation and the `deborahgu/soundcork` project, identifying functional gaps and potential improvements.
@@ -1,3 +1,7 @@
---
title: "Preset Management Quick Start Guide"
---
# Preset Management Quick Start Guide
**Save your favorite music, radio stations, and playlists as 1-6 presets for instant access.**
@@ -1,3 +1,7 @@
---
title: "Project Structure Patterns: Bose SoundTouch API Client"
---
# Project Structure Patterns: Bose SoundTouch API Client
## Summary for Reuse in API Client Projects
@@ -1,3 +1,7 @@
---
title: "Request Recording Concept"
---
# Request Recording Concept
## Problem Statement
@@ -1,3 +1,7 @@
---
title: "SCMUDC Enrichment Implementation Summary"
---
# SCMUDC Enrichment Implementation Summary
## Overview
@@ -1,3 +1,7 @@
---
title: "Service Availability Implementation Summary"
---
# Service Availability Implementation Summary
## Overview
@@ -1,3 +1,7 @@
---
title: "🎉 Introducing SoundTouch Service: Local Cloud Service Emulation"
---
# 🎉 Introducing SoundTouch Service: Local Cloud Service Emulation
**Date**: February 2026
@@ -1,3 +1,7 @@
---
title: "Undocumented Community Features & API Discoveries"
---
# Undocumented Community Features & API Discoveries
This document captures advanced API endpoints and device behaviors discovered by the SoundTouch community through reverse engineering projects like **SoundCork** and **ÜberBöse API**. These features are not documented in the official Bose SoundTouch Web API v1.0 but are crucial for full device emulation and offline operation.
## Cloud Emulation (Marge/BMX) Discoveries
@@ -1,3 +1,7 @@
---
title: "Unimplemented SoundTouch API Endpoints"
---
# Unimplemented SoundTouch API Endpoints
**Last Updated:** January 2026
@@ -1,3 +1,9 @@
---
title: Introduction
sidebar:
open: true
---
# 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.
@@ -10,7 +16,7 @@ Welcome to the documentation for the Bose SoundTouch Toolkit. This comprehensive
### For Existing Users
- **[Cloud Shutdown Survival Guide](guides/SURVIVAL-GUIDE.md)** - Prepare for the May 2026 shutdown
- **[Backup Tool](../cmd/soundtouch-backup/README.md)** - Back up your cloud account and speaker data before shutdown
- **[Backup Tool](https://github.com/gesellix/Bose-SoundTouch/blob/main/cmd/soundtouch-backup/README.md)** - Back up your cloud account and speaker data before shutdown
- **[SoundTouch Service Guide](guides/SOUNDTOUCH-SERVICE.md)** - Advanced service configuration
## 📋 Essential Documentation
@@ -41,7 +47,7 @@ The documentation is organized into three main categories:
### Advanced Features
- [MAC Address Mapping](guides/MAC-ADDRESS-MAPPING.md) - Device identification
- [CLI Reference](guides/CLI-REFERENCE.md) - Command-line tools
- [Backup Tool](../cmd/soundtouch-backup/README.md) - Cloud account and speaker data backup
- [Backup Tool](https://github.com/gesellix/Bose-SoundTouch/blob/main/cmd/soundtouch-backup/README.md) - Cloud account and speaker data backup
- [IoT Implementation Guide](guides/IOT-IMPLEMENTATION-GUIDE.md) - IoT integrations
- [MQTT Integration Design](guides/MQTT-INTEGRATION-DESIGN.md) - MQTT setup
@@ -1,3 +1,7 @@
---
title: "Placeholder values for examples"
---
# Placeholder values for examples
This repo is public. Documentation, READMEs, example configs, and test
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch API Coverage Analysis"
---
# Bose SoundTouch API Coverage Analysis
**Last Updated:** February 2026
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Traffic Interception Runbook"
---
# Bose SoundTouch Traffic Interception Runbook
Intercept HTTPS/WebSocket traffic from the Bose SoundTouch Android app using an Android emulator, mitmproxy, and Frida. Tested on Apple Silicon (ARM64) Mac.
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Traffic Analysis Runbook"
---
# Bose SoundTouch Traffic Analysis Runbook
> **Goal:** Set up a Raspberry Pi as a transparent access point to fully observe the traffic of the Bose SoundTouch app specifically the pairing flow with the Bose Cloud. This serves as a basis for later reverse engineering / simulation of the cloud endpoints.
@@ -1,3 +1,7 @@
---
title: "Device Redirect Methods & Custom Service Setup"
---
# Device Redirect Methods & Custom Service Setup
To enable offline operation or use custom services like **SoundCork** or **ÜberBöse API**, SoundTouch devices must be redirected from Bose's official cloud endpoints to a local or custom server. This document outlines the three known methods to achieve this, gathered from community reverse-engineering efforts in the **SoundCork** and **ÜberBöse API** projects.
@@ -1,3 +1,7 @@
---
title: "What a SoundTouch speaker does during factory reset"
---
# What a SoundTouch speaker does during factory reset
Observed live on ST10 firmware `27.0.6.46330.5043500` (build `epdbuild.trunk.hepdswbld04.2022-08-04`) on 2026-05-12, by running `soundtouch-cli setup factory-reset` and tailing the speaker's `logread` over SSH. The trace is preserved at `_/logs/factory-reset.txt` for reference.
@@ -1,3 +1,7 @@
---
title: "IoT Configuration Quick Reference"
---
# IoT Configuration Quick Reference
## Key Files and Locations
@@ -1,3 +1,7 @@
---
title: "IoT Configuration Analysis"
---
# IoT Configuration Analysis
## Overview
@@ -1,3 +1,7 @@
---
title: "Spotify Account Addition Implementation Status"
---
# Spotify Account Addition Implementation Status
To fully replace Bose cloud services for the Spotify account addition flow in the "Stockholm" SoundTouch application, the following routes have been implemented in the `soundtouch-service`:
@@ -1,3 +1,7 @@
---
title: "Experiment: Does bare `setMargeAccount` work outside the SETUP bracket?"
---
# Experiment: Does bare `setMargeAccount` work outside the SETUP bracket?
## Why we are doing this
@@ -1,3 +1,7 @@
---
title: "SoundTouch supportedURLs Endpoint Analysis"
---
# SoundTouch supportedURLs Endpoint Analysis
This document provides a comprehensive analysis of the `/supportedURLs` endpoint response from real Bose SoundTouch devices and compares it with our current implementation.
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Telnet (Port 17000) Command Reference"
---
# Bose SoundTouch Telnet (Port 17000) Command Reference
A consolidated reference for the diagnostic shell that listens on TCP port
@@ -1,3 +1,7 @@
---
title: "Telnet (Port 17000) Migration Method — Analysis"
---
# Telnet (Port 17000) Migration Method — Analysis
This document captures the use cases, community findings, and feasibility analysis
@@ -1,3 +1,7 @@
---
title: "Upstream URLs & Domains Analysis"
---
# Upstream URLs & Domains Analysis
This document provides a comprehensive overview of the upstream Bose cloud services and domains that SoundTouch devices communicate with. These details were gathered from firmware analysis of ST10/ST20 devices, binary string extraction, and community research from the **SoundCork** project (Issue #128).
@@ -1,3 +1,7 @@
---
title: "SoundTouch API Comparison: Community Wiki vs Current Implementation"
---
# SoundTouch API Comparison: Community Wiki vs Current Implementation
**Date:** January 2026
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch — Community Tools for Post-EOL Preservation"
---
# Bose SoundTouch — Community Tools for Post-EOL Preservation
> **Context:** Bose announced the shutdown of SoundTouch cloud services, extended to **May 6, 2026**. On that date the official SoundTouch app will update to a local-only version. Bose has released the [SoundTouch Web API documentation](https://assets.bosecreative.com/m/496577402d128874/original/SoundTouch-Web-API.pdf) as open-source to enable community-driven development. This document surveys the active community projects, their feature coverage, and open development opportunities.
@@ -1,3 +1,7 @@
---
title: "Device-Local Install: Four User Journeys"
---
# Device-Local Install: Four User Journeys
> **Looking for how to actually install AfterTouch?**
@@ -1,3 +1,7 @@
---
title: "Encrypting Sensitive Data Exports with SSH/age or GPG"
---
# Encrypting Sensitive Data Exports with SSH/age or GPG
## Problem
@@ -1,3 +1,7 @@
---
title: "Amazon Music OAuth Integration"
---
# Amazon Music OAuth Integration
This document describes the plan and specification for adding Amazon Music OAuth support to the SoundTouch service, enabling continued Amazon Music playback after the Bose cloud shutdown (May 2026).
@@ -1,3 +1,7 @@
---
title: "Spotify OAuth Integration"
---
# Spotify OAuth Integration
> **New here?** Start with [spotify-overview.md](spotify-overview.md) for the
@@ -1,3 +1,7 @@
---
title: "Spotify on SoundTouch — Overview"
---
# Spotify on SoundTouch — Overview
This is the entry point for understanding how Spotify works on a SoundTouch
@@ -1,3 +1,7 @@
---
title: "Spotify Priming Strategy"
---
# Spotify Priming Strategy
> **New here?** Start with [spotify-overview.md](spotify-overview.md) for the
@@ -1,3 +1,7 @@
---
title: "Device Lifecycle and /power_on Enhancement"
---
# Device Lifecycle and /power_on Enhancement
## Overview
@@ -1,3 +1,7 @@
---
title: "Device Lifecycle Analysis - Executive Summary"
---
# Device Lifecycle Analysis - Executive Summary
## Current State Assessment
@@ -1,3 +1,7 @@
---
title: "Migration Flow Diagrams"
---
# Migration Flow Diagrams
This document specifies the diagrams needed for the migration guide, with descriptions that can be used to create actual visual diagrams.
@@ -1,3 +1,7 @@
---
title: "Capture Device Pairing Traffic"
---
# Capture Device Pairing Traffic
Step-by-step runbook for factory-resetting a SoundTouch speaker, pairing it to a Bose cloud account, and capturing every cloud request via mitmproxy. Tested on Apple Silicon Mac.
@@ -1,3 +1,7 @@
---
title: "Capture Speaker Migration Traffic"
---
# Capture Speaker Migration Traffic
Runbook for migrating a SoundTouch speaker to `soundtouch-service` and capturing
@@ -1,3 +1,7 @@
---
title: "SoundTouch CLI Reference"
---
# SoundTouch CLI Reference
**Complete command reference for the soundtouch-cli tool**
@@ -1,3 +1,7 @@
---
title: "Cloud Deployment Walkthrough"
---
# Cloud Deployment Walkthrough
A step-by-step guide to running AfterTouch on a VPS or cloud server and
@@ -1,3 +1,7 @@
---
title: "AfterTouch Deployment Overview"
---
# AfterTouch Deployment Overview
AfterTouch replaces the Bose SoundTouch cloud, which shut down on 2026-05-06. There are
@@ -56,7 +60,7 @@ feature set** without any extra hardware.
| | Link |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| **User-friendly walkthrough** | [On-Device Install Walkthrough](ON-DEVICE-INSTALL-WALKTHROUGH.md) — SSH connection through verified radio preset playback |
| **Installer reference** | [On-Device Installer README](../../scripts/on-device-install/README.md) — flags, paths, VERSION override, update/rollback |
| **Installer reference** | [On-Device Installer README](https://github.com/gesellix/Bose-SoundTouch/blob/main/scripts/on-device-install/README.md) — flags, paths, VERSION override, update/rollback |
---
@@ -1,3 +1,7 @@
---
title: "SoundTouch Production Deployment Guide"
---
# SoundTouch Production Deployment Guide
**Best practices for deploying SoundTouch Go applications in production environments**
@@ -1,3 +1,7 @@
---
title: "SoundTouch Device Initial Setup Variants"
---
# SoundTouch Device Initial Setup Variants
Based on community research from the **SoundCork** and **ÜberBöse API** projects, as well as analysis of the Stockholm firmware (`firmware/Stockholm/.../setup/`), this document outlines the methods used for the "out-of-the-box" setup of SoundTouch devices.
@@ -33,7 +37,7 @@ The classic "failover" or "alternate" setup method.
3. The device serves a Wi-Fi setup form — enter your home network SSID and password and click Submit.
4. The device disconnects from AP mode and joins your home network within ~1530 seconds.
![Speaker AP mode Wi-Fi setup page at 192.0.2.1](../images/speaker-ap-wifi-setup.png)
![Speaker AP mode Wi-Fi setup page at 192.0.2.1](/images/speaker-ap-wifi-setup.png)
For command-line provisioning (without a browser), see §6 below.
@@ -1,3 +1,7 @@
---
title: "External Host Walkthrough"
---
# External Host Walkthrough
A step-by-step guide to running AfterTouch on a Raspberry Pi (or any always-on
@@ -1,3 +1,7 @@
---
title: "Getting Started with SoundTouch Go Client"
---
# Getting Started with SoundTouch Go Client
**A complete guide to controlling your Bose SoundTouch devices with Go**
@@ -1,3 +1,7 @@
---
title: "HTTPS & Custom CA Certificate"
---
# HTTPS & Custom CA Certificate
SoundTouch speakers communicate with cloud services over HTTPS. For the local service to work over HTTPS, speakers must trust the AfterTouch Root CA. The service manages this automatically — it generates a CA on first start and the web UI guides you through installing it on each speaker as part of the migration flow.
@@ -1,3 +1,7 @@
---
title: "IoT Implementation Guide"
---
# IoT Implementation Guide
## Overview
@@ -1,3 +1,7 @@
---
title: "MAC Address to Serial Number Mapping"
---
# MAC Address to Serial Number Mapping
**Understanding and troubleshooting device identification in SoundTouch service**
@@ -1,3 +1,7 @@
---
title: "Migration Guide: From Bose Cloud to AfterTouch"
---
# Migration Guide: From Bose Cloud to AfterTouch
This guide walks through the complete process of migrating your SoundTouch speakers from Bose's cloud services to **AfterTouch**, the replacement provided by `soundtouch-service`. By the end, your speakers will work fully independently of Bose's servers.
@@ -80,7 +84,7 @@ See [Raspberry Pi Setup](RASPBERRY-PI.md) and the [SoundTouch Service Guide](SOU
Open `http://<server>:8000` and go to the **Settings** tab.
![AfterTouch Settings tab](../images/ui-settings.png)
![AfterTouch Settings tab](/images/ui-settings.png)
Set the **Target Domain** to the address your speakers can reach — for example `https://soundtouch.fritz.box` or `http://192.0.2.100:8000`. This must be the host's address on your local network, not `localhost`.
@@ -120,13 +124,13 @@ Telnet-only migrations are limited to HTTP (no CA install possible without SSH).
The service scans for SoundTouch devices automatically every few minutes. Check the **Devices** tab in the web UI. If your speaker doesn't appear, click **Scan Again** to trigger an immediate scan, or enter the IP address manually and click **Add Device**.
![AfterTouch Devices tab showing discovered speakers](../images/ui-devices.png)
![AfterTouch Devices tab showing discovered speakers](/images/ui-devices.png)
### Sync
Once the speaker appears, click **Sync Data**. This connects to the speaker and pulls its current presets, recently played items, and configured sources into the local service's datastore. It also creates an off-device backup of the speaker's configuration.
![Data Sync tab showing a successful sync](../images/ui-sync.png)
![Data Sync tab showing a successful sync](/images/ui-sync.png)
Sync pulls the speaker's local state into AfterTouch's datastore, creating an off-device backup of its configuration. If you ran this before May 6, 2026, your account data from Bose's servers was also captured at that time.
@@ -136,7 +140,7 @@ Sync pulls the speaker's local state into AfterTouch's datastore, creating an of
Click **Migrate** next to a device on the Devices tab to open the Migration tab. The tab opens with a **Migration Summary** that shows where your speaker currently stands, then offers a one-click suggested plan and a fully customizable form underneath.
![Migration tab showing the state card and Plan card](../images/ui-migration.png)
![Migration tab showing the state card and Plan card](/images/ui-migration.png)
### What you see at the top — the state card
@@ -1,3 +1,7 @@
---
title: "Migration & Safety Guide"
---
# Migration & Safety Guide
Starting a migration on real hardware requires a "Safety First" approach. This guide outlines the safety features implemented in the `soundtouch-service` and provides a checklist for a successful migration.
@@ -1,3 +1,7 @@
---
title: "MQTT Integration Design for SoundTouch Service"
---
# MQTT Integration Design for SoundTouch Service
## Overview
@@ -1,3 +1,7 @@
---
title: "Connecting Music Services (Spotify & Amazon Music)"
---
# Connecting Music Services (Spotify & Amazon Music)
This guide explains how to link your Spotify or Amazon Music account to AfterTouch so your speakers can stream music from those services.
@@ -1,3 +1,7 @@
---
title: "On-Device Install Walkthrough"
---
# On-Device Install Walkthrough
A complete end-to-end runbook for installing AfterTouch directly on a
@@ -10,7 +14,7 @@ by [weissigera](https://github.com/weissigera) in
documenting a successful fresh installation on a SoundTouch 20 Series I.
For the installer reference and troubleshooting tips see
[scripts/on-device-install/README.md](../../scripts/on-device-install/README.md).
[scripts/on-device-install/README.md](https://github.com/gesellix/Bose-SoundTouch/blob/main/scripts/on-device-install/README.md).
---
@@ -293,4 +297,4 @@ should start playing the corresponding stream.
For more detail on any of these, see
[TROUBLESHOOTING.md](./TROUBLESHOOTING.md) and the
[on-device installer README](../../scripts/on-device-install/README.md).
[on-device installer README](https://github.com/gesellix/Bose-SoundTouch/blob/main/scripts/on-device-install/README.md).
@@ -1,3 +1,7 @@
---
title: "Raspberry Pi Installation Guide"
---
# Raspberry Pi Installation Guide
This guide explains how to install the `soundtouch-service` as a persistent systemd service on a Raspberry Pi (tested on Raspberry Pi Zero 2W, 3, and 4).
@@ -71,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](../../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.
@@ -1,3 +1,7 @@
---
title: "Self-Hosting AfterTouch"
---
# Self-Hosting AfterTouch
This guide walks you through running AfterTouch on your own computer or server. No programming knowledge required.
@@ -1,3 +1,7 @@
---
title: "SoundTouch Service"
---
# SoundTouch Service
The `soundtouch-service` is a comprehensive local server that emulates Bose's cloud services, enabling offline SoundTouch device operation and advanced debugging capabilities. This service is particularly valuable given Bose's announcement that cloud support will end in May 2026.
@@ -1,3 +1,7 @@
---
title: "Keeping Your Speakers Alive After the Bose Cloud Shutdown"
---
# Keeping Your Speakers Alive After the Bose Cloud Shutdown
Bose shut down SoundTouch cloud services on **May 6, 2026**. Per the [official end-of-life page](https://www.bose.com/soundtouch-end-of-life), the following no longer work:
@@ -1,3 +1,7 @@
---
title: "SoundTouch Troubleshooting Guide"
---
# SoundTouch Troubleshooting Guide
**Complete guide to diagnosing and fixing common SoundTouch Go client issues**
@@ -1,3 +1,7 @@
---
title: "/power_on Implementation Guide"
---
# /power_on Implementation Guide
## Overview
@@ -1,3 +1,7 @@
---
title: "SoundTouch `/storePreset` Implementation Guide"
---
# SoundTouch `/storePreset` Implementation Guide
## Overview
@@ -1,3 +1,7 @@
---
title: "SoundTouch API Cookbook"
---
# SoundTouch API Cookbook
**Real-world patterns, recipes, and best practices for the SoundTouch Go client**
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Web API - Endpoints Overview"
---
# Bose SoundTouch Web API - Endpoints Overview
This document provides a comprehensive overview of the available API endpoints verified against the official Bose SoundTouch Web API v1.0 specification (January 7, 2026).
@@ -1,3 +1,7 @@
---
title: "Bass Control Guide"
---
# Bass Control Guide
## Overview
@@ -420,7 +424,7 @@ soundtouch-cli -host <discovered-ip> -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](../../cmd/soundtouch-cli/main.go)** - CLI implementation reference
- **[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
## API Compliance
@@ -1,3 +1,7 @@
---
title: "Bose SoundTouch Cloud API Emulation (Marge/BMX/Stats)"
---
# Bose SoundTouch Cloud API Emulation (Marge/BMX/Stats)
This document describes the cloud-emulation APIs provided by the SoundTouch service. These APIs mimic the Bose cloud services (Marge, BMX, Stats) that SoundTouch devices and the SoundTouch controller application (Stockholm) interact with.
@@ -1,3 +1,7 @@
---
title: "SoundTouch Device WebSocket API — Pairing & Operation Flow"
---
# SoundTouch Device WebSocket API — Pairing & Operation Flow
Reference document derived from mitmproxy captures of the Bose SoundTouch Android app
@@ -1,3 +1,7 @@
---
title: "SoundTouch Device Discovery"
---
# SoundTouch Device Discovery
This document describes the various methods available for discovering Bose SoundTouch devices on your network.
@@ -1,3 +1,7 @@
---
title: "Feature Mapping Guide"
---
# Feature Mapping Guide
This guide demonstrates the comprehensive endpoint-to-feature mapping system that helps you understand exactly what your SoundTouch device can do and how to use it effectively.
@@ -1,3 +1,7 @@
---
title: "Key Control Implementation"
---
# Key Control Implementation
This document describes the implementation of the POST `/key` endpoint for media control commands in the Bose SoundTouch API client.
@@ -1,3 +1,7 @@
---
title: "Preset Management - Bose SoundTouch API"
---
# Preset Management - Bose SoundTouch API
This document covers preset management functionality in the Bose SoundTouch API client.
@@ -1,3 +1,7 @@
---
title: "Source Selection Guide"
---
# Source Selection Guide
## Overview
@@ -349,7 +353,7 @@ The implementation follows the official SoundTouch API:
- **[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
- **[Client Usage Examples](../../cmd/soundtouch-cli/main.go)** - CLI implementation reference
- **[Client Usage Examples](https://github.com/gesellix/Bose-SoundTouch/blob/main/cmd/soundtouch-cli/main.go)** - CLI implementation reference
---
@@ -1,3 +1,7 @@
---
title: "SoundTouch Speaker Endpoint Documentation"
---
# SoundTouch Speaker Endpoint Documentation
This document describes the implementation of the `/speaker` endpoint for Bose SoundTouch devices, which enables Text-To-Speech (TTS) notifications and URL content playback.
@@ -1,3 +1,7 @@
---
title: "System Endpoints Documentation"
---
# System Endpoints Documentation
This document provides comprehensive documentation for the system management endpoints in the Bose SoundTouch Go client library.
@@ -1,3 +1,7 @@
---
title: "Volume Control Implementation"
---
# Volume Control Implementation
This document describes the implementation of the GET/POST `/volume` endpoints for volume management in the Bose SoundTouch API client.
@@ -1,3 +1,7 @@
---
title: "WebSocket Events - Real-time SoundTouch Monitoring"
---
# WebSocket Events - Real-time SoundTouch Monitoring
This document describes the WebSocket event functionality for real-time monitoring of Bose SoundTouch devices.
@@ -1,3 +1,7 @@
---
title: "Zone Management - Multiroom SoundTouch Control"
---
# Zone Management - Multiroom SoundTouch Control
This document describes the comprehensive zone management functionality for controlling multiroom setups with Bose SoundTouch devices.
@@ -1,3 +1,7 @@
---
title: "Radio Browser"
---
## radio-browser.info
- https://www.radio-browser.info is a community driven radio station database.
@@ -1,3 +1,7 @@
---
title: "Spotify Account Addition Technical Reference"
---
# Spotify Account Addition Technical Reference
This document details the exact network requests performed by the Bose SoundTouch "Stockholm" application and the SoundTouch speaker when adding a new Spotify account. This information is based on analysis of the Stockholm firmware version `27.0.13-4277-8963611`.

Some files were not shown because too many files have changed in this diff Show More