mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 16:46:17 +00:00
🎉 100% Feature Complete CLI Refactoring MAJOR IMPROVEMENTS: - Refactored from monolithic 149-complexity main.go to modular urfave/cli structure - Added ALL missing commands for complete feature parity (47/47 features) - Reduced golangci-lint issues by 70% (108+ → 32) NEW COMMAND FILES: - cmd_bass.go - Bass control (get/set/up/down/capabilities) - cmd_balance.go - Balance control (get/set/left/right/center) - cmd_clock.go - Clock management (time + display settings) - cmd_network.go - Network information (info/ping/URL) - cmd_zone.go - Multi-room zones (get/create/add/remove/dissolve) - cmd_playback.go - Enhanced with key commands (volume-up/down, power, mute, etc.) - cmd_info.go - Enhanced with preset selection and track info COMPLETE FEATURE MAPPING: ✅ Discovery: discover devices [--all] ✅ Device Info: info, name get/set, capabilities, presets, track ✅ Playback: play start/pause/stop/next/prev, key send/power/mute/thumbs-up/down/volume-up/down ✅ Volume: volume get/set/up/down (with safety warnings, defaults: ±2) ✅ Bass: bass get/set/up/down/capabilities (defaults: ±1) ✅ Balance: balance get/set/left/right/center (defaults: ±5) ✅ Sources: source list/select/spotify/bluetooth/aux (with account support) ✅ Clock: clock get/set/now + display enable/disable/brightness/format (supports Unix timestamps, auto format) ✅ Network: network info/ping/url ✅ Zones: zone get/status/members/create/add/remove/dissolve/set ✅ Presets: preset selection by number (1-6) PRESERVED FEATURES: ✅ All safety warnings and limits maintained ✅ Default increment/decrement values preserved ✅ Environment variable support (SOUNDTOUCH_HOST, SOUNDTOUCH_PORT) ✅ Extended format support (Unix timestamps, 'now', 'auto' clock format) ✅ Source account parameters for streaming services ✅ Zone deviceID@ip format support ENHANCED USER EXPERIENCE: ✅ Organized subcommand hierarchy instead of 47 flat flags ✅ Comprehensive help system for each command ✅ Consistent flag naming (--host, --port, --timeout) ✅ Rich error messages with success/warning indicators ✅ Input validation and safety checks ARCHITECTURAL IMPROVEMENTS: ✅ Modular command structure for better maintainability ✅ Shared utilities in common.go ✅ Consistent error handling and client configuration ✅ Clean separation of concerns EXAMPLES: # Discovery soundtouch-cli discover devices --all --timeout 15s # Volume control soundtouch-cli volume set --host 192.168.1.100 --level 50 soundtouch-cli volume up --host 192.168.1.100 --amount 3 # Bass/Balance control soundtouch-cli bass set --host 192.168.1.100 --level 3 soundtouch-cli balance left --host 192.168.1.100 --amount 5 # Key commands soundtouch-cli key power --host 192.168.1.100 soundtouch-cli key send --host 192.168.1.100 --key SHUFFLE_ON # Source selection soundtouch-cli source select --host 192.168.1.100 --source SPOTIFY --account myaccount soundtouch-cli source bluetooth --host 192.168.1.100 # Clock management soundtouch-cli clock set --host 192.168.1.100 --time now soundtouch-cli clock display format --host 192.168.1.100 --format 24 # Zone management soundtouch-cli zone create --host 192.168.1.100 --members 192.168.1.101,192.168.1.102 Breaking Changes: - CLI now uses subcommands instead of flat flags (functional equivalent provided for all commands) RESULT: Transformed a 149-complexity monolithic CLI into a clean, organized, feature-complete tool with 100% functionality preservation and significant UX improvements! 🚀