@matter-server/dashboard 0.6.2 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/esm/pages/matter-network-view.d.ts +15 -0
  2. package/dist/esm/pages/matter-network-view.d.ts.map +1 -1
  3. package/dist/esm/pages/matter-network-view.js +171 -1
  4. package/dist/esm/pages/matter-network-view.js.map +1 -1
  5. package/dist/esm/pages/network/base-network-graph.d.ts +4 -0
  6. package/dist/esm/pages/network/base-network-graph.d.ts.map +1 -1
  7. package/dist/esm/pages/network/base-network-graph.js +9 -0
  8. package/dist/esm/pages/network/base-network-graph.js.map +1 -1
  9. package/dist/esm/pages/network/border-router-store.d.ts +20 -0
  10. package/dist/esm/pages/network/border-router-store.d.ts.map +1 -0
  11. package/dist/esm/pages/network/border-router-store.js +29 -0
  12. package/dist/esm/pages/network/border-router-store.js.map +6 -0
  13. package/dist/esm/pages/network/network-details.d.ts +40 -12
  14. package/dist/esm/pages/network/network-details.d.ts.map +1 -1
  15. package/dist/esm/pages/network/network-details.js +440 -112
  16. package/dist/esm/pages/network/network-details.js.map +1 -1
  17. package/dist/esm/pages/network/network-types.d.ts +76 -0
  18. package/dist/esm/pages/network/network-types.d.ts.map +1 -1
  19. package/dist/esm/pages/network/network-types.js.map +1 -1
  20. package/dist/esm/pages/network/network-utils.d.ts +89 -22
  21. package/dist/esm/pages/network/network-utils.d.ts.map +1 -1
  22. package/dist/esm/pages/network/network-utils.js +233 -95
  23. package/dist/esm/pages/network/network-utils.js.map +1 -1
  24. package/dist/esm/pages/network/thread-graph.d.ts +68 -9
  25. package/dist/esm/pages/network/thread-graph.d.ts.map +1 -1
  26. package/dist/esm/pages/network/thread-graph.js +388 -50
  27. package/dist/esm/pages/network/thread-graph.js.map +2 -2
  28. package/dist/esm/util/device-icons.d.ts +6 -0
  29. package/dist/esm/util/device-icons.d.ts.map +1 -1
  30. package/dist/esm/util/device-icons.js +6 -0
  31. package/dist/esm/util/device-icons.js.map +1 -1
  32. package/dist/web/js/{attribute-write-dialog-g4B6BoRt.js → attribute-write-dialog-DlMTUiLK.js} +1 -1
  33. package/dist/web/js/{command-invoke-dialog-D6G704VK.js → command-invoke-dialog-DO3IyFcm.js} +1 -1
  34. package/dist/web/js/{commission-node-dialog-Bg3oo5ub.js → commission-node-dialog-CMSvCm0i.js} +4 -4
  35. package/dist/web/js/{commission-node-existing-DO3g1aQJ.js → commission-node-existing-D08jghFu.js} +2 -2
  36. package/dist/web/js/{commission-node-thread-DM432aH1.js → commission-node-thread-D5waY758.js} +2 -2
  37. package/dist/web/js/{commission-node-wifi-Bx40FXij.js → commission-node-wifi-ClBlCFTZ.js} +2 -2
  38. package/dist/web/js/{dialog-box-DjyfULWB.js → dialog-box-D9vS2SmP.js} +1 -1
  39. package/dist/web/js/{fire_event-BstgNPuh.js → fire_event-BPhROjTC.js} +1 -1
  40. package/dist/web/js/main.js +1 -1
  41. package/dist/web/js/{matter-dashboard-app-Cj88TtbZ.js → matter-dashboard-app-C9zTE5uH.js} +1359 -302
  42. package/dist/web/js/{node-binding-dialog-9yy2LE3_.js → node-binding-dialog-B5p-gbim.js} +1 -1
  43. package/dist/web/js/{settings-dialog-Cs2xMsXb.js → settings-dialog-BMFhom0W.js} +1 -1
  44. package/package.json +4 -4
  45. package/src/pages/matter-network-view.ts +185 -1
  46. package/src/pages/network/base-network-graph.ts +10 -0
  47. package/src/pages/network/border-router-store.ts +38 -0
  48. package/src/pages/network/network-details.ts +535 -140
  49. package/src/pages/network/network-types.ts +76 -0
  50. package/src/pages/network/network-utils.ts +390 -171
  51. package/src/pages/network/thread-graph.ts +532 -73
  52. package/src/util/device-icons.ts +13 -0
@@ -4,11 +4,18 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ import type { BorderRouterEntry } from "@matter-server/ws-client";
8
+
7
9
  /**
8
10
  * Network type detected from NetworkCommissioning cluster feature map.
9
11
  */
10
12
  export type NetworkType = "thread" | "wifi" | "ethernet" | "unknown";
11
13
 
