feat: Multi-Zone Configuration v2025.8.0 with Quality Improvements#16
Merged
feat: Multi-Zone Configuration v2025.8.0 with Quality Improvements#16
Conversation
Add comprehensive zone selection and power control functionality: - Zone selection: Main Zone or Zone 2 control via settings UI - Configurable power-off behavior: both zones vs selected zone only - Zone-specific power control functions (getPowerForZone, setPowerForZone, setPowerBothZones) - Zone2 event handling for real-time power state updates - Enhanced settings UI with dropdown controls for zone and power options - Volume control limited to Main Zone (denon-client API limitation) - Proper zone display names in Roon interface - Fix for Zone2 remaining on when powering off Main Zone Multi-Zone Options: - zone: "main" - Controls Main Zone (default, full functionality) - zone: "zone2" - Controls Zone 2 (power-only control) - powerOffBothZones: true - Powers off both zones when turning off 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive GitHub Action workflow for automated Docker builds:
**Core Features:**
- Multi-platform Docker builds (linux/amd64, linux/arm64)
- Feature-specific tagging: feature-zone-config and feature-zone-config-{sha}
- Automated testing with container startup validation
- Optimized workflow: Build → Test → Push (prevents registry failures)
**Workflow Improvements:**
- Local build with push: false for safe testing
- Container-ID based testing (more reliable than container names)
- Proper error handling and cleanup in test steps
- Only push to Docker Hub after successful container tests
- Separate PR validation job without registry push
**Build Triggers:**
- Push to feature/zone-configuration-improvements branch
- Manual workflow dispatch with force rebuild option
- Pull request validation (build-only, no push)
**Docker Hub Integration:**
- Uses existing Docker Hub secrets and infrastructure
- Container startup validation checks for 'Setting up sood|Starting sood'
- Comprehensive build logs and Docker Hub URL in output
This resolves the CI/CD failure where container tests tried to pull
non-existent registry images before they were available.
Add comprehensive Jest testing framework with full coverage reporting: **Test Suite Features:** - 64 passing tests across 3 test suites - 100% coverage on zone-functions.js - Unit tests for zone helper functions (getPowerForZone, setPowerForZone, setPowerBothZones) - Settings configuration tests with layout validation - Integration tests covering real-world usage scenarios - Test coverage: Main Zone control, Zone2 control, dual-zone power off, error handling **Test Scripts:** - npm test - Run all tests - npm run test:watch - Watch mode for development - npm run test:coverage - Generate coverage reports **Release Preparation:** - Update version to 2025.8.0 (Multi-Zone Configuration release) - Add coverage/ directory to .gitignore - Update CLAUDE.md with version numbering scheme and Multi-Zone documentation - Remove coverage files from repository (generated artifacts) **Documentation Updates:** - Semantic versioning scheme: YYYY.MINOR.PATCH - Multi-Zone Configuration feature documentation - Zone configuration options and limitations - Test suite usage instructions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
🚨 Critical Issues Fixed:
- Replace all console.log with debug statements for consistent logging
- Update display_version to 2025.8.0 (synchronized with package.json)
- Remove TODO comment and improve error message in connection setup
✅ Testing Verification:
- All 64 Jest tests passing
- App startup verified with Roon Core connection
- Multi-Zone functionality preserved and validated
**Consistent Error Handling:**
- setup_denon_connection: console.log(error) → debug("Connection error: %O", error)
- set_volume: console.log(error) → debug("set_volume: Failed with error: %O", error)
- set_mute: console.log(error) → debug("set_mute: Failed with error: %O", error)
- set_standby: console.log(error) → debug("set_standby: Failed with error: %O", error)
**Version Synchronization:**
- display_version: "2025.1.2" → "2025.8.0" (matches package.json)
- Ensures consistent version information across Roon interface
Improves error handling consistency and keeps version information synchronized
throughout the extension for better maintainability and debugging.
4d1488d to
d351d86
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎉 Multi-Zone Configuration Feature v2025.8.0
This PR introduces comprehensive Multi-Zone support for Denon/Marantz receivers with additional code quality improvements.
🚀 New Features (by @arthursoares)
Multi-Zone Configuration:
src/zone-functions.jsConfiguration Options:
zone: "main"- Controls Main Zone (default, full functionality)zone: "zone2"- Controls Zone 2 (power-only control)powerOffBothZones: true- Powers off both zones when turning off🔧 Quality Improvements
Code Quality Fixes:
console.logwithdebug()statementsdisplay_versionto match package.json (2025.8.0)Infrastructure & Testing:
roonlabs/node-roon-apirepository📊 Testing Results
🏗️ Technical Details
Semantic Versioning:
YYYY.MINOR.PATCHZone Control Architecture:
Backward Compatibility:
📚 Documentation
Complete documentation updates in CLAUDE.md including:
🙏 Acknowledgments
Special thanks to @arthursoares for the original Multi-Zone Configuration implementation. This PR integrates their excellent work with additional improvements for production readiness.
Ready for: Production deployment and release as v2025.8.0