Commit Graph

196 Commits

Author SHA1 Message Date
Ian Gulliver
280e786b73 Mark config-only nodes as unreachable when they have no IPs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:03:38 -08:00
Ian Gulliver
bb22e16460 Add structured node config with names/macs/ips and avoid flag
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 09:52:51 -08:00
Ian Gulliver
3b8005a28c Add ArtRDM TOD discovery for real ArtNet nodes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 07:48:02 -08:00
Ian Gulliver
09e52accdb Fix hover bubbles blocking each other with pointer-events
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 07:40:12 -08:00
Ian Gulliver
5c4266f89c Include multicast and broadcast packets in interface pps stats
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 07:35:49 -08:00
Ian Gulliver
f97bf04eef UI improvements: flow names, table tooltips, artmap mappings, sorting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 23:27:45 -08:00
Ian Gulliver
587049616b Store and display artmap mappings on nodes in flow view 2026-01-30 22:59:58 -08:00
Ian Gulliver
d63b8192d2 Rename API endpoints to /tendrils/api/*, detect SSE via Accept header
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:31:58 -08:00
Ian Gulliver
98c7fc75b7 Add no-cache headers to static files, fix flow view multi-line names
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:26:02 -08:00
Ian Gulliver
2c27ce7ff5 Use first name only in protocol hover cards
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:19:22 -08:00
Ian Gulliver
a0e71d2347 Process artmap senders as flow sources
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 22:11:43 -08:00
Ian Gulliver
e7cfe49798 Update sacn and multicast dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:47:16 -08:00
Ian Gulliver
1b2646a496 Make artmap debug logging conditional on DebugArtmap flag
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:45:11 -08:00
Ian Gulliver
1618ef1b87 Add artmap polling to discover sACN unicast receivers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:03:35 -08:00
Ian Gulliver
e3aa25d85f Extract CSS and JS from index.html into separate ES modules 2026-01-30 11:38:09 -08:00
Ian Gulliver
052d3b89dd Fix click targets for flow links in hover cards
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:04:37 -08:00
Ian Gulliver
068d3be46f Add flow view for visualizing network paths between protocol endpoints
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 11:00:07 -08:00
Ian Gulliver
71e9337bdb Omit empty ips arrays from interface JSON
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 10:09:17 -08:00
Ian Gulliver
9a39802de9 Update client for node ID references in links and dante peers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:39:38 -08:00
Ian Gulliver
ef01aaa5c9 Reduce API response size by using node ID references
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:35:42 -08:00
Ian Gulliver
d970d1db86 Use artnet library for per-interface discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 09:14:04 -08:00
Ian Gulliver
d40102941b Update dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 22:00:45 -08:00
Ian Gulliver
2b3d1b147f Update dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:58:36 -08:00
Ian Gulliver
65d3357395 Config updates 2026-01-29 21:56:16 -08:00
Ian Gulliver
7bfeb23947 Update to use NewDiscoveryReceiver API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:55:20 -08:00
Ian Gulliver
762c0fc650 Version update 2026-01-29 21:48:44 -08:00
Ian Gulliver
9c2d75f8d3 Use simplified multicast listener API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:44:39 -08:00
Ian Gulliver
b7dd6b220c Improve network table and add multi-column sorting
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:21:11 -08:00
Ian Gulliver
bdb268d510 Fix Art-Net TX/RX mapping and add natural sort to tables
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:08:21 -08:00
Ian Gulliver
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1df6fd318f Add sACN universe discovery listener 2026-01-28 21:13:22 -08:00