Skip to content

Releases: scheilch/opencloudtouch

OpenCloudTouch v1.1.0

22 Mar 16:51

Choose a tag to compare

Changelog

All notable changes to OpenCloudTouch are documented here.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.


[Unreleased]

No changes yet.


[1.1.0] - 2026-03-21

Added

  • Multi-Room Zone Management — Create, manage and dissolve speaker zones directly from the UI
  • Setup Status Badge — Gear icon on device cards shows live setup state (unknown/configured/outdated/failed/offline), persisted in DB
  • Health-Check Background Task — Periodic SSH verification to detect outdated or offline devices
  • Dual-Strategy Setup Wizard — Wizard auto-detects whether an HTTPS reverse proxy is available on port 443 and adapts the configuration strategy (hosts-only vs. BMX + hosts)
  • Wizard Completion EndpointPOST /api/setup/wizard/complete persists setup_status = configured in DB when wizard finishes

Changed

  • Volume Slider — Replaced with DOM-direct RAF slider (A3) to eliminate drag lag; onVolumeChange fires only on pointer-up
  • Preset UX — Overhauled with play button, overwrite confirmation dialog, and station logos
  • Setup Wizard — Removed guided/manual mode selector; wizard starts directly in guided mode renamed to "Geführte Installation"
  • UX Polish — Improved volume slider, delete button, cloud badge, info box
  • Multi-room zone card layout improved; master device correctly shown in zone member list

Fixed

  • BUG-03: /etc/hosts entries now always use numeric IP (resolved via socket.gethostbyname); hostname like hera is no longer written to hosts file
  • Zone master injection re-applied; master device perspective preferred in get_all_zones
  • Device card drag disabled to prevent accidental swipe-navigation
  • Zone card blue border removed
  • Slider drag lag eliminated by removing inline styles during drag

[1.0.0] - 2026-03-09

Added

  • Setup Wizard — Manual device configuration via SSH and USB stick
  • Raspberry Pi SD card images — Pre-built images for Pi 3/4/5 (arm64 + armhf)
  • Multi-arch Docker images — amd64, arm64, arm/v7
  • Upgrade guide (UPGRADING.md) — Version-to-version migration documentation
  • Documentation — Bilingual Wiki pages (DE/EN), API docs, Troubleshooting guide
  • Docker Compose deployment template
  • This changelog

Changed

  • Docker image now supports stable tag for production use
  • Pinned all dependencies to exact versions

Fixed

  • CORS configuration now uses explicit default origins instead of wildcard
  • SQLite index name collision between devices and presets tables
  • XML namespace handling in SSDP discovery
  • Database filename typo in config (ct.db → oct.db)
  • Pi-gen build compatibility for both arm64 and armhf architectures

Security

  • Container vulnerability scanning enabled
  • Automated dependency security updates

[0.2.0] - 2026-02-01

Added

  • SSDP device discovery for automatic SoundTouch detection
  • Preset management supporting slots 1-6
  • RadioBrowser.info integration for internet radio search
  • Manual device IP configuration for networks without multicast
  • Device swiper navigation for browsing multiple devices
  • Mock mode for local development without physical devices
  • Health check endpoint for container monitoring
  • Comprehensive test suite (348 backend + 260 frontend + 36 E2E tests)

Changed

  • Migrated from monolith to Clean Architecture
  • React UI rewritten with modern hooks and TypeScript
  • Switched from Flask to FastAPI for backend
  • Replaced synchronous HTTP with async httpx
  • Containerized deployment with Docker/Podman support

Fixed

  • Device synchronization race conditions
  • Preset loading reliability
  • WebSocket connection handling

[0.1.0] - 2026-01-15

Added

  • Initial release
  • Basic device listing via manual configuration
  • Basic web interface for device control
  • Docker deployment support

Known Issues

  • No automatic device discovery (manual IP configuration required)
  • Limited error handling in device communication
  • No preset management

Version History Summary

