Skip to content
Feature Development History

Feature Development History

Feature Development History

This document tracks the detailed evolution of features and capabilities in the Bose SoundTouch API client library.

Development Timeline

Phase 1: Foundation (January 2026)

Core HTTP Client

  • HTTP Client with XML Support: Complete client implementation for SoundTouch Web API
  • XML Model System: Comprehensive typed models for all API responses
  • Error Handling: Robust error handling with contextual error messages
  • Configuration Management: Flexible configuration via environment variables and config files

Basic Device Control

  • Device Information: /info endpoint for device details and capabilities
  • Device Name: /name endpoint for device identification
  • Device Capabilities: /capabilities endpoint for feature detection
  • Now Playing Status: /now_playing endpoint for current playback information

Initial CLI Tool

  • Basic command-line interface for testing API functionality
  • Device connectivity testing
  • Simple information retrieval commands

Phase 2: Media Control & Discovery (January 2026)

Media Controls

  • Key Commands: Complete implementation of /key endpoint
    • Play, pause, stop, track navigation
    • Volume up/down via key presses
    • Preset selection (1-6)
    • Power and mute controls
    • Proper press+release pattern implementation
  • Volume Management: /volume GET/POST endpoints
    • Direct volume setting (0-100)
    • Incremental volume control
    • Safety features and validation warnings
    • Volume level categorization (quiet, medium, loud, very loud)

Device Discovery

  • UPnP/SSDP Discovery: Automatic device discovery using Universal Plug and Play
  • Device Caching: TTL-based caching for improved performance
  • CLI Discovery Commands: Device discovery integration in CLI tool

Enhanced CLI

  • Host:Port Parsing: Support for device:port format in CLI
  • Comprehensive Commands: Full coverage of implemented endpoints
  • Interactive Features: Better user experience with formatted output

Phase 3: Advanced Audio Controls (January 2026)

Audio Management Trilogy

  • Bass Control: /bass GET/POST endpoints
    • Range validation (-9 to +9)
    • Incremental bass adjustment
    • Device capability detection via /bassCapabilities
    • Safety limits and user warnings
  • Balance Control: /balance GET/POST endpoints
    • Stereo balance adjustment (-50 to +50)
    • Left/right channel convenience methods
    • Balance centering functionality
    • Device-dependent feature (not all devices support balance)

Source Selection

  • Source Management: /sources GET and POST /select endpoints
  • Convenience Methods: Direct source selection helpers
    • SelectSpotify() - Switch to Spotify
    • SelectBluetooth() - Switch to Bluetooth
    • SelectAux() - Switch to AUX input
    • SelectTuneIn() - Switch to TuneIn radio
    • SelectPandora() - Switch to Pandora
  • Source Validation: Comprehensive source availability checking
  • Account Management: Support for multi-account sources (Spotify, etc.)

Preset Management (Read-Only)

  • Preset Analysis: Complete preset configuration analysis
  • Helper Methods: Preset management utilities
    • GetNextAvailablePresetSlot() - Find empty preset slots
    • IsCurrentContentPresetable() - Check if content can be saved as preset
    • Preset categorization and filtering
  • API Limitation Documentation: Clarified that POST /presets is officially N/A

Phase 4: System Features (January 2026)

Clock and Display Management

  • Clock Time: /clockTime GET/POST endpoints
    • Get/set device time
    • SetClockTimeNow() convenience method
    • Time format handling
  • Clock Display: /clockDisplay GET/POST endpoints
    • Display enable/disable
    • Brightness control (low/medium/high)
    • 12/24 hour format selection
    • Convenience methods for common operations

Network Information

  • Network Info: /networkInfo GET endpoint
  • **Network connectivity details and diagnostics

Enhanced Discovery

  • mDNS/Bonjour Discovery: Multicast DNS device discovery
  • Unified Discovery Service: Combined UPnP + mDNS + configured devices
  • Multiple Discovery Protocols: Fallback discovery methods for different network environments
  • Corporate Network Support: Discovery options for restricted networks

Phase 5: Real-time Events (January 2026)

WebSocket Implementation

  • WebSocket Client: Complete WebSocket implementation for real-time events
  • Event System: Comprehensive event type support
    • NowPlayingUpdated - Track changes, playback status
    • VolumeUpdated - Volume and mute status changes
    • ConnectionStateUpdated - Network connectivity
    • PresetUpdated - Preset configuration changes
    • ZoneUpdated - Multiroom zone changes
    • BassUpdated - Bass level adjustments
    • SdkInfoUpdated - Server version information
    • UserActivityUpdated - User interaction notifications

Connection Management

  • Auto-Reconnection: Automatic reconnection with exponential backoff
  • Connection Monitoring: Real-time connection state tracking
  • Error Recovery: Robust error handling and recovery mechanisms
  • Event Filtering: Subscribe to specific event types

