Ian Gulliver and Claude Opus 4.5
bad57914d3
Improve Art-Net and sACN tables with TX/RX pairing and better styling
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 12:00:32 -08:00
Ian Gulliver and Claude Opus 4.5
b5e8bda1c4
Fix network table in/out to be from node perspective
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 11:02:15 -08:00
Ian Gulliver and Claude Opus 4.5
8ea593625a
Add table view hash state and shrink table font
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 10:55:51 -08:00
Ian Gulliver and Claude Opus 4.5
0c98198e91
Switch to monospace font
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 10:52:17 -08:00
Ian Gulliver and Claude Opus 4.5
4473cd93b1
Fix network table: add upstream column, get stats from switch port
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 10:50:01 -08:00
Ian Gulliver and Claude Opus 4.5
106abb7adf
Add table view with sortable columns for all modes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-29 10:27:31 -08:00
Ian Gulliver and Claude Opus 4.5
88763946a4
Replace Dante channel strings with structured data
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 23:21:33 -08:00
Ian Gulliver and Claude Opus 4.5
b966ad0feb
Refactor Dante fields to use proper types and group flows with lastSeen
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 23:15:24 -08:00
Ian Gulliver and Claude Opus 4.5
99083ecde5
Refactor error tracking to be edge-triggered with node setters
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 23:06:26 -08:00
Ian Gulliver and Claude Opus 4.5
ed9a0cd60d
Fix interface merging, error ordering, sACN client, and add charset headers
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 22:57:13 -08:00
Ian Gulliver and Claude Opus 4.5
aebd6f5e2c
Use MulticastGroup as map key and serialize under lock
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 22:48:55 -08:00
Ian Gulliver
042ccab74e
Update client to use new id field names
2026-01-28 22:41:31 -08:00
Ian Gulliver and Claude Opus 4.5
a912d73169
Refactor node storage and use proper types for protocol data
...
- Rename TypeID to ID throughout
- Remove re-derivable data (MACTableSize, SACNInputs now derived)
- Use typed ArtNetUniverse and SACNUniverse with methods
- Store multicast groups with lastSeen tracking in structs
- Remove int indexes in Nodes, use direct node pointers
- Parse multicast groups into typed struct instead of strings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 22:36:44 -08:00
Ian Gulliver and Claude Opus 4.5
fc5b36cd1c
Remove separate tracking structures and store protocol data directly on nodes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 22:15:54 -08:00
Ian Gulliver and Claude Opus 4.5
41000bd4a0
Combine PortError and Error into single type
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 21:55:33 -08:00
Ian Gulliver and Claude Opus 4.5
f5d90636bb
Move protocol data onto nodes and simplify API response
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 21:50:48 -08:00
Ian Gulliver and Claude Opus 4.5
ccc301f17b
Use shared sacn library for protocol handling
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 21:36:46 -08:00
Ian Gulliver and Claude Opus 4.5
7aac3c0559
Track sACN emitters and receivers with peer linking
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 21:27:35 -08:00
Ian Gulliver
c6109c28f0
Merge branch 'main' of github.com:gopatchy/tendrils
2026-01-28 21:16:54 -08:00
Ian Gulliver
7f36444003
Sort by names, then IPs
2026-01-28 21:16:35 -08:00
Ian Gulliver
522b64450b
mod tidy
2026-01-28 13:00:35 -08:00
Ian Gulliver
67a27850b0
Use shared artnet library and listen for unicast replies
2026-01-28 10:28:06 -08:00
Ian Gulliver
ecbaffa0c5
Fix name that claude lost
2026-01-28 08:53:10 -08:00
Ian Gulliver
85cfa6a9f4
Revert "Add missing node tracking for config-defined nodes"
...
This reverts commit 9ec193ef1d .
2026-01-28 08:42:12 -08:00
Ian Gulliver and Claude Opus 4.5
9ec193ef1d
Add missing node tracking for config-defined nodes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 08:38:58 -08:00
Ian Gulliver and Claude Opus 4.5
6ae561b968
Include config in status response and push on SIGHUP
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-28 08:30:23 -08:00
Ian Gulliver and Claude Opus 4.5
85780b9419
Cap bubble width at 95% of node and fix mode-specific hover rules
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 23:02:51 -08:00
Ian Gulliver and Claude Opus 4.5
ccd6956d6a
Fix ARP incomplete entries and Art-Net broadcast reception
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 22:57:53 -08:00
Ian Gulliver and Claude Opus 4.5
25f8f410c1
Preserve hover state during page updates with stable DOM structure
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 17:11:23 -08:00
Ian Gulliver and Claude Opus 4.5
c90275d664
Improve Art-Net hover display with device correspondence
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 16:08:55 -08:00
Ian Gulliver and Claude Opus 4.5
b2f7d44fe9
Sort hover popup lists for Art-Net, sACN, and Dante
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 15:54:46 -08:00
Ian Gulliver and Claude Opus 4.5
17d7889d54
Add heartbeat timeout to detect server disconnection
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 11:23:00 -08:00
Ian Gulliver and Claude Opus 4.5
d173e8bac6
Add granular click-to-copy for popup values and refactor helpers
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-27 11:19:28 -08:00
Ian Gulliver and Claude Opus 4.5
5ec5e8e3e5
Fall back to IP or MAC in DisplayName when no names available
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 14:50:55 -08:00
Ian Gulliver and Claude Opus 4.5
0baa208b99
Improve hover cards with wrapper pattern and consistent behavior
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 14:45:31 -08:00
Ian Gulliver and Claude Opus 4.5
dbf449c447
Fix mode bubble overflow and adjust colors
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:59:47 -08:00
Ian Gulliver and Claude Opus 4.5
35822122bd
Use cyan for mode bubbles, fix error-info width constraint
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:47:45 -08:00
Ian Gulliver and Claude Opus 4.5
3e2fa79325
Improve mode styling and fix bubble overflow
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:40:38 -08:00
Ian Gulliver and Claude Opus 4.5
9bc44d4ee5
Add sACN tab showing universe consumers
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:37:21 -08:00
Ian Gulliver and Claude Opus 4.5
4c6da837e9
Improve hover popup styling consistency and formatting
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:24:55 -08:00
Ian Gulliver and Claude Opus 4.5
e43982df4e
Unify hover bubble styling across network, Dante, and Art-Net modes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 13:05:46 -08:00
Ian Gulliver and Claude Opus 4.5
0aa20ac6bf
Add Art-Net layer showing device universe mappings
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 12:35:00 -08:00
Ian Gulliver and Claude Opus 4.5
4746c2b7f1
Separate switch name display from external warning indicator
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 12:21:15 -08:00
Ian Gulliver and Claude Opus 4.5
2af5ad51d7
Add link speed and utilization tracking to interface stats
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 12:16:44 -08:00
Ian Gulliver and Claude Opus 4.5
3255c1cfe5
Add top padding to nodes for bubble clearance
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 11:58:15 -08:00
Ian Gulliver and Claude Opus 4.5
608c9f1b30
Improve visual consistency of bubbles and nodes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 11:51:45 -08:00
Ian Gulliver and Claude Opus 4.5
5666f85b01
Hide node hover popup on dimmed nodes in dante mode
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 11:18:06 -08:00
Ian Gulliver and Claude Opus 4.5
7c978d28ac
Add per-interface packet and byte rate statistics
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 11:16:32 -08:00
Ian Gulliver and Claude Opus 4.5
353c1ad701
Add node hover popup with IPs and MACs
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 10:53:35 -08:00
Ian Gulliver and Claude Opus 4.5
8fc1d675f2
Fix switch uplink port direction and stats perspective
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 09:33:22 -08:00
Ian Gulliver and Claude Opus 4.5
49f9a714e7
Add interface error counts to port bubble hover
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-26 09:26:14 -08:00
Ian Gulliver and Claude Opus 4.5
04e22b03cb
Track node reachability across all IPs, increase ping interval
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 21:03:15 -08:00
Ian Gulliver and Claude Opus 4.5
5cd5db1e4a
Add broadcast packet bucketing by protocol/port
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 20:16:53 -08:00
Ian Gulliver and Claude Opus 4.5
c701d26f0e
Require 3 consecutive ping failures before marking unreachable
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 20:05:29 -08:00
Ian Gulliver and Claude Opus 4.5
0b65998d07
Add link speed coloring to port bubbles
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 19:57:31 -08:00
Ian Gulliver and Claude Opus 4.5
bbd938b924
Add broadcast packet tracking with rate monitoring
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 19:40:39 -08:00
Ian Gulliver and Claude Opus 4.5
b2ec349c51
Track unreachable nodes separately for diagram highlighting
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 19:05:13 -08:00
Ian Gulliver and Claude Opus 4.5
1eef7319cc
Suppress cleared unreachable errors until node becomes reachable
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 19:02:36 -08:00
Ian Gulliver and Claude Opus 4.5
c8be46b739
Add per-node ping monitoring with unreachable error tracking
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:56:12 -08:00
Ian Gulliver and Claude Opus 4.5
a94f816f3d
Add SSE endpoint for real-time status updates
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:49:39 -08:00
Ian Gulliver and Claude Opus 4.5
a96eb7db8c
Add port error tracking with UI display
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:43:23 -08:00
Ian Gulliver and Claude Opus 4.5
93c3cbb585
Fix getLabel to fall back to IPs and MACs for unnamed nodes
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:31:00 -08:00
Ian Gulliver and Claude Opus 4.5
2bc6b1054b
Add Dante overlay with TX/RX highlighting and channel info
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:22:22 -08:00
Ian Gulliver and Claude Opus 4.5
d7bb971edd
Fix switch-to-switch link detection by finding all valid last hops
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 18:01:43 -08:00
Ian Gulliver and Claude Opus 4.5
b503c96252
Add switch uplink display with spanning tree topology
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 17:32:32 -08:00
Ian Gulliver and Claude Opus 4.5
6e7600ae0c
Add switch port labels to nodes with location-aware external detection
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 17:24:37 -08:00
Ian Gulliver and Claude Opus 4.5
0e6db94b83
Replace Cytoscape with DOM-based grid layout
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 17:16:21 -08:00
Ian Gulliver
19fabc71e4
Rotate mDNS query order to avoid repeated blocking
2026-01-25 11:53:32 -08:00
Ian Gulliver
1d6075d395
Add mDNS support for _netaudio-chan service with channel@device format
2026-01-25 11:52:28 -08:00
Ian Gulliver
f9afd3abb6
Always enable HTTPS, require config.yaml
2026-01-25 11:33:15 -08:00
Ian Gulliver
2ab66520b6
Switch to HTTPS with auto-generated self-signed certificate
2026-01-25 11:31:00 -08:00
Ian Gulliver
81796dbdb6
Add mDNS SRV linkage for Dante devices and improve UI
2026-01-25 11:28:56 -08:00
Ian Gulliver
221ee2477b
New pcap
2026-01-25 10:01:37 -08:00
Ian Gulliver
4c149ecdf7
Fix IP deduplication and filter link interfaces in JSON
2026-01-25 09:53:31 -08:00
Ian Gulliver
3a33ece7d9
Add SIGHUP handler to reload config file
2026-01-25 09:38:52 -08:00
Ian Gulliver
142143f8d4
Remove swap file and add swap patterns to gitignore
2026-01-25 09:34:33 -08:00
Ian Gulliver and Claude Opus 4.5
67f4f23192
Filter out reverse DNS names from mDNS hostname extraction
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-25 09:30:55 -08:00
Ian Gulliver and Claude Opus 4.5
cc3d84b97e
Query DHCP binding table from Netgear switches via SNMP
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 23:11:55 -08:00
Ian Gulliver
1f2b2c2156
Updated config for realistic layout
2026-01-24 22:52:31 -08:00
Ian Gulliver and Claude Opus 4.5
6801cb7f68
Add mDNS service queries for SMB, AirPlay, QLab, Blackmagic, and HyperDeck
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 22:43:20 -08:00
Ian Gulliver and Claude Opus 4.5
6492456ce0
Add alternating layout direction by nesting depth
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 21:24:05 -08:00
Ian Gulliver
4123b49a98
Add broadcast pinging and fix node merging by shared IP
2026-01-24 20:02:43 -08:00
Ian Gulliver and Claude Opus 4.5
f72f716349
Center top-level location boxes on same vertical axis
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 16:37:32 -08:00
Ian Gulliver and Claude Opus 4.5
01f14cc3f7
Reorder top-level location boxes after ELK layout
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 16:33:56 -08:00
Ian Gulliver and Claude Opus 4.5
a6ce2e4696
Convert config from maps to lists for ordering
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 16:00:26 -08:00
Ian Gulliver
997868949a
Switch to ELK layout engine for proper compound node support
2026-01-24 15:37:04 -08:00
Ian Gulliver
8b50762c92
Add location grouping with cola layout
2026-01-24 15:04:42 -08:00
Ian Gulliver
c662ff80f4
Fix gitignore and remove log file
2026-01-24 14:51:54 -08:00
Ian Gulliver
d6f3debd73
Fix duplicate node creation from pre-joined DisplayName
2026-01-24 14:50:19 -08:00
Ian Gulliver
77e523a302
Position edge labels near their respective nodes
2026-01-24 14:44:23 -08:00
Ian Gulliver
8acda6902d
Remove log file and add to gitignore
2026-01-24 14:41:06 -08:00
Ian Gulliver
c687ace65c
Fix node overlap in network diagram layout
2026-01-24 14:40:07 -08:00
Ian Gulliver
fdd60a39e1
Replace mermaid.js with cytoscape.js for network diagram
2026-01-24 14:26:38 -08:00
Ian Gulliver
7c0d4ad05a
Fix switch-to-switch link detection for downstream nodes
2026-01-24 11:48:24 -08:00
Ian Gulliver and Claude Opus 4.5
bf787209a5
Add web UI with mermaid.js network diagram
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 11:22:35 -08:00
Ian Gulliver
9aebe8b83d
Add HTTP API with JSON status endpoint and typeid support
2026-01-24 11:03:34 -08:00
Ian Gulliver and Claude Opus 4.5
168cdedbcb
Add flow status parsing and DOWN indicator for inactive dante flows
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-24 10:28:10 -08:00
Ian Gulliver and Claude Opus 4.5
894e355f56
split nodes.go into focused files and refactor Update function
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-23 23:31:57 -08:00
Ian Gulliver and Claude Opus 4.5
f02b25ca29
fix goroutine leak and reduce code duplication
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-23 23:28:58 -08:00
Ian Gulliver and Claude Opus 4.5
7e8ec697ae
refactor codebase and fix bugs
...
- merge dante.go and dante_control.go into single dante.go
- consolidate buildDantePacket and buildDantePacket28 into one function
- fix broken comparison logic in SetDanteClockMaster
- split ARP parsing into platform-specific files with build tags
- implement Linux ARP table parsing via /proc/net/arp
- run gofmt on all files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-23 23:21:51 -08:00