homebridge-config-ui-x 5.0.0-beta.3 → 5.0.0-beta.30

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 (282) hide show
  1. package/CHANGELOG.md +182 -8
  2. package/LICENSE +1 -1
  3. package/README.md +6 -8
  4. package/config.schema.json +38 -18
  5. package/dist/bin/fork.js +17 -7
  6. package/dist/bin/fork.js.map +1 -1
  7. package/dist/bin/hb-service.d.ts +2 -2
  8. package/dist/bin/hb-service.js +67 -56
  9. package/dist/bin/hb-service.js.map +1 -1
  10. package/dist/bin/platforms/win32.js +4 -2
  11. package/dist/bin/platforms/win32.js.map +1 -1
  12. package/dist/bin/standalone.js +18 -7
  13. package/dist/bin/standalone.js.map +1 -1
  14. package/dist/core/auth/auth.controller.d.ts +2 -0
  15. package/dist/core/auth/auth.controller.js.map +1 -1
  16. package/dist/core/auth/auth.module.js +1 -1
  17. package/dist/core/auth/auth.module.js.map +1 -1
  18. package/dist/core/auth/auth.service.js +10 -10
  19. package/dist/core/auth/auth.service.js.map +1 -1
  20. package/dist/core/config/config.service.d.ts +3 -0
  21. package/dist/core/config/config.service.js +1 -0
  22. package/dist/core/config/config.service.js.map +1 -1
  23. package/dist/core/config/config.startup.js +2 -2
  24. package/dist/core/config/config.startup.js.map +1 -1
  25. package/dist/core/homebridge-ipc/homebridge-ipc.service.js +3 -3
  26. package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
  27. package/dist/index.js +25 -14
  28. package/dist/index.js.map +1 -1
  29. package/dist/main.js +1 -1
  30. package/dist/main.js.map +1 -1
  31. package/dist/modules/accessories/accessories.controller.js +4 -4
  32. package/dist/modules/accessories/accessories.controller.js.map +1 -1
  33. package/dist/modules/accessories/accessories.service.js +7 -6
  34. package/dist/modules/accessories/accessories.service.js.map +1 -1
  35. package/dist/modules/backup/backup.controller.js +7 -7
  36. package/dist/modules/backup/backup.controller.js.map +1 -1
  37. package/dist/modules/backup/backup.service.js +17 -17
  38. package/dist/modules/backup/backup.service.js.map +1 -1
  39. package/dist/modules/child-bridges/child-bridges.service.js +3 -3
  40. package/dist/modules/child-bridges/child-bridges.service.js.map +1 -1
  41. package/dist/modules/config-editor/config-editor.controller.d.ts +1 -1
  42. package/dist/modules/config-editor/config-editor.controller.js +7 -7
  43. package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
  44. package/dist/modules/config-editor/config-editor.service.d.ts +1 -1
  45. package/dist/modules/config-editor/config-editor.service.js +6 -6
  46. package/dist/modules/config-editor/config-editor.service.js.map +1 -1
  47. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +11 -9
  48. package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
  49. package/dist/modules/log/log.service.js +3 -3
  50. package/dist/modules/log/log.service.js.map +1 -1
  51. package/dist/modules/platform-tools/docker/docker.controller.js +3 -3
  52. package/dist/modules/platform-tools/docker/docker.controller.js.map +1 -1
  53. package/dist/modules/platform-tools/docker/docker.service.js +1 -1
  54. package/dist/modules/platform-tools/docker/docker.service.js.map +1 -1
  55. package/dist/modules/platform-tools/hb-service/hb-service.controller.js +1 -1
  56. package/dist/modules/platform-tools/hb-service/hb-service.controller.js.map +1 -1
  57. package/dist/modules/platform-tools/hb-service/hb-service.service.js +6 -6
  58. package/dist/modules/platform-tools/hb-service/hb-service.service.js.map +1 -1
  59. package/dist/modules/platform-tools/linux/linux.controller.js +2 -2
  60. package/dist/modules/platform-tools/linux/linux.controller.js.map +1 -1
  61. package/dist/modules/platform-tools/linux/linux.service.js +2 -2
  62. package/dist/modules/platform-tools/linux/linux.service.js.map +1 -1
  63. package/dist/modules/platform-tools/terminal/terminal.service.js +2 -2
  64. package/dist/modules/platform-tools/terminal/terminal.service.js.map +1 -1
  65. package/dist/modules/plugins/plugins.controller.js +4 -4
  66. package/dist/modules/plugins/plugins.controller.js.map +1 -1
  67. package/dist/modules/plugins/plugins.service.d.ts +1 -0
  68. package/dist/modules/plugins/plugins.service.js +74 -35
  69. package/dist/modules/plugins/plugins.service.js.map +1 -1
  70. package/dist/modules/server/server.controller.d.ts +19 -2
  71. package/dist/modules/server/server.controller.js +84 -18
  72. package/dist/modules/server/server.controller.js.map +1 -1
  73. package/dist/modules/server/server.service.d.ts +23 -6
  74. package/dist/modules/server/server.service.js +171 -56
  75. package/dist/modules/server/server.service.js.map +1 -1
  76. package/dist/modules/status/status.controller.js +3 -3
  77. package/dist/modules/status/status.controller.js.map +1 -1
  78. package/dist/modules/status/status.service.js +4 -4
  79. package/dist/modules/status/status.service.js.map +1 -1
  80. package/dist/modules/users/users.controller.js +1 -1
  81. package/dist/modules/users/users.controller.js.map +1 -1
  82. package/dist/self-check.js +6 -6
  83. package/dist/self-check.js.map +1 -1
  84. package/package.json +31 -27
  85. package/public/3rdpartylicenses.txt +70 -44
  86. package/public/assets/hap-icons/airpurifier.svg +49 -16
  87. package/public/assets/hap-icons/airquality.svg +24 -13
  88. package/public/assets/hap-icons/contactsensor-closed.svg +35 -2
  89. package/public/assets/hap-icons/contactsensor-open.svg +80 -2
  90. package/public/assets/hap-icons/door-closed.svg +32 -2
  91. package/public/assets/hap-icons/door-open.svg +48 -2
  92. package/public/assets/hap-icons/fan-off.svg +24 -13
  93. package/public/assets/hap-icons/fan-on.svg +24 -13
  94. package/public/assets/hap-icons/garagedoor.svg +24 -13
  95. package/public/assets/hap-icons/humidity.svg +24 -13
  96. package/public/assets/hap-icons/irrigation-system.svg +47 -18
  97. package/public/assets/hap-icons/leaksensor.svg +52 -2
  98. package/public/assets/hap-icons/light.svg +47 -28
  99. package/public/assets/hap-icons/lightbulb.svg +24 -13
  100. package/public/assets/hap-icons/lock-locked.svg +24 -13
  101. package/public/assets/hap-icons/lock-unlocked.svg +24 -13
  102. package/public/assets/hap-icons/motionsensor.svg +100 -2
  103. package/public/assets/hap-icons/occupancysensor.svg +97 -2
  104. package/public/assets/hap-icons/outlet.svg +24 -13
  105. package/public/assets/hap-icons/securitysystem-active.svg +102 -2
  106. package/public/assets/hap-icons/securitysystem-off.svg +68 -2
  107. package/public/assets/hap-icons/smokesensor.svg +42 -9
  108. package/public/assets/hap-icons/speaker.svg +29 -13
  109. package/public/assets/hap-icons/statelessprogrammableswitch.svg +51 -2
  110. package/public/assets/hap-icons/switch.svg +24 -13
  111. package/public/assets/hap-icons/television.svg +15 -4
  112. package/public/assets/hap-icons/temperature.svg +24 -13
  113. package/public/assets/hap-icons/unknown.svg +24 -13
  114. package/public/assets/hap-icons/valve-generic.svg +27 -16
  115. package/public/assets/hap-icons/valve-irrigation.svg +37 -21
  116. package/public/assets/hap-icons/valve-showerhead.svg +52 -0
  117. package/public/assets/hap-icons/valve-waterfaucet.svg +21 -0
  118. package/public/assets/hap-icons/window-closed.svg +85 -2
  119. package/public/assets/hap-icons/window-open.svg +136 -2
  120. package/public/assets/hap-icons/windowcovering-closed.svg +45 -49
  121. package/public/assets/hap-icons/windowcovering-open.svg +40 -44
  122. package/public/assets/homebridge-color-round.svg +36 -1
  123. package/public/assets/homebridge-logo.svg +11 -1
  124. package/public/assets/mask-icon.svg +5 -1
  125. package/public/assets/plugin-ui-utils/ui.js +38 -19
  126. package/public/assets/plugin-ui-utils/ui.js.map +1 -1
  127. package/public/{chunk-6TCHCTXZ.js → chunk-23M23WV2.js} +1 -1
  128. package/public/chunk-2YYAI64O.js +1 -0
  129. package/public/{chunk-VMXGERJT.js → chunk-2ZEIWH4C.js} +8 -8
  130. package/public/chunk-42YSCDZK.js +1 -0
  131. package/public/{chunk-QE7DO6J3.js → chunk-474BOAR2.js} +2 -2
  132. package/public/chunk-4BZV7AMQ.js +32 -0
  133. package/public/{chunk-WNWWUCCZ.js → chunk-5KLZWFYX.js} +1 -1
  134. package/public/chunk-5NTU76Y2.js +1 -0
  135. package/public/chunk-5OIS4J4X.js +1 -0
  136. package/public/chunk-5YBMCQ2E.js +1 -0
  137. package/public/chunk-64RTOH3L.js +1 -0
  138. package/public/chunk-675OFXLW.js +1 -0
  139. package/public/chunk-6TO5IBYB.js +5 -0
  140. package/public/chunk-6UQS6IP4.js +1 -0
  141. package/public/{chunk-BKUGARB4.js → chunk-7BCHGXO4.js} +1 -1
  142. package/public/chunk-A5D6DOHK.js +1 -0
  143. package/public/chunk-BMWLHPL2.js +1 -0
  144. package/public/chunk-BO2RTACA.js +1 -0
  145. package/public/chunk-BVC2RBSG.js +1 -0
  146. package/public/{chunk-CCUID66K.js → chunk-C2XBPNOQ.js} +1 -1
  147. package/public/chunk-C4PJKEWA.js +1 -0
  148. package/public/chunk-CHP2ZI3F.js +1 -0
  149. package/public/chunk-CKNHTRCL.js +7 -0
  150. package/public/chunk-CLERVK2C.js +1 -0
  151. package/public/chunk-CZY5YUJJ.js +1 -0
  152. package/public/chunk-DTH6YVQ5.js +1 -0
  153. package/public/chunk-DUM3YHTS.js +1 -0
  154. package/public/chunk-DWDK5EDZ.js +1 -0
  155. package/public/chunk-EEDUUZ6J.js +1 -0
  156. package/public/chunk-ERXUVZM6.js +1 -0
  157. package/public/chunk-FRSJ6MDR.js +1 -0
  158. package/public/{chunk-7L7RZCFC.js → chunk-GR4KMWT2.js} +1 -1
  159. package/public/chunk-GUAOICDU.js +1 -0
  160. package/public/chunk-H3YQBGGB.js +1 -0
  161. package/public/{chunk-UG5DK2RQ.js → chunk-HA6CO5NZ.js} +2 -2
  162. package/public/chunk-HJKPT3MJ.js +6 -0
  163. package/public/chunk-I37YRYWO.js +1 -0
  164. package/public/chunk-I5HC6YE6.js +1 -0
  165. package/public/{chunk-JZZQRLNW.js → chunk-JF5AT3NK.js} +1 -1
  166. package/public/chunk-KROLJP5T.js +1 -0
  167. package/public/chunk-KUS3JO5E.js +1 -0
  168. package/public/chunk-LEFLOPGL.js +1 -0
  169. package/public/chunk-LHGXPARJ.js +1 -0
  170. package/public/chunk-M66MJDOB.js +1 -0
  171. package/public/chunk-MLFCC76B.js +1 -0
  172. package/public/chunk-N4F42HDL.js +5 -0
  173. package/public/{chunk-NW6AFAD7.js → chunk-NFG4Y4PX.js} +1 -1
  174. package/public/{chunk-7EUQWCP5.js → chunk-NSCP3SOQ.js} +1 -1
  175. package/public/chunk-OWP42U3Q.js +1 -0
  176. package/public/chunk-QUXECVRB.js +1 -0
  177. package/public/{chunk-IW3EPSTZ.js → chunk-R5IIVXMM.js} +4 -4
  178. package/public/chunk-RGF5UNTQ.js +1 -0
  179. package/public/chunk-RLM4Q3NA.js +1 -0
  180. package/public/chunk-RZIIH6OH.js +1 -0
  181. package/public/chunk-S75PX3CD.js +1 -0
  182. package/public/chunk-S7RJS4DA.js +1 -0
  183. package/public/chunk-SFOCFUZK.js +1 -0
  184. package/public/chunk-SFW3EWWB.js +1 -0
  185. package/public/chunk-T3B7RH4F.js +1 -0
  186. package/public/{chunk-NZNNTHFQ.js → chunk-T3GI7KUT.js} +1 -1
  187. package/public/chunk-TNPEEFW3.js +1 -0
  188. package/public/chunk-TWVNA46I.js +1 -0
  189. package/public/chunk-U7T2AD2X.js +1 -0
  190. package/public/chunk-UA6R3XIL.js +1 -0
  191. package/public/chunk-UNUYCODO.js +1 -0
  192. package/public/chunk-UOL2NKOO.js +1 -0
  193. package/public/{chunk-BFDVOBTQ.js → chunk-V34IYB4T.js} +1 -1
  194. package/public/{chunk-VOBHY2IH.js → chunk-VH5DDEVH.js} +2 -2
  195. package/public/chunk-VRLRDDC6.js +20 -0
  196. package/public/chunk-VUP4TCYX.js +1 -0
  197. package/public/{chunk-6PHMBMFU.js → chunk-W3AL3YCO.js} +1 -1
  198. package/public/chunk-WC4JHC6X.js +1 -0
  199. package/public/chunk-WEJDJXGV.js +1 -0
  200. package/public/chunk-WJ3IINUA.js +1 -0
  201. package/public/{chunk-ASX35H47.js → chunk-WJVQNA7H.js} +1 -1
  202. package/public/chunk-X5YRTZFZ.js +1 -0
  203. package/public/chunk-XAM6ZNPS.js +1 -0
  204. package/public/{chunk-WHJOLAED.js → chunk-XFK2EZ3K.js} +1 -1
  205. package/public/{chunk-EA5J2VEJ.js → chunk-XP7D2PRA.js} +1 -1
  206. package/public/{chunk-WHJSVGC7.js → chunk-XQNHUDX7.js} +1 -1
  207. package/public/{chunk-QHPDGSZ6.js → chunk-YLEC7AUG.js} +1 -1
  208. package/public/chunk-YPAFR2PB.js +1 -0
  209. package/public/index.html +2 -2
  210. package/public/main-GTJ3X2LZ.js +1 -0
  211. package/public/media/fa-brands-400-Q3XCMWHQ.woff2 +0 -0
  212. package/public/media/{fa-brands-400-MVB2B5XM.ttf → fa-brands-400-R2XQZCET.ttf} +0 -0
  213. package/public/media/fa-regular-400-QSNYFYRT.woff2 +0 -0
  214. package/public/media/{fa-regular-400-EGQOOADX.ttf → fa-regular-400-XUOPSR7E.ttf} +0 -0
  215. package/public/media/fa-solid-900-5ZUYHGA7.woff2 +0 -0
  216. package/public/media/{fa-solid-900-ZUDIWQL5.ttf → fa-solid-900-PJNKLK6W.ttf} +0 -0
  217. package/public/styles-7Q7QNSR3.css +1 -0
  218. package/public/chunk-2OBHR63W.js +0 -1
  219. package/public/chunk-3C6WVST7.js +0 -1
  220. package/public/chunk-3IX3CLER.js +0 -1
  221. package/public/chunk-5ALXJOLQ.js +0 -1
  222. package/public/chunk-5LVGHH2N.js +0 -1
  223. package/public/chunk-7456RB3C.js +0 -1
  224. package/public/chunk-76S7LYCL.js +0 -1
  225. package/public/chunk-77A3OZ74.js +0 -1
  226. package/public/chunk-7EANS226.js +0 -1
  227. package/public/chunk-AVJ6EUEE.js +0 -1
  228. package/public/chunk-AX23H5TL.js +0 -1
  229. package/public/chunk-AZXQ73I5.js +0 -1
  230. package/public/chunk-BMXAHMY6.js +0 -1
  231. package/public/chunk-BPMSJ2VF.js +0 -1
  232. package/public/chunk-CW7Q7WEJ.js +0 -1
  233. package/public/chunk-DDXIRKVB.js +0 -1
  234. package/public/chunk-DNOJWLVY.js +0 -1
  235. package/public/chunk-DZY2Q3FG.js +0 -1
  236. package/public/chunk-FX4GQIE4.js +0 -32
  237. package/public/chunk-GVDR7ZRB.js +0 -1
  238. package/public/chunk-HSJSWZHD.js +0 -1
  239. package/public/chunk-I7ZKPCIW.js +0 -1
  240. package/public/chunk-IPZ4P5DE.js +0 -1
  241. package/public/chunk-IWYEH4T6.js +0 -1
  242. package/public/chunk-JL6S5IIU.js +0 -1
  243. package/public/chunk-KIJWUGXX.js +0 -1
  244. package/public/chunk-KO3WJGGG.js +0 -1
  245. package/public/chunk-KQJ7ONUG.js +0 -1
  246. package/public/chunk-KTDJZCFW.js +0 -1
  247. package/public/chunk-LDPCT3YF.js +0 -5
  248. package/public/chunk-MHYIZZN4.js +0 -1
  249. package/public/chunk-MOV2HTCQ.js +0 -1
  250. package/public/chunk-NF4NIS42.js +0 -1
  251. package/public/chunk-O75YP3SB.js +0 -1
  252. package/public/chunk-ODPTCLGS.js +0 -1
  253. package/public/chunk-ORPWYWCL.js +0 -5
  254. package/public/chunk-Q5URFHBE.js +0 -1
  255. package/public/chunk-QLWY5NWN.js +0 -1
  256. package/public/chunk-QRZNMAFL.js +0 -1
  257. package/public/chunk-RHB2T3FE.js +0 -1
  258. package/public/chunk-RMI35HIS.js +0 -1
  259. package/public/chunk-RO4QXVDE.js +0 -1
  260. package/public/chunk-RWZRB2OY.js +0 -1
  261. package/public/chunk-S62KH3FN.js +0 -6
  262. package/public/chunk-S6EMLS5Q.js +0 -1
  263. package/public/chunk-SVFFEV36.js +0 -1
  264. package/public/chunk-T2YVB4SI.js +0 -1
  265. package/public/chunk-TCSXGQNF.js +0 -1
  266. package/public/chunk-TXOB7R5K.js +0 -7
  267. package/public/chunk-U6ORTLYL.js +0 -1
  268. package/public/chunk-UJU3NPS7.js +0 -1
  269. package/public/chunk-UYZI56PX.js +0 -1
  270. package/public/chunk-UZU6PLTW.js +0 -1
  271. package/public/chunk-UZW3DWH4.js +0 -1
  272. package/public/chunk-WMB35VCS.js +0 -1
  273. package/public/chunk-WT2GX4NS.js +0 -1
  274. package/public/chunk-XH6GEPB6.js +0 -1
  275. package/public/chunk-ZLPCX4R4.js +0 -1
  276. package/public/chunk-ZT23DWNL.js +0 -1
  277. package/public/chunk-ZY7HKZ4P.js +0 -20
  278. package/public/main-ILTX7GFO.js +0 -1
  279. package/public/media/fa-brands-400-6U3GU5Y7.woff2 +0 -0
  280. package/public/media/fa-regular-400-R5EOMW4H.woff2 +0 -0
  281. package/public/media/fa-solid-900-W65KEJAS.woff2 +0 -0
  282. package/public/styles-GDLSHXGD.css +0 -1
