Similar to sACN pcap receiver, allows receiving ArtNet packets without
binding to port 6454. Use --artnet-pcap=any to enable.
The BPF filter "udp port 6454" captures packets where src OR dst is
6454, so we also catch ArtPollReply responses sent from port 6454.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 255.255.255.255 (limited broadcast) and 2.255.255.255 (classic
ArtNet subnet) to the auto-detected broadcast list.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make --artnet-broadcast default to "auto" so broadcast works out of box
- Add consistent [category] prefixes to all log messages
- Change discovery logs from [discovery] to [artnet] since it's protocol-specific
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Accepts comma-separated list of addresses or 'auto'
- Auto-detection calculates broadcast from all network interfaces
- Used as fallback when no per-universe target or discovered nodes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New -sacn-pcap flag uses packet capture instead of binding port 5568.
This allows running alongside other software using the sACN port.
- Captures both incoming and outgoing packets (same-host sender support)
- Requires root/sudo for packet capture privileges
- Use "auto" for automatic interface detection
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Config changes:
- Use protocol prefixes in addresses: "sacn:64:361-450" -> "artnet:0.0.0:1"
- Remove separate from_proto/proto fields
- Targets now include protocol: universe = "artnet:0.0.0"
CLI changes:
- Rename --listen to --artnet-listen (empty to disable)
- Fix --debug help text
Logging changes:
- Use [<-proto] and [->proto] prefixes for direction
- Consistent lowercase key=value format
- Refactor duplicate send code into sendOutputs()
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove --broadcast CLI flag
- Add [[target]] config section for per-universe destination addresses
- Each ArtNet output universe can have its own target IP (broadcast or unicast)
- ArtPoll discovery broadcasts to all unique target addresses
- Falls back to configured target when no nodes discovered for universe
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add sACN/E1.31 protocol support for both input and output
- from_proto = "sacn" to receive from sACN multicast
- proto = "sacn" to output via sACN multicast
- Fix remap engine to maintain persistent state per output universe
- Multiple inputs targeting same output now merge correctly
- Prevents flickering when multiple universes feed same output
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Supports host:port, host, or :port for binding to specific
interfaces. Useful for running alongside other ArtNet software.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- from: "0.0.1:50-100" specifies channel range
- to: "0.0.1:50" specifies starting channel only (range implied by from)
- Remove from_channel, to_channel, count fields
- Support plain universe numbers with channels: "1:50-100"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move listen_port and broadcast_addr from TOML to CLI flags
- Remove colon format support for universe addresses (dots only)
- Config file now contains only mappings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>