WebSocket CLI Integration

  • Real-time Monitoring: Live event streaming in CLI
  • Event Filtering: Command-line event type filtering
  • Formatted Output: Human-readable event display
  • Demo Applications: WebSocket demonstration tools

Phase 6: Multiroom Zone Management (January 2026)

Zone Operations

  • Zone Information: /getZone GET endpoint
    • Current zone configuration retrieval
    • Master/slave device identification
    • Zone membership queries
  • Zone Management: /setZone POST endpoint
    • Zone creation with multiple devices
    • Add devices to existing zones
    • Remove devices from zones
    • Dissolve zones completely

High-Level Zone API

  • Fluent API: Easy-to-use zone management methods
    • CreateZone() - Create multiroom zones
    • AddToZone() - Add devices to existing zones
    • RemoveFromZone() - Remove devices from zones
    • DissolveZone() - Break up zones
  • Zone Status: Zone membership and status queries
    • IsInZone() - Check if device is in a zone
    • GetZoneStatus() - Get zone configuration
    • GetZoneMembers() - List all zone members

Low-Level Zone API

  • Zone Slave Management: Direct slave operations
    • /addZoneSlave POST endpoint
    • /removeZoneSlave POST endpoint
    • Device ID and IP-based operations

Validation and Safety

  • IP Validation: Comprehensive IP address validation
  • Duplicate Detection: Prevent duplicate zone members
  • Error Handling: Specific zone-related error types
  • Zone Builder: Fluent API for zone construction

Phase 7: Advanced Audio Controls (January 2026)

Professional Audio Features

  • DSP Audio Controls: /audiodspcontrols GET/POST endpoints
    • Audio mode switching (movie, music, dialogue, etc.)
    • Video sync delay adjustment
    • DSP parameter configuration
  • Advanced Tone Controls: /audioproducttonecontrols GET/POST endpoints
    • Professional-grade bass and treble adjustment
    • Extended range beyond basic /bass endpoint
    • Fine-grained audio tuning
  • Speaker Level Controls: /audioproductlevelcontrols GET/POST endpoints
    • Individual speaker level adjustment
    • Front-center speaker level control
    • Rear-surround speakers level control
    • Multi-channel audio management

Device Capability Integration

  • Automatic Capability Detection: Check device capabilities before feature access
  • Conditional Feature Availability: Features only available on compatible devices
  • Graceful Degradation: Fallback to basic controls when advanced features unavailable

Phase 8: Speaker Notification System (February 2026)

Notification Features

  • Text-to-Speech (TTS): /speaker POST endpoint for TTS messages
    • Multi-language support (EN, DE, ES, FR, IT, NL, PT, RU, ZH, JA, etc.)
    • Google TTS integration with URL encoding
    • Custom volume control with automatic restoration
    • Configurable service metadata for NowPlaying display
  • URL Audio Playback: /speaker POST endpoint for URL content
    • HTTP/HTTPS audio content playback
    • Custom metadata support (service, message, reason fields)
    • Volume control with automatic restoration
    • Content interruption and resume functionality
  • Notification Beep: /playNotification GET endpoint
    • Simple double beep notification sound
    • Content pause/resume during notification
    • Quick connectivity testing

Smart Home Integration

  • Home Automation Support: Perfect for smart home notifications
    • Doorbell alerts with custom TTS messages
    • Security system integration with audio alerts
    • IoT device status announcements
  • Emergency Notifications: High-priority alert system
    • Volume override for critical alerts
    • Custom audio content for specific scenarios
    • Zone-wide notifications for multiroom setups

Device Compatibility

  • ST-10 Series Support: Primary compatibility with ST-10 (Series III) speakers
  • Device Detection: Automatic capability checking
  • Error Handling: Graceful degradation for unsupported devices
  • Volume Management: Intelligent volume restoration

CLI Integration

  • Comprehensive Commands: Full CLI support for all notification types
    • speaker tts - Text-to-speech with language options
    • speaker url - URL content playback with metadata
    • speaker beep - Simple notification beep
    • speaker help - Detailed functionality guide
  • Parameter Validation: Complete input validation and error handling
  • Usage Examples: Extensive real-world usage examples

Phase 9: Bug Fixes and Stability (February 2026)

