From 020d6b59e7cec299846855f1cfb18835839cfa16 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Wed, 24 Dec 2025 12:29:55 -0800 Subject: [PATCH] Log universes on discovery and when updated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- artnet/discovery.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/artnet/discovery.go b/artnet/discovery.go index fcb5b8e..d2a79e0 100644 --- a/artnet/discovery.go +++ b/artnet/discovery.go @@ -153,7 +153,6 @@ func (d *Discovery) HandlePollReply(src *net.UDPAddr, pkt *PollReplyPacket) { Port: pkt.Port, // Use port from packet, not UDP source port } d.nodes[ip] = node - log.Printf("[artnet] discovered ip=%s name=%s", ip, shortName) } node.ShortName = shortName @@ -163,6 +162,7 @@ func (d *Discovery) HandlePollReply(src *net.UDPAddr, pkt *PollReplyPacket) { // Accumulate universes from multiple ArtPollReply packets // (multi-port devices send separate replies for each group of 4 ports) + prevLen := len(node.Universes) for _, u := range universes { found := false for _, existing := range node.Universes { @@ -175,6 +175,12 @@ func (d *Discovery) HandlePollReply(src *net.UDPAddr, pkt *PollReplyPacket) { node.Universes = append(node.Universes, u) } } + + if !exists { + log.Printf("[artnet] discovered ip=%s name=%s universes=%v", ip, shortName, node.Universes) + } else if len(node.Universes) != prevLen { + log.Printf("[artnet] updated ip=%s name=%s universes=%v", ip, shortName, node.Universes) + } } // HandlePoll processes an incoming ArtPoll and responds