Releases: scheilch/opencloudtouch
Releases · scheilch/opencloudtouch
OpenCloudTouch v1.1.0
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 Endpoint —
POST /api/setup/wizard/completepersistssetup_status = configuredin DB when wizard finishes
Changed
- Volume Slider — Replaced with DOM-direct RAF slider (A3) to eliminate drag lag;
onVolumeChangefires 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/hostsentries now always use numeric IP (resolved viasocket.gethostbyname); hostname likeherais 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
stabletag 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.yamlformat updated (see config.example.yaml)CT_*environment variables renamed toOCT_*- CORS defaults changed from
["*"]to explicit localhost origins
API Breaking Changes:
/api/devices/listrenamed to/api/devices- Device ID field changed from
idtodevice_id
Release Process
Releases are fully automated via GitHub Actions:
- Go to Actions → Release → Run workflow
- Enter version number (e.g.,
1.1.0) - 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
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.0Docker 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)
- Download the
.img.xzfile for your architecture (arm64 or armhf) from the assets below - Flash with Raspberry Pi Imager
- Boot -> OpenCloudTouch starts automatically on port 7777
- 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!