Commit Graph
100 Commits
Author SHA1 Message Date
Ian GulliverandClaude Opus 4.5 32da723b2c Clear MAC table on each SNMP poll and reduce ping threshold
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 13:20:20 -08:00
Ian GulliverandClaude Opus 4.5 5a7596b456 Add port flap and port down error tracking with faster ping
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 13:01:07 -08:00
Ian GulliverandClaude Opus 4.5 d1b4de01e8 Add shared_names config and port uptime tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 12:06:59 -08:00
Ian GulliverandClaude Opus 4.5 df0c999284 Log new port errors unconditionally
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 11:39:11 -08:00
Ian GulliverandClaude Opus 4.5 d14de5950e Remove ArtNet RDM/TOD discovery support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:57:11 -08:00
Ian GulliverandClaude Opus 4.5 61e3c905b0 Use artmap sender IPs for ArtNet flow association
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 10:51:18 -08:00
Ian GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 d40102941b Update dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 22:00:45 -08:00
Ian GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude Opus 4.5 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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 GulliverandClaude 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