@switchbot/homebridge-switchbot 5.0.0-beta.134 → 5.0.0-beta.136

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 (93) hide show
  1. package/config.schema.json +0 -11
  2. package/dist/deviceFactory.d.ts +3 -1
  3. package/dist/deviceFactory.d.ts.map +1 -1
  4. package/dist/deviceFactory.js +3 -18
  5. package/dist/deviceFactory.js.map +1 -1
  6. package/dist/devices/genericDevice.d.ts +1 -1
  7. package/dist/devices/genericDevice.d.ts.map +1 -1
  8. package/dist/devices/genericDevice.js +79 -159
  9. package/dist/devices/genericDevice.js.map +1 -1
  10. package/dist/homebridge-ui/public/index.html +107 -124
  11. package/dist/homebridge-ui/public/js/api.d.ts +1 -4
  12. package/dist/homebridge-ui/public/js/api.d.ts.map +1 -1
  13. package/dist/homebridge-ui/public/js/api.js +1 -7
  14. package/dist/homebridge-ui/public/js/api.js.map +1 -1
  15. package/dist/homebridge-ui/public/js/api.ts +1 -8
  16. package/dist/homebridge-ui/public/js/app.js +201 -90
  17. package/dist/homebridge-ui/public/js/app.js.map +2 -2
  18. package/dist/homebridge-ui/public/js/app.ts +5 -6
  19. package/dist/homebridge-ui/public/js/credentials.d.ts.map +1 -1
  20. package/dist/homebridge-ui/public/js/credentials.js +1 -1
  21. package/dist/homebridge-ui/public/js/credentials.js.map +1 -1
  22. package/dist/homebridge-ui/public/js/credentials.ts +7 -3
  23. package/dist/homebridge-ui/public/js/devices-delete.js +1 -1
  24. package/dist/homebridge-ui/public/js/devices-delete.js.map +1 -1
  25. package/dist/homebridge-ui/public/js/devices-delete.ts +1 -1
  26. package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -1
  27. package/dist/homebridge-ui/public/js/devices.js +0 -1
  28. package/dist/homebridge-ui/public/js/devices.js.map +1 -1
  29. package/dist/homebridge-ui/public/js/devices.ts +0 -2
  30. package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -1
  31. package/dist/homebridge-ui/public/js/discovery.js +6 -3
  32. package/dist/homebridge-ui/public/js/discovery.js.map +1 -1
  33. package/dist/homebridge-ui/public/js/discovery.ts +9 -3
  34. package/dist/homebridge-ui/public/js/logger.d.ts +1 -0
  35. package/dist/homebridge-ui/public/js/logger.d.ts.map +1 -1
  36. package/dist/homebridge-ui/public/js/logger.js +8 -3
  37. package/dist/homebridge-ui/public/js/logger.js.map +1 -1
  38. package/dist/homebridge-ui/public/js/logger.ts +12 -6
  39. package/dist/homebridge-ui/public/js/modals.d.ts +4 -0
  40. package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -1
  41. package/dist/homebridge-ui/public/js/modals.js +152 -59
  42. package/dist/homebridge-ui/public/js/modals.js.map +1 -1
  43. package/dist/homebridge-ui/public/js/modals.ts +187 -60
  44. package/dist/homebridge-ui/public/js/render.d.ts +3 -0
  45. package/dist/homebridge-ui/public/js/render.d.ts.map +1 -1
  46. package/dist/homebridge-ui/public/js/render.js +63 -24
  47. package/dist/homebridge-ui/public/js/render.js.map +1 -1
  48. package/dist/homebridge-ui/public/js/render.ts +102 -51
  49. package/dist/homebridge-ui/utils/logger.js +1 -1
  50. package/dist/homebridge-ui/utils/logger.js.map +1 -1
  51. package/dist/platform.d.ts.map +1 -1
  52. package/dist/platform.js +40 -32
  53. package/dist/platform.js.map +1 -1
  54. package/dist/switchbotClient.d.ts +5 -5
  55. package/dist/switchbotClient.d.ts.map +1 -1
  56. package/dist/switchbotClient.js +21 -12
  57. package/dist/switchbotClient.js.map +1 -1
  58. package/docs/variables/default.html +1 -1
  59. package/package.json +1 -1
  60. package/scripts/build-ui.js +4 -3
  61. package/scripts/generate-matter-maps.js +34 -17
  62. package/scripts/sync-device-types.mjs +4 -1
  63. package/src/deviceFactory.ts +3 -18
  64. package/src/devices/genericDevice.ts +77 -164
  65. package/src/homebridge-ui/public/index.html +107 -124
  66. package/src/homebridge-ui/public/js/api.ts +1 -8
  67. package/src/homebridge-ui/public/js/app.ts +5 -6
  68. package/src/homebridge-ui/public/js/credentials.ts +7 -3
  69. package/src/homebridge-ui/public/js/devices-delete.ts +1 -1
  70. package/src/homebridge-ui/public/js/devices.ts +0 -2
  71. package/src/homebridge-ui/public/js/discovery.ts +9 -3
  72. package/src/homebridge-ui/public/js/logger.ts +12 -6
  73. package/src/homebridge-ui/public/js/modals.ts +187 -60
  74. package/src/homebridge-ui/public/js/render.ts +102 -51
  75. package/src/homebridge-ui/utils/logger.ts +1 -1
  76. package/src/platform.ts +40 -31
  77. package/src/switchbotClient.ts +42 -27
  78. package/test/accessory-restore.spec.ts +9 -8
  79. package/test/device-mapping.spec.ts +4 -3
  80. package/test/deviceFactory.spec.ts +4 -3
  81. package/test/e2e/run-e2e.spec.ts +6 -10
  82. package/test/fan-swing.spec.ts +7 -6
  83. package/test/helpers/matter-harness.ts +18 -7
  84. package/test/lock-users.spec.ts +5 -5
  85. package/test/matter-childbridge.spec.ts +10 -7
  86. package/test/matter-descriptors.spec.ts +8 -8
  87. package/test/matter-device-state.spec.ts +52 -36
  88. package/test/matter-integration.spec.ts +53 -6
  89. package/test/platform.integration.spec.ts +7 -5
  90. package/test/switchbot-client-debounce.spec.ts +36 -40
  91. package/test/switchbot-client-openapi.spec.ts +22 -15
  92. package/test/switchbotClient.spec.ts +4 -3
  93. package/test/utils.spec.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"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"}
