Commit Graph
11 Commits
Author SHA1 Message Date
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 5401969836 Remove non-existent /reboot endpoint implementation
- Removed incorrect Reboot() and SupportsReboot() methods from client
- Removed CLI flags and handlers for reboot functionality
- Deleted reboot test files
- Updated documentation to reflect actual API capabilities
- Fixed API-Endpoints-Overview.md and STATUS.md
- Confirmed via real hardware testing that /reboot endpoint does not exist in official SoundTouch API

The /reboot endpoint was incorrectly assumed to exist but is not documented in the official Bose SoundTouch Web API specification.
2026-01-09 11:57:30 +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 609cc04c16 Complete preset management implementation
- Add comprehensive preset reading functionality with helper methods
- Implement GetNextAvailablePresetSlot() and IsCurrentContentPresetable()
- Add CLI support for viewing presets with -presets flag
- Fix Preset XML tag to use lowercase 'preset' for API compliance
- Update documentation to reflect official API design:
  * GET /presets: fully implemented with rich analysis
  * POST /presets: officially 'N/A' per Bose documentation (not supported by design)
- Add detailed PRESET-MANAGEMENT.md documentation
- Update API endpoints overview and project status
- All tests passing with real device validation

Preset management is now 100% complete according to official API specification.
Read operations provide comprehensive preset analysis, while creation
is intentionally handled by official app/hardware controls per API design.
2026-01-09 11:11:10 +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 b7b856b98f feat: implement balance control (GET/POST /balance)
- Add complete balance control functionality via GET/POST /balance endpoints
- Implement GetBalance() for current stereo balance retrieval
- Add SetBalance() with range validation (-50 to +50)
- Include IncreaseBalance() and DecreaseBalance() with safety limits
- Add SetBalanceSafe() with automatic value clamping
- Create comprehensive balance models with validation and helpers
- Add CLI flags: -balance, -set-balance, -inc-balance, -dec-balance
- Implement left/right percentage calculation and human-readable descriptions
- Create comprehensive test suite (30+ test cases) with mock servers
- Add error handling for devices that don't support balance control
- Update documentation with complete balance control reference
- Update API endpoints status (GET/POST /balance:  Implemented)
- Update project status (70% overall completion, 100% control endpoints)
- Complete audio management trilogy: Volume + Bass + Balance
- Real device testing shows device-dependent feature availability
- XML request/response format validation and compliance
- Human-readable balance descriptions (Far Left, Center, Right, etc.)
- Left/Right channel percentage display for better UX
2026-01-09 09:37:57 +01:00
Tobias Gesellchen 16b3be1950 feat: implement bass control (GET/POST /bass)
- Add complete bass control functionality via GET/POST /bass endpoints
- Implement GetBass() for current bass level retrieval
- Add SetBass() with range validation (-9 to +9)
- Include IncreaseBass() and DecreaseBass() with safety limits
- Add SetBassSafe() with automatic value clamping
- Create comprehensive bass models with validation and helpers
- Add CLI flags: -bass, -set-bass, -inc-bass, -dec-bass
- Implement safety features with range validation and clamping
- Create comprehensive test suite (30+ test cases) with mock servers
- Add integration tests with real device validation (SoundTouch 10/20)
- Update documentation with complete BASS-CONTROLS.md guide
- Update API endpoints status (GET/POST /bass:  Implemented)
- Update project status (55% overall completion, 80% control endpoints)
- Real device testing with bass adjustment and validation
- Error handling for invalid ranges and API responses
- XML request/response format validation and compliance
- Human-readable bass level descriptions and categorization
2026-01-09 09:22:57 +01:00
Tobias Gesellchen 65a46fd958 feat: implement source selection (POST /select)
- Add complete source selection functionality via POST /select endpoint
- Implement SelectSource() with all source types (SPOTIFY, BLUETOOTH, AUX, etc.)
- Add convenience methods: SelectSpotify(), SelectBluetooth(), SelectAux(), SelectTuneIn(), SelectPandora()
- Add SelectSourceFromItem() for working with SourceItem objects
- Add CLI flags: -select-source, -source-account, -spotify, -bluetooth, -aux
- Create comprehensive test suite (30+ test cases) with mock servers
- Add integration tests with real device validation (SoundTouch 10/20)
- Update documentation with complete SOURCE-SELECTION.md guide
- Update API endpoints status (POST /select:  Implemented)
- Update project status (50% overall completion, 60% control endpoints)
- Real device testing with Spotify and TuneIn source selection
- Error handling for invalid sources and API responses
- XML request format validation and compliance
2026-01-09 09:09:42 +01:00
Tobias Gesellchen e46f050e45 Complete key controls implementation with all 24 documented keys
Enhanced Key Support:
• Expanded from 13 to 24 total key commands
• Added power and system controls (POWER, MUTE)
• Added rating controls (THUMBS_UP, THUMBS_DOWN, BOOKMARK)
• Added playback mode controls (SHUFFLE_OFF/ON, REPEAT_OFF/ONE/ALL)
• Added input controls (AUX_INPUT)
• Organized keys into logical categories for better documentation

CLI Enhancements:
• New direct command flags: -power, -mute, -thumbs-up, -thumbs-down
• Enhanced help output with categorized key listing
• Updated flag descriptions to show all available keys
• Added practical examples for new key commands

Technical Improvements:
• Updated IsValidKey() validation for all 24 keys
• Enhanced GetAllValidKeys() to return complete key set
• Comprehensive test coverage for all new key constants
• Proper error handling and validation for new commands

Real Device Testing:
• POWER command tested successfully on SoundTouch device
• MUTE command tested successfully on SoundTouch device
• All new keys follow proper press+release pattern
• Maintains backward compatibility with existing commands

Documentation Updates:
• API-Endpoints-Overview.md - Complete categorized key reference
• KEY-CONTROLS.md - Enhanced with all playback, rating, and system controls
• STATUS.md - Updated project status to reflect completed key implementation
• CLI help output shows all 24 keys with usage examples

Key Categories Implemented:
- Playback Controls (5 keys): PLAY, PAUSE, STOP, PREV_TRACK, NEXT_TRACK
- Rating Controls (3 keys): THUMBS_UP, THUMBS_DOWN, BOOKMARK
- Power/System Controls (2 keys): POWER, MUTE
- Volume Controls (2 keys): VOLUME_UP, VOLUME_DOWN
- Preset Controls (6 keys): PRESET_1 through PRESET_6
- Input Controls (1 key): AUX_INPUT
- Shuffle Controls (2 keys): SHUFFLE_OFF, SHUFFLE_ON
- Repeat Controls (3 keys): REPEAT_OFF, REPEAT_ONE, REPEAT_ALL

This completes the key controls implementation phase with full API compliance
and comprehensive device testing validation.
2026-01-09 08:58:23 +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