feat: Enhance LacyLights.app launcher with intelligent network interface selection#7
Merged
bbernstein merged 3 commits intomainfrom Sep 12, 2025
Conversation
…ace selection - Add comprehensive network interface type detection using networksetup - Remove unicast options, show only broadcast addresses suitable for Art-Net DMX - Sort interfaces by reliability: Ethernet first, WiFi second, localhost, global broadcast - Add visual indicators with emoji icons (🌐 Ethernet, 📶 WiFi, 🔌 USB Ethernet, ⚡ Thunderbolt, 🔗 Bridge) - Change default selection from global broadcast to first option (prioritizes Ethernet) - Integrate interface selection directly into LacyLights.app launcher flow - Pass selected broadcast address to start.sh via ARTNET_BROADCAST environment variable This provides a user-friendly GUI experience for network interface selection while maintaining the same intelligent sorting and type detection as the command-line lacylights-node interface selector. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull Request Overview
This PR enhances the LacyLights.app launcher with intelligent network interface selection capabilities. It adds comprehensive network interface detection and a user-friendly GUI for selecting the appropriate broadcast interface for Art-Net DMX transmission.
- Adds intelligent network interface type detection using macOS
networksetupcommand - Implements smart sorting that prioritizes reliable connections (Ethernet → WiFi → Others → Localhost → Global)
- Integrates selected interface into the existing launcher workflow via environment variables
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
- Fix redundant address display format by only showing "Address: X -> Y" when values differ - Remove redundant conditional logic in interface type detection for en[1-9]* pattern - Simplify code logic while maintaining the same functionality Addresses all feedback from Copilot PR review comments for cleaner, more maintainable code. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…node
- Add local_ips arrays to track local interface IP addresses alongside broadcast addresses
- Update display format to show "Address: local_ip -> broadcast_ip" for network interfaces
- Maintain consistency with lacylights-node interface selection display format
- Keep broadcast addresses as the selected value for ARTNET_BROADCAST environment variable
Now both launchers show the same format:
[1] 🔌 en21 - USB Ethernet Broadcast (192.168.7.255)
Address: 192.168.7.111 -> 192.168.7.255
This provides better clarity about which local interface is being used while
showing the destination broadcast address for Art-Net transmission.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
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.
Summary
Enhanced the LacyLights.app launcher with comprehensive network interface selection capabilities, providing a user-friendly GUI experience that matches the intelligent interface detection added to lacylights-node.
Key Features
🎯 Intelligent Interface Detection
networksetup -listallhardwareportsto identify interface types📊 Smart Sorting & Defaults
🎭 Broadcast-Only Options
🔄 Seamless Integration
start.shviaARTNET_BROADCASTInterface Selection Example
Available Network Interface Options: ============================================================ [1] 🔌 en21 - USB Ethernet Broadcast (192.168.7.255) ← DEFAULT [2] 📶 en0 - WiFi Broadcast (192.168.7.255) [3] 🏠 Localhost (for testing only) [4] 🌍 Global Broadcast (255.255.255.255) ============================================================ 📡 Select Art-Net broadcast destination: (This determines where DMX data will be sent) Press Enter for default (first option) Select option [1-4] (default: 1): ⏎ ✅ Selected: 🔌 en21 - USB Ethernet Broadcast (192.168.7.255) Broadcasting to: 192.168.7.255Benefits
🎯 Better User Experience
🚀 Improved Reliability
🔄 Consistent Experience
Technical Implementation
Interface Detection Logic
Broadcast Address Integration
Test Plan
Related Changes
This PR complements the enhanced interface selection added to lacylights-node in PR #18, providing a consistent experience across both GUI app launches and direct command-line usage.
🤖 Generated with Claude Code