14
+ /**
15
+ * Classification of a Thread mesh link based on RSSI/LQI.
16
+ */
17
+ export type SignalLevel = "strong" | "medium" | "weak";
18
+
12
19
  /**
13
20
  * Thread routing role from ThreadNetworkDiagnostics cluster.
14
21
  * Attribute 0/53/1 (RoutingRole)
@@ -103,6 +110,8 @@ export interface ThreadConnection {
103
110
  fromNodeId: number | string;
104
111
  toNodeId: number | string;
105
112
  signalColor: string;
113
+ /** Undefined when link strength is unknown (e.g. route-table entry without LQI). */
114
+ signalLevel?: SignalLevel;
106
115
  lqi: number;
107
116
  rssi: number | null;
108
117
  /** Path cost from route table (1 = direct, higher = multi-hop). Only available for routers. */
@@ -113,10 +122,28 @@ export interface ThreadConnection {
113
122
  fromRouteTable?: boolean;
114
123
  }
115
124
 
125
+ /**
126
+ * A pair of Thread nodes with their directional edge data.
127
+ * Each connected pair has 0-2 edges (one per neighbor/route table direction).
128
+ */
129
+ export interface ThreadEdgePair {
130
+ /** Canonical pair key (sorted node IDs joined by "|") */
131
+ pairKey: string;
132
+ /** First node ID (lexicographically smaller) */
133
+ nodeA: string;
134
+ /** Second node ID (lexicographically larger) */
135
+ nodeB: string;
136
+ /** Edge where nodeA reports nodeB as neighbor */
137
+ edgeAB?: ThreadConnection;
138
+ /** Edge where nodeB reports nodeA as neighbor */
139
+ edgeBA?: ThreadConnection;
140
+ }
141
+
116
142
  /**
117
143
  * Unknown Thread device seen in neighbor tables but not commissioned.
118
144
  */
119
145
  export interface UnknownThreadDevice {
146
+ kind: "unknown";
120
147
  /** Unique ID for the unknown device (prefixed with 'unknown_') */
121
148
  id: string;
122
149
  /** Extended address as hex string */
@@ -129,8 +156,46 @@ export interface UnknownThreadDevice {
129
156
  isRouter: boolean;
130
157
  /** Best signal strength seen */
131
158
  bestRssi: number | null;
159
+ /**
160
+ * Extended PAN ID (16-char uppercase hex) inherited from the commissioned node that
161
+ * reports this neighbor. All Thread neighbors share the observing node's network.
162
+ */
163
+ extendedPanIdHex?: string;
164
+ /**
165
+ * Friendly Thread network name resolved by joining {@link extendedPanIdHex} against the
166
+ * Border Router registry. Some BR vendors (e.g. Apple, Aqara) use a stable border-agent
167
+ * ID as the MeshCoP `xa` while the actual Thread radio MAC differs, so the BR can show
168
+ * up as both a known BR and an "unknown" router on the same network.
169
+ */
170
+ networkName?: string;
171
+ }
172
+
173
+ /**
174
+ * Thread Border Router enriched via mDNS.
175
+ *
176
+ * Same neighbor-table aggregate fields as UnknownThreadDevice (seenBy, isRouter, bestRssi),
177
+ * plus all BorderRouterEntry fields (network name, vendor, addresses, etc.).
178
+ */
179
+ export interface KnownBorderRouter extends BorderRouterEntry {
180
+ kind: "br";
181
+ /** DOM/graph ID, formatted "br_<XAHEX>". */
182
+ id: string;
183
+ /** Convenience copy of extAddressHex as bigint, mirroring UnknownThreadDevice. */
184
+ extAddress: bigint;
185
+ /** Commissioned node IDs whose neighbor table sees this xa. */
186
+ seenBy: string[];
187
+ /** Inferred from neighbor entry. */
188
+ isRouter: boolean;
189
+ /** Best signal strength seen across observers. */
190
+ bestRssi: number | null;
132
191
  }
133
192
 
193
+ /**
194
+ * External Thread device discriminated union — either a recognized Border Router
195
+ * or an unidentified neighbor.
196
+ */
197
+ export type ThreadExternalDevice = KnownBorderRouter | UnknownThreadDevice;
198
+
134
199
  /**
135
200
  * Network graph node data for vis.js.
136
201
  */
@@ -147,6 +212,8 @@ export interface NetworkGraphNode {
147
212
  isUnknown?: boolean;
148
213
  /** Physics group: "connected" or "disconnected" */
149
214
  group?: "connected" | "disconnected";
215
+ /** Whether the node should be hidden */
216
+ hidden?: boolean;
150
217
  }
151
218
 
152
219
  /**
@@ -164,4 +231,13 @@ export interface NetworkGraphEdge {
164
231
  title?: string;
165
232
  /** Whether to show as dashed line */
166
233
  dashes?: boolean;
234
+ /** Whether the edge should be hidden */
235
+ hidden?: boolean;
236
+ /** vis.js arrow configuration: shorthand string ("to", "from", "") or
237
+ * object form for explicit head sizing on dashed edges. */
238
+ arrows?: string | { to?: { enabled: boolean; scaleFactor: number } };
239
+ /** The edge pair key this belongs to (Thread graph dedup/highlight) */
240
+ pairKey?: string;
241
+ /** Which node reported this connection from its neighbor/route table */
242
+ reportingNodeId?: number | string;
167
243
  }