Releases: gesellix/Bose-SoundTouch
Release list
v0.129.0
Noteworthy
- Fixed a race that could silently drop a preset or recent when several
were stored back-to-back (#614). Storing a preset or recent used to
read the full list, change one entry, and write the whole list back as
three separate, unguarded steps. Two overlapping stores (for example, a
script or app writing several presets in quick succession) could each
read the same starting list and then clobber each other's write,
silently losing whichever one saved second. All read-modify-write paths
for presets, recents, and configured sources now go through a single
atomic update instead. - Data Sync no longer silently overwrites presets or recents with an
incomplete live snapshot (#614). Clicking Sync used to copy whatever
the speaker's own local API reported at that instant straight into
AfterTouch's datastore, with no check against what was already stored:
if the speaker's own cache was momentarily stale or incomplete (right
after a burst of writes, or shortly after a reboot), Sync would happily
persist that bad snapshot over good data. Sync now compares a fresh
live fetch against what's stored first; if applying it would remove
anything, it asks for confirmation instead of silently applying it, and
the Admin UI shows exactly what would be removed. The original
plain-reboot report, where AfterTouch's own stored data stayed correct
the whole time, is a separate issue and is still open.
Smaller changes
- Bumped the Go toolchain to 1.27.0 across the main module, both example
modules, and the Docker build image. - Dependency updates:
github.com/go-chi/chi/v55.3.1 → 5.3.2,
github.com/miekg/dns1.1.72 → 1.1.73. - Fixed a stale
golangci-lintinstall hint pointing at the v1 module
path (silently installs the latest v1.x instead of v2.x, which this
project's config requires) and refreshed an internal route-naming test
snapshot after the Go 1.27 bump. No behavior change.
What's Changed
- deps(deps): bump github.com/miekg/dns from 1.1.72 to 1.1.73 by @dependabot[bot] in #638
- deps(deps): bump github.com/go-chi/chi/v5 from 5.3.1 to 5.3.2 by @dependabot[bot] in #639
- ci(deps): bump docker/setup-buildx-action from 4.2.0 to 4.3.0 in the setup-actions group by @dependabot[bot] in #640
- docker(deps): bump golang from 1.26.6-alpine to 1.27.0-alpine by @dependabot[bot] in #637
- fix(datastore): close preset/recent/source lost-update race (#614) by @gesellix in #641
- fix(setup): require confirmation before Sync would shrink stored data (#614) by @gesellix in #642
- Bump Golang to 1.27.0 by @gesellix in #643
Full Changelog: v0.128.0...v0.129.0
Quick downloads
Most people only need one of these two:
soundtouch-service — the local server that replaces the Bose cloud. Point your speaker at it and you keep full control; the built-in web UI on port 8000 handles setup.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-service-v0.129.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-service-v0.129.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-service-v0.129.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-service-v0.129.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-service-v0.129.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-service-v0.129.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-service-v0.129.0-freebsd-amd64 | sha256 |
soundtouch-cli — command-line control of any device: playback, presets, sources, multiroom zones, discovery, and migration. Good for scripting and home automation.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-cli-v0.129.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-cli-v0.129.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-cli-v0.129.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-cli-v0.129.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-cli-v0.129.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-cli-v0.129.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-cli-v0.129.0-freebsd-amd64 | sha256 |
Everything else (soundtouch-player, soundtouch-backup, other platforms, Docker, install scripts): Downloads page.
v0.128.0
Noteworthy
- Speakers paired outside AfterTouch (e.g. via the USB-stick SSH-enable
method) are no longer silently dropped during discovery (#634). Some
third-party or manual pairing tools assign amargeAccountUUIDthat
isn't Bose's usual 7-digit numeric ID (one reporter's speaker came back
withstick@local). AfterTouch rejected anything outside that numeric
format as an "invalid account ID" and never saved the device, with no
error visible anywhere in the UI. Account IDs are now accepted as long
as they're safe to store and use internally, so the device saves under
its real reported account instead of disappearing.
Smaller changes
- Hardened account/device ID handling in the admin web UI, the diagnostic
export, and health-check logging (input validation and output escaping)
as part of the #634 fix above. - Added logging for two previously-silent cases where a speaker's
Presets.xml or Recents.xml read back empty despite an intact on-disk
file, to help track down a reported preset-wipe issue (#614). No
behavior change; the underlying trigger is still open.
What's Changed
- fix(datastore): log previously-silent empty-preset/recent reads (#614) by @gesellix in #633
- fix(setup): accept non-numeric account IDs reported by third-party pairing tools by @gesellix in #636
Full Changelog: v0.127.0...v0.128.0
Quick downloads
Most people only need one of these two:
soundtouch-service — the local server that replaces the Bose cloud. Point your speaker at it and you keep full control; the built-in web UI on port 8000 handles setup.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-service-v0.128.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-service-v0.128.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-service-v0.128.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-service-v0.128.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-service-v0.128.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-service-v0.128.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-service-v0.128.0-freebsd-amd64 | sha256 |
soundtouch-cli — command-line control of any device: playback, presets, sources, multiroom zones, discovery, and migration. Good for scripting and home automation.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-cli-v0.128.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-cli-v0.128.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-cli-v0.128.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-cli-v0.128.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-cli-v0.128.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-cli-v0.128.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-cli-v0.128.0-freebsd-amd64 | sha256 |
Everything else (soundtouch-player, soundtouch-backup, other platforms, Docker, install scripts): Downloads page.
v0.127.0
Noteworthy
- Fixed speakers stuck on "install the Bose app" after a full
migration, even when already reachable, named, and account-paired
(#615). Only a full pass through the WebSocket setup state machine
clearsSOUNDTOUCH_NOT_CONFIGURED, but running that unconditionally
risked re-running the setup bracket on speakers that don't need or
support it.setup pair --mode=fullnow checks/supportedURLsand
/soundTouchConfigurationStatusfirst: an already-configured device
is a no-op, and an unsupported route or an unrecognised status value
aborts instead of guessing. - Release notes now link straight to each platform's download and
checksum, one row per OS/arch forsoundtouch-serviceand
soundtouch-cli, instead of sending you through the flat,
alphabetical Assets list below. Everything else (soundtouch-player,
soundtouch-backup, other platforms, Docker, install scripts) is
still on the Downloads page.
What's Changed
- fix(setup): gate setup pair --mode=full on configuration status (#615) by @gesellix in #629
- ci(deps): bump the codeql-action group with 3 updates by @dependabot[bot] in #630
- feat(release): add real per-platform download links to release notes by @gesellix in #631
Full Changelog: v0.126.0...v0.127.0
Quick downloads
Most people only need one of these two:
soundtouch-service — the local server that replaces the Bose cloud. Point your speaker at it and you keep full control; the built-in web UI on port 8000 handles setup.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-service-v0.127.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-service-v0.127.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-service-v0.127.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-service-v0.127.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-service-v0.127.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-service-v0.127.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-service-v0.127.0-freebsd-amd64 | sha256 |
soundtouch-cli — command-line control of any device: playback, presets, sources, multiroom zones, discovery, and migration. Good for scripting and home automation.
| Platform | Download | Checksum |
|---|---|---|
| Raspberry Pi (64-bit) / ARM64 Linux | soundtouch-cli-v0.127.0-linux-arm64 | sha256 |
| Raspberry Pi (32-bit) / ARMv7 | soundtouch-cli-v0.127.0-linux-armv7 | sha256 |
| Linux (64-bit PC) | soundtouch-cli-v0.127.0-linux-amd64 | sha256 |
| macOS (Apple Silicon) | soundtouch-cli-v0.127.0-darwin-arm64 | sha256 |
| macOS (Intel) | soundtouch-cli-v0.127.0-darwin-amd64 | sha256 |
| Windows (64-bit) | soundtouch-cli-v0.127.0-windows-amd64.exe | sha256 |
| FreeBSD (64-bit) | soundtouch-cli-v0.127.0-freebsd-amd64 | sha256 |
Everything else (soundtouch-player, soundtouch-backup, other platforms, Docker, install scripts): Downloads page.
v0.126.0
Noteworthy
- Fixed
statsServerUrl/bmxRegistryUrlpermanently sticking to stale
values after an SSH-XML migration, surviving even a reboot (#621). The
post-migration telnet resync only re-appliedmargeServerUrl/swUpdateUrl
before committing, but that commit persists whatever is currently in
the runtime layer for all four URL fields, not just the two it was given.
With stats/bmx left stale in the runtime layer at that moment, the commit
froze them there permanently; nothing short of a factory reset previously
cleared it. All four fields are now resynced before the commit. - Fixed "No space left on device" during on-device updates (#621). The
installer only pruned old binary backups after a fully successful update.
If a previous attempt died partway (e.g. from running low on space in the
first place), its backup was never cleaned up, and low space is exactly
what makes the next attempt likely to fail the same way. Pruning now also
runs before the download, so a stuck device can recover on its own instead
of needing a manualrm. - Migrate tab: changing Target Domain now updates the four service URL
fields automatically (#621). Previously, setting Target Domain to a new
value (e.g.localhostfor an on-device install) correctly flagged a URL
mismatch but leftmargeServerUrl/statsServerUrl/swUpdateUrl/
bmxRegistryUrlunchanged, forcing a manual edit of all four. Hand-edited
fields are still left alone. - Migration tab actions are now reachable without expanding anything
(#621). Reboot, Revert to Defaults, and Enable/Disable SSH used to live
behind a collapsed "Customize this migration" section, requiring an
expand and a scroll past several fieldsets to reach. They're now always
visible: Reboot/Revert in a "Speaker controls" row, and Enable/Disable SSH
inline with the SSH status row. The CA/TLS status and HTTPS Connection
Test panel also now say whether they're actually relevant to your current
plan: the default Suggested Plan runs over plain HTTP and never needs
either, but previously always showed a red "not installed" warning
regardless.
Smaller changes
- Documented that the SoundTouch 30 Series III uses the same factory-reset
button combo as the original ST30, and that checking a newly-installed
version right after an on-device update can still show stale info until
the speaker (or an open Admin UI tab) is rebooted. - Removed the Go Report Card badge from the README; the linked report was
no longer meaningful for this project.
What's Changed
- deps(deps): bump the golang group with 3 updates by @dependabot[bot] in #625
- fix(setup,admin-ui,install): three bugs from #621 follow-up feedback by @gesellix in #626
- docs(readme): remove obsolete Go Report Card badge by @gesellix in #627
- fix(admin-ui): make Migration tab actions consistently reachable by @gesellix in #628
Full Changelog: v0.125.1...v0.126.0
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.125.1
Noteworthy
- Migrate tab: "Apply Suggested Plan" no longer blocks itself on a correct on-device
localhostsetup. Its four URL fields unconditionally rejected the hostnamelocalhostwith no awareness of on-device vs. multi-device installs, so a fresh on-device install (whose Server URL now correctly defaults tohttp://localhost:8000, since #546/v0.125.0) loaded the Migrate tab with Apply/Pre-flight disabled by default, before doing anything. A loopback value is now accepted when it matches the plan's own Target URL; a straylocalhosttyped in while Target URL is a real LAN address (the actual mistake this check exists to catch) is still flagged.
Smaller changes
- Documented that saving Settings' Target Domain never pushes the new address to an already-migrated speaker — only a fresh Migrate does, for either migration method. See Troubleshooting: Changing Target Domain doesn't change what a speaker actually uses.
Full Changelog: v0.125.0...v0.125.1
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.125.0
Noteworthy
- On-device installs no longer leak the speaker's own hostname into
BMX/TLS URLs (#546).soundtouch-serviceused to default its own
Server URL to the machine's hostname when none was set. On an on-device
install that machine is the speaker, so the "hostname" is its internal
variant codename (e.g.spotty,mojo) — never resolvable, not even by
the speaker itself, breaking TuneIn/BMX playback with aCURL ErrorCode 6. A new--deployment-mode/DEPLOYMENT_MODEsetting
(on-device/private-network/public-network) makes the fallback
deliberate instead of guessed: on-device now defaults tolocalhost,
and the on-device installer sets this automatically — no manual Settings
step needed on a fresh or freshly-updated install. Existing installs
that already have a Server URL saved still need a one-time manual fix
(Settings tab, then re-run Migrate); this only prevents the bad default
from being written going forward. - Reach on-device AfterTouch from the LAN without an SSH tunnel (#196).
Some SoundTouch chassis only relay a fixed set of Bose's own ports to
the main Linux SoC from outside the device — AfterTouch's:8000was
never on that list, so LAN clients silently couldn't reach it, and the
only documented workaround was an SSH tunnel. The installer now
auto-detects affected speakers and redirects a spare Bose port
(:17008, the now-dead software-update listener) to AfterTouch, so
http://<speaker-ip>:17008just works. Configurable via
AFTERTOUCH_LAN_PORTinaftertouch.confif you'd rather disable it or
pick a different port. See the new
Model Support Matrix
for which chassis need this. aftertouch.confnow configures the on-device daemon generally, not
just the LAN port. Every line in it is exported into the daemon's own
environment, so any env varsoundtouch-servicereads (MGMT_USERNAME,
MGMT_PASSWORD, etc.) can be set there and picked up on
/etc/init.d/aftertouch restart— no more editing the init script by
hand for on-device configuration.- New
soundtouch-cli setup sync/setup revertcommands — the same
operations as the Admin UI's Devices → Sync Data and Migrate → Revert to
Defaults buttons, now scriptable.setup migratealso gained
--marge-url/--stats-url/--sw-update-url/--bmx-urloverrides, for
pointing a speaker's individual URLs anywhere (including back to the
genuine Bose cloud) via a single telnet call. - Fixed a real-hardware dial storm in "Revert to Defaults." Reverting
a migration made up to 17 separate SSH connections to the speaker in
rapid succession, which could overwhelm it. SSH connections are now
reused across the whole revert operation. - Fixed on-device upgrades/downgrades not actually replacing the running
service. Three stacked init-script bugs meant a new binary could land
on disk correctly while the old process kept running (and answering
requests) indefinitely afterward. Re-running the installer now reliably
restarts into the new binary.
Smaller changes
- Fixed
VERSION=X curl ... | shsilently failing to pin an install
version — the env var never reached the right process in a pipe;
install docs andinstall.shnow set it correctly (curl ... | VERSION=X sh). - Fixed two broken links to the Model Support Matrix in the docs.
What's Changed
- feat(on-device): LAN access without SSH tunnel, install/restart fixes, setup sync/revert by @gesellix in #619
- docs: fix two broken links to the model support matrix by @gesellix in #623
- fix(on-device): stop leaking the speaker's own hostname into BMX/TLS URLs by @gesellix in #624
Full Changelog: v0.124.0...v0.125.0
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.124.0
Noteworthy
-
New
update-checkcommand forsoundtouch-cliandsoundtouch-backup
(#591).soundtouch-servicehas had a periodic background update check
for a while, but that's no help if you only ever run the CLI or backup
tool standalone. Both binaries now have an on-demand
soundtouch-cli update-check/soundtouch-backup update-checkcommand:
a single GitHub Releases lookup, no--hostor device needed. Running the
command is itself the opt-in, so there's no config flag or persisted
state to manage. -
Preset-loss recovery on the Health tab, plus corrected guidance
(#614). A reporter found that on an on-device install, a speaker's
preset slots can get wiped to empty after a reboot or clicking "Sync",
while AfterTouch's own stored copy stays correct. Thespeaker_presets_count
health check's own advice used to suggest a power-cycle as the fix — that
turned out to be backwards, since a power-cycle is one of the reported
triggers; the wording is corrected. The warning now also offers two
one-click recovery options instead of re-entering presets by hand: a free
"try a sourcesUpdated nudge first" (asks the speaker to re-fetch its full
account data, which does include presets, though whether firmware
re-applies them locally isn't confirmed) and a "restore presets to
speaker" push (replays AfterTouch's stored presets onto the speaker's own
preset slots directly, no reboot needed). Root cause of the original wipe
is still under investigation.
Smaller changes
- Bumped the Go toolchain to 1.26.6 across the main module, both example
modules, the Docker build image, and the CI mock-service images. - Dependency updates:
golang.org/x/crypto0.54.0 → 0.55.0,
golang.org/x/mod0.38.0 → 0.39.0,golang.org/x/image0.44.0 → 0.45.0,
golang.org/x/text0.40.0 → 0.41.0.
What's Changed
- feat(cli): add on-demand update-check command to soundtouch-cli and soundtouch-backup by @gesellix in #611
- docs(cli): document the update-check command in CLI-REFERENCE.md by @gesellix in #612
- ci(deps): bump the codeql-action group with 3 updates by @dependabot[bot] in #613
- chore: bump Go to 1.26.6, refresh example go.mod pins by @gesellix in #617
- fix(health): preset-count guidance + restore/nudge QuickFixes for #614 by @gesellix in #616
- deps(deps): bump the golang group with 4 updates by @dependabot[bot] in #618
Full Changelog: v0.123.0...v0.124.0
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.123.0
Noteworthy
-
DLNA library discovery now also asks each paired speaker for the media
servers it can see, not just the SSDP sweep from the service host's own
network segment. A speaker's LAN can include DLNA/UPnP servers the service
host never sees (different VLAN, Wi-Fi segment, etc.). Results from every
paired speaker's/listMediaServersare merged into the sweep, deduped by
UDN, with unreachable speakers skipped silently. -
The opt-in GitHub update check (#591) can now be turned on/off and
retuned from the admin Settings page, without a restart. The background
check now polls its settings live, so a Settings-page change takes effect
within about a minute.UPDATE_CHECK_ENABLED/UPDATE_CHECK_INTERVAL
(env var or CLI flag) remain the seed value for a fresh install that has no
settings.jsonyet. -
Duration fields in the admin Settings page (Discovery Interval, and the
new Update Check interval) now have an inline (ⓘ) syntax help toggle,
explaining Go's24h/90m/1h30m-style duration format instead of
leaving it to guesswork. -
Fixed the Player UI's announcement dismiss button showing the literal
text×instead of a×. The admin UI builds that button from an
HTML string, where the browser decodes the entity; the Player UI's
Preact/htmtemplates insert it as a text node instead, which never
decodes entities, so the literal characters showed up on screen.
What's Changed
- test(marge): source XML shape guard; feat(library): speaker-side media server discovery by @gesellix in #607
- fix(player): render literal x instead of HTML entity for dismiss button by @gesellix in #608
- feat(admin): live Settings-page toggle for the opt-in update check by @gesellix in #609
Full Changelog: v0.122.1...v0.123.0
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.122.1
Noteworthy
-
Speaker error messages now include the actual error name, not just a bare number. Some firmware error responses (e.g.
SOURCE_ALREADY_REMOVED) restate the numeric value as the message text, so callers previously only ever saw something like"1047".DeviceError.Error()now surfaces thenameattribute whenever it carries more information than the message, e.g.SOURCE_ALREADY_REMOVED (1047). -
TuneIn requests with whitespace-only IDs are now rejected instead of silently accepted.
stationID,podcastID,encoded_name, the searchq, andcursorare trimmed before the existing empty-string checks run, closing a gap where a value of just spaces slipped past validation. -
Follow-up corrections to the
enable-sshtelnet-unlock work from v0.122.0 (#471, #515): further community hardware testing retracted the earlier claim that the inter-command delay itself was necessary — the real gate turned out to be whether the device is already paired (already handled automatically since v0.122.0).--command-delay's default is lowered from 5s to 3s accordingly. Thegetpdoverification output printed duringenable-sshand telnet migration is now labeled as reflecting the pre-reboot runtime layer only, so a clean-looking readout is no longer mistaken for proof the configuration will survive a reboot.
What's Changed
- fix: TuneIn param trimming + surface DeviceError name attribute by @gesellix in #605
- docs(telnet): correct envswitch/getpdo claims from #515/#471 measurements by @gesellix in #606
Full Changelog: v0.122.0...v0.122.1
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/
v0.122.0
Noteworthy
-
Optional update check for new releases. AfterTouch can now periodically
check GitHub Releases for a newer version and show a dismissible notice in
the admin UI and Player when one is found, linking straight to the release
notes. It's off by default — this is the only network call AfterTouch
makes beyond speaker/provider traffic, so it stays opt-in. Enable with
UPDATE_CHECK_ENABLED=true/--update-check-enabled; interval defaults to
24hviaUPDATE_CHECK_INTERVAL/--update-check-interval. One
unauthenticatedGETper interval toapi.github.com, nothing else leaves
the box. (#591) -
Announcement banners can now carry a real link, not just a raw URL
pasted into the message text — used by both the update-check notice above
and the existing admin-area-login notice (#419). -
enable-ssh --full-configgained a configurable pause between its
commands (--command-delay, default 5s), and now prints an upfront
estimate of the total injection time so the command doesn't look hung. A
real device left sshd down after reboot when the same 6 commands were sent
back-to-back, but succeeded when sent one at a time with a few seconds
between each — same device, same order, minutes apart. (#515) -
enable-sshnow pairs an unpaired (factory-reset) device before running
the injection. On a device with nomargeAccountUUIDset yet, the
speaker reportedly never pollsmargeServerUrlat all, so the injection
would have no read cycle to fire on. Pairing an unpaired device is
harmless, so this runs by default; skip it with--no-auto-pair, or pin a
specific account with--accountinstead of getting a random generated
one. (#515) -
setup ssh-check's failure message no longer tells you SSH-enable is
impossible on your firmware. It previously claimed the telnet commands
needed to enable SSH were removed on FW 27.x — flatly contradicted by
setup enable-ssh, which exists specifically to bootstrap SSH on those
firmwares. The message now points atenable-sshfirst, with a USB stick
as the fallback for stubborn devices. (#598) -
New troubleshooting guidance for Lifestyle/CineMate console systems.
These consoles have inputs (Blu-ray, HDMI, etc.) that live outside
SoundTouch entirely, and aPOWERkey press between test attempts puts
them into standby and back to their own input on waking — unlike a plain
speaker, where it's a harmless stop. A test loop that powers the console
between trials can silently drop off SoundTouch after the first attempt,
making every later source reportINVALID_SOURCEregardless of whether it
would actually have played. (#597)
What's Changed
- feat(update-check): opt-in periodic check against GitHub Releases (#591) by @gesellix in #599
- feat(announcements): support a proper link in announcement banners by @gesellix in #600
- docs/fix: Lifestyle console guidance, ssh-check message, configurable enable-ssh delay by @gesellix in #601
- ci(docs): treat non-404 4xx link-check failures as warnings by @gesellix in #602
- feat(cli): auto-pair unpaired devices before enable-ssh; bump default delay to 5s by @gesellix in #603
Full Changelog: v0.121.0...v0.122.0
📦 Downloads / installation: https://gesellix.github.io/Bose-SoundTouch/docs/downloads/