@@ -192,7 +192,7 @@ export async function addDevice(
192
192
  deviceId: string,
193
193
  name: string,
194
194
  type: string,
195
- options?: { address?: string, model?: string, rssi?: number, encryptionKey?: string, keyId?: string, matterType?: number },
195
+ options?: { address?: string, model?: string, rssi?: number, encryptionKey?: string, keyId?: string },
196
196
  ): Promise<any> {
197
197
  const payload: any = { deviceId, name, type }
198
198
  if (options?.address) {
@@ -210,9 +210,6 @@ export async function addDevice(
210
210
  if (options?.keyId) {
211
211
  payload.keyId = options.keyId
212
212
  }
213
- if (options?.matterType !== undefined) {
214
- payload.matterType = options.matterType
215
- }
216
213
  uiLog.info('Adding device to config:', payload)
217
214
  const resp = await homebridge.request('/add-device', payload)
218
215
  uiLog.info('Add device response:', resp)
@@ -237,7 +234,6 @@ export async function updateDevice(
237
234
  deviceId: string,
238
235
  configDeviceName?: string,
239
236
  configDeviceType?: string,
240
- options?: { matterType?: number },
241
237
  ): Promise<any> {
242
238
  const params: any = { deviceId }
243
239
  if (configDeviceName) {
@@ -246,9 +242,6 @@ export async function updateDevice(
246
242
  if (configDeviceType) {
247
243
  params.configDeviceType = configDeviceType
248
244
  }
249
- if (options?.matterType !== undefined) {
250
- params.matterType = options.matterType
251
- }
252
245
  uiLog.info('[Update Device] Sending update request with params:', params)
253
246
  const resp = await homebridge.request('/update-device', params)
254
247
  uiLog.info('[Update Device] Update response:', resp)
@@ -261,19 +261,23 @@ var init_types = __esm({
261
261
  });
262
262
 
263
263
  // src/homebridge-ui/public/js/logger.ts
264
- var uiLog;
264
+ var PREFIX, uiLog;
265
265
  var init_logger = __esm({
266
266
  "src/homebridge-ui/public/js/logger.ts"() {
267
267
  "use strict";
268
+ PREFIX = "[SwitchBot UI/html]";
268
269
  uiLog = {
269
270
  info: (message, ...parameters) => {
270
- console.warn("[SwitchBot UI]", message, ...parameters);
271
+ console.log(PREFIX, message, ...parameters);
271
272
  },
272
273
  warn: (message, ...parameters) => {
273
- console.warn("[SwitchBot UI]", message, ...parameters);
274
+ console.warn(PREFIX, message, ...parameters);
274
275
  },
275
276
  error: (message, ...parameters) => {
276
- console.error("[SwitchBot UI]", message, ...parameters);
277
+ console.error(PREFIX, message, ...parameters);
278
+ },
279
+ debug: (message, ...parameters) => {
280
+ console.debug(PREFIX, message, ...parameters);
277
281
  }
278
282
  };
279
283
  }
@@ -443,9 +447,6 @@ async function addDevice(deviceId, name, type, options) {
443
447
  if (options?.keyId) {
444
448
  payload.keyId = options.keyId;
445
449
  }
446
- if (options?.matterType !== void 0) {
447
- payload.matterType = options.matterType;
448
- }
449
450
  uiLog.info("Adding device to config:", payload);
450
451
  const resp = await homebridge.request("/add-device", payload);
451
452
  uiLog.info("Add device response:", resp);
@@ -462,7 +463,7 @@ async function addDevicesInBulk(devices) {
462
463
  }
463
464
  return resp.data || resp;
464
465
  }
465
- async function updateDevice(deviceId, configDeviceName, configDeviceType, options) {
466
+ async function updateDevice(deviceId, configDeviceName, configDeviceType) {
466
467
  const params = { deviceId };
467
468
  if (configDeviceName) {
468
469
  params.configDeviceName = configDeviceName;
@@ -470,9 +471,6 @@ async function updateDevice(deviceId, configDeviceName, configDeviceType, option
470
471
  if (configDeviceType) {
471
472
  params.configDeviceType = configDeviceType;
472
473
  }
473
- if (options?.matterType !== void 0) {
474
- params.matterType = options.matterType;
475
- }
476
474
  uiLog.info("[Update Device] Sending update request with params:", params);
477
475
  const resp = await homebridge.request("/update-device", params);
478
476
  uiLog.info("[Update Device] Update response:", resp);
@@ -1637,9 +1635,15 @@ async function updateDiscoveryView(allDevices, preferences, groupBy, hideAdded,
1637
1635
  const enableSelectedBtn = document.querySelector("button")?.parentElement?.querySelector('button[aria-label="Enable Selected"]');
1638
1636
  const disableSelectedBtn = document.querySelector("button")?.parentElement?.querySelector('button[aria-label="Disable Selected"]');
1639
1637
  const hasSelection = selectedIds.size > 0;
1640
- if (addSelectedBtn) addSelectedBtn.disabled = !hasSelection;
1641
- if (enableSelectedBtn) enableSelectedBtn.disabled = !hasSelection;
1642
- if (disableSelectedBtn) disableSelectedBtn.disabled = !hasSelection;
1638
+ if (addSelectedBtn) {
1639
+ addSelectedBtn.disabled = !hasSelection;
1640
+ }
1641
+ if (enableSelectedBtn) {
1642
+ enableSelectedBtn.disabled = !hasSelection;
1643
+ }
1644
+ if (disableSelectedBtn) {
1645
+ disableSelectedBtn.disabled = !hasSelection;
1646
+ }
1643
1647
  }
1644
1648
  window.removeEventListener("discovery-selection-changed", updateBatchButtonStates);
1645
1649
  window.addEventListener("discovery-selection-changed", updateBatchButtonStates);
@@ -1925,6 +1929,44 @@ async function importDiscoveredDevice(device) {
1925
1929
  });
1926
1930
  typeSelect.appendChild(optgroup);
1927
1931
  });
1932
+ const connectionPrefLabel = document.createElement("label");
1933
+ connectionPrefLabel.textContent = "Connection Preference";
1934
+ connectionPrefLabel.style.display = "block";
1935
+ connectionPrefLabel.style.marginBottom = "6px";
1936
+ connectionPrefLabel.style.fontWeight = "500";
1937
+ connectionPrefLabel.style.fontSize = "12px";
1938
+ connectionPrefLabel.style.color = "#6b7280";
1939
+ const connectionPrefSelect = document.createElement("select");
1940
+ connectionPrefSelect.style.width = "100%";
1941
+ connectionPrefSelect.style.marginBottom = "12px";
1942
+ connectionPrefSelect.style.padding = "8px 10px";
1943
+ connectionPrefSelect.style.borderRadius = "6px";
1944
+ connectionPrefSelect.style.fontSize = "14px";
1945
+ connectionPrefSelect.style.boxSizing = "border-box";
1946
+ ["auto", "ble", "openapi"].forEach((val) => {
1947
+ const opt = document.createElement("option");
1948
+ opt.value = val;
1949
+ opt.text = val.charAt(0).toUpperCase() + val.slice(1);
1950
+ opt.selected = (device.connectionPreference || "auto") === val;
1951
+ connectionPrefSelect.appendChild(opt);
1952
+ });
1953
+ const roomLabel = document.createElement("label");
1954
+ roomLabel.textContent = "Room";
1955
+ roomLabel.style.display = "block";
1956
+ roomLabel.style.marginBottom = "6px";
1957
+ roomLabel.style.fontWeight = "500";
1958
+ roomLabel.style.fontSize = "12px";
1959
+ roomLabel.style.color = "#6b7280";
1960
+ const roomInput = document.createElement("input");
1961
+ roomInput.type = "text";
1962
+ roomInput.value = device.room || "";
1963
+ roomInput.placeholder = "Optional room/location metadata";
1964
+ roomInput.style.width = "100%";
1965
+ roomInput.style.marginBottom = "12px";
1966
+ roomInput.style.padding = "8px 10px";
1967
+ roomInput.style.borderRadius = "6px";
1968
+ roomInput.style.fontSize = "14px";
1969
+ roomInput.style.boxSizing = "border-box";
1928
1970
  const macLabel = document.createElement("label");
1929
1971
  macLabel.textContent = "BLE MAC Address (optional)";
1930
1972
  macLabel.style.display = "block";
@@ -2003,6 +2045,8 @@ async function importDiscoveredDevice(device) {
2003
2045
  configDeviceName: nameInput.value || device.name || device.id,
2004
2046
  configDeviceType: typeSelect.value || device.type,
2005
2047
  address: macInput.value || void 0,
2048
+ connectionPreference: connectionPrefSelect.value || void 0,
2049
+ room: roomInput.value || void 0,
2006
2050
  encryptionKey: encryptionKeyInput.value || void 0,
2007
2051
  keyId: keyIdInput.value || void 0
2008
2052
  });
@@ -2017,6 +2061,10 @@ async function importDiscoveredDevice(device) {
2017
2061
  contentDiv.appendChild(nameInput);
2018
2062
  contentDiv.appendChild(typeLabel);
2019
2063
  contentDiv.appendChild(typeSelect);
2064
+ contentDiv.appendChild(connectionPrefLabel);
2065
+ contentDiv.appendChild(connectionPrefSelect);
2066
+ contentDiv.appendChild(roomLabel);
2067
+ contentDiv.appendChild(roomInput);
2020
2068
  contentDiv.appendChild(macLabel);
2021
2069
  contentDiv.appendChild(macInput);
2022
2070
  contentDiv.appendChild(encryptionKeyLabel);
@@ -2062,57 +2110,6 @@ async function editDevice(device) {
2062
2110
  });
2063
2111
  typeSelect.appendChild(optgroup);
2064
2112
  });
2065
- const windowCoveringTypes = ["Roller Shade", "Curtain", "Curtain3", "Blind Tilt"];
2066
- const showMatterType = windowCoveringTypes.includes(device.configDeviceType || device.deviceType || device.type || "");
2067
- const matterTypeLabel = document.createElement("label");
2068
- matterTypeLabel.textContent = "Matter Window Covering Type (Advanced)";
2069
- matterTypeLabel.style.display = showMatterType ? "block" : "none";
2070
- matterTypeLabel.style.marginBottom = "6px";
2071
- matterTypeLabel.style.fontWeight = "500";
2072
- matterTypeLabel.style.fontSize = "12px";
2073
- matterTypeLabel.style.color = "#6b7280";
2074
- matterTypeLabel.style.marginTop = "2px";
2075
- const matterTypes = [
2076
- { value: "", label: "Auto-detect (recommended)" },
2077
- { value: 0, label: "Roller Shade (0)" },
2078
- { value: 1, label: "Roman Shade (1)" },
2079
- { value: 2, label: "Balloon Shade (2)" },
2080
- { value: 3, label: "Woven Wood (3)" },
2081
- { value: 4, label: "Drapery (4)" },
2082
- { value: 5, label: "Awning (5)" },
2083
- { value: 6, label: "Shutter (6)" },
2084
- { value: 7, label: "Tilt Blind (7)" },
2085
- { value: 8, label: "Blind Tilt (8)" },
2086
- { value: 9, label: "Projector Screen (9)" },
2087
- { value: 15, label: "Other (15)" }
2088
- ];
2089
- const matterTypeSelect = document.createElement("select");
2090
- matterTypeSelect.style.width = "100%";
2091
- matterTypeSelect.style.marginBottom = "12px";
2092
- matterTypeSelect.style.padding = "8px 10px";
2093
- matterTypeSelect.style.borderRadius = "6px";
2094
- matterTypeSelect.style.fontSize = "14px";
2095
- matterTypeSelect.style.boxSizing = "border-box";
2096
- matterTypes.forEach((opt) => {
2097
- const option = document.createElement("option");
2098
- option.value = String(opt.value);
2099
- option.textContent = opt.label;
2100
- if (device.matterType != null && String(opt.value) === String(device.matterType)) {
2101
- option.selected = true;
2102
- }
2103
- matterTypeSelect.appendChild(option);
2104
- });
2105
- function updateMatterTypeVisibility() {
2106
- if (windowCoveringTypes.includes(typeSelect.value)) {
2107
- matterTypeLabel.style.display = "block";
2108
- matterTypeSelect.style.display = "block";
2109
- } else {
2110
- matterTypeLabel.style.display = "none";
2111
- matterTypeSelect.style.display = "none";
2112
- }
2113
- }
2114
- typeSelect.addEventListener("change", updateMatterTypeVisibility);
2115
- updateMatterTypeVisibility();
2116
2113
  const div = document.createElement("div");
2117
2114
  div.style.position = "fixed";
2118
2115
  div.style.top = "0";
@@ -2195,6 +2192,78 @@ async function editDevice(device) {
2195
2192
  });
2196
2193
  typeSelect.appendChild(optgroup);
2197
2194
  });
2195
+ const connectionPrefLabel = document.createElement("label");
2196
+ connectionPrefLabel.textContent = "Connection Preference";
2197
+ connectionPrefLabel.style.display = "block";
2198
+ connectionPrefLabel.style.marginBottom = "6px";
2199
+ connectionPrefLabel.style.fontWeight = "500";
2200
+ connectionPrefLabel.style.fontSize = "12px";
2201
+ connectionPrefLabel.style.color = "#6b7280";
2202
+ const connectionPrefSelect = document.createElement("select");
2203
+ connectionPrefSelect.style.width = "100%";
2204
+ connectionPrefSelect.style.marginBottom = "12px";
2205
+ connectionPrefSelect.style.padding = "8px 10px";
2206
+ connectionPrefSelect.style.borderRadius = "6px";
2207
+ connectionPrefSelect.style.fontSize = "14px";
2208
+ connectionPrefSelect.style.boxSizing = "border-box";
2209
+ ["auto", "ble", "openapi"].forEach((val) => {
2210
+ const opt = document.createElement("option");
2211
+ opt.value = val;
2212
+ opt.text = val.charAt(0).toUpperCase() + val.slice(1);
2213
+ opt.selected = (device.connectionPreference || "auto") === val;
2214
+ connectionPrefSelect.appendChild(opt);
2215
+ });
2216
+ const roomLabel = document.createElement("label");
2217
+ roomLabel.textContent = "Room";
2218
+ roomLabel.style.display = "block";
2219
+ roomLabel.style.marginBottom = "6px";
2220
+ roomLabel.style.fontWeight = "500";
2221
+ roomLabel.style.fontSize = "12px";
2222
+ roomLabel.style.color = "#6b7280";
2223
+ const roomInput = document.createElement("input");
2224
+ roomInput.type = "text";
2225
+ roomInput.value = device.room || "";
2226
+ roomInput.placeholder = "Optional room/location metadata";
2227
+ roomInput.style.width = "100%";
2228
+ roomInput.style.marginBottom = "12px";
2229
+ roomInput.style.padding = "8px 10px";
2230
+ roomInput.style.borderRadius = "6px";
2231
+ roomInput.style.fontSize = "14px";
2232
+ roomInput.style.boxSizing = "border-box";
2233
+ const encryptionKeyLabel = document.createElement("label");
2234
+ encryptionKeyLabel.textContent = "BLE Encryption Key (optional)";
2235
+ encryptionKeyLabel.style.display = "block";
2236
+ encryptionKeyLabel.style.marginBottom = "6px";
2237
+ encryptionKeyLabel.style.fontWeight = "500";
2238
+ encryptionKeyLabel.style.fontSize = "12px";
2239
+ encryptionKeyLabel.style.color = "#6b7280";
2240
+ const encryptionKeyInput = document.createElement("input");
2241
+ encryptionKeyInput.type = "password";
2242
+ encryptionKeyInput.value = device.encryptionKey || "";
2243
+ encryptionKeyInput.placeholder = "Paste device BLE encryption key";
2244
+ encryptionKeyInput.style.width = "100%";
2245
+ encryptionKeyInput.style.marginBottom = "12px";
2246
+ encryptionKeyInput.style.padding = "8px 10px";
2247
+ encryptionKeyInput.style.borderRadius = "6px";
2248
+ encryptionKeyInput.style.fontSize = "14px";
2249
+ encryptionKeyInput.style.boxSizing = "border-box";
2250
+ const keyIdLabel = document.createElement("label");
2251
+ keyIdLabel.textContent = "BLE Key ID (optional)";
2252
+ keyIdLabel.style.display = "block";
2253
+ keyIdLabel.style.marginBottom = "6px";
2254
+ keyIdLabel.style.fontWeight = "500";
2255
+ keyIdLabel.style.fontSize = "12px";
2256
+ keyIdLabel.style.color = "#6b7280";
2257
+ const keyIdInput = document.createElement("input");
2258
+ keyIdInput.type = "text";
2259
+ keyIdInput.value = device.keyId || "";
2260
+ keyIdInput.placeholder = "e.g. ff";
2261
+ keyIdInput.style.width = "100%";
2262
+ keyIdInput.style.marginBottom = "12px";
2263
+ keyIdInput.style.padding = "8px 10px";
2264
+ keyIdInput.style.borderRadius = "6px";
2265
+ keyIdInput.style.fontSize = "14px";
2266
+ keyIdInput.style.boxSizing = "border-box";
2198
2267
  const errorMessage = document.createElement("div");
2199
2268
  errorMessage.style.color = "var(--switchbot-red, #ef4444)";
2200
2269
  errorMessage.style.marginBottom = "12px";
@@ -2231,9 +2300,29 @@ async function editDevice(device) {
2231
2300
  deviceId: device.id,
2232
2301
  configDeviceName: nameInput.value || void 0,
2233
2302
  configDeviceType: typeSelect.value,
2234
- matterType: windowCoveringTypes.includes(typeSelect.value) && matterTypeSelect.value !== "" ? Number(matterTypeSelect.value) : void 0
2303
+ connectionPreference: connectionPrefSelect.value,
2304
+ room: roomInput.value || void 0,
2305
+ encryptionKey: encryptionKeyInput.value || void 0,
2306
+ keyId: keyIdInput.value || void 0
2235
2307
  };
2236
- await updateDevice2(params.deviceId, params.configDeviceName, params.configDeviceType, { matterType: params.matterType });
2308
+ const options = {};
2309
+ if (params.connectionPreference !== void 0) {
2310
+ options.connectionPreference = params.connectionPreference;
2311
+ }
2312
+ if (params.room !== void 0) {
2313
+ options.room = params.room;
2314
+ }
2315
+ if (params.encryptionKey !== void 0) {
2316
+ options.encryptionKey = params.encryptionKey;
2317
+ }
2318
+ if (params.keyId !== void 0) {
2319
+ options.keyId = params.keyId;
2320
+ }
2321
+ await updateDevice2(
2322
+ params.deviceId,
2323
+ params.configDeviceName,
2324
+ params.configDeviceType
2325
+ );
2237
2326
  await syncParentPluginConfigFromDisk2();
2238
2327
  uiLog.info("[Edit Device] Refreshing device list after update");
2239
2328
  const list = await fetchDevices2();
@@ -2253,8 +2342,14 @@ async function editDevice(device) {
2253
2342
  contentDiv.appendChild(apiTypeInput);
2254
2343
  contentDiv.appendChild(typeLabel);
2255
2344
  contentDiv.appendChild(typeSelect);
2256
- contentDiv.appendChild(matterTypeLabel);
2257
- contentDiv.appendChild(matterTypeSelect);
2345
+ contentDiv.appendChild(connectionPrefLabel);
2346
+ contentDiv.appendChild(connectionPrefSelect);
2347
+ contentDiv.appendChild(roomLabel);
2348
+ contentDiv.appendChild(roomInput);
2349
+ contentDiv.appendChild(encryptionKeyLabel);
2350
+ contentDiv.appendChild(encryptionKeyInput);
2351
+ contentDiv.appendChild(keyIdLabel);
2352
+ contentDiv.appendChild(keyIdInput);
2258
2353
  contentDiv.appendChild(errorMessage);
2259
2354
  contentDiv.appendChild(buttons);
2260
2355
  modal.appendChild(title);
@@ -2704,18 +2799,22 @@ function renderDeviceDetailsPanel(device) {
2704
2799
  let batteryHistory = [];
2705
2800
  try {
2706
2801
  const raw = localStorage.getItem(batteryHistoryKey);
2707
- if (raw) batteryHistory = JSON.parse(raw);
2708
- } catch {
2802
+ if (raw) {
2803
+ batteryHistory = JSON.parse(raw);
2804
+ }
2805
+ } catch (e) {
2709
2806
  }
2710
2807
  const now = Date.now();
2711
2808
  if (typeof device?.battery === "number") {
2712
- const last = batteryHistory[batteryHistory.length - 1];
2809
+ const last = batteryHistory.at(-1);
2713
2810
  if (!last || last.value !== device.battery || now - last.ts > 60 * 60 * 1e3) {
2714
2811
  batteryHistory.push({ value: device.battery, ts: now });
2715
- if (batteryHistory.length > 30) batteryHistory = batteryHistory.slice(-30);
2812
+ if (batteryHistory.length > 30) {
2813
+ batteryHistory = batteryHistory.slice(-30);
2814
+ }
2716
2815
  try {
2717
2816
  localStorage.setItem(batteryHistoryKey, JSON.stringify(batteryHistory));
2718
- } catch {
2817
+ } catch (e) {
2719
2818
  }
2720
2819
  }
2721
2820
  }
@@ -2792,7 +2891,9 @@ function renderDeviceDetailsPanel(device) {
2792
2891
  chart.style.width = "100%";
2793
2892
  chart.style.height = "28px";
2794
2893
  chart.style.display = "flex";
2795
- const w = 120, h = 24, pad = 2;
2894
+ const w = 120;
2895
+ const h = 24;
2896
+ const pad = 2;
2796
2897
  const min = Math.min(...batteryHistory.map((b) => b.value), 100);
2797
2898
  const max = Math.max(...batteryHistory.map((b) => b.value), 0);
2798
2899
  const range = max - min || 1;
@@ -2864,7 +2965,7 @@ function renderDeviceDetailsPanel(device) {
2864
2965
  "capabilities",
2865
2966
  "state"
2866
2967
  ];
2867
- const shown = new Set(rows.map((r) => r.label.toLowerCase().replace(/\s/g, "")));
2968
+ const shown = new Set(rows.map((r) => r.label.toLowerCase().replace(SPACES_REGEX, "")));
2868
2969
  for (const key of featureKeys) {
2869
2970
  if (device && device[key] !== void 0 && !shown.has(key.toLowerCase())) {
2870
2971
  const line = document.createElement("div");
@@ -2876,7 +2977,7 @@ function renderDeviceDetailsPanel(device) {
2876
2977
  const label = document.createElement("span");
2877
2978
  label.style.fontWeight = "600";
2878
2979
  label.style.minWidth = "110px";
2879
- label.textContent = key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase()) + ":";
2980
+ label.textContent = `${key.replace(CAMELCASE_REGEX, " $1").replace(FIRST_CHAR_REGEX, (s) => s.toUpperCase())}:`;
2880
2981
  const value = document.createElement("span");
2881
2982
  value.style.fontFamily = "monospace";
2882
2983
  value.style.fontSize = "11px";
@@ -2956,14 +3057,16 @@ async function renderDiscoveredDevices(devices, options = {}) {
2956
3057
  nameContainer.appendChild(fwBadge);
2957
3058
  }
2958
3059
  let offline = false;
2959
- let lastSeen = d.lastSeen || d.lastseen || d.updatedAt;
3060
+ const lastSeen = d.lastSeen || d.lastseen || d.updatedAt;
2960
3061
  if (typeof d.offline === "boolean") {
2961
3062
  offline = d.offline;
2962
3063
  } else if (lastSeen) {
2963
3064
  try {
2964
3065
  const last = new Date(lastSeen).getTime();
2965
- if (!isNaN(last) && Date.now() - last > 1e3 * 60 * 60) {
2966
- offline = true;
3066
+ if (!Number.isNaN(last)) {
3067
+ if (Date.now() - last > 1e3 * 60 * 60) {
3068
+ offline = true;
3069
+ }
2967
3070
  }
2968
3071
  } catch {
2969
3072
  }
@@ -3153,11 +3256,11 @@ function sortDevices(devices, sortBy = "name") {
3153
3256
  }
3154
3257
  case "connection": {
3155
3258
  const connectionOrder = {
3156
- "Both": 0,
3157
- "BLE": 1,
3158
- "OpenAPI": 2,
3159
- "API": 2,
3160
- "Unknown": 3
3259
+ Both: 0,
3260
+ BLE: 1,
3261
+ OpenAPI: 2,
3262
+ API: 2,
3263
+ Unknown: 3
3161
3264
  };
3162
3265
  sorted.sort((a, b) => {
3163
3266
  const aOrder = connectionOrder[a.connectionType || "Unknown"] ?? 3;
@@ -3316,7 +3419,12 @@ function renderDeviceList(list) {
3316
3419
  copyBtn.classList.remove("success");
3317
3420
  }, 1200);
3318
3421
  } catch (e) {
3319
- alert("Failed to copy");
3422
+ copyBtn.textContent = "Failed";
3423
+ copyBtn.classList.add("error");
3424
+ setTimeout(() => {
3425
+ copyBtn.textContent = "Copy ID";
3426
+ copyBtn.classList.remove("error");
3427
+ }, 1200);
3320
3428
  }
3321
3429
  });
3322
3430
  const deleteBtn = document.createElement("button");
@@ -3337,9 +3445,13 @@ function renderDeviceList(list) {
3337
3445
  ul.appendChild(li);
3338
3446
  }
3339
3447
  }
3448
+ var SPACES_REGEX, CAMELCASE_REGEX, FIRST_CHAR_REGEX;
3340
3449
  var init_render = __esm({
3341
3450
  "src/homebridge-ui/public/js/render.ts"() {
3342
3451
  "use strict";
3452
+ SPACES_REGEX = /\s/g;
3453
+ CAMELCASE_REGEX = /([A-Z])/g;
3454
+ FIRST_CHAR_REGEX = /^./;
3343
3455
  }
3344
3456
  });
3345
3457
 
@@ -3365,8 +3477,7 @@ async function addDeviceToConfig2(device, options = {}) {
3365
3477
  model: device.model,
3366
3478
  rssi: device.rssi,
3367
3479
  encryptionKey: importValues.encryptionKey,
3368
- keyId: importValues.keyId,
3369
- matterType: importValues.matterType
3480
+ keyId: importValues.keyId
3370
3481
  });
3371
3482
  uiLog.info("Add device response:", resp);
3372
3483
  if (!resp || resp.success === false) {
@@ -3510,7 +3621,7 @@ async function saveCredentials2() {
3510
3621
  ;
3511
3622
  document.getElementById("token").value = "";
3512
3623
  document.getElementById("secret").value = "";
3513
- setTimeout(() => loadCredentialStatus(), 500);
3624
+ setTimeout(loadCredentialStatus, 500);
3514
3625
  setTimeout(() => {
3515
3626
  saveStatus.textContent = "";
3516
3627
  saveStatus.classList.remove("success-msg");
@@ -3536,7 +3647,7 @@ window.discoverDevices = discoverDevices2;
3536
3647
  async function init() {
3537
3648
  await loadCredentialStatus();
3538
3649
  await initializeDiscoverySettings();
3539
- const list = await loadConfiguredDevices();
3650
+ await loadConfiguredDevices();
3540
3651
  await initRemoveAllButton();
3541
3652
  }
3542
3653
  if (document.readyState === "loading") {