Ian Gulliver and Claude Opus 4.5
93e5ff90c1
Add pointer cursor to clickable hovercards
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-04 10:44:37 -08:00
Ian Gulliver
cbaf5b0298
Merge branch 'main' of github.com:gopatchy/tendrils
2026-02-04 10:09:46 -08:00
Ian Gulliver
622281a6f6
showpi1 mac
2026-02-04 10:08:02 -08:00
Ian Gulliver
eedc4cd1d7
Add flow validity icons to artmap mappings in flow view
2026-02-04 09:33:52 -08:00
Ian Gulliver
08e8a523d0
Display Art-Net universes as x:y:z (n) format consistently
2026-02-04 09:27:46 -08:00
Ian Gulliver
8769afd17d
showpi3
2026-02-02 22:22:44 -08:00
Ian Gulliver and Claude Opus 4.5
ced0a6e599
Fix AP location and table root consistency
...
- Only include APs in getSwitchesInLocation for AP sub-locations
- Update table.js to include APs in switch graph like render.js
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-02 22:17:50 -08:00
Ian Gulliver and Claude Opus 4.5
92ab5d8a6e
Add TP-Link AP support with wireless client sub-locations
...
- Add NodeType enum (switch, ap, wireless_client, wired_client)
- Poll SNMPv2c and SNMPv3 in parallel to win race with ping
- Render APs with bordered sub-locations containing wireless clients
- Fall back to parent interface stats when child lacks them
- Log when unreachable nodes become reachable via merge
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-02 20:33:42 -08:00
Ian Gulliver and Claude Opus 4.5
bd829eb888
Style remove button to match port label bubble
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-02 11:42:26 -08:00
Ian Gulliver and Claude Opus 4.5
c264969016
Fix error panel buttons to display side by side
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-02 11:33:42 -08:00
Ian Gulliver and Claude Opus 4.5
eff2635725
Add remove button for unreachable nodes not in config
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-02 11:18:06 -08:00
Ian Gulliver
d4e7a8a9b7
Move interface counter state from global map to Interface struct
2026-02-02 10:16:37 -08:00
Ian Gulliver
2a8e376cbf
Add error LastSeen tracking, port uptime and last error to table/hovercards
2026-02-02 09:59:03 -08:00
Ian Gulliver and Claude Opus 4.5
e9cbeebe55
Add grouped headers with utilization/Kp columns and sticky scroll to network table
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-01 17:49:29 -08:00
Ian Gulliver and Claude Opus 4.5
7b96f62f31
Add utilization percentage to hovercards with compact units
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-01 17:09:41 -08:00
Ian Gulliver and Claude Opus 4.5
451196f162
Filter out insane utilization from counter resets and log new utilization errors
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-01 17:05:06 -08:00
Ian Gulliver and Claude Opus 4.5
85179bf581
Fix error panel display for port_flap and port_down types
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2026-01-31 14:20:22 -08:00
Ian Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 Gulliver and Claude 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 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