Version Date Description
1.0.0 2026-03-09 Setup Wizard (manual), Multi-arch Docker, RasPi images
0.2.0 2026-02-01 Major release: SSDP discovery, presets, radio search
0.1.0 2026-01-15 Initial release: basic device control

Upgrade Notes

Upgrading from 0.1.x to 0.2.x

Database Migration:

  • Database schema changed (added presets table)
  • Backup existing database: cp /data/oct.db /data/oct.db.backup
  • Restart container - schema migrations run automatically

Configuration Changes:

  • config.yaml format updated (see config.example.yaml)
  • CT_* environment variables renamed to OCT_*
  • CORS defaults changed from ["*"] to explicit localhost origins

API Breaking Changes:

  • /api/devices/list renamed to /api/devices
  • Device ID field changed from id to device_id

Release Process

Releases are fully automated via GitHub Actions:

  1. Go to Actions → Release → Run workflow
  2. Enter version number (e.g., 1.1.0)
  3. The workflow automatically:
    • Bumps version in all package files
    • Updates this CHANGELOG
    • Creates Git tag and GitHub Release
    • Builds and pushes Docker images (amd64, arm64, arm/v7)
    • Builds Raspberry Pi SD card images
    • Attaches all artifacts to the release

See UPGRADING.md for version-specific migration guides.


Maintained by: OpenCloudTouch Contributors
License: Apache License 2.0
Repository: https://github.com/scheilch/opencloudtouch

OpenCloudTouch v1.0.0

09 Mar 16:49

Choose a tag to compare

OpenCloudTouch v1.0.0

Local control for Bose SoundTouch devices after the cloud shutdown.

Highlights

  • Manual device setup Configure SoundTouch speakers via USB stick and SSH
  • Multi-arch Docker amd64, arm64, arm/v7 on GHCR
  • Raspberry Pi Images Pre-built SD card images for Pi 3/4/5 (arm64 + armhf)
  • Documentation Bilingual Wiki (DE/EN) with setup guides and troubleshooting

Features

  • SSDP device discovery for automatic SoundTouch detection
  • Preset management supporting slots 1-6
  • RadioBrowser.info integration for internet radio search (30,000+ stations)
  • Manual device IP configuration for networks without multicast
  • Device swiper navigation for multiple devices
  • Web UI optimized for desktop and mobile
  • Health check endpoint for container monitoring

Bug Fixes

  • CORS configuration uses explicit default origins instead of wildcard
  • SQLite index name collision between devices and presets tables
  • XML namespace handling in SSDP discovery
  • Database filename typo in config (ct.db -> oct.db)

Security

  • Container vulnerability scanning enabled
  • Automated dependency security updates

Installation

Docker (recommended)

# Pull the latest stable release
docker pull ghcr.io/scheilch/opencloudtouch:stable

# Or pull this specific version
docker pull ghcr.io/scheilch/opencloudtouch:1.0.0

# Run the container
docker run -d \
  --name opencloudtouch \
  --network host \
  -v opencloudtouch-data:/data \
  -e OCT_DISCOVERY_ENABLED=true \
  ghcr.io/scheilch/opencloudtouch:1.0.0

Docker Compose

services:
  opencloudtouch:
    image: ghcr.io/scheilch/opencloudtouch:1.0.0
    container_name: opencloudtouch
    restart: unless-stopped
    network_mode: host
    volumes:
      - oct-data:/data
    environment:
      - OCT_DISCOVERY_ENABLED=true
      - OCT_LOG_LEVEL=INFO

volumes:
  oct-data:

Raspberry Pi (SD-Card Image)

  1. Download the .img.xz file for your architecture (arm64 or armhf) from the assets below
  2. Flash with Raspberry Pi Imager
  3. Boot -> OpenCloudTouch starts automatically on port 7777
  4. Default credentials: oct / opencloudtouch

Supported Architectures

Architecture Platform Example Devices
amd64 x86_64 Desktop, Server, NAS
arm64 aarch64 Raspberry Pi 4/5, Apple Silicon
arm/v7 armhf Raspberry Pi 2/3

Resources

First stable release of OpenCloudTouch!