Skip to content

v0.129.0

Latest

Choose a tag to compare

@gesellix gesellix released this 23 Aug 12:54
· 10 commits to main since this release

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/v5 5.3.1 → 5.3.2,
    github.com/miekg/dns 1.1.72 → 1.1.73.
  • Fixed a stale golangci-lint install 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.