package/CHANGELOG.md CHANGED
@@ -6,7 +6,7 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
6
6
 
7
7
  ### ⚠️ Breaking Changes
8
8
 
9
- - This version of the Homebridge UI will drop support for:
9
+ - This version of the Homebridge UI drops support for:
10
10
  - Node.js `v16` and earlier, so please update to `v18` or `v20` or `v22` - [more info on updating](https://github.com/homebridge/homebridge/wiki/How-To-Update-Node.js)
11
11
  - Raspberry Pi devices running on the `armv6` architecture (like the Pi 1 and Pi Zero) - please update your hardware
12
12
  - Instances using `pnpm` as the package manager - consider updating your Homebridge instance to use npm instead - [more info on updating](https://github.com/homebridge/homebridge-apt-pkg/blob/latest/README.md#using-apt)
@@ -28,11 +28,11 @@ Plugin developers:
28
28
  - Please do not rely on this validation and assume that a user's configuration will be valid
29
29
  - All plugins should still validate a configuration when the plugin is started
30
30
  - Remember that some users do not use the UI at all, and other users may prefer to configure using raw `JSON` rather than config screens
31
- - Please report any cases where the validation is not working as expected, or where the 'Save' button is incorrectly disabled when using custom UIs
31
+ - Please report any cases where the validation is not working as expected
32
32
 
33
33
  ### UI Changes
34
34
 
35
- - implement and allow switching to scoped plugins
35
+ - updates to the `fi.json` language file (#2253) (@l1500s)
36
36
  - add plugin config validation functionality
37
37
  - refactor status and child bridge widgets
38
38
  - update default dashboard layout
@@ -40,14 +40,190 @@ Plugin developers:
40
40
  ### Other Changes
41
41
 
42
42
  - retire use of `pnpm` and code references
43
- - enable strict config validation for the UI
44
43
  - bump the default node version from 20 to 22
45
- - update angular from `v18` to `v19`
44
+ - make terminal enabled by default on new macOS hb-service installs
45
+ - improvements to GH actions and build processes (@NorthernMan54)
46
46
 
47
47
  ### Homebridge Dependencies
48
48
 
49
- - `@homebridge/hap-client` @ `v2.0.4`
49
+ - `@homebridge/hap-client` @ `v2.0.5`
50
50
  - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.12.0-beta`
51
+ - `@homebridge/plugin-ui-utils` @ `v2.0.0`
52
+
53
+ ## v4.68.0 (2025-01-07)
54
+
55
+ Happy 2025 to all our users! 🎉
56
+
57
+ ### UI Changes
58
+
59
+ - updates to the `cs.json` language file (#2311) (@DavidHuljak)
60
+ - improved messaging on plugin child bridge modal
61
+ - further improvements to plugin search
62
+ - implement and allow switching to scoped plugins
63
+ - merge plugin info and verified modals
64
+ - condensing plugin card into title + three lines of description
65
+ - consistent formatting of child bridge names across the ui
66
+ - general improvements across the ui
67
+ - status page:
68
+ - individual widget setting form design made consistent with other forms
69
+ - added pairing status to qr code widget
70
+ - plugins page:
71
+ - visual improvements to plugin child bridge settings modal
72
+ - allow plugins to disable/enable the save button in custom uis (see below section)
73
+ - allow configuring [multiple accessories on the same child bridge](https://github.com/homebridge/homebridge/wiki/Child-Bridges#multiple-accessories-on-the-same-child-bridge) via the ui
74
+ - accessories page:
75
+ - changed accessory spanner icon to info icon (more descriptive)
76
+ - accessory info modal redesigned and provides more info where possible like the accessory UUID (including a link to remove from the cache)
77
+ - added support modal with some info about rooms and accessories (visible on desktop)
78
+ - json config page:
79
+ - redesigned restore modal to be more consistent with other modals
80
+ - settings page:
81
+ - chevron icons replaced with arrow-right icons
82
+ - removed restore modal from settings page and is accessible from the backup modal
83
+ - backup modal redesigned to be more consistent with other modals
84
+ - added new display -> menu mode setting which allows keeping the side menu from expanding out on desktop
85
+ - redesigned and improved accessories and bridges sections and modals
86
+ - users page:
87
+ - add user and edit user modals redesigned to be more consistent with other modals
88
+ - user card updated with icon buttons for edit/delete rather than text buttons
89
+
90
+ ### Plugin Custom UI Changes
91
+
92
+ The UI has recently been updated with `@homebridge/plugin-ui-utils` @ `v2.0.0`, which includes a new feature to allow plugin developers to dynamically enable and disable the `Save` button in the custom UI modal.
93
+ Two new methods have been added for this purpose:
94
+
95
+ - `homebridge.disableSaveButton()`
96
+ - `homebridge.enableSaveButton()`
97
+
98
+ Developers: to maintain compatibility with older versions of the Homebridge UI, it is recommended to check if the methods exist before calling them in your custom UIs:
99
+
100
+ - `homebridge.disableSaveButton?.()`
101
+ - `homebridge.enableSaveButton?.()`
102
+
103
+ ### Other Changes
104
+
105
+ - auto-fix ui theme setting property if existing value is not valid
106
+ - do not allow `armv6l` users to update to UI `v5`
107
+
108
+ ### Homebridge Dependencies
109
+
110
+ - `@homebridge/hap-client` @ `v2.0.5`
111
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
112
+ - `@homebridge/plugin-ui-utils` @ `v2.0.0`
113
+
114
+ ## v4.67.0 (2024-12-28)
115
+
116
+ ### UI Changes
117
+
118
+ - add explanation of deleting child bridges when un-toggling
119
+ - add filtering to search to improve results (#2286) (@justjam2013) (fixes [#2266](https://github.com/homebridge/homebridge-config-ui-x/issues/2266))
120
+ - fix spacing issue with hidden accessories
121
+ - make margins consistent of un/lock buttons on status screen
122
+ - fix ui not restarting properly after updating the ui
123
+ - use broom icon in remove bridge accessories (to match similar modal from plugin menu)
124
+
125
+ ### Other Changes
126
+
127
+ - improve and finish up previous angular migration
128
+ - update `hap-client` + `plugin-ui-utils` hb dependencies
129
+ - update dependencies
130
+ - improve lint sorting of imports
131
+
132
+ ### Homebridge Dependencies
133
+
134
+ - `@homebridge/hap-client` @ `v2.0.5`
135
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
136
+ - `@homebridge/plugin-ui-utils` @ `v2.0.0`
137
+
138
+ ## v4.66.0 (2024-12-25)
139
+
140
+ ### UI Changes
141
+
142
+ - fix verified plugins link in support module (fixes [#2295](https://github.com/homebridge/homebridge-config-ui-x/issues/2295))
143
+ - add missing modal footer `<div>`s to accessory control modals
144
+ - fix radio button groups in certain accessory control modals (fixes [#2294](https://github.com/homebridge/homebridge-config-ui-x/issues/2294))
145
+
146
+ ### Other Changes
147
+
148
+ - format svg files nicely as part of lint
149
+ - upgrade angular from `v18` to `v19`
150
+ - delete unpaired bridges when toggling bridges off (#2284) (@justjam2013) (fixes [#2257](https://github.com/homebridge/homebridge-config-ui-x/issues/2257))
151
+
152
+ ### Homebridge Dependencies
153
+
154
+ - `@homebridge/hap-client` @ `v1.10.2`
155
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
156
+ - `@homebridge/plugin-ui-utils` @ `v1.0.3`
157
+
158
+ ## v4.65.2 (2024-12-15)
159
+
160
+ ### UI Changes
161
+
162
+ - Rollback recent changes to plugin search (#2289) (@justjam2013)
163
+
164
+ ### Homebridge Dependencies
165
+
166
+ - `@homebridge/hap-client` @ `v1.10.2`
167
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
168
+ - `@homebridge/plugin-ui-utils` @ `v1.0.3`
169
+
170
+ ## v4.65.1 (2024-12-13)
171
+
172
+ ### UI Changes
173
+
174
+ - updates to the `th.json` language file (#2271) (@tomzt)
175
+ - updates to the `de.json` language file (#2250) (@Staubgeborener)
176
+ - Remove unrelated plugins from search (#2272) (@justjam2013)
177
+
178
+ ### Other Changes
179
+
180
+ - fix types + update dependencies
181
+ - fix attach artifacts to release workflow
182
+
183
+ ### Homebridge Dependencies
184
+
185
+ - `@homebridge/hap-client` @ `v1.10.2`
186
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
187
+ - `@homebridge/plugin-ui-utils` @ `v1.0.3`
188
+
189
+ ## v4.65.0 (2024-12-08)
190
+
191
+ ### UI Changes
192
+
193
+ - updates to the `uk.json` language file (#2262) (@xrust83)
194
+ - logo and `homebridge` text should link to status page
195
+ - Add icons for shower head and water faucet valve types (#2267) (@justjam2013)
196
+ - Removed conditional for displaying search exit component (#2269) (@justjam2013)
197
+
198
+ ### Other Changes
199
+
200
+ - Fix typo in console message (#2264) (@markholland)
201
+ - updated dependencies
202
+
203
+ ### Homebridge Dependencies
204
+
205
+ - `@homebridge/hap-client` @ `v1.10.2`
206
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
207
+ - `@homebridge/plugin-ui-utils` @ `v1.0.3`
208
+
209
+ ## v4.64.0 (2024-11-30)
210
+
211
+ ### UI Changes
212
+
213
+ - updates to the `de.json` language file (#2249) (@Staubgeborener)
214
+ - updates to the `ko.json` language file (#2251) (@alphaorderly)
215
+ - updates to the `uk.json` language file (#2255) (@xrust83)
216
+ - add reload menu item when using as a PWA
217
+
218
+ ### Other Changes
219
+
220
+ - dependency updates
221
+ - fix npm search max character limit
222
+
223
+ ### Homebridge Dependencies
224
+
225
+ - `@homebridge/hap-client` @ `v1.10.2`
226
+ - `@homebridge/node-pty-prebuilt-multiarch` @ `v0.11.14`
51
227
  - `@homebridge/plugin-ui-utils` @ `v1.0.3`
52
228
 
53
229
  ## v4.63.0 (2024-11-17)
@@ -73,8 +249,6 @@ Plugin developers:
73
249
  - migrate `@zajsf/*` to `@ng-formworks/*` for plugin schema forms
74
250
  - check for service mode when querying child bridge status
75
251
  - perform a full restart when updating `homebridge`
76
- - make terminal enabled by default on new macOS hb-service installs
77
- - update node pty beta `v0.12.0-beta`
78
252
 
79
253
  ### Homebridge Dependencies
80
254
 
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023-2024 Homebridge
3
+ Copyright (c) 2023-2025 Homebridge
4
4
  Copyright (c) 2017-2023 oznu <dev@oz.nu>
5
5
  Copyright (c) 2017 Michael Kellsy
6
6
 
package/README.md CHANGED
@@ -28,8 +28,6 @@
28
28
 
29
29
  Homebridge UI also provides a tool called [`hb-service`](https://github.com/homebridge/homebridge-config-ui-x/wiki/Homebridge-Service-Command) which makes it easy to set up Homebridge as a service on Linux/Raspbian, macOS and Windows 10.
30
30
 
31
- [![Status](screenshots/homebridge-config-ui-x-darkmode-status.png?2020-01-07)](#usage)
32
-
33
31
  ## Installation Instructions
34
32
 
35
33
  For detailed instructions on how to set up Node.js and Homebridge with Homebridge UI as a service, see the guides on the wiki:
@@ -54,35 +52,35 @@ The UI can be accessed via web browser by default on port `8581` (e.g. `http://l
54
52
 
55
53
  This shows an overview of your Homebridge system. The dashboard is widget-based and completely customisable with a number of themes available.
56
54
 
57
- ![Status](screenshots/homebridge-config-ui-x-status.png?2020-01-07)
55
+ ![Status](screenshots/homebridge-config-ui-x-status.png)
58
56
 
59
57
  ### Plugin Screen
60
58
 
61
59
  This shows you the currently installed plugins and allows you to install, configure, update and remove plugins.
62
60
 
63
- ![Plugin](screenshots/homebridge-config-ui-x-darkmode-plugins.png?2020-01-07)
61
+ ![Plugin](screenshots/homebridge-config-ui-x-darkmode-plugins.png)
64
62
 
65
63
  You can configure supported plugins using the graphical settings editor, or by editing the config JSON directly.
66
64
 
67
- ![Plugin Settings](screenshots/homebridge-config-ui-x-darkmode-alexa-settings.png?2020-01-07)
65
+ ![Plugin Settings](screenshots/homebridge-config-ui-x-darkmode-alexa-settings.png)
68
66
 
69
67
  ### Configuration Screen
70
68
 
71
69
  The configuration screen allows you to modify your Homebridge `config.json`. The built-in editor automatically syntax-checks your JSON and makes a backup of your config every time you make a change.
72
70
 
73
- ![Config](screenshots/homebridge-config-ui-x-config.png?2020-01-07)
71
+ ![Config](screenshots/homebridge-config-ui-x-config.png)
74
72
 
75
73
  ### Log Screen
76
74
 
77
75
  This shows you the Homebridge rolling log. This is helpful for troubleshooting.
78
76
 
79
- ![Log](screenshots/homebridge-config-ui-x-logs.png?2020-01-07)
77
+ ![Log](screenshots/homebridge-config-ui-x-logs.png)
80
78
 
81
79
  ### Accessories Screen
82
80
 
83
81
  This shows you the Homebridge accessories for all the Homebridge instances on your network. You can use this to control accessories from a web browser and works well on mobile devices which allows users to control Homebridge from non-Apple devices.
84
82
 
85
- ![Accessories](screenshots/homebridge-config-ui-x-accessories.png?2020-01-07)
83
+ ![Accessories](screenshots/homebridge-config-ui-x-accessories.png)
86
84
 
87
85
  ## Plugin Development
88
86
 
@@ -156,6 +156,26 @@
156
156
  }
157
157
  ]
158
158
  },
159
+ "menuMode": {
160
+ "title": "Menu Mode",
161
+ "description": "Modes for the UI side menu.",
162
+ "type": "string",
163
+ "default": "default",
164
+ "oneOf": [
165
+ {
166
+ "title": "Default",
167
+ "enum": [
168
+ "default"
169
+ ]
170
+ },
171
+ {
172
+ "title": "Freeze",
173
+ "enum": [
174
+ "freeze"
175
+ ]
176
+ }
177
+ ]
178
+ },
159
179
  "restart": {
160
180
  "title": "Custom Restart Command",
161
181
  "type": "string",
@@ -163,7 +183,7 @@
163
183
  "placeholder": "eg. sudo systemctl restart homebridge"
164
184
  },
165
185
  "temp": {
166
- "title": "Path to OS Temp File",
186
+ "title": "OS Temp File Path",
167
187
  "type": "string",
168
188
  "placeholder": "eg. /sys/class/thermal/thermal_zone0/temp",
169
189
  "description": "If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temp file here. This will display the current temperature on the Homebridge status page."
@@ -373,7 +393,7 @@
373
393
  ]
374
394
  },
375
395
  "loginWallpaper": {
376
- "title": "Path to Login Wallpaper Image File",
396
+ "title": "Login Wallpaper Path",
377
397
  "description": "The full path to the .jpg file.",
378
398
  "type": "string",
379
399
  "placeholder": "eg. /home/pi/mywallpaper.jpg"
@@ -390,7 +410,7 @@
390
410
  "placeholder": "eg. /usr/local/lib/node_modules/homebridge"
391
411
  },
392
412
  "noFork": {
393
- "title": "Do not run the Config UI web server in a separate process/thread",
413
+ "title": "Do not run the UI server in a separate process/thread",
394
414
  "type": "boolean",
395
415
  "description": "If you are running Homebridge in a container, you may need to enable this option."
396
416
  },
@@ -398,11 +418,11 @@
398
418
  "title": "Host IP Address",
399
419
  "type": "string",
400
420
  "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$",
401
- "description": "The host ip address to listen on. In most cases this will be '::' or '0.0.0.0'",
421
+ "description": "The host IP address to listen on. In most cases this will be '::' or '0.0.0.0'.",
402
422
  "placeholder": "eg. 0.0.0.0"
403
423
  },
404
424
  "debug": {
405
- "title": " Enable / disable debug level logging",
425
+ "title": "Enable Debug Logging",
406
426
  "type": "boolean",
407
427
  "description": "If enabled, the Homebridge UI will log debug level messages to the console."
408
428
  },
@@ -412,7 +432,7 @@
412
432
  "description": "If you are running Homebridge in a container, you may need to enable this option."
413
433
  },
414
434
  "sessionTimeout": {
415
- "title": "Session Timeout (in seconds)",
435
+ "title": "Session Timeout (Seconds)",
416
436
  "type": "integer",
417
437
  "placeholder": 28800,
418
438
  "minimum": 600,
@@ -492,14 +512,14 @@
492
512
  },
493
513
  "tail": {
494
514
  "type": "string",
495
- "description": "Depreciated",
515
+ "description": "Depreciated.",
496
516
  "condition": {
497
517
  "functionBody": "return (model.log && (model.log.method==='custom' || model.log.method==='systemd' || model.log.method==='file'))"
498
518
  }
499
519
  },
500
520
  "systemd": {
501
521
  "type": "string",
502
- "description": "Depreciated",
522
+ "description": "Depreciated.",
503
523
  "condition": {
504
524
  "functionBody": "return (model.log && (model.log.method==='custom' || model.log.method==='systemd' || model.log.method==='file'))"
505
525
  }
@@ -525,19 +545,19 @@
525
545
  "description": "The SSL settings for the Homebridge UI.",
526
546
  "properties": {
527
547
  "key": {
528
- "title": "Path To Private Key",
548
+ "title": "Private Key Path",
529
549
  "type": "string",
530
550
  "description": "The full path to the private key file.",
531
551
  "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.key"
532
552
  },
533
553
  "cert": {
534
- "title": "Path To Certificate",
554
+ "title": "Certificate Path",
535
555
  "type": "string",
536
556
  "description": "The full path to the certificate file.",
537
557
  "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.crt"
538
558
  },
539
559
  "pfx": {
540
- "title": "Path To PKCS#12 Certificate",
560
+ "title": "PKCS#12 Certificate Path",
541
561
  "type": "string",
542
562
  "description": "The full path to the PKCS#12 certificate file.",
543
563
  "placeholder": "eg. /Users/homebridge/.homebridge/certs/server.pfx"
@@ -556,14 +576,14 @@
556
576
  "description": "The accessory control settings for the Homebridge UI.",
557
577
  "properties": {
558
578
  "debug": {
559
- "title": " Enable / disable debug level logging for accessory control via the web UI",
579
+ "title": "Enable Accessory Control Debug Logging",
560
580
  "type": "boolean",
561
581
  "description": "If enabled, the Homebridge UI will log debug level messages to the console."
562
582
  },
563
583
  "instanceBlacklist": {
564
- "title": "Blacklisted Instances",
584
+ "title": "Blacklisted Bridges/Instances",
565
585
  "type": "array",
566
- "description": "A list of instances that should not be controlled via the web UI.",
586
+ "description": "A list of instances (or bridge usernames) that should not be controlled via the web UI.",
567
587
  "placeholder": "eg. 00:00:00:00:00:00",
568
588
  "items": {
569
589
  "title": "Instance Username",
@@ -600,8 +620,8 @@
600
620
  "description": "When running behind a reverse proxy you may need to enter the hostname you use to access the UI."
601
621
  },
602
622
  "scheduledBackupPath": {
603
- "title": "Scheduled backup destination path",
604
- "description": "The full path to where the service should save daily scheduled backups archives",
623
+ "title": "Scheduled Backup Destination",
624
+ "description": "The full path to where the service should save daily scheduled backups archives.",
605
625
  "type": "string",
606
626
  "placeholder": "eg. /home/pi/homebridge-backups",
607
627
  "condition": {
@@ -611,12 +631,12 @@
611
631
  "scheduledBackupDisable": {
612
632
  "title": "Disable Scheduled Backups",
613
633
  "type": "boolean",
614
- "description": "When enabled, the Homebridge UI will not create daily scheduled backups"
634
+ "description": "When enabled, the Homebridge UI will not create daily scheduled backups."
615
635
  },
616
636
  "disableServerMetricsMonitoring": {
617
637
  "title": "Disable Server Metrics Monitoring",
618
638
  "type": "boolean",
619
- "description": "When enabled, the Homebridge UI will not collect or report cpu / memory stats"
639
+ "description": "When enabled, the Homebridge UI will not collect or report CPU or memory stats."
620
640
  }
621
641
  }
622
642
  },
package/dist/bin/fork.js CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/bin/fork.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAkC;AAElC,sBAAO,CAAC,KAAK,GAAG,wBAAwB,CAAA;AAExC,WAAW,CAAC,GAAG,EAAE;IACf,IAAI,CAAC,sBAAO,CAAC,SAAS,EAAE,CAAC;QACvB,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,EAAE,KAAK,CAAC,CAAA;AAET,sBAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IAC5B,sBAAO,CAAC,IAAI,EAAE,CAAA;AAChB,CAAC,CAAC,CAAA;AAEF,kDAAO,SAAS,IAAC"}
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/bin/fork.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAAkC;AAElC,sBAAO,CAAC,KAAK,GAAG,wBAAwB,CAAA;AAExC,WAAW,CAAC,GAAG,EAAE;IACf,IAAI,CAAC,sBAAO,CAAC,SAAS,EAAE,CAAC;QACvB,sBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,EAAE,KAAK,CAAC,CAAA;AAET,sBAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IAC5B,sBAAO,CAAC,IAAI,EAAE,CAAA;AAChB,CAAC,CAAC,CAAA;AAEF,kDAAO,SAAS,IAAC"}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import type { ExtractOptions } from 'tar';
2
+ import type { TarOptionsWithAliases } from 'tar';
3
3
  export declare class HomebridgeServiceHelper {
4
4
  action: 'install' | 'uninstall' | 'start' | 'stop' | 'restart' | 'rebuild' | 'run' | 'add' | 'remove' | 'logs' | 'view' | 'update-node' | 'before-start' | 'status';
5
5
  selfPath: string;
@@ -65,7 +65,7 @@ export declare class HomebridgeServiceHelper {
65
65
  private fixDockerPermissions;
66
66
  private checkForNodejsUpdates;
67
67
  downloadNodejs(downloadUrl: string): Promise<string>;
68
- extractNodejs(targetVersion: string, extractConfig: ExtractOptions): Promise<void>;
68
+ extractNodejs(targetVersion: string, extractConfig: TarOptionsWithAliases): Promise<void>;
69
69
  removeNpmPackage(npmInstallPath: string): Promise<void>;
70
70
  private checkStatus;
71
71
  private parseNpmPackageString;