homebridge-config-ui-x 5.3.1-beta.31 → 5.3.1-beta.32
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.
- package/CHANGELOG.md +4 -9
- package/package.json +2 -2
- package/public/assets/{accessory-icons → service-icons}/contact-sensor.svg +2 -2
- package/public/{chunk-JWW2ZIFD.js → chunk-47N7ZL6S.js} +1 -1
- package/public/{chunk-PWQIPKCZ.js → chunk-4HHWSIRL.js} +1 -1
- package/public/{chunk-UIPEQ3TY.js → chunk-4T4VD2TT.js} +1 -1
- package/public/{chunk-HA2WGXM5.js → chunk-5BECVPIV.js} +1 -1
- package/public/{chunk-JUYQM3GD.js → chunk-5ZFNKXEJ.js} +1 -1
- package/public/{chunk-5J5A3AZJ.js → chunk-64XLTUIZ.js} +1 -1
- package/public/{chunk-ISQOROOQ.js → chunk-6JBKBW5K.js} +1 -1
- package/public/{chunk-OEBGFNAX.js → chunk-72HOKFNO.js} +1 -1
- package/public/{chunk-T44DHRZC.js → chunk-7PR6KBKG.js} +1 -1
- package/public/chunk-A6CEK4GO.js +12 -0
- package/public/{chunk-3LZXINNA.js → chunk-AHSPUZZV.js} +1 -1
- package/public/{chunk-3SLCBAUO.js → chunk-AJV57QIK.js} +1 -1
- package/public/{chunk-3D2RUP4Y.js → chunk-ALRTM6UG.js} +1 -1
- package/public/{chunk-NKHCUBWR.js → chunk-AOVKNECZ.js} +1 -1
- package/public/{chunk-YQHDKQ6Y.js → chunk-BF34LLSJ.js} +1 -1
- package/public/{chunk-VRY3JCNJ.js → chunk-BSEAXYFW.js} +1 -1
- package/public/{chunk-PCWTH4UR.js → chunk-CM4JRVND.js} +1 -1
- package/public/{chunk-ZMLFHLKC.js → chunk-D2IA3RTX.js} +1 -1
- package/public/{chunk-DXNJZWML.js → chunk-E4JQJCTR.js} +1 -1
- package/public/{chunk-NPDLWV63.js → chunk-EFHQHSBM.js} +1 -1
- package/public/{chunk-DNMQIPPR.js → chunk-EQ2BREDO.js} +1 -1
- package/public/{chunk-CYSWFN45.js → chunk-F7DWAGAR.js} +1 -1
- package/public/{chunk-LZHOM5JU.js → chunk-FFXVHLTB.js} +1 -1
- package/public/{chunk-FUSEM7XC.js → chunk-FRNGKBZ2.js} +1 -1
- package/public/{chunk-27VP2GOM.js → chunk-GPSCNA6I.js} +1 -1
- package/public/{chunk-OXTISD6M.js → chunk-HS2GA4O5.js} +1 -1
- package/public/{chunk-2DPEEJP4.js → chunk-JQHSHEIW.js} +1 -1
- package/public/{chunk-6IYVTR63.js → chunk-K6RVNCHZ.js} +1 -1
- package/public/{chunk-YXBQZ2BF.js → chunk-KAPGJVKP.js} +1 -1
- package/public/{chunk-4VAM7JFD.js → chunk-KXM6EV4V.js} +1 -1
- package/public/{chunk-RYJNNTB2.js → chunk-LNMLEQ7F.js} +1 -1
- package/public/{chunk-OQYRLVOL.js → chunk-N2MDWVRC.js} +1 -1
- package/public/{chunk-JOZGLDRY.js → chunk-OAHKW7E2.js} +1 -1
- package/public/{chunk-I3A53HA6.js → chunk-PCL7ZRAO.js} +1 -1
- package/public/{chunk-EGNEDJBY.js → chunk-PEFNJ5GU.js} +1 -1
- package/public/{chunk-UUGODDXA.js → chunk-PXOW66EH.js} +1 -1
- package/public/{chunk-5V6T7INQ.js → chunk-PYXMCKER.js} +1 -1
- package/public/{chunk-QJT4OOTH.js → chunk-R3ZXID4T.js} +1 -1
- package/public/chunk-RMVBLLKS.js +1 -0
- package/public/{chunk-WVXHTOK7.js → chunk-S3MZU7XR.js} +1 -1
- package/public/{chunk-DMDROVFS.js → chunk-S3Z44SBP.js} +1 -1
- package/public/{chunk-O4TWRQN6.js → chunk-TCWEVQOH.js} +1 -1
- package/public/{chunk-QS6B2745.js → chunk-TM42V3J5.js} +1 -1
- package/public/{chunk-5PLVSDMD.js → chunk-UBGPGQRS.js} +1 -1
- package/public/{chunk-OSDFUKPM.js → chunk-UFEDU5GJ.js} +1 -1
- package/public/{chunk-M5D2W55K.js → chunk-UG4NQPD7.js} +1 -1
- package/public/{chunk-X3SP4TWE.js → chunk-XQNA6Z7C.js} +1 -1
- package/public/index.html +1 -1
- package/public/{main-VEZ22YPS.js → main-YSDQIUYN.js} +1 -1
- package/public/chunk-723C63QQ.js +0 -12
- package/public/chunk-G7EY4LAP.js +0 -1
- /package/public/assets/{accessory-icons → service-icons}/air-purifier.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/air-quality-sensor.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/carbon-dioxide-sensor.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/carbon-monoxide-sensor.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/door.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/doorbell.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/fan.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/filter-maintenance.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/garage-door.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/microphone.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/robot-vacuum.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/smoke-sensor.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/speaker.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/television.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/washing-machine.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/window-covering.svg +0 -0
- /package/public/assets/{accessory-icons → service-icons}/window.svg +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `homebridge-config-ui-x` will be documented in this file. This project tries to adhere to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
|
|
5
|
-
## v5.
|
|
5
|
+
## v5.4.0 (2025-08-02)
|
|
6
6
|
|
|
7
7
|
### UI Changes
|
|
8
8
|
|
|
@@ -27,32 +27,27 @@ All notable changes to `homebridge-config-ui-x` will be documented in this file.
|
|
|
27
27
|
- air quality sensor tile: update icon to match new style
|
|
28
28
|
- show in sys info widget if arch is 32-bit or 64-bit
|
|
29
29
|
- fix for custom ui colouring in dark mode
|
|
30
|
-
- updated icons: co, co2, smoke
|
|
31
|
-
- improvements to garage door icon
|
|
30
|
+
- updated icons: co, co2, smoke, contact, garage
|
|
32
31
|
- thermostat accessory: show target slider when available
|
|
33
32
|
- updated icon for door, window and window covering services
|
|
34
|
-
- revert back to font-awesome v6 for compatibility
|
|
35
33
|
- accessory info: show props on characteristic click
|
|
36
|
-
- custom types: expose a switch/outlet as a washing machine
|
|
37
34
|
- credits modal: added new section for translations
|
|
35
|
+
- custom types: expose a switch/outlet as a washing machine
|
|
38
36
|
- refreshed icons for fan, television, speaker + filter
|
|
39
37
|
- added confirmation modal for shutting down
|
|
40
38
|
|
|
41
39
|
### Other Changes
|
|
42
40
|
|
|
43
|
-
- update `@homebridge/node-pty-prebuilt-multiarch` to `0.14.1-beta`
|
|
44
41
|
- added `arm` runners to the ui workflows for testing
|
|
45
42
|
- make 'keep orphans' setting available in ui settings service
|
|
46
43
|
- improve types for widgets
|
|
47
|
-
- use new folder for updated accessory icons (fix cache issues)
|
|
48
|
-
- font awesome `fa-fw` class no longer needed
|
|
49
44
|
- upgrade `@ngx-translate/core` from `v16` to `v17`
|
|
50
45
|
- fix get pairings, ignore `.json.bak` files
|
|
51
46
|
|
|
52
47
|
### Homebridge Dependencies
|
|
53
48
|
|
|
54
49
|
- `@homebridge/hap-client` @ `v3.1.1`
|
|
55
|
-
- `@homebridge/node-pty-prebuilt-multiarch` @ `v0.
|
|
50
|
+
- `@homebridge/node-pty-prebuilt-multiarch` @ `v0.13.1`
|
|
56
51
|
- `@homebridge/plugin-ui-utils` @ `v2.1.0`
|
|
57
52
|
|
|
58
53
|
## v5.3.0 (2025-07-23)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "homebridge-config-ui-x",
|
|
3
3
|
"displayName": "Homebridge UI",
|
|
4
|
-
"version": "5.3.1-beta.
|
|
4
|
+
"version": "5.3.1-beta.32",
|
|
5
5
|
"description": "A web based management, configuration and control platform for Homebridge.",
|
|
6
6
|
"author": "oznu <dev@oz.nu>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"@fastify/multipart": "9.0.3",
|
|
83
83
|
"@fastify/static": "8.2.0",
|
|
84
84
|
"@homebridge/hap-client": "3.1.1",
|
|
85
|
-
"@homebridge/node-pty-prebuilt-multiarch": "0.
|
|
85
|
+
"@homebridge/node-pty-prebuilt-multiarch": "0.13.1",
|
|
86
86
|
"@nestjs/axios": "4.0.1",
|
|
87
87
|
"@nestjs/common": "11.1.5",
|
|
88
88
|
"@nestjs/core": "11.1.5",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<svg width="32px" height="32px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
|
|
2
2
|
<!-- left object -->
|
|
3
|
-
<rect class="left-object" x="1" y="1" width="15" height="30" rx="
|
|
3
|
+
<rect class="left-object" x="1" y="1" width="15" height="30" rx="1" stroke="#7f7f7f" fill="none" stroke-width="1.5" />
|
|
4
4
|
|
|
5
5
|
<!-- right object -->
|
|
6
6
|
<rect
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
y="1"
|
|
10
10
|
width="15"
|
|
11
11
|
height="30"
|
|
12
|
-
rx="
|
|
12
|
+
rx="1"
|
|
13
13
|
stroke="#7f7f7f"
|
|
14
14
|
fill="none"
|
|
15
15
|
stroke-width="1.5"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as M}from"./chunk-
|
|
1
|
+
import{a as M}from"./chunk-6JBKBW5K.js";import"./chunk-HHGB2T2Q.js";import{a as O}from"./chunk-V35TPDVW.js";import{a as _}from"./chunk-EZQF5CUM.js";import{n as z,t as D}from"./chunk-FYI7RHOJ.js";import"./chunk-KYB236MX.js";import"./chunk-UFEDU5GJ.js";import{b as H}from"./chunk-PEFNJ5GU.js";import"./chunk-D2IA3RTX.js";import{k as F,n as V}from"./chunk-RMVBLLKS.js";import{a as E,b as A}from"./chunk-FYDO54CR.js";import"./chunk-KLQ6BEKS.js";import{$a as y,Hb as u,Ib as x,Ic as a,Jb as C,Jc as s,Ob as f,Pb as c,Qb as r,Rb as m,Tc as k,_b as T,ab as l,bc as p,dc as b,g as q,h as w,kc as L,la as i,lc as S,mb as $,n as v,qc as I,ra as d,rc as B,sa as g}from"./chunk-645YHJEQ.js";var N=q(O(),1);var Q=["logoutput"];function W(o,P){if(o&1){let t=T();c(0,"div",4)(1,"button",7),a(2,"translate"),a(3,"translate"),p("click",function(){d(t);let n=b();return g(n.downloadLogFile())}),m(4,"i",8),r(),c(5,"button",9),a(6,"translate"),a(7,"translate"),p("click",function(){d(t);let n=b();return g(n.truncateLogFile())}),m(8,"i",10),r()()}o&2&&(l(),f("openDelay",150)("ngbTooltip",s(2,6,"form.button_download")),u("aria-label",s(3,8,"form.button_download")),l(4),f("openDelay",150)("ngbTooltip",s(6,10,"form.button_delete")),u("aria-label",s(7,12,"form.button_delete")))}var it=(()=>{class o{$api=i(V);$auth=i(H);$log=i(M);$modal=i(z);$toastr=i(F);$translate=i(E);termTarget=k("logoutput");resizeEvent=new v;isAdmin=this.$auth.user.admin;onWindowResize(){this.resizeEvent.next(void 0)}ngOnInit(){window.document.querySelector("body").classList.add("bg-black"),this.$log.startTerminal(this.termTarget(),{allowProposedApi:!0},this.resizeEvent)}ngOnDestroy(){window.document.querySelector("body").classList.remove("bg-black"),this.$log.destroyTerminal()}downloadLogFile(){let t=this.$modal.open(_,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_download_log_file"),t.componentInstance.message=this.$translate.instant("logs.download_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_download"),t.componentInstance.faIconClass="fas fa-fw fa-user-secret primary-text",t.result.then(()=>{this.$api.get("/platform-tools/hb-service/log/download",{observe:"response",responseType:"blob"}).subscribe({next:e=>{(0,N.saveAs)(e.body,"homebridge.log.txt")},error:e=>w(this,null,function*(){let n;try{n=JSON.parse(yield e.error.text()).message}catch(h){console.error(h)}this.$toastr.error(n||this.$translate.instant("logs.download.error"),this.$translate.instant("toast.title_error"))})})}).catch(()=>{})}truncateLogFile(){let t=this.$modal.open(_,{size:"lg",backdrop:"static"});t.componentInstance.title=this.$translate.instant("logs.title_truncate_log_file"),t.componentInstance.message=this.$translate.instant("logs.truncate_log_warning"),t.componentInstance.confirmButtonLabel=this.$translate.instant("form.button_delete"),t.componentInstance.confirmButtonClass="btn-danger",t.componentInstance.faIconClass="fas fa-fw fa-circle-exclamation primary-text",t.result.then(()=>{this.$api.put("/platform-tools/hb-service/log/truncate",{}).subscribe({next:()=>{this.$toastr.success(this.$translate.instant("logs.log_file_truncated"),this.$translate.instant("toast.title_success")),this.$log.term.clear()},error:e=>{console.error(e),this.$toastr.error(e.error?.message||this.$translate.instant("logs.truncate.error"),this.$translate.instant("toast.title_error"))}})}).catch(()=>{})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=$({type:o,selectors:[["ng-component"]],viewQuery:function(e,n){e&1&&L(n.termTarget,Q,5),e&2&&S()},hostBindings:function(e,n){e&1&&p("resize",function(j){return n.onWindowResize(j)},y)},decls:9,vars:4,consts:[["logoutput",""],[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"flex-column","d-flex","align-items-stretch","adjust-for-mobile"],["id","log-output",1,"align-self-end","w-100","h-100","mb-1"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-download"],["container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-0",3,"click","openDelay","ngbTooltip"],[1,"fas","fa-fw","fa-trash-alt"]],template:function(e,n){e&1&&(c(0,"div",1)(1,"div",2)(2,"h3",3),I(3),a(4,"translate"),r()(),x(5,W,9,14,"div",4),r(),c(6,"div",5),m(7,"div",6,0),r()),e&2&&(l(3),B(s(4,2,"menu.linux.label_logs")),l(2),C(n.isAdmin?5:-1))},dependencies:[D,A],encapsulation:2})}return o})();export{it as LogsComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as b}from"./chunk-
|
|
1
|
+
import{a as b}from"./chunk-UFEDU5GJ.js";import"./chunk-PEFNJ5GU.js";import{d as k}from"./chunk-6HJHVJPI.js";import{b as S}from"./chunk-D2IA3RTX.js";import{k as T,n as w}from"./chunk-RMVBLLKS.js";import{a as C,b as $}from"./chunk-FYDO54CR.js";import"./chunk-KLQ6BEKS.js";import{$b as E,Dc as g,Ib as d,Ic as m,Jb as f,Jc as c,Kc as y,Sb as r,Tb as i,Ub as l,Xa as x,ab as n,dc as h,la as o,mb as _,qc as a,rc as s}from"./chunk-645YHJEQ.js";var I=t=>({command:t});function D(t,u){if(t&1&&(r(0,"div",7),a(1),i()),t&2){let e=h();n(),s(e.error)}}function R(t,u){t&1&&(r(0,"p",9),a(1),m(2,"translate"),i(),r(3,"div",10)(4,"div",11),l(5,"i",12),i()()),t&2&&(n(),s(c(2,1,"restart.please_wait_while_server_restarts")))}function B(t,u){if(t&1&&(r(0,"div",8)(1,"p"),a(2),m(3,"translate"),i(),l(4,"p",13),m(5,"translate"),i()),t&2){let e=h();n(2),s(c(3,2,"platform.docker.server_long_time")),n(2),E("innerHTML",y(5,4,"platform.docker.run_with_restart",g(7,I,e.command)),x)}}var U=(()=>{class t{$api=o(w);$router=o(k);$settings=o(S);$toastr=o(T);$translate=o(C);$ws=o(b);checkTimeout;checkDelay;io;resp={};timeout=!1;error=!1;command='<span class="font-monospace">--restart=always</span>';ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.$api.put("/platform-tools/docker/restart-container",{}).subscribe({next:e=>{this.resp=e,this.checkIfServerUp()},error:e=>{this.error=this.$translate.instant("restart.toast_server_restart_error"),console.error(e),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}})}ngOnDestroy(){this.io.end(),clearTimeout(this.checkDelay),clearTimeout(this.checkTimeout)}checkIfServerUp(){this.checkDelay=setTimeout(()=>{this.io.socket.on("homebridge-status",e=>{(e.status==="up"||e.status==="pending")&&(this.$toastr.success(this.$translate.instant("platform.docker.container_restarted"),this.$translate.instant("toast.title_success")),this.$router.navigate(["/"]))})},1e4),this.checkTimeout=setTimeout(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout=!0},6e4)}static \u0275fac=function(p){return new(p||t)};static \u0275cmp=_({type:t,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fab","fa-fw","fa-docker",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"fas","fa-fw","fa-spinner","fa-spin"],[1,"grey-text","mb-0",3,"innerHTML"]],template:function(p,v){p&1&&(r(0,"div",0)(1,"h3",1),a(2),m(3,"translate"),i()(),r(4,"div",2)(5,"div",3),l(6,"i",4),i(),r(7,"div",5)(8,"h4",6),a(9),m(10,"translate"),i(),d(11,D,2,1,"div",7)(12,R,6,3),d(13,B,6,9,"div",8),i()()),p&2&&(n(2),s(c(3,4,"menu.restart.title")),n(7),s(c(10,6,"platform.docker.title_restarting")),n(2),f(v.error?11:12),n(2),f(v.timeout?13:-1))},dependencies:[$],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return t})();export{U as ContainerRestartComponent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as r}from"./chunk-6HJHVJPI.js";import"./chunk-KLQ6BEKS.js";import{ha as t,nb as e}from"./chunk-645YHJEQ.js";var m=[{path:"",loadComponent:()=>import("./chunk-
|
|
1
|
+
import{g as r}from"./chunk-6HJHVJPI.js";import"./chunk-KLQ6BEKS.js";import{ha as t,nb as e}from"./chunk-645YHJEQ.js";var m=[{path:"",loadComponent:()=>import("./chunk-UBGPGQRS.js").then(o=>o.PowerOptionsComponent)}],n=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[r.forChild(m),r]})}return o})();var d=(()=>{class o{static \u0275fac=function(i){return new(i||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n]})}return o})();export{d as PowerOptionsModule};
|