Critical Bug Fixes

  • PlayNotificationBeep HTTP Method Fix: Corrected /playNotification endpoint to use GET instead of POST
    • Issue: go run ./cmd/soundtouch-cli --host <device> sp beep was failing with HTTP 400 status
    • Root Cause: Go client was sending POST requests while SoundTouch devices expect GET requests
    • Fix: Updated PlayNotificationBeep() method to use the existing c.get() method with StationResponse model
    • Verification: Tested with SoundTouch 20, confirmed compatibility with curl equivalent (curl http://<device>:8090/playNotification)

Code Quality Improvements

  • Consistent HTTP Method Usage: Leveraged existing client patterns instead of manual HTTP handling
  • Model Reuse: Used existing StationResponse struct for /playNotification XML response parsing
  • Documentation Updates: Added troubleshooting guide for speaker notification issues

Feature Implementation Statistics

API Endpoint Coverage Evolution

PhaseEndpoints AddedCumulative TotalCompletion %
Phase 14415%
Phase 261038%
Phase 381869%
Phase 432181%
Phase 512285%
Phase 622492%
Phase 732796%
Phase 8229100%
Phase 9029100% (Bug fixes)

Testing Evolution

Unit Test Coverage

  • Phase 1: Basic HTTP client tests (25 tests)
  • Phase 2: Media control and discovery tests (75 tests)
  • Phase 3: Audio control tests (125 tests)
  • Phase 4: System feature tests (150 tests)
  • Phase 5: WebSocket event tests (200 tests)
  • Phase 6: Zone management tests (250 tests)
  • Phase 7: Advanced audio tests (300+ tests)
  • Phase 8: Speaker notification tests (330+ tests)
  • Phase 9: Bug fix verification tests (335+ tests)

Integration Test Coverage

  • Real Device Testing: SoundTouch 10 and SoundTouch 20
  • Network Scenario Testing: Various network configurations
  • Error Scenario Testing: Device offline, network timeouts
  • Cross-Platform Testing: Windows, macOS, Linux

CLI Tool Evolution

Command Categories Added by Phase

  • Phase 1: info, name, capabilities
  • Phase 2: discover, play, volume, key
  • Phase 3: bass, balance, source, presets
  • Phase 4: clock, network
  • Phase 5: events
  • Phase 6: zone
  • Phase 7: Advanced audio commands
  • Phase 8: speaker (TTS, URL, beep notifications)
  • Phase 9: Bug fixes (speaker beep reliability)

CLI Feature Enhancements

  • Host:Port Parsing: Support for 192.0.2.100:8090 format
  • Auto-Discovery Integration: Seamless device discovery
  • Formatted Output: Human-readable, structured output
  • Error Handling: Comprehensive error messages and recovery suggestions
  • Help System: Comprehensive help and examples

Technical Achievements

Architecture Milestones

  • Clean Package Structure: Well-organized pkg/ architecture
  • Interface-Based Design: Testable and mockable components
  • Error Handling: Comprehensive error types and contextual messages
  • Configuration System: Flexible configuration via files and environment variables

Performance Optimizations

  • Device Caching: TTL-based caching for discovery performance
  • Connection Pooling: Efficient HTTP connection management
  • WebSocket Efficiency: Optimized real-time event handling
  • Memory Management: Efficient XML parsing and model handling

Cross-Platform Support

  • Multi-OS Compatibility: Windows, macOS, Linux support
  • Build System: Comprehensive Makefile with cross-compilation
  • Docker Support: Containerized deployment options
  • WASM Preparation: Foundation for browser integration

User Experience Improvements

Safety Features

  • Volume Warnings: Warnings for high volume levels
  • Input Validation: Comprehensive input range validation
  • Error Recovery: Graceful handling of network issues
  • User Feedback: Clear status messages and progress indicators

Convenience Features

  • Auto-Discovery: Automatic device finding
  • Preset Analysis: Intelligent preset management
  • Source Shortcuts: Direct source selection methods
  • Zone Management: High-level multiroom operations

Documentation Evolution

  • API Documentation: Comprehensive endpoint documentation
  • Usage Guides: Detailed feature usage guides
  • Troubleshooting: Common issues and solutions
  • Examples: Real-world usage examples

Future Enhancement Roadmap

Next Phase Candidates

  • Web Application Interface: Browser-based SoundTouch controller
  • Home Assistant Integration: Smart home platform integration
  • WASM Browser Library: Pure browser implementation
  • Mobile App Development: Native mobile applications
  • Docker Distribution: Containerized deployment options

Community Features

  • Plugin System: Extensible architecture for community plugins
  • Custom Event Handlers: User-defined event processing
  • Configuration Presets: Shareable device configurations
  • Automation Scripts: Scheduled playback automation

Lessons Learned

Development Insights

  • Real Device Testing is Critical: API documentation doesn’t capture all device behaviors
  • Safety First: User protection features are essential for audio equipment
  • Progressive Enhancement: Building features incrementally ensures solid foundation
  • Community Value: Open source approach accelerates development and testing

Technical Insights

  • XML Parsing Complexity: SoundTouch API has quirks requiring careful XML handling
  • Network Variability: Different network configurations require multiple discovery methods
  • Device Differences: SoundTouch models have subtle API differences
  • WebSocket Reliability: Real-time connections need robust reconnection logic

This document tracks the evolution of the Bose SoundTouch API client from initial concept to production-ready library.

Last updated on