Commit Graph
35 Commits
Author SHA1 Message Date
Tobias Gesellchen c8ef1a9de4 Update README and documentation to reflect Toolkit expansion and Docker support 2026-02-14 00:14:29 +01:00
Tobias Gesellchen 408753c33e Add note about automatic TLS SAN inclusion for custom server URLs 2026-02-13 00:11:27 +01:00
Tobias Gesellchen dff060565e Add Docker usage example with custom server URLs 2026-02-13 00:11:27 +01:00
Tobias Gesellchen 00d5bfcb69 feat: implement dual migration (XML and /etc/hosts) with custom CA and HTTPS support. Added automated /etc/hosts redirection, Root CA injection, built-in HTTPS listener, and enhanced management UI with diagnostic tests. 2026-02-12 23:41:54 +01:00
Tobias Gesellchen 0186fead6e docs: add comprehensive documentation for SoundTouch device redirection, logging, and cloud analysis 2026-02-12 23:41:54 +01:00
Tobias Gesellchen bf4ead033c Use correct maintainer names of related projects 2026-02-12 21:12:32 +01:00
Tobias GesellchenandGitHub c560d399b5 Add Docker support and CI/CD integration for SoundTouch service (#19) 2026-02-08 00:36:49 +01:00
Tobias Gesellchen 1281af7f6f docs: Add comprehensive SoundTouch service documentation and community credits
## SoundTouch Service Documentation

### Enhanced README.md
- Added detailed SoundTouch service feature overview and capabilities
- Comprehensive service installation, configuration, and usage guide
- Device migration examples and service endpoint documentation
- Web UI feature description and management interface guide

### Updated docs/SOUNDTOUCH-SERVICE.md
- Complete service architecture overview (BMX, Marge, proxy services)
- Step-by-step device migration guide with troubleshooting
- Full API reference with endpoint documentation and examples
- Web interface feature guide and usage instructions
- Data management, backup strategies, and maintenance procedures
- Advanced usage examples and integration patterns
- Security considerations and performance tuning guide

### New docs/SOUNDTOUCH-SERVICE-ANNOUNCEMENT.md
- Feature announcement and implementation overview
- Detailed comparison with community implementations
- Use cases, future roadmap, and contribution guidelines

## Community Credits & Attribution

### SoundCork Recognition
- Acknowledged as primary architectural inspiration and foundation
- Credited for pioneering service interception and emulation approach
- Recognized for BMX/Marge endpoint discovery and migration strategies
- Noted as providing Python implementation reference

### ÜberBöse API Recognition
- Credited for advanced API endpoint insights and research
- Acknowledged for contributing to implementation completeness
- Recognized for extended protocol documentation

### SoundTouch Plus Recognition
- Credited for comprehensive API documentation via wiki
- Acknowledged for real-world usage patterns and endpoint discovery
- Recognized for enabling preset management feature development

This documentation update ensures proper attribution to the excellent community
projects that inspired our Go implementation while providing comprehensive guides
for users to leverage the new service functionality, particularly valuable given
Bose's cloud service discontinuation in May 2026.
2026-02-07 22:49:42 +01:00
Tobias Gesellchen 79ca666785 Merge Bose-SoundTouch-API (soundcork-go) into Bose-SoundTouch. Integrated service logic, created soundtouch-service command, embedded resources, updated docs, examples and CI/CD.
Commit history from `7204e619decc48df5dee91d18470934b50e389ac` to `f9b5ad3129831086b02bdf20a197ff4e2d098e2d`: https://github.com/gesellix/Bose-SoundTouch-API/compare/7204e619decc48df5dee91d18470934b50e389ac...f9b5ad3129831086b02bdf20a197ff4e2d098e2d

* f9b5ad3 - Tobias Gesellchen, 2026-02-07 : Rename module to gesellix/bose-soundtouch-api and update related files
* 5b3dbbb - Tobias Gesellchen, 2026-02-07 : docs: translate PLAN.md to English and fix preferredLanguage typo in marge.go
* 696b9c9 - Tobias Gesellchen, 2026-02-07 : feat(discovery): fetch serial number from speaker info if missing in discovery and update datastore tests
* 8ed78f0 - Tobias Gesellchen, 2026-02-07 : Consolidate proxy and main service on port 8000 and update related tests and UI
* 0e3abbb - Tobias Gesellchen, 2026-02-07 : feat(go): lowercase guessed hostnames for URL consistency
* ca1091f - Tobias Gesellchen, 2026-02-07 : feat(health): add health endpoint with VCS build information
* a432d53 - Tobias Gesellchen, 2026-02-07 : Rename mock token to soundcork-local-token and add documentation
* 3b5ee2f - Tobias Gesellchen, 2026-02-07 : Implement Phase 10: Stats API, Device Event Log, and advanced Marge functions
* bc96033 - Tobias Gesellchen, 2026-02-06 : chore
* c77864b - Tobias Gesellchen, 2026-02-06 : Document Golang header normalization behavior and ensure generic header casing preservation in proxy
* a54e7e7 - Tobias Gesellchen, 2026-02-06 : Ensure ETag header preserves casing (uppercase 'T') for case-sensitive devices
* 6265fbe - Tobias Gesellchen, 2026-02-06 : update dockerfile to be in sync with go.mod
* 5290bad - Tobias Gesellchen, 2026-02-06 : Implement proxy logging settings UI and complete Phase 8 quick wins (ETags, DataStore initialization)
* d7aa7f7 - Tobias Gesellchen, 2026-02-06 : Update PLAN.md with recent features and Phase 8 Upstream Parity tasks
* c8ae5e2 - Tobias Gesellchen, 2026-02-06 : Enhance Bose SoundTouch migration with proxying, remote services persistence, and improved diagnostics
* c53fa00 - Tobias Gesellchen, 2026-02-06 : Implement remote services persistence check and UI improvements for Bose SoundTouch migration
* ea5c348 - Tobias Gesellchen, 2026-02-02 : Ignore soundcork-go/data directory and include recent datastore fixes
* d162892 - Tobias Gesellchen, 2026-02-02 : Complete Phase 7: Automated Setup & UI refactoring. Implemented programmatic SSH/migration logic, added device discovery endpoints, created Web UI for speaker management, and refactored UI to use external HTML with Go embed.
* b528016 - Tobias Gesellchen, 2026-02-01 : Add GitHub workflow to publish Docker image to GHCR and update Dockerfile
* 2ee03da - Tobias Gesellchen, 2026-02-01 : Add GitHub Actions workflow for Go CI and update PLAN.md
* 439e2a9 - Tobias Gesellchen, 2026-02-01 : Refactor Go implementation: extract handlers and tests into dedicated files, add comprehensive unit and HTTP tests
* c0698fb - Tobias Gesellchen, 2026-02-01 : Add Docker telnet example and update IP consistency in documentation
* 028a02e - Tobias Gesellchen, 2026-02-01 : Fix older port number in README
* 264829d - Tobias Gesellchen, 2026-02-01 : Add setup-speaker.sh and update documentation to match issue #59
* 64306f9 - Tobias Gesellchen, 2026-02-01 : Implement device presets endpoint in Go
* b98a602 - Tobias Gesellchen, 2026-02-01 : Implement Phase 4: Datastore and Marge logic in Go
* b6e1bc9 - Tobias Gesellchen, 2026-02-01 : Implement Phase 3: BMX Streaming and Service Registry in Go
* f1b3dcf - Tobias Gesellchen, 2026-02-01 : Port core models and constants to Go
* 9eae655 - Tobias Gesellchen, 2026-02-01 : Implement static file serving for /media in Go
* cc73e50 - Tobias Gesellchen, 2026-02-01 : Fix Go service accessibility and improve Docker configuration
* e356bdd - Tobias Gesellchen, 2026-02-01 : Initialize Go migration: Phase 1 infrastructure, proxy-first routing, and root endpoint
2026-02-07 22:36:50 +01:00
Tobias Gesellchen 9b8167796b docs: move SPEAKER_ENDPOINT.md to docs/ directory
- Move SPEAKER_ENDPOINT.md from project root to docs/ directory
- Update README.md documentation link to reflect new path
- Maintain consistency with other documentation organization
2026-02-01 23:29:49 +01:00
Tobias Gesellchen c1c96dd76c docs: update all documentation to reflect speaker endpoint implementation
- Update API-COVERAGE-ANALYSIS.md:
  - Add /speaker and /playNotification to official API table
  - Update endpoint count from 18/19 to 20/21 (95% coverage)
  - Add notification system to conclusion summary
- Update API-Endpoints-Overview.md:
  - Add comprehensive speaker endpoints documentation
  - Include TTS and URL playback examples with XML
  - Document ST-10 Series compatibility and features
- Update UNIMPLEMENTED-ENDPOINTS.md:
  - Mark speaker notification system as  IMPLEMENTED
  - Update priority counts (14→12 critical, 15→13 high priority)
  - Replace implementation notes with CLI and Go client examples
- Update STATUS.md:
  - Add Phase 6: Notification System completion
  - Update endpoint count from 26→28 total endpoints
  - Add speaker notifications to production ready features
  - Document recent major updates with speaker implementation
- Update README.md:
  - Add 🔔 Smart Notifications feature to features list
  - Add speaker CLI examples and Go library usage examples
  - Add Speaker Notifications to API coverage table
  - Include SPEAKER_ENDPOINT.md in documentation links
- Update CLI-REFERENCE.md:
  - Add comprehensive speaker command section
  - Include TTS examples with multi-language support
  - Document URL content playback and beep notifications
  - Add supported languages list and compatibility notes
- Update FEATURE_HISTORY.md:
  - Add Phase 8: Speaker Notification System (February 2025)
  - Document TTS, URL playback, and beep functionality
  - Update endpoint statistics (27→29 total, 100% coverage)
  - Add speaker notification test coverage and CLI commands

All documentation now reflects the complete speaker endpoint implementation
with comprehensive examples, usage patterns, and technical details.
2026-02-01 23:29:13 +01:00
Tobias Gesellchen 79140cfa78 docs: update documentation for Go 1.25.6 and code quality improvements
- Update Go version requirement from 1.25.5 to 1.25.6 in all docs (security fix)
- Add golangci-lint tooling information to CONTRIBUTING.md
- Document code quality improvements in STATUS.md including:
  - Security vulnerability resolution (GO-2026-4340)
  - Cyclomatic complexity reduction for 5 functions
  - Comprehensive error handling improvements
  - Complete style and formatting compliance
- Add code quality metrics section showing production readiness
- Update development workflow to include modern linting tools

Ensures documentation accurately reflects current security and quality status.
2026-02-01 22:17:46 +01:00
Tobias Gesellchen 4ebc42f5d5 feat: Complete preset management and content navigation CLI with comprehensive documentation
- Add missing CLI commands for navigation and station management functionality
- Implement browse commands (content, menu, container, tunein, pandora, stored-music)
- Implement station commands (search, add, remove) for all sources (TuneIn, Pandora, Spotify)
- Create comprehensive examples for preset management and navigation/station demo
- Update all documentation to properly credit SoundTouch Plus Wiki as endpoint source
- Correct attribution from 'reverse engineering' to community-documented endpoints
- Add Related Projects section acknowledging SoundTouch Plus and SoundCork
- Update API coverage documentation to reflect 100% functional implementation
- Resolve GitHub issue #14 with complete preset management and direct content playback

Resolves: #14
2026-01-31 01:14:05 +01:00
Tobias Gesellchen aca141ecc2 feat: Add comprehensive navigation and station management functionality
Implements the complete /navigate, /searchStation, /addStation, and /removeStation
API endpoints with full client support, models, tests, and documentation.

This resolves GitHub issue #14 by enabling direct radio station and custom
stream playback without requiring preset storage first.

## New Features

### Content Navigation
- Browse content sources (TuneIn, Pandora, Spotify, stored music)
- Navigate directory structures in music libraries
- Paginated browsing with configurable page sizes
- Menu-based navigation for services like Pandora

### Station Search & Discovery
- Search across music services for stations, artists, songs
- Service-specific search methods for TuneIn, Pandora, Spotify
- Smart result categorization (songs vs artists vs stations)
- Rich metadata including artwork and descriptions

### Station Management
- Add stations to collections with immediate playback
- Remove stations from user collections
- Token-based operations for discovered content
- WebSocket event generation for real-time updates

## Implementation Details

### New Client Methods
- Navigate(), NavigateWithMenu(), NavigateContainer()
- SearchStation(), SearchTuneInStations(), SearchPandoraStations(), SearchSpotifyContent()
- AddStation(), RemoveStation()
- GetTuneInStations(), GetPandoraStations(), GetStoredMusicLibrary()

### New Models (pkg/models/navigation.go)
- NavigateRequest/Response with helper methods
- SearchStationRequest/Response with result filtering
- AddStationRequest, RemoveStationRequest, StationResponse
- Rich helper methods for type detection and display formatting

### Enhanced HTTP Client
- Added postWithResponse() method for POST requests with XML response parsing
- Proper error handling with API error response parsing
- XML marshaling/unmarshaling for all new request/response types

## Testing

### Comprehensive Test Suite
- Unit tests for all client methods (navigation_test.go)
- XML validation tests (navigation_xml_test.go)
- Integration tests for real devices (navigation_integration_test.go)
- Example workflows (navigation_examples_test.go)
- Complete model tests (navigation_test.go)
- Edge case and error handling tests

### Test Coverage
- ~50 new test cases across different categories
- 100% coverage of new navigation methods
- XML protocol compliance verification
- Performance benchmarking capabilities
- Integration testing ready for real devices

## Documentation

### User-Focused Guide (docs/NAVIGATION-GUIDE.md)
- Complete usage examples from basic to advanced
- Real-world workflows (discover → search → add → play)
- Error handling patterns and best practices
- Service-specific guidance (TuneIn vs Pandora vs Spotify)
- Performance optimization tips

### Technical Reference (docs/API-NAVIGATION-REFERENCE.md)
- Complete API method documentation
- Model specifications with helper methods
- HTTP endpoint mapping with XML examples
- Error codes and troubleshooting guide
- XML schema definitions

### Updated README.md
- Added navigation to API coverage
- Updated documentation links
- Enhanced feature list

## API Endpoints Implemented

- POST /navigate - Browse content sources
- POST /searchStation - Search for stations and content
- POST /addStation - Add station and immediately play
- POST /removeStation - Remove station from collection

## Breaking Changes
None - all additions are backwards compatible.

## Usage Examples

This implementation enables the complete workflow requested in issue #14:
direct radio station and custom stream playback without preset dependencies.
2026-01-31 00:43:57 +01:00
Tobias Gesellchen 6a815219f6 Implement /requestToken API and fix clock time display
Major Features:
• Implement complete /requestToken API endpoint for bearer token generation
• Fix clock time parsing and display with comprehensive time information
• Add comprehensive API documentation for 103 discovered endpoints

/requestToken Implementation:
• Add BearerToken model with full XML marshaling support
• Add RequestToken() client method with proper error handling
• Add 'soundtouch-cli token request' CLI command with security features
• Token validation, formatting, and secure display (truncated for security)
• Comprehensive unit tests and integration tests
• Support for Authorization header formatting and raw token extraction

Clock Time Fixes:
• Fix ClockTime model to match actual device XML response structure
• Add LocalTime component for nested time details
• Support for utcTime, timeFormat, brightness, clockError attributes
• Enhanced CLI display with comprehensive time information
• Fixed month conversion (device uses 0-11, Go uses 1-12)

Documentation Enhancements:
• Add comprehensive /supportedURLs endpoint analysis (103 endpoints discovered)
• Create detailed unimplemented endpoints documentation with examples
• Update API coverage from 34% implemented to full endpoint catalog
• Add SoundTouch End of Life notice with May 6, 2026 details
• Enhanced endpoint descriptions with real device response examples

Security:
• All tests use generic token examples (no real tokens exposed)
• Integration tests validate token properties without exposing values
• Secure token display with truncation in CLI and string representations
• Environment variable based testing for real devices

Testing:
• 15+ new test functions with comprehensive coverage
• Real device validation on 192.168.178.28 and 192.168.178.35
• Mock server tests and XML marshaling validation
• Integration tests with SOUNDTOUCH_TEST_HOST environment variable

CLI Enhancements:
• Enhanced clock time display with local time details and device settings
• New token management commands with usage instructions
• Improved error handling and user-friendly output formatting
2026-01-11 23:09:29 +01:00
Tobias Gesellchen ab21c5aef9 docs: Fix disclaimer to accurately reflect project basis
Correct the disclaimer to state that the project is based on official
Bose SoundTouch Web API documentation provided by Bose Corporation,
not reverse-engineering. The implementation follows the official API
specification that Bose made available.

Maintains accurate statement that the project is independent and not
affiliated with Bose Corporation.
2026-01-11 17:11:12 +01:00
Tobias Gesellchen 5f7f3977e0 docs: Standardize Go version requirement to 1.25.5+ throughout documentation
- Update CONTRIBUTING.md to require Go 1.25.5 or later
- Update README.md prerequisites
- Update GETTING-STARTED.md requirements
- Update Dockerfile examples to use golang:1.25-alpine
- Update issue templates to reflect supported Go versions
- Ensure consistency across all documentation files

All CI workflows already use go-version-file: go.mod so they
automatically pick up the correct version from go.mod.
2026-01-11 17:10:28 +01:00
Tobias Gesellchen 89cb1b3927 docs: Add comprehensive contributor guide and clean up documentation structure
- Add CONTRIBUTING.md with detailed contributor guidelines
- Create GitHub issue templates (bug reports, feature requests, device compatibility)
- Add pull request template with comprehensive checklist
- Create FEATURE_HISTORY.md documenting development evolution
- Streamline README.md to focus on overview and usage
- Improve documentation organization and clarity

The project now has proper contribution guidelines following GitHub best practices,
making it easier for new contributors to get started and maintain consistent
quality standards.
2026-01-11 17:04:31 +01:00
Tobias Gesellchen e14df5d2ad docs: Update project completion status to 100%
- Fix package declaration in doc.go (main -> soundtouch)
- Update all documentation to reflect 100% API endpoint completion
- Clarify trackInfo as implemented but device-dependent
- Properly exclude POST /presets as officially N/A by Bose
- Update PLAN.md phases 1-6 to show COMPLETE status
- Update STATUS.md statistics to show 26/26 endpoints (100%)
- Update README.md to show accurate completion status
- Align all documentation for consistent project status

The library now correctly shows complete implementation of all
available and functional SoundTouch API endpoints.
2026-01-11 16:45:35 +01:00
Tobias Gesellchen 5e55ab22ae feat: Implement complete advanced audio endpoints (/audiodspcontrols, /audioproducttonecontrols, /audioproductlevelcontrols)
Completes the implementation of all official Bose SoundTouch Web API v1.0
endpoints, achieving 100% official API coverage.

## New Features

### DSP Audio Controls (/audiodspcontrols)
- GetAudioDSPControls() - Get current DSP settings and supported audio modes
- SetAudioDSPControls() - Set audio mode and video sync delay
- SetAudioMode() - Set audio mode only (NORMAL, DIALOG, MUSIC, MOVIE, etc.)
- SetVideoSyncAudioDelay() - Set video sync delay only

### Advanced Tone Controls (/audioproducttonecontrols)
- GetAudioProductToneControls() - Get advanced bass/treble settings with ranges
- SetAudioProductToneControls() - Set both bass and treble
- SetAdvancedBass() - Set advanced bass level only
- SetAdvancedTreble() - Set advanced treble level only

### Speaker Level Controls (/audioproductlevelcontrols)
- GetAudioProductLevelControls() - Get front-center and rear-surround levels
- SetAudioProductLevelControls() - Set both speaker levels
- SetFrontCenterSpeakerLevel() - Set front-center speaker level only
- SetRearSurroundSpeakersLevel() - Set rear-surround speakers level only

## Implementation Details

### Models & Validation
- Complete XML marshaling/unmarshaling with proper struct separation
- Comprehensive input validation with device capability checking
- Support for device-specific ranges and step values
- Proper error handling and constraint validation

### CLI Integration
- Full CLI command tree: audio -> {dsp,tone,level} -> {get,set,specific}
- Rich help text with device-specific guidance
- Flexible parameter handling (individual or combined operations)
- Professional usage examples and CLI command demonstrations

### Testing Coverage
- 748+ lines of comprehensive model tests
- 786+ lines of client integration tests
- XML marshaling/unmarshaling validation
- Error handling and edge case coverage
- Network error simulation and validation testing

## Device Compatibility

### Consumer Devices (SoundTouch 10, 20, 30)
-  Basic controls (bass, volume, balance)
-  Advanced audio controls (professional feature)

### Professional/High-end Devices
-  All basic controls
-  DSP audio modes and video sync
-  Advanced bass/treble controls
-  Speaker level controls (surround systems)

## Documentation & Examples

### Updated Coverage Documentation
- README.md: Updated to 100% complete (19/19 endpoints)
- API-Endpoints-Overview.md: Complete coverage analysis
- API-COVERAGE-ANALYSIS.md: Achievement of full API implementation

### Comprehensive Examples
- advanced-audio-controls.go: Complete usage demonstration
- CLI command examples and device compatibility guide
- Error handling and validation examples

## Final API Status

-  **19/19 Official Endpoints Implemented** (100%)
-  **18/19 Functional on Real Devices** (95%)
-  **1 Endpoint Non-functional** (/trackInfo times out on hardware)
- 🔍 **5 Extended Features** (beyond official API v1.0)

This completes the most comprehensive Bose SoundTouch API implementation
available, covering all documented endpoints plus extended functionality.
2026-01-11 00:28:14 +01:00
Tobias Gesellchen 0e6dffead0 docs: Mark /trackInfo endpoint as non-functional on real devices
Based on real device testing, the /trackInfo endpoint returns
'AllegroWebserver timeout' errors despite being documented in the
official Bose SoundTouch Web API v1.0 specification.

## Changes

- Updated API coverage from 89% to 84% (16/19 functional endpoints)
- Marked /trackInfo as  Non-functional in all documentation
- Added warning comments to GetTrackInfo() method
- Updated CLI command with warning message
- Recommend using /now_playing instead for track information

## Real Device Evidence

- Device: SoundTouch at 192.168.178.28:8090
- Error: 'AllegroWebserver timeout: /trackInfo'
- Status: Endpoint documented but not working on hardware

This reflects the reality that some officially documented endpoints
may not function properly on actual devices, emphasizing the importance
of real hardware testing in API implementation.
2026-01-11 00:16:07 +01:00
Tobias Gesellchen 2296b3ca9b feat: Implement official /addZoneSlave and /removeZoneSlave endpoints
Implements the remaining zone slave management endpoints from the official
Bose SoundTouch Web API v1.0 specification, bringing API coverage to 89%.

## New Features

### Client Methods
- AddZoneSlave(masterID, slaveID, slaveIP) - Add individual device to zone
- AddZoneSlaveByDeviceID(masterID, slaveID) - Add device by ID only
- RemoveZoneSlave(masterID, slaveID, slaveIP) - Remove individual device
- RemoveZoneSlaveByDeviceID(masterID, slaveID) - Remove device by ID only

### Models
- ZoneSlaveRequest - Request structure for slave operations
- ZoneSlaveEntry - Individual slave entry with IP address support
- Complete XML marshaling/unmarshaling with proper omitempty handling
- Comprehensive validation and error handling

### CLI Commands
- zone add-slave --master ID --slave ID [--slave-ip IP]
- zone remove-slave --master ID --slave ID [--slave-ip IP]

## Implementation Details

- Follows official API specification exactly (POST /addZoneSlave, /removeZoneSlave)
- Supports both device ID + IP and device ID only operations
- Comprehensive input validation (IP addresses, device ID conflicts)
- Proper XML formatting with omitempty for optional IP addresses
- Extensive test coverage (580+ lines of tests)
- Integration with existing high-level zone management API

## Testing

- 200+ new test cases covering all functionality
- Complete model validation and XML marshaling tests
- HTTP client integration tests with mock servers
- Error handling and edge case coverage
- Network error simulation tests

## Documentation Updates

- Updated API coverage from 84% to 89% (17/19 endpoints)
- Comprehensive API coverage analysis document
- Updated README.md with new endpoint status
- Added practical usage examples
- CLI help documentation

## Compatibility

- Maintains full backward compatibility
- Complements existing high-level zone API
- Users can choose between low-level official API or enhanced high-level API
- No breaking changes to existing functionality

This implementation provides both the exact official API endpoints and
enhanced high-level zone management, giving users maximum flexibility
for zone operations while maintaining full API compliance.
2026-01-11 00:10:22 +01:00
Tobias Gesellchen 2664486966 docs: Fix API coverage documentation and add comprehensive analysis
- Fix inaccuracies in API-Endpoints-Overview.md:
  * Mark bassCapabilities, trackInfo, and SetName as implemented
  * Update zone management and WebSocket status to implemented
  * Correct official API coverage from 94% to 84%

- Update README.md API coverage table:
  * Add missing implemented endpoints (bassCapabilities, trackInfo, SetName)
  * Add missing official endpoints with proper status
  * Update implementation percentage to reflect actual coverage

- Add comprehensive API-COVERAGE-ANALYSIS.md:
  * Complete analysis of 16/19 official endpoints implemented (84%)
  * Document 5 extended features beyond official API v1.0
  * Detailed impact assessment of 3 missing professional endpoints
  * Analysis of superior zone management implementation
  * Testing coverage and recommendations

Key findings:
- All essential functionality is 100% implemented
- Missing endpoints are low-impact professional/audiophile features
- Zone management uses superior high-level API vs low-level official approach
- Extended features include balance, clock, and network management
- Comprehensive WebSocket event system implemented
2026-01-11 00:02:40 +01:00
Tobias Gesellchen e5673103e0 Fix WebSocket connection issues and add special message parsing
- Fix WebSocket URL construction by properly extracting hostname from base URL
- Add 'gabbo' protocol requirement as specified in SoundTouch API docs
- Add parsing for SoundTouchSdkInfo and UserActivityUpdate messages
- Add proper filtering support for special message types (sdkInfo, userActivity)
- Fix nil pointer dereference by ensuring WebSocket client always has a logger
- Add SilentLogger for non-verbose mode to prevent crashes
- Update README and help text to include new special message types
- Clean up logging to only show unknown message types, not known special messages

Fixes the original WebSocket connection error:
'parse "ws://http:%2F%2F192.168.178.28:8090:8080/": invalid URL escape "%2F"'
2026-01-10 23:49:54 +01:00
Tobias Gesellchen ccd19d97a5 docs: add attribution to official Bose SoundTouch Web API documentation
- Reference original API documentation source from Bose Corporation
- Link to official Bose SoundTouch End-of-Life page
- Clarify this is an independent implementation
- Add disclaimer about non-affiliation with Bose Corporation
- Provide both online and local documentation references
2026-01-10 00:34:54 +01:00
Tobias Gesellchen 9ecdd7af47 Update CLI documentation to reflect current subcommand structure
- Update README.md CLI examples from old flag-based format to current subcommand structure
- Fix GETTING-STARTED.md CLI examples to use proper syntax
- Add comprehensive CLI-REFERENCE.md with complete command documentation
- All examples now use correct format: soundtouch-cli --host <device> <command> <subcommand>
- Document all available commands: discover, info, play, volume, source, bass, balance, clock, network, zone
- Include usage patterns, examples, and troubleshooting guidance
- Replace outdated flat flag format (-info, -volume) with hierarchical commands (info, volume get)

Breaking: CLI syntax has changed from flags to subcommands for better organization
2026-01-10 00:11:20 +01:00
Tobias Gesellchen f1aa94d302 Clean up all remaining /reboot references from documentation
- Remove reboot from README.md high priority section and API table
- Remove reboot from PLAN.md Phase 3 endpoints list
- Update README to reflect completion of all high priority endpoints
- Clarify that all available API functionality is now implemented

/reboot was never part of the official Bose SoundTouch API and was incorrectly assumed to exist.
2026-01-09 12:01:10 +01:00
Tobias Gesellchen 9f980765f5 feat: Add comprehensive zone management for multiroom control
- Implement GET /getZone and POST /setZone endpoints
- Add complete zone models with validation and error handling
- Create zone builder pattern for fluent API construction
- Add all zone operations: create, add, remove, dissolve
- Implement zone status queries and member management
- Add comprehensive CLI support for all zone commands
- Create 100+ tests covering all zone functionality
- Add WebSocket zone event handling and monitoring
- Include extensive documentation and examples
- Update project completion to 90% (18/20 endpoints)

BREAKING: None - all additions are backward compatible
NEW ENDPOINTS: /getZone (GET), /setZone (POST)
NEW CLI COMMANDS: -zone, -zone-status, -zone-members, -create-zone,
                  -add-to-zone, -remove-from-zone, -dissolve-zone
2026-01-09 11:41:14 +01:00
Tobias Gesellchen cc39efc882 feat: Add comprehensive WebSocket events support
- Implement real-time WebSocket client for device monitoring
- Add 12 event types: NowPlaying, Volume, Connection, Preset, Zone, Bass, Clock, Name, Error, Recents, Language
- Create WebSocket demo CLI with event filtering and auto-discovery
- Add comprehensive WebSocket documentation and examples
- Implement automatic reconnection and robust error handling
- Add 50+ WebSocket-specific tests with mock server
- Update project completion to 85% (16/19 endpoints)
- Clarify that POST /presets is officially not supported by SoundTouch API
- Add production-ready WebSocket client with configurable options

Breaking: WebSocket events require gorilla/websocket dependency
Docs: Complete WebSocket integration examples and API reference
2026-01-09 11:30:35 +01:00
Tobias Gesellchen 46b7f3c6e7 feat: Add system endpoints for clock/time management and network info
- Implement GET/POST /clockTime endpoints for device time management
- Implement GET/POST /clockDisplay endpoints for clock display configuration
- Implement GET /networkInfo endpoint with real API structure
- Add comprehensive models for ClockTime, ClockDisplay, and NetworkInformation
- Update NetworkInformation to match real SoundTouch API responses:
  * WiFi interfaces with SSID, frequency, signal strength, and connection state
  * Ethernet interfaces with connection state
  * Proper attribute-based XML structure matching actual device responses
- Add CLI support for all system endpoints with detailed output formatting
- Add comprehensive test coverage for all new models and client methods
- Update documentation to reflect real API structure and capabilities
- Anonymize all personal data (IP addresses, device IDs, device names)
- Add SYSTEM-ENDPOINTS.md documentation with real-world examples

Features:
- Clock time sync with current system time or specific timestamps
- Clock display configuration (enable/disable, format, brightness, auto-dim)
- Rich network interface information with WiFi signal quality and frequency bands
- Support for both WiFi and Ethernet SoundTouch devices
- Validated against real SoundTouch 10 and SoundTouch 20 device responses

All tests pass and builds successfully.
2026-01-09 10:24:32 +01:00
Tobias Gesellchen f4c71eaa53 Add comprehensive mDNS/Bonjour discovery with unified service and diagnostic tools
Features Added:
• mDNS/Bonjour discovery using hashicorp/mdns library
• Unified discovery service combining UPnP + mDNS + configuration
• Parallel discovery execution for optimal performance
• Comprehensive logging for both UPnP and mDNS discovery
• Network diagnostic tools for troubleshooting

New Discovery Methods:
• Configuration-based (fastest, most reliable)
• UPnP/SSDP discovery (widely supported, enhanced logging)
• mDNS/Bonjour discovery (Apple ecosystem friendly)

New Programs & Tools:
• cmd/example-mdns - Standalone mDNS discovery testing
• cmd/example-upnp - Isolated UPnP/SSDP discovery testing
• cmd/mdns-scanner - Network diagnostic tool for mDNS services

Enhanced Build System:
• make dev-mdns / dev-mdns-verbose (mDNS testing)
• make dev-upnp / dev-upnp-verbose (UPnP testing)
• make dev-scan-all (scan all network services)
• make dev-scan-soundtouch (scan for SoundTouch services)

Documentation:
• docs/DISCOVERY.md - Comprehensive discovery guide
• Updated README.md with new features and commands
• Full API documentation and troubleshooting guide

Technical Improvements:
• Detailed request/response logging for UPnP M-SEARCH
• Step-by-step mDNS service discovery tracking
• IP address resolution with IPv4/IPv6 handling
• Service name parsing and device info extraction
• Robust error handling and network diagnostics

Backward Compatibility:
• No breaking changes to existing APIs
• All existing tests pass
• CLI interface unchanged but enhanced
• Legacy UPnP-only service still available
2026-01-09 08:49:33 +01:00
Tobias Gesellchen ea2b6502b2 docs: sync all documentation with current implementation status
Documentation Updates:
• Update README.md to reflect implemented key controls and volume management
• Add implementation status indicators to API-Endpoints-Overview.md
• Update PLAN.md roadmap to show completed phases
• Create STATUS.md with comprehensive project status summary

Key Changes:
• Mark key controls and volume management as implemented (not planned)
• Add CLI examples for media controls and volume management
• Update API overview with /🔄 status indicators
• Document press+release key pattern implementation
• Add real device validation notes
• Update Go library usage examples

Current Status:
 6/6 Informational endpoints complete
 2/3 Core control endpoints complete (key + volume)
 Host:port parsing enhancement
 Production-ready CLI with safety features
 Comprehensive testing with real devices

Next Priority:
🔄 Source selection, bass control, preset management
2026-01-09 00:00:54 +01:00
Tobias Gesellchen de2ff3550f Implement /name, /capabilities, and /presets informational endpoints
## New Endpoints

### GET /name 
- Simple device name retrieval with XML parsing
- Helper methods for name validation and display
- Real device name integration with anonymization

### GET /capabilities 
- Comprehensive device capabilities detection
- Complex XML structure with nested network, DSP, and system configurations
- Smart categorization: System Features, Audio Features, Network Features
- Capability-specific helper methods (HasLRStereoCapability, HasDualModeNetwork, etc.)
- Extended capabilities parsing with URLs and metadata

### GET /presets 
- Complete preset management with timestamps and metadata
- Spotify playlist integration with anonymized account information
- Smart filtering: by source, used/empty slots, most recent, oldest presets
- Comprehensive analysis: preset summaries with source breakdowns
- Time-based operations: creation/update timestamps with formatted display

## Device Introspection Features

### Capability Detection
- System capabilities: Light Switch, Clock Display, BCO Reset, Power Saving
- Audio capabilities: L/R Stereo support, DSP Mono/Stereo availability
- Network capabilities: Dual Mode, WSAPI Proxy, Hosted WiFi Configuration
- Extended capabilities: Custom endpoint discovery with URL mapping

### Preset Analysis
- Usage pattern analysis (used vs empty slots)
- Source distribution (Spotify, TuneIn, etc.)
- Temporal analysis (most recent, oldest presets)
- Content metadata extraction (artwork URLs, display names)

## Enhanced CLI Tool

### New Commands
- Added -name command with simple device identification
- Added -capabilities command with categorized feature display
- Added -presets command with comprehensive preset analysis
- Enhanced help system with all new command examples

### Rich Output Formatting
- Capability categorization with bullet-point display
- Preset timeline with creation/update timestamps
- Smart metadata display (artwork, source accounts, content types)
- Device-specific feature highlighting (different capabilities per device)

## Real Device Integration

### Multi-Device Testing
- Device 192.168.178.28: SoundTouch 10 with Light Switch, Clock Display, Hosted WiFi
- Device 192.168.178.35: SoundTouch 20 with L/R Stereo, Dual Mode networking
- Verified capability differences between device models
- Real preset data with anonymized Spotify account information

### Edge Case Handling
- Non-responsive endpoints (/trackInfo timeout handling)
- Empty preset configurations
- Missing capability sections
- Device-specific feature variations

## Quality & Testing

### Comprehensive Test Coverage
- 15+ unit tests for XML models with real device response patterns
- Client integration tests with mock HTTP servers
- Edge case validation (empty names, missing capabilities, no presets)
- Timestamp parsing and validation with Unix epoch conversion

### Production-Ready Features
- Type-safe XML unmarshaling with custom validation
- Robust error handling for network and parsing failures
- Privacy protection with anonymized real device data
- Documentation updates with real-world usage examples

## API Coverage Progress

 Complete Information Endpoints:
- GET /info - Device information
- GET /name - Device name
- GET /capabilities - Device capabilities
- GET /presets - Configured presets
- GET /now_playing - Current playback status
- GET /sources - Available audio sources

🔄 Next Phase - Control Endpoints:
- POST /key - Media controls
- GET/POST /volume - Volume management
- WebSocket / - Real-time events

Features:
 Comprehensive device introspection and capability detection
 Smart preset management with timeline analysis
 Multi-device support with hardware-specific feature detection
 Production-ready error handling and data validation
 Rich CLI interface with categorized output formatting
 Real device integration with privacy-protected test data
2026-01-08 23:32:18 +01:00
Tobias Gesellchen 5caad90d51 Implement /now_playing and /sources endpoints with real device integration
## New Endpoints

### GET /now_playing 
- Rich XML models with PlayStatus, ShuffleSetting, RepeatSetting enums
- Comprehensive playback information (track, artist, album, artwork, position)
- Device capabilities (skip, seek, favorite functionality)
- Smart display methods for different content types (music vs radio)
- Duration formatting with position/total time display

### GET /sources 
- Complete audio source management with SourceStatus enum
- Source categorization (Local/Remote, Streaming, Multiroom support)
- Multiple account support (multiple Spotify accounts per device)
- Availability filtering (Ready vs Unavailable sources)
- Helper methods for quick capability checks

## Real Device Integration

- Fetched actual XML responses from SoundTouch devices (192.168.178.28 & 192.168.178.35)
- Updated all test fixtures with real device data (anonymized)
- Enhanced XML models to handle all real-world fields and edge cases
- Verified compatibility across different device types and configurations

## Enhanced CLI Tool

- Added -nowplaying command with rich formatted output
- Added -sources command with categorized source listing
- Display enhancements: duration info, capabilities, source attributes
- Improved build process to use ./build/ directory consistently

## Comprehensive Testing

- 15+ unit tests for XML models with enum validation
- Client integration tests with mock HTTP responses
- Real device response validation
- Edge case handling (empty states, network errors, invalid data)

## Documentation & Guidelines

- Updated CLAUDE.md with build directory and real device testing guidelines
- Enhanced README with comprehensive usage examples
- Updated PLAN.md to reflect implementation progress
- All examples use real device data patterns

## Quality Improvements

- Type-safe XML unmarshaling with custom validation
- Consistent error handling across all endpoints
- Privacy protection (anonymized account information)
- Production-ready code structure and patterns

Features:
 GET /info - Device information
 GET /now_playing - Current playback status with full metadata
 GET /sources - Available audio sources with smart categorization
 UPnP device discovery
 Cross-platform CLI tool with rich output formatting
 Comprehensive test coverage with real device data
 Build automation with proper directory structure
2026-01-08 23:21:01 +01:00
Tobias Gesellchen 7de6b8246b Initial commit: Bose SoundTouch API Client PoC
- Implement HTTP client with XML support for SoundTouch Web API
- Add UPnP device discovery with SSDP protocol
- Create type-safe Go models for API responses
- Build CLI tool with device discovery and info commands
- Add comprehensive configuration management via .env and env vars
- Include extensive documentation (API endpoints, patterns, development guide)
- Translate all German documentation to English
- Set up modern Go project structure with testing framework
- Add Makefile for cross-platform builds and development workflow

Features:
 Device discovery (UPnP + manual configuration)
 Device information retrieval
 XML request/response handling
 CLI interface with flexible device targeting
 Cross-platform compatibility
 Comprehensive test coverage with mock data
 Production-ready configuration management
2026-01-08 23:01:32 +01:00