@openpalm/ui 0.12.18 → 0.12.22
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/build/.openpalm-ui-version +1 -1
- package/build/client/_app/immutable/assets/4.DQdAwaDZ.css +1 -0
- package/build/client/_app/immutable/assets/4.DQdAwaDZ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.DQdAwaDZ.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{B8C5qi9U.js → BRX6kifW.js} +1 -1
- package/build/client/_app/immutable/chunks/BRX6kifW.js.br +0 -0
- package/build/client/_app/immutable/chunks/BRX6kifW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Br6Mrpf0.js → BXNfEZOa.js} +2 -2
- package/build/client/_app/immutable/chunks/BXNfEZOa.js.br +0 -0
- package/build/client/_app/immutable/chunks/BXNfEZOa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dcw6L0GF.js → CgDyA2Qw.js} +2 -2
- package/build/client/_app/immutable/chunks/CgDyA2Qw.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgDyA2Qw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLcBqErP.js +1 -0
- package/build/client/_app/immutable/chunks/DLcBqErP.js.br +2 -0
- package/build/client/_app/immutable/chunks/DLcBqErP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CLgRRUN_.js → DpHEXvQk.js} +1 -1
- package/build/client/_app/immutable/chunks/DpHEXvQk.js.br +0 -0
- package/build/client/_app/immutable/chunks/DpHEXvQk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dr8nRIOR.js +1 -0
- package/build/client/_app/immutable/chunks/Dr8nRIOR.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dr8nRIOR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{DYXGFYr6.js → _60-pFCk.js} +1 -1
- package/build/client/_app/immutable/chunks/_60-pFCk.js.br +0 -0
- package/build/client/_app/immutable/chunks/_60-pFCk.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CVxCoIFs.js → app.BjL1fvKO.js} +2 -2
- package/build/client/_app/immutable/entry/app.BjL1fvKO.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BjL1fvKO.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.De0IKYiu.js +1 -0
- package/build/client/_app/immutable/entry/start.De0IKYiu.js.br +0 -0
- package/build/client/_app/immutable/entry/start.De0IKYiu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.Bb8qAGW8.js → 0.AZnG4POF.js} +1 -1
- package/build/client/_app/immutable/nodes/0.AZnG4POF.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.AZnG4POF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.Co_TaqLI.js → 1.B7a7Tm6Z.js} +1 -1
- package/build/client/_app/immutable/nodes/1.B7a7Tm6Z.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B7a7Tm6Z.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DI__DjJl.js +126 -0
- package/build/client/_app/immutable/nodes/4.DI__DjJl.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DI__DjJl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{5.Fw13EXte.js → 5.B9AKDWT5.js} +2 -2
- package/build/client/_app/immutable/nodes/5.B9AKDWT5.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.B9AKDWT5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.CWy0yXnu.js → 6.hyWOgJjN.js} +1 -1
- package/build/client/_app/immutable/nodes/6.hyWOgJjN.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.hyWOgJjN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CsM4M8Ul.js → 7.nZLq6rhJ.js} +1 -1
- package/build/client/_app/immutable/nodes/7.nZLq6rhJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.nZLq6rhJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.V6hY0p8a.js → 8.DHYGH125.js} +1 -1
- package/build/client/_app/immutable/nodes/8.DHYGH125.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.DHYGH125.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +1 -1
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-DrD9dfbN.js → 0-DL6Jfu7F.js} +3 -3
- package/build/server/chunks/{0-DrD9dfbN.js.map → 0-DL6Jfu7F.js.map} +1 -1
- package/build/server/chunks/1-DC1YDW9y.js +9 -0
- package/build/server/chunks/{1-DvZDBGww.js.map → 1-DC1YDW9y.js.map} +1 -1
- package/build/server/chunks/{10-C96Thueb.js → 10-BnN-v5b4.js} +5 -5
- package/build/server/chunks/10-BnN-v5b4.js.map +1 -0
- package/build/server/chunks/4-BnTXsRc6.js +9 -0
- package/build/server/chunks/{4-BYdi8hv_.js.map → 4-BnTXsRc6.js.map} +1 -1
- package/build/server/chunks/{5-DIQyHPcz.js → 5-C26TlGBo.js} +3 -3
- package/build/server/chunks/{5-DIQyHPcz.js.map → 5-C26TlGBo.js.map} +1 -1
- package/build/server/chunks/6-D1YRT-u9.js +9 -0
- package/build/server/chunks/{6-BsZngRIA.js.map → 6-D1YRT-u9.js.map} +1 -1
- package/build/server/chunks/{7-CXWUMHvV.js → 7-DB2WCCTk.js} +3 -3
- package/build/server/chunks/{7-CXWUMHvV.js.map → 7-DB2WCCTk.js.map} +1 -1
- package/build/server/chunks/{8-l173yBhm.js → 8-D9q3TEwk.js} +3 -3
- package/build/server/chunks/{8-l173yBhm.js.map → 8-D9q3TEwk.js.map} +1 -1
- package/build/server/chunks/{IconMic-BM_3hm2T.js → IconMic-DK0ZRKNm.js} +2 -2
- package/build/server/chunks/{IconMic-BM_3hm2T.js.map → IconMic-DK0ZRKNm.js.map} +1 -1
- package/build/server/chunks/{Navbar-BZ_eb99a.js → Navbar-Bx84i9hX.js} +5 -5
- package/build/server/chunks/{Navbar-BZ_eb99a.js.map → Navbar-Bx84i9hX.js.map} +1 -1
- package/build/server/chunks/{_layout.svelte-Dd-1jqRZ.js → _layout.svelte-CtPb7AoM.js} +2 -2
- package/build/server/chunks/{_layout.svelte-Dd-1jqRZ.js.map → _layout.svelte-CtPb7AoM.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-E9h2ASFv.js → _page.svelte-1gYVQfSX.js} +7 -7
- package/build/server/chunks/{_page.svelte-E9h2ASFv.js.map → _page.svelte-1gYVQfSX.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-Bbooaanj.js → _page.svelte-Ce5yuZKH.js} +7 -7
- package/build/server/chunks/{_page.svelte-Bbooaanj.js.map → _page.svelte-Ce5yuZKH.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-D0wEoV5A.js → _page.svelte-DhqtAyz4.js} +5 -5
- package/build/server/chunks/{_page.svelte-D0wEoV5A.js.map → _page.svelte-DhqtAyz4.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-C4jw4RUN.js → _page.svelte-Dlch5rzj.js} +3 -3
- package/build/server/chunks/{_page.svelte-C4jw4RUN.js.map → _page.svelte-Dlch5rzj.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-WYgjKj38.js → _page.svelte-VwZb1o-L.js} +31 -715
- package/build/server/chunks/_page.svelte-VwZb1o-L.js.map +1 -0
- package/build/server/chunks/{_server.ts-DPDQh75Z.js → _server.ts-29oJfZHd.js} +2 -2
- package/build/server/chunks/{_server.ts-DPDQh75Z.js.map → _server.ts-29oJfZHd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-VvJjpVtp.js → _server.ts-54pdKqwY.js} +6 -6
- package/build/server/chunks/{_server.ts-VvJjpVtp.js.map → _server.ts-54pdKqwY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CQt3NLuS.js → _server.ts-8R-n-zEh.js} +5 -5
- package/build/server/chunks/{_server.ts-CQt3NLuS.js.map → _server.ts-8R-n-zEh.js.map} +1 -1
- package/build/server/chunks/_server.ts-8b481A1c.js +89 -0
- package/build/server/chunks/_server.ts-8b481A1c.js.map +1 -0
- package/build/server/chunks/{_server.ts-wvbMWir6.js → _server.ts-9AjUEqAT.js} +6 -6
- package/build/server/chunks/{_server.ts-wvbMWir6.js.map → _server.ts-9AjUEqAT.js.map} +1 -1
- package/build/server/chunks/{_server.ts-F0nw0UvB.js → _server.ts-9qPwtSPc.js} +5 -5
- package/build/server/chunks/{_server.ts-F0nw0UvB.js.map → _server.ts-9qPwtSPc.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DM6Jm6KP.js → _server.ts-B1qG26BE.js} +5 -5
- package/build/server/chunks/_server.ts-B1qG26BE.js.map +1 -0
- package/build/server/chunks/{_server.ts-CwPiZPmZ.js → _server.ts-B5JZoMbG.js} +6 -6
- package/build/server/chunks/{_server.ts-CwPiZPmZ.js.map → _server.ts-B5JZoMbG.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CQM2RG5K.js → _server.ts-B8xyYAeq.js} +5 -5
- package/build/server/chunks/{_server.ts-CQM2RG5K.js.map → _server.ts-B8xyYAeq.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CFNWzRBr.js → _server.ts-B9CQbSjg.js} +4 -4
- package/build/server/chunks/{_server.ts-CFNWzRBr.js.map → _server.ts-B9CQbSjg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D4tyRvFi.js → _server.ts-B9ykDkc2.js} +2 -2
- package/build/server/chunks/{_server.ts-D4tyRvFi.js.map → _server.ts-B9ykDkc2.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DR7y5OQ3.js → _server.ts-BPdeRlDI.js} +5 -5
- package/build/server/chunks/{_server.ts-DR7y5OQ3.js.map → _server.ts-BPdeRlDI.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B9iU6foL.js → _server.ts-B_0VQmyi.js} +5 -5
- package/build/server/chunks/{_server.ts-B9iU6foL.js.map → _server.ts-B_0VQmyi.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DRvqTDLx.js → _server.ts-B__xH1cU.js} +5 -5
- package/build/server/chunks/_server.ts-B__xH1cU.js.map +1 -0
- package/build/server/chunks/{_server.ts-DiDI1Ie6.js → _server.ts-Bc4VE_mK.js} +6 -6
- package/build/server/chunks/{_server.ts-DiDI1Ie6.js.map → _server.ts-Bc4VE_mK.js.map} +1 -1
- package/build/server/chunks/{_server.ts-IW-zQmmb.js → _server.ts-BdDIXPU0.js} +5 -5
- package/build/server/chunks/_server.ts-BdDIXPU0.js.map +1 -0
- package/build/server/chunks/{_server.ts-CGMuaSY3.js → _server.ts-BeSu9n9F.js} +5 -5
- package/build/server/chunks/{_server.ts-CGMuaSY3.js.map → _server.ts-BeSu9n9F.js.map} +1 -1
- package/build/server/chunks/{_server.ts-D-jGSj8O.js → _server.ts-BjAWFnFv.js} +6 -6
- package/build/server/chunks/{_server.ts-D-jGSj8O.js.map → _server.ts-BjAWFnFv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-2fxcxBzC.js → _server.ts-Bk-SzSGo.js} +5 -5
- package/build/server/chunks/_server.ts-Bk-SzSGo.js.map +1 -0
- package/build/server/chunks/{_server.ts-BnL3TLuz.js → _server.ts-BswBNUz0.js} +5 -5
- package/build/server/chunks/{_server.ts-BnL3TLuz.js.map → _server.ts-BswBNUz0.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DUy4kkr_.js → _server.ts-BtlnrMKD.js} +5 -5
- package/build/server/chunks/{_server.ts-DUy4kkr_.js.map → _server.ts-BtlnrMKD.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BDe-TnAi.js → _server.ts-BxRGCjoH.js} +5 -5
- package/build/server/chunks/{_server.ts-BDe-TnAi.js.map → _server.ts-BxRGCjoH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DDCEmU_P.js → _server.ts-By1az2OR.js} +6 -10
- package/build/server/chunks/_server.ts-By1az2OR.js.map +1 -0
- package/build/server/chunks/{_server.ts-Dcawi9b4.js → _server.ts-C0ch963P.js} +2 -2
- package/build/server/chunks/_server.ts-C0ch963P.js.map +1 -0
- package/build/server/chunks/{_server.ts-DP28Ocqs.js → _server.ts-C2NuRv8K.js} +5 -5
- package/build/server/chunks/{_server.ts-DP28Ocqs.js.map → _server.ts-C2NuRv8K.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DXoq1VzO.js → _server.ts-C4I0eH50.js} +5 -5
- package/build/server/chunks/_server.ts-C4I0eH50.js.map +1 -0
- package/build/server/chunks/{_server.ts-D07mQlNk.js → _server.ts-C6geMqYp.js} +5 -5
- package/build/server/chunks/{_server.ts-D07mQlNk.js.map → _server.ts-C6geMqYp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-YRWN3sJm.js → _server.ts-C9QeDhXf.js} +5 -5
- package/build/server/chunks/{_server.ts-YRWN3sJm.js.map → _server.ts-C9QeDhXf.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DzCUdAPH.js → _server.ts-C9cnB4KZ.js} +5 -5
- package/build/server/chunks/{_server.ts-DzCUdAPH.js.map → _server.ts-C9cnB4KZ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CzgA6LXe.js → _server.ts-CAwWO268.js} +5 -5
- package/build/server/chunks/{_server.ts-CzgA6LXe.js.map → _server.ts-CAwWO268.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DdzFOqZm.js → _server.ts-CBIx55nw.js} +5 -5
- package/build/server/chunks/{_server.ts-DdzFOqZm.js.map → _server.ts-CBIx55nw.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C37SDJxC.js → _server.ts-CDHXmvId.js} +5 -5
- package/build/server/chunks/{_server.ts-C37SDJxC.js.map → _server.ts-CDHXmvId.js.map} +1 -1
- package/build/server/chunks/{_server.ts-hAoIbHpc.js → _server.ts-CHGTPklX.js} +6 -6
- package/build/server/chunks/{_server.ts-hAoIbHpc.js.map → _server.ts-CHGTPklX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BETcFeB8.js → _server.ts-CKblTbUe.js} +5 -5
- package/build/server/chunks/_server.ts-CKblTbUe.js.map +1 -0
- package/build/server/chunks/{_server.ts-C_dk6ZLP.js → _server.ts-CN-ITxq_.js} +6 -6
- package/build/server/chunks/{_server.ts-C_dk6ZLP.js.map → _server.ts-CN-ITxq_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BMCfB7xN.js → _server.ts-CNy4jIvv.js} +5 -5
- package/build/server/chunks/{_server.ts-BMCfB7xN.js.map → _server.ts-CNy4jIvv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CuBCKbP8.js → _server.ts-CQgWS2hB.js} +6 -6
- package/build/server/chunks/{_server.ts-CuBCKbP8.js.map → _server.ts-CQgWS2hB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Cap2Myq0.js → _server.ts-CRSZ1H_z.js} +9 -6
- package/build/server/chunks/_server.ts-CRSZ1H_z.js.map +1 -0
- package/build/server/chunks/{_server.ts-_qXm__Gf.js → _server.ts-CYCJvxkC.js} +5 -5
- package/build/server/chunks/{_server.ts-_qXm__Gf.js.map → _server.ts-CYCJvxkC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DilgsSMu.js → _server.ts-CcyDtTCy.js} +5 -5
- package/build/server/chunks/{_server.ts-DilgsSMu.js.map → _server.ts-CcyDtTCy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-kfc0Us0E.js → _server.ts-CdHxUlD_.js} +5 -5
- package/build/server/chunks/{_server.ts-kfc0Us0E.js.map → _server.ts-CdHxUlD_.js.map} +1 -1
- package/build/server/chunks/{_server.ts-5M6DY-PN.js → _server.ts-CeGOgSlg.js} +8 -8
- package/build/server/chunks/{_server.ts-5M6DY-PN.js.map → _server.ts-CeGOgSlg.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DMj9WYdv.js → _server.ts-CejBAnbx.js} +2 -2
- package/build/server/chunks/{_server.ts-DMj9WYdv.js.map → _server.ts-CejBAnbx.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BwnoppTC.js → _server.ts-ChJzwk4k.js} +6 -6
- package/build/server/chunks/{_server.ts-BwnoppTC.js.map → _server.ts-ChJzwk4k.js.map} +1 -1
- package/build/server/chunks/{_server.ts-0UwoVmus.js → _server.ts-CibQYGvX.js} +6 -6
- package/build/server/chunks/{_server.ts-0UwoVmus.js.map → _server.ts-CibQYGvX.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B6AN-mYa.js → _server.ts-CloVt7eS.js} +7 -7
- package/build/server/chunks/{_server.ts-B6AN-mYa.js.map → _server.ts-CloVt7eS.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B5PHfuR5.js → _server.ts-CmjNZw87.js} +6 -6
- package/build/server/chunks/{_server.ts-B5PHfuR5.js.map → _server.ts-CmjNZw87.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B8D1t67g.js → _server.ts-Cn7LfLF_.js} +7 -7
- package/build/server/chunks/_server.ts-Cn7LfLF_.js.map +1 -0
- package/build/server/chunks/{_server.ts-aw8KYE5U.js → _server.ts-Crdovz8j.js} +5 -5
- package/build/server/chunks/{_server.ts-aw8KYE5U.js.map → _server.ts-Crdovz8j.js.map} +1 -1
- package/build/server/chunks/{_server.ts-lK-oXISB.js → _server.ts-CuYIpIzp.js} +5 -5
- package/build/server/chunks/{_server.ts-lK-oXISB.js.map → _server.ts-CuYIpIzp.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CRVqyjYH.js → _server.ts-CwgY6ghJ.js} +7 -7
- package/build/server/chunks/{_server.ts-CRVqyjYH.js.map → _server.ts-CwgY6ghJ.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C7Scn_Ur.js → _server.ts-CxxrQ9Wz.js} +5 -5
- package/build/server/chunks/_server.ts-CxxrQ9Wz.js.map +1 -0
- package/build/server/chunks/{_server.ts-C9-ewPaY.js → _server.ts-D6BJWhEf.js} +5 -5
- package/build/server/chunks/_server.ts-D6BJWhEf.js.map +1 -0
- package/build/server/chunks/{_server.ts-CosKSZGO.js → _server.ts-D6Y4c9rj.js} +2 -2
- package/build/server/chunks/{_server.ts-CosKSZGO.js.map → _server.ts-D6Y4c9rj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CU5_9yaM.js → _server.ts-D8EweJQC.js} +5 -5
- package/build/server/chunks/{_server.ts-CU5_9yaM.js.map → _server.ts-D8EweJQC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dq8RxTkW.js → _server.ts-D91I-wzU.js} +5 -5
- package/build/server/chunks/{_server.ts-Dq8RxTkW.js.map → _server.ts-D91I-wzU.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CcyVh5fg.js → _server.ts-D9yPVLtB.js} +5 -5
- package/build/server/chunks/{_server.ts-CcyVh5fg.js.map → _server.ts-D9yPVLtB.js.map} +1 -1
- package/build/server/chunks/{_server.ts-avgx1pPX.js → _server.ts-DC0rWv53.js} +5 -5
- package/build/server/chunks/{_server.ts-avgx1pPX.js.map → _server.ts-DC0rWv53.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bi5ToBtl.js → _server.ts-DGHL7uho.js} +5 -5
- package/build/server/chunks/{_server.ts-Bi5ToBtl.js.map → _server.ts-DGHL7uho.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Baeek88H.js → _server.ts-DHBjlBuv.js} +5 -5
- package/build/server/chunks/_server.ts-DHBjlBuv.js.map +1 -0
- package/build/server/chunks/{_server.ts-FPubTa2q.js → _server.ts-DIUdkrLE.js} +5 -5
- package/build/server/chunks/{_server.ts-FPubTa2q.js.map → _server.ts-DIUdkrLE.js.map} +1 -1
- package/build/server/chunks/{_server.ts-5aqdy9Zn.js → _server.ts-DNag2rCU.js} +25 -17
- package/build/server/chunks/_server.ts-DNag2rCU.js.map +1 -0
- package/build/server/chunks/{_server.ts-DBQ7TD4o.js → _server.ts-DWXKoPC3.js} +5 -5
- package/build/server/chunks/_server.ts-DWXKoPC3.js.map +1 -0
- package/build/server/chunks/{_server.ts-DSfVK8xc.js → _server.ts-D_Zne8zk.js} +5 -5
- package/build/server/chunks/{_server.ts-DSfVK8xc.js.map → _server.ts-D_Zne8zk.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Brb7lRFE.js → _server.ts-DarGs6EN.js} +5 -5
- package/build/server/chunks/_server.ts-DarGs6EN.js.map +1 -0
- package/build/server/chunks/{_server.ts-Cb-e8WyG.js → _server.ts-DdjZAsqc.js} +5 -5
- package/build/server/chunks/{_server.ts-Cb-e8WyG.js.map → _server.ts-DdjZAsqc.js.map} +1 -1
- package/build/server/chunks/_server.ts-DhgUx_Ar.js +84 -0
- package/build/server/chunks/_server.ts-DhgUx_Ar.js.map +1 -0
- package/build/server/chunks/{_server.ts-CmyqMhn9.js → _server.ts-Ds26GwEH.js} +5 -5
- package/build/server/chunks/{_server.ts-CmyqMhn9.js.map → _server.ts-Ds26GwEH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bxk1V3Ev.js → _server.ts-Dx-W9dxd.js} +5 -5
- package/build/server/chunks/{_server.ts-Bxk1V3Ev.js.map → _server.ts-Dx-W9dxd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BnNG0uRK.js → _server.ts-DyAZoRvd.js} +6 -6
- package/build/server/chunks/{_server.ts-BnNG0uRK.js.map → _server.ts-DyAZoRvd.js.map} +1 -1
- package/build/server/chunks/{_server.ts-WePF2DAq.js → _server.ts-EYK0bXvj.js} +5 -5
- package/build/server/chunks/_server.ts-EYK0bXvj.js.map +1 -0
- package/build/server/chunks/{_server.ts-DFV-gf9Q.js → _server.ts-GB9Cj5oM.js} +5 -5
- package/build/server/chunks/{_server.ts-DFV-gf9Q.js.map → _server.ts-GB9Cj5oM.js.map} +1 -1
- package/build/server/chunks/{_server.ts-DYsP_lpr.js → _server.ts-KhshtfY7.js} +7 -7
- package/build/server/chunks/_server.ts-KhshtfY7.js.map +1 -0
- package/build/server/chunks/{_server.ts-ChH8nHr7.js → _server.ts-W0CmGtTj.js} +7 -7
- package/build/server/chunks/{_server.ts-ChH8nHr7.js.map → _server.ts-W0CmGtTj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-C5jyYbFm.js → _server.ts-X_5reIBA.js} +17 -8
- package/build/server/chunks/_server.ts-X_5reIBA.js.map +1 -0
- package/build/server/chunks/{_server.ts-r07PDC8q.js → _server.ts-YHTGVduj.js} +5 -5
- package/build/server/chunks/{_server.ts-r07PDC8q.js.map → _server.ts-YHTGVduj.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BRTk2wfW.js → _server.ts-c9nn_lEh.js} +5 -5
- package/build/server/chunks/{_server.ts-BRTk2wfW.js.map → _server.ts-c9nn_lEh.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BW46dP9B.js → _server.ts-cNcqERWY.js} +7 -7
- package/build/server/chunks/{_server.ts-BW46dP9B.js.map → _server.ts-cNcqERWY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BlVBulWB.js → _server.ts-e-kt0L13.js} +4 -4
- package/build/server/chunks/_server.ts-e-kt0L13.js.map +1 -0
- package/build/server/chunks/{_server.ts-DX3B53H8.js → _server.ts-fV4HpgOz.js} +5 -5
- package/build/server/chunks/{_server.ts-DX3B53H8.js.map → _server.ts-fV4HpgOz.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Dg4ouUjZ.js → _server.ts-hqvYcJBt.js} +5 -5
- package/build/server/chunks/_server.ts-hqvYcJBt.js.map +1 -0
- package/build/server/chunks/{_server.ts-CM1BFa2O.js → _server.ts-iCDhsOOY.js} +6 -6
- package/build/server/chunks/_server.ts-iCDhsOOY.js.map +1 -0
- package/build/server/chunks/{_server.ts-Bx3uIrpl.js → _server.ts-jyQMP3IC.js} +5 -5
- package/build/server/chunks/{_server.ts-Bx3uIrpl.js.map → _server.ts-jyQMP3IC.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Decw7JxO.js → _server.ts-sY8nzvys.js} +5 -5
- package/build/server/chunks/_server.ts-sY8nzvys.js.map +1 -0
- package/build/server/chunks/{addon-helpers-ChYTbRSK.js → addon-helpers-DmjAK3BO.js} +3 -3
- package/build/server/chunks/addon-helpers-DmjAK3BO.js.map +1 -0
- package/build/server/chunks/{akm-BLz9zl09.js → akm-B44WQaeD.js} +2 -2
- package/build/server/chunks/{akm-BLz9zl09.js.map → akm-B44WQaeD.js.map} +1 -1
- package/build/server/chunks/{catalog-CY6FvvAs.js → catalog-C8yZ2uH2.js} +5 -5
- package/build/server/chunks/{catalog-CY6FvvAs.js.map → catalog-C8yZ2uH2.js.map} +1 -1
- package/build/server/chunks/{client-FcHtkEV-.js → client-Dv5ruwWL.js} +2 -2
- package/build/server/chunks/{client-FcHtkEV-.js.map → client-Dv5ruwWL.js.map} +1 -1
- package/build/server/chunks/{config-WS3yDsjb.js → config-BXCHMmv_.js} +2 -2
- package/build/server/chunks/{config-WS3yDsjb.js.map → config-BXCHMmv_.js.map} +1 -1
- package/build/server/chunks/{docker-CDcBV4aX.js → docker-qBTgU_Qa.js} +2 -2
- package/build/server/chunks/{docker-CDcBV4aX.js.map → docker-qBTgU_Qa.js.map} +1 -1
- package/build/server/chunks/{endpoints-BnI8UQUm.js → endpoints-BJw6odky.js} +2 -2
- package/build/server/chunks/{endpoints-BnI8UQUm.js.map → endpoints-BJw6odky.js.map} +1 -1
- package/build/server/chunks/{error.svelte-DeB-Po5T.js → error.svelte-Bk8x64a4.js} +4 -4
- package/build/server/chunks/{error.svelte-DeB-Po5T.js.map → error.svelte-Bk8x64a4.js.map} +1 -1
- package/build/server/chunks/{helpers-uzTc9A0Q.js → helpers-DB3Oat0M.js} +3 -3
- package/build/server/chunks/{helpers-uzTc9A0Q.js.map → helpers-DB3Oat0M.js.map} +1 -1
- package/build/server/chunks/{hooks.server-DaC85A-N.js → hooks.server-DoW_3zHD.js} +7 -7
- package/build/server/chunks/hooks.server-DoW_3zHD.js.map +1 -0
- package/build/server/chunks/{http-DWCniA5n.js → http-C4WWfxK-.js} +2 -2
- package/build/server/chunks/{http-DWCniA5n.js.map → http-C4WWfxK-.js.map} +1 -1
- package/build/server/chunks/{internal-DRthfYRK.js → internal-Bkw-piFD.js} +3 -3
- package/build/server/chunks/{internal-DRthfYRK.js.map → internal-Bkw-piFD.js.map} +1 -1
- package/build/server/chunks/{migration-status-Blvg_RFt.js → migration-status-C-gFVWrV.js} +2 -2
- package/build/server/chunks/{migration-status-Blvg_RFt.js.map → migration-status-C-gFVWrV.js.map} +1 -1
- package/build/server/chunks/{session-cookie-DOONPnJ5.js → session-cookie-DYlRFqU6.js} +2 -2
- package/build/server/chunks/{session-cookie-DOONPnJ5.js.map → session-cookie-DYlRFqU6.js.map} +1 -1
- package/build/server/chunks/{setup-deploy-CeeF_6ze.js → setup-deploy-D3XucKIu.js} +2 -2
- package/build/server/chunks/{setup-deploy-CeeF_6ze.js.map → setup-deploy-D3XucKIu.js.map} +1 -1
- package/build/server/chunks/{src-B3g4Ry1X.js → src-DPd0Zos1.js} +198 -639
- package/build/server/chunks/src-DPd0Zos1.js.map +1 -0
- package/build/server/chunks/{state-CL9Kv-vm.js → state-CmEW57i2.js} +2 -2
- package/build/server/chunks/{state-CL9Kv-vm.js.map → state-CmEW57i2.js.map} +1 -1
- package/build/server/chunks/{state2-Cim9_nHe.js → state2-zSoANrav.js} +2 -2
- package/build/server/chunks/{state2-Cim9_nHe.js.map → state2-zSoANrav.js.map} +1 -1
- package/build/server/chunks/{theme-state.svelte-BgBXJ060.js → theme-state.svelte-DshW_ZYI.js} +2 -81
- package/build/server/chunks/theme-state.svelte-DshW_ZYI.js.map +1 -0
- package/build/server/index.js +32 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +93 -107
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/build/client/_app/immutable/assets/4.BLk6Mqyj.css +0 -1
- package/build/client/_app/immutable/assets/4.BLk6Mqyj.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BLk6Mqyj.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B8C5qi9U.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8C5qi9U.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Br6Mrpf0.js.br +0 -0
- package/build/client/_app/immutable/chunks/Br6Mrpf0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CLgRRUN_.js.br +0 -0
- package/build/client/_app/immutable/chunks/CLgRRUN_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ch85wCT5.js +0 -1
- package/build/client/_app/immutable/chunks/Ch85wCT5.js.br +0 -2
- package/build/client/_app/immutable/chunks/Ch85wCT5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DRHnoVLf.js +0 -1
- package/build/client/_app/immutable/chunks/DRHnoVLf.js.br +0 -0
- package/build/client/_app/immutable/chunks/DRHnoVLf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DYXGFYr6.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYXGFYr6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dcw6L0GF.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dcw6L0GF.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CVxCoIFs.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CVxCoIFs.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CQqNtgHJ.js +0 -1
- package/build/client/_app/immutable/entry/start.CQqNtgHJ.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CQqNtgHJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Bb8qAGW8.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Bb8qAGW8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.Co_TaqLI.js.br +0 -2
- package/build/client/_app/immutable/nodes/1.Co_TaqLI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.agNu3Ryl.js +0 -130
- package/build/client/_app/immutable/nodes/4.agNu3Ryl.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.agNu3Ryl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Fw13EXte.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Fw13EXte.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CWy0yXnu.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CWy0yXnu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CsM4M8Ul.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CsM4M8Ul.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.V6hY0p8a.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.V6hY0p8a.js.gz +0 -0
- package/build/server/chunks/1-DvZDBGww.js +0 -9
- package/build/server/chunks/10-C96Thueb.js.map +0 -1
- package/build/server/chunks/4-BYdi8hv_.js +0 -9
- package/build/server/chunks/6-BsZngRIA.js +0 -9
- package/build/server/chunks/_page.svelte-WYgjKj38.js.map +0 -1
- package/build/server/chunks/_server.ts-2fxcxBzC.js.map +0 -1
- package/build/server/chunks/_server.ts-5aqdy9Zn.js.map +0 -1
- package/build/server/chunks/_server.ts-B8D1t67g.js.map +0 -1
- package/build/server/chunks/_server.ts-BETcFeB8.js.map +0 -1
- package/build/server/chunks/_server.ts-BM0AExGa.js +0 -121
- package/build/server/chunks/_server.ts-BM0AExGa.js.map +0 -1
- package/build/server/chunks/_server.ts-Baeek88H.js.map +0 -1
- package/build/server/chunks/_server.ts-BlVBulWB.js.map +0 -1
- package/build/server/chunks/_server.ts-Brb7lRFE.js.map +0 -1
- package/build/server/chunks/_server.ts-C5jyYbFm.js.map +0 -1
- package/build/server/chunks/_server.ts-C7Scn_Ur.js.map +0 -1
- package/build/server/chunks/_server.ts-C9-ewPaY.js.map +0 -1
- package/build/server/chunks/_server.ts-CM1BFa2O.js.map +0 -1
- package/build/server/chunks/_server.ts-Cap2Myq0.js.map +0 -1
- package/build/server/chunks/_server.ts-DBQ7TD4o.js.map +0 -1
- package/build/server/chunks/_server.ts-DDCEmU_P.js.map +0 -1
- package/build/server/chunks/_server.ts-DLLNA3jY.js +0 -47
- package/build/server/chunks/_server.ts-DLLNA3jY.js.map +0 -1
- package/build/server/chunks/_server.ts-DM6Jm6KP.js.map +0 -1
- package/build/server/chunks/_server.ts-DRvqTDLx.js.map +0 -1
- package/build/server/chunks/_server.ts-DXoq1VzO.js.map +0 -1
- package/build/server/chunks/_server.ts-DYsP_lpr.js.map +0 -1
- package/build/server/chunks/_server.ts-DZ-yNYeI.js +0 -64
- package/build/server/chunks/_server.ts-DZ-yNYeI.js.map +0 -1
- package/build/server/chunks/_server.ts-Dcawi9b4.js.map +0 -1
- package/build/server/chunks/_server.ts-Decw7JxO.js.map +0 -1
- package/build/server/chunks/_server.ts-Dg4ouUjZ.js.map +0 -1
- package/build/server/chunks/_server.ts-IW-zQmmb.js.map +0 -1
- package/build/server/chunks/_server.ts-WePF2DAq.js.map +0 -1
- package/build/server/chunks/_server.ts-k339Bhm3.js +0 -88
- package/build/server/chunks/_server.ts-k339Bhm3.js.map +0 -1
- package/build/server/chunks/addon-helpers-ChYTbRSK.js.map +0 -1
- package/build/server/chunks/environment-D-dkDBwd.js +0 -36
- package/build/server/chunks/environment-D-dkDBwd.js.map +0 -1
- package/build/server/chunks/hooks.server-DaC85A-N.js.map +0 -1
- package/build/server/chunks/src-B3g4Ry1X.js.map +0 -1
- package/build/server/chunks/theme-state.svelte-BgBXJ060.js.map +0 -1
- package/build/server/chunks/version-cache-CSnmLqxQ.js +0 -54
- package/build/server/chunks/version-cache-CSnmLqxQ.js.map +0 -1
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { o as onDestroy, g as goto } from './client-FcHtkEV-.js';
|
|
1
|
+
import { F as head, q as ensure_array_like, e as attr_class, d as attr, s as escape_html, a9 as stringify, p as derived, g as bind_props } from './dev-D85DamNs.js';
|
|
2
|
+
import { o as onDestroy, g as goto } from './client-Dv5ruwWL.js';
|
|
4
3
|
import { r as require_dist } from './dist-DOFcG0Zp.js';
|
|
5
|
-
import {
|
|
6
|
-
import { I as IconDone } from './IconDone-YB1DYJFs.js';
|
|
4
|
+
import { e as fetchContainers, f as fetchAutomations, v as voiceState, b as buildHeaders, h as fetchServiceLogs, a as detectAkmEmbedding, t as testAkmEmbedding, n as notifications } from './theme-state.svelte-DshW_ZYI.js';
|
|
7
5
|
import { I as IconInfo } from './IconInfo-yYiI9uGe.js';
|
|
8
|
-
import { c as IconMic, p as formatTime, o as endpointsService
|
|
9
|
-
import { N as Navbar, I as IconServer, D as Drawer } from './Navbar-
|
|
6
|
+
import { c as IconMic, p as formatTime, o as endpointsService } from './IconMic-DK0ZRKNm.js';
|
|
7
|
+
import { N as Navbar, I as IconServer, D as Drawer } from './Navbar-Bx84i9hX.js';
|
|
10
8
|
import { S as Spinner } from './Spinner-jfNKSy3m.js';
|
|
11
9
|
import { c as IconLink, I as IconAgent, a as IconAlert, b as IconDoneCircle, d as IconTerminal, T as ToolStrip, C as ChatMessage } from './ChatMessage-6KR_zJHH.js';
|
|
12
10
|
import { I as IconLock } from './IconLock-DHiqGiiZ.js';
|
|
13
|
-
import './internal-
|
|
11
|
+
import './internal-Bkw-piFD.js';
|
|
14
12
|
import './utils-BSRjJDrZ.js';
|
|
15
13
|
import 'node:module';
|
|
16
14
|
import './chunk-CLZ62Ad-.js';
|
|
17
15
|
import './features.svelte-DsfDrPnq.js';
|
|
18
|
-
import './state2-
|
|
16
|
+
import './state2-zSoANrav.js';
|
|
19
17
|
import './IconLogo-Iv-7q8aY.js';
|
|
18
|
+
import './IconDone-YB1DYJFs.js';
|
|
20
19
|
|
|
21
20
|
//#region src/lib/components/icons/IconOverview.svelte
|
|
22
21
|
function IconOverview($$renderer, $$props) {
|
|
@@ -233,13 +232,7 @@ function StatusHero($$renderer, $$props) {
|
|
|
233
232
|
//#endregion
|
|
234
233
|
//#region src/lib/components/admin/overview/OperationOutput.svelte
|
|
235
234
|
function OperationOutput($$renderer, $$props) {
|
|
236
|
-
|
|
237
|
-
if (operationResult) {
|
|
238
|
-
$$renderer.push("<!--[0-->");
|
|
239
|
-
$$renderer.push(`<section${attr_class(`output-section output-section--${stringify(operationResultType)}`, "svelte-10sij3c")}><div class="output-header svelte-10sij3c"><h3 class="svelte-10sij3c">Operation output</h3> <button class="btn-ghost" aria-label="Dismiss">`);
|
|
240
|
-
IconClose($$renderer, { size: 14 });
|
|
241
|
-
$$renderer.push(`<!----></button></div> <pre class="output-code svelte-10sij3c">${escape_html(operationResult)}</pre></section>`);
|
|
242
|
-
} else $$renderer.push("<!--[-1-->");
|
|
235
|
+
$$renderer.push("<!--[-1-->");
|
|
243
236
|
$$renderer.push(`<!--]-->`);
|
|
244
237
|
}
|
|
245
238
|
//#endregion
|
|
@@ -318,7 +311,7 @@ function OverviewTab($$renderer, $$props) {
|
|
|
318
311
|
* never deploys (e.g. guardian on a no-portal install) is never counted as
|
|
319
312
|
* a failed container. Falls back to the merged container keys when empty.
|
|
320
313
|
*/
|
|
321
|
-
let {
|
|
314
|
+
let { healthLoading, anyDangerousLoading, mergedServices, managedServices, onNavigate } = $$props;
|
|
322
315
|
let akmBadge = derived(() => {
|
|
323
316
|
return {
|
|
324
317
|
label: "Unavailable",
|
|
@@ -362,9 +355,7 @@ function OverviewTab($$renderer, $$props) {
|
|
|
362
355
|
healthLoading,
|
|
363
356
|
anyDangerousLoading});
|
|
364
357
|
$$renderer.push(`<!----> `);
|
|
365
|
-
OperationOutput($$renderer
|
|
366
|
-
operationResult,
|
|
367
|
-
operationResultType});
|
|
358
|
+
OperationOutput($$renderer);
|
|
368
359
|
$$renderer.push(`<!----> <div class="tile-grid svelte-xz862u">`);
|
|
369
360
|
MetricTile($$renderer, {
|
|
370
361
|
label: "Services running",
|
|
@@ -405,509 +396,27 @@ function OverviewTab($$renderer, $$props) {
|
|
|
405
396
|
});
|
|
406
397
|
}
|
|
407
398
|
//#endregion
|
|
408
|
-
//#region src/lib/version-compare.ts
|
|
409
|
-
/** True when `v` parses as a comparable semver (optionally `v`-prefixed). */
|
|
410
|
-
function isSemver(v) {
|
|
411
|
-
if (!v) return false;
|
|
412
|
-
return /^v?\d+\.\d+\.\d+(?:[-+].*)?$/.test(v.trim());
|
|
413
|
-
}
|
|
414
|
-
function isPrerelease(v) {
|
|
415
|
-
return v.replace(/^v/, "").split("+")[0].includes("-");
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Client-safe mirror of @openpalm/lib's `formatForDisplay` (#503): one canonical
|
|
419
|
-
* user-facing spelling regardless of whether the value arrived as a Docker tag
|
|
420
|
-
* (`v0.12.0`) or an npm version (`0.12.0`). Drops a single leading `v`; leaves
|
|
421
|
-
* a moving tag like `latest`/`dev` untouched. The lib helper is server-only
|
|
422
|
-
* (its module imports package.json), so this stays a tiny dependency-free copy
|
|
423
|
-
* used everywhere the browser renders a version label.
|
|
424
|
-
*/
|
|
425
|
-
function formatVersionForDisplay(v) {
|
|
426
|
-
return (v ?? "").trim().replace(/^v/, "");
|
|
427
|
-
}
|
|
428
|
-
/** Active release channel for `current`: pre-release installs ride the
|
|
429
|
-
* prerelease channel, everything else the stable channel. Non-semver (a moving
|
|
430
|
-
* `latest` tag, or no data) → 'unknown' so the UI shows nothing misleading. */
|
|
431
|
-
function channelOf(current) {
|
|
432
|
-
if (!isSemver(current)) return "unknown";
|
|
433
|
-
return isPrerelease(current) ? "prerelease" : "stable";
|
|
434
|
-
}
|
|
435
|
-
/** Returns 1 if a > b, -1 if a < b, 0 if equal. Strips a leading `v`. */
|
|
436
|
-
function compareVersions(a, b) {
|
|
437
|
-
const parse = (v) => {
|
|
438
|
-
const clean = v.trim().replace(/^v/, "").split("+")[0];
|
|
439
|
-
const dashIdx = clean.indexOf("-");
|
|
440
|
-
const main = dashIdx === -1 ? clean : clean.slice(0, dashIdx);
|
|
441
|
-
const pre = dashIdx === -1 ? null : clean.slice(dashIdx + 1);
|
|
442
|
-
const parts = main.split(".").map(Number);
|
|
443
|
-
return [
|
|
444
|
-
parts[0] ?? 0,
|
|
445
|
-
parts[1] ?? 0,
|
|
446
|
-
parts[2] ?? 0,
|
|
447
|
-
pre
|
|
448
|
-
];
|
|
449
|
-
};
|
|
450
|
-
const comparePre = (x, y) => {
|
|
451
|
-
const xp = x.split(".");
|
|
452
|
-
const yp = y.split(".");
|
|
453
|
-
for (let i = 0; i < Math.max(xp.length, yp.length); i++) {
|
|
454
|
-
if (i >= xp.length) return -1;
|
|
455
|
-
if (i >= yp.length) return 1;
|
|
456
|
-
const xn = Number(xp[i]);
|
|
457
|
-
const yn = Number(yp[i]);
|
|
458
|
-
const xIsNum = !isNaN(xn);
|
|
459
|
-
const yIsNum = !isNaN(yn);
|
|
460
|
-
if (xIsNum && yIsNum) {
|
|
461
|
-
if (xn !== yn) return xn > yn ? 1 : -1;
|
|
462
|
-
} else if (xIsNum !== yIsNum) return xIsNum ? -1 : 1;
|
|
463
|
-
else if (xp[i] !== yp[i]) return xp[i] > yp[i] ? 1 : -1;
|
|
464
|
-
}
|
|
465
|
-
return 0;
|
|
466
|
-
};
|
|
467
|
-
const [aM, am, ap, aPre] = parse(a);
|
|
468
|
-
const [bM, bm, bp, bPre] = parse(b);
|
|
469
|
-
if (aM !== bM) return aM > bM ? 1 : -1;
|
|
470
|
-
if (am !== bm) return am > bm ? 1 : -1;
|
|
471
|
-
if (ap !== bp) return ap > bp ? 1 : -1;
|
|
472
|
-
if (aPre === null && bPre !== null) return 1;
|
|
473
|
-
if (aPre !== null && bPre === null) return -1;
|
|
474
|
-
if (aPre !== null && bPre !== null) return comparePre(aPre, bPre);
|
|
475
|
-
return 0;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Status of `current` against the newest `candidate` on the same channel.
|
|
479
|
-
* Returns 'unknown' when either side isn't a comparable semver (e.g. a moving
|
|
480
|
-
* `latest` image tag, or no release data yet) so the UI shows a neutral state
|
|
481
|
-
* instead of a misleading "up to date".
|
|
482
|
-
*/
|
|
483
|
-
function updateStatus(current, latest) {
|
|
484
|
-
if (!isSemver(current) || !isSemver(latest)) return "unknown";
|
|
485
|
-
return compareVersions(latest, current) > 0 ? "update" : "current";
|
|
486
|
-
}
|
|
487
|
-
/**
|
|
488
|
-
* Newest version from `candidates` on `current`'s release channel: a
|
|
489
|
-
* pre-release current sees all candidates; a stable current only sees stable
|
|
490
|
-
* ones (so a stable user is never nudged onto an rc). Returns null when no
|
|
491
|
-
* candidate qualifies. `candidates` need not be pre-sorted.
|
|
492
|
-
*/
|
|
493
|
-
function latestForChannel(current, candidates) {
|
|
494
|
-
const wantPre = isSemver(current) ? isPrerelease(current) : true;
|
|
495
|
-
const pool = candidates.filter((c) => isSemver(c.version) && (wantPre || !c.prerelease));
|
|
496
|
-
if (pool.length === 0) return null;
|
|
497
|
-
return pool.reduce((best, c) => compareVersions(c.version, best.version) > 0 ? c : best).version;
|
|
498
|
-
}
|
|
499
|
-
//#endregion
|
|
500
399
|
//#region src/lib/components/admin/updates/UpdatesTab.svelte
|
|
501
400
|
function UpdatesTab($$renderer, $$props) {
|
|
502
401
|
$$renderer.component(($$renderer) => {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
/** Newer desktop version from the app's GitHub update check, if any. */
|
|
509
|
-
/** Download URL for the newer desktop release. */
|
|
510
|
-
/** True when the native harness moved and the app must be RE-DOWNLOADED
|
|
511
|
-
* (the control plane self-updates; the harness does not). */
|
|
512
|
-
/** Running @openpalm/ui version (the build currently serving this page). */
|
|
513
|
-
/** Supervisor is respawning the UI server against the new build; the page
|
|
514
|
-
* will auto-reload once it's back up (design §6.2). */
|
|
515
|
-
/** Per-unit available Docker Hub tags for the per-unit version pickers,
|
|
516
|
-
* keyed by service id (assistant/guardian/portal/voice). Bare semver,
|
|
517
|
-
* v-prefixed as Docker Hub returns them; the UI strips the v for display. */
|
|
518
|
-
/** Running control-plane version (PLATFORM_VERSION). The dropdown is already
|
|
519
|
-
* filtered to tags ≤ this server-side (#492); used to label "you are on X"
|
|
520
|
-
* and for the active-channel indicator. */
|
|
521
|
-
/** Latest published @openpalm/lib on npm — the "is the platform itself up to
|
|
522
|
-
* date?" signal, separate from the container image latest tags. */
|
|
523
|
-
/** Latest published assistant image tag from Docker Hub (bare semver, no
|
|
524
|
-
* v-prefix). Backward-compat signal; the per-unit rows use each service's
|
|
525
|
-
* own latestVersion. */
|
|
526
|
-
/** Per-unit image pin: the unit currently being installed (null when idle).
|
|
527
|
-
* Any unit install disables the others so two pins can't race on stack.env. */
|
|
528
|
-
/** #501 per-unit downgrade confirmation: set when pinning a unit to an older
|
|
529
|
-
* tag; the UI shows a plain warning + confirm, then re-applies. */
|
|
530
|
-
let { currentImageTag, services = [], anyDangerousLoading, tokenStored, upgradeLoading, inElectron, electronVersion, electronLatestVersion, electronLatestUrl, harnessUpdateAvailable = false, uiVersion, uiVersions, uiVersionsLoading, selectedUiTag, uiDownloadLoading, uiDownloadReady, uiDownloadRestarting, releases, unitTags = {}, releasesLoading, platformVersion = "", platformLatest = null, latestImageTag = null, unitInstallLoading = null, unitDowngradePrompt = null, onSetUnitImageTag, onConfirmUnitDowngrade, onCancelUnitDowngrade, onUpgradeStack, onSelectedUiTagChange, onDownloadUiVersion, onRestartApp, onRefreshReleases } = $$props;
|
|
531
|
-
function uiVersionLabel(v) {
|
|
532
|
-
const tags = [];
|
|
533
|
-
if (v.distTag) tags.push(v.distTag);
|
|
534
|
-
else if (v.prerelease) tags.push("pre-release");
|
|
535
|
-
return tags.length ? `${v.version} (${tags.join(", ")})` : v.version;
|
|
536
|
-
}
|
|
537
|
-
const RELEASES_URL = "https://github.com/itlackey/openpalm/releases";
|
|
538
|
-
const releaseCandidates = derived(() => releases.filter((r) => r.hasElectronBuild).map((r) => ({
|
|
539
|
-
version: r.tag,
|
|
540
|
-
prerelease: r.prerelease
|
|
541
|
-
})));
|
|
542
|
-
const uiCandidates = derived(() => uiVersions.map((v) => ({
|
|
543
|
-
version: v.version,
|
|
544
|
-
prerelease: v.prerelease
|
|
545
|
-
})));
|
|
546
|
-
function serviceStatus(version, latestVersion) {
|
|
547
|
-
const target = latestVersion ?? latestImageTag ?? platformVersion;
|
|
548
|
-
if (!isSemver(version) || !isSemver(target)) return "unknown";
|
|
549
|
-
return compareVersions(version, target) < 0 ? "update" : "current";
|
|
550
|
-
}
|
|
551
|
-
const serviceRows = derived(() => services.map((s) => ({
|
|
552
|
-
...s,
|
|
553
|
-
status: serviceStatus(s.version, s.latestVersion)
|
|
554
|
-
})));
|
|
555
|
-
const stackVersion = derived(() => serviceRows().find((s) => s.id === "assistant")?.version ?? currentImageTag);
|
|
556
|
-
const servicesBehind = derived(() => serviceRows().some((s) => s.status === "update"));
|
|
557
|
-
const SERVICE_ID_TO_UNIT = {
|
|
558
|
-
assistant: "assistant",
|
|
559
|
-
guardian: "guardian",
|
|
560
|
-
portal: "portals",
|
|
561
|
-
voice: "voice"
|
|
562
|
-
};
|
|
563
|
-
let selectedUnitTags = {};
|
|
564
|
-
function unitSelectedTag(unit) {
|
|
565
|
-
return selectedUnitTags[unit] ?? "latest";
|
|
566
|
-
}
|
|
567
|
-
function setUnitSelectedTag(unit, tag) {
|
|
568
|
-
selectedUnitTags[unit] = tag;
|
|
569
|
-
}
|
|
570
|
-
function unitTagList(serviceId) {
|
|
571
|
-
return unitTags[serviceId] ?? [];
|
|
572
|
-
}
|
|
573
|
-
const unitRows = derived(() => serviceRows().map((s) => {
|
|
574
|
-
return {
|
|
575
|
-
service: s,
|
|
576
|
-
unit: SERVICE_ID_TO_UNIT[s.id] ?? s.id,
|
|
577
|
-
tags: unitTagList(s.id)
|
|
578
|
-
};
|
|
579
|
-
}));
|
|
580
|
-
const appLatest = derived(() => electronLatestVersion ?? latestForChannel(electronVersion, releaseCandidates()));
|
|
581
|
-
const appStatus = derived(() => inElectron ? updateStatus(electronVersion, appLatest()) : "unknown");
|
|
582
|
-
const appDownloadUrl = derived(() => electronLatestUrl ?? RELEASES_URL);
|
|
583
|
-
const uiLatest = derived(() => latestForChannel(uiVersion, uiCandidates()));
|
|
584
|
-
const uiStatus = derived(() => updateStatus(uiVersion, uiLatest()));
|
|
585
|
-
const activeChannel = derived(() => channelOf(platformVersion));
|
|
586
|
-
let notificationsEnabled = false;
|
|
587
|
-
let replyPreviewEnabled = false;
|
|
588
|
-
let launchOnLoginEnabled = false;
|
|
589
|
-
function hasStatusIcon(s) {
|
|
590
|
-
return s === "current" || s === "update";
|
|
591
|
-
}
|
|
592
|
-
function statusTitle(s) {
|
|
593
|
-
return s === "current" ? "Up to date" : s === "update" ? "Update available" : "Update status unknown";
|
|
594
|
-
}
|
|
595
|
-
const statusText = derived(() => upgradeLoading ? "Updating OpenPalm to the latest version…" : unitInstallLoading !== null ? "Installing the selected version and restarting…" : uiDownloadLoading ? "Downloading the admin interface…" : releasesLoading || uiVersionsLoading ? "Checking for updates…" : "");
|
|
596
|
-
$$renderer.push(`<div class="panel svelte-7mkeya" role="tabpanel"><div class="panel-header svelte-7mkeya"><div class="svelte-7mkeya"><h2 class="svelte-7mkeya">Check-up</h2> <p class="panel-subtitle svelte-7mkeya">Keep OpenPalm up to date</p> `);
|
|
597
|
-
if (activeChannel() !== "unknown") {
|
|
598
|
-
$$renderer.push("<!--[0-->");
|
|
599
|
-
$$renderer.push(`<p class="channel-indicator svelte-7mkeya">You're on the <strong class="svelte-7mkeya">${escape_html(activeChannel() === "prerelease" ? "prerelease" : "stable")}</strong> channel. `);
|
|
600
|
-
if (activeChannel() === "prerelease") {
|
|
601
|
-
$$renderer.push("<!--[0-->");
|
|
602
|
-
$$renderer.push(`Prereleases get new features early and may be less stable.`);
|
|
603
|
-
} else {
|
|
604
|
-
$$renderer.push("<!--[-1-->");
|
|
605
|
-
$$renderer.push(`You'll only be offered stable releases.`);
|
|
606
|
-
}
|
|
607
|
-
$$renderer.push(`<!--]--></p>`);
|
|
608
|
-
} else $$renderer.push("<!--[-1-->");
|
|
609
|
-
$$renderer.push(`<!--]--></div> <button class="btn btn-sm btn-secondary refresh-releases svelte-7mkeya"${attr("disabled", releasesLoading || uiVersionsLoading, true)}${attr("aria-busy", releasesLoading || uiVersionsLoading)} title="Check for newer versions">`);
|
|
610
|
-
if (releasesLoading || uiVersionsLoading) {
|
|
611
|
-
$$renderer.push("<!--[0-->");
|
|
612
|
-
Spinner($$renderer, {});
|
|
613
|
-
$$renderer.push(`<!----> Checking…`);
|
|
614
|
-
} else {
|
|
615
|
-
$$renderer.push("<!--[-1-->");
|
|
616
|
-
$$renderer.push(`<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-7mkeya"><path d="M23 4v6h-6" class="svelte-7mkeya"></path><path d="M1 20v-6h6" class="svelte-7mkeya"></path><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" class="svelte-7mkeya"></path></svg> Check for updates`);
|
|
617
|
-
}
|
|
618
|
-
$$renderer.push(`<!--]--></button></div> <p class="status-live svelte-7mkeya" role="status" aria-live="polite">${escape_html(statusText())}</p> <div class="panel-body svelte-7mkeya"><section${attr_class("update-card svelte-7mkeya", void 0, {
|
|
619
|
-
"update-card-ok": !servicesBehind(),
|
|
620
|
-
"alert": servicesBehind()
|
|
621
|
-
})} aria-labelledby="update-primary-title"><div class="update-card-text svelte-7mkeya">`);
|
|
622
|
-
if (servicesBehind()) {
|
|
623
|
-
$$renderer.push("<!--[0-->");
|
|
624
|
-
$$renderer.push(`<h3 id="update-primary-title" class="update-title svelte-7mkeya">Your services are on ${escape_html(formatVersionForDisplay(stackVersion()) || "—")} — update to ${escape_html(formatVersionForDisplay(latestImageTag ?? platformVersion) || "the latest version")}</h3> <p class="update-desc svelte-7mkeya">Brings every stack service up to the version of OpenPalm you're running. Your settings
|
|
625
|
-
are backed up first, then your assistant restarts — offline for about a minute. Your data is kept.</p>`);
|
|
626
|
-
} else {
|
|
627
|
-
$$renderer.push("<!--[-1-->");
|
|
628
|
-
$$renderer.push(`<h3 id="update-primary-title" class="update-title svelte-7mkeya">You're up to date</h3> <p class="update-desc svelte-7mkeya">Every service matches the latest available version (${escape_html(formatVersionForDisplay(latestImageTag ?? platformVersion) || "the current version")}).
|
|
629
|
-
An update backs up your settings first, then briefly restarts your assistant.</p>`);
|
|
630
|
-
}
|
|
402
|
+
let uiBuildTag = "";
|
|
403
|
+
let uiBuildBusy = false;
|
|
404
|
+
const statusText = derived(() => "Loading versions…");
|
|
405
|
+
$$renderer.push(`<div class="panel" role="tabpanel"><div class="panel-header"><div><h2>Versions</h2> <p class="panel-subtitle">Pin the version of each container image and bundled tool.</p> <p class="control-plane-line svelte-7mkeya">Control plane: <strong class="svelte-7mkeya">${escape_html("—")}</strong></p></div></div> <p class="status-live svelte-7mkeya" role="status" aria-live="polite">${escape_html(statusText())}</p> <div class="panel-body">`);
|
|
406
|
+
$$renderer.push("<!--[-1-->");
|
|
631
407
|
$$renderer.push(`<!--]--> `);
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
}
|
|
643
|
-
$$renderer.push(`<!--]--></p>`);
|
|
644
|
-
} else $$renderer.push("<!--[-1-->");
|
|
645
|
-
$$renderer.push(`<!--]--></div> <button class="btn btn-primary update-go svelte-7mkeya"${attr("disabled", anyDangerousLoading || !tokenStored, true)}${attr("aria-busy", upgradeLoading)}>`);
|
|
646
|
-
if (upgradeLoading) {
|
|
647
|
-
$$renderer.push("<!--[0-->");
|
|
648
|
-
Spinner($$renderer, {});
|
|
649
|
-
$$renderer.push(`<!----> Updating…`);
|
|
650
|
-
} else if (servicesBehind()) {
|
|
651
|
-
$$renderer.push("<!--[1-->");
|
|
652
|
-
$$renderer.push(`Update now`);
|
|
653
|
-
} else {
|
|
654
|
-
$$renderer.push("<!--[-1-->");
|
|
655
|
-
$$renderer.push(`Check & update`);
|
|
656
|
-
}
|
|
657
|
-
$$renderer.push(`<!--]--></button></section> <div class="versions-group svelte-7mkeya" aria-labelledby="versions-platform-title"><h3 id="versions-platform-title" class="versions-group-title svelte-7mkeya">OpenPalm ${escape_html(formatVersionForDisplay(platformVersion) || "—")} <span class="versions-group-sub svelte-7mkeya">control plane</span></h3></div> <dl class="versions svelte-7mkeya"><div class="versions-subhead svelte-7mkeya"><dt class="svelte-7mkeya">Services</dt><dd class="svelte-7mkeya"></dd></div> <!--[-->`);
|
|
658
|
-
const each_array = ensure_array_like(serviceRows());
|
|
659
|
-
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
660
|
-
let s = each_array[$$index];
|
|
661
|
-
$$renderer.push(`<div class="versions-row svelte-7mkeya"><dt class="svelte-7mkeya">${escape_html(s.label)}</dt> <dd class="svelte-7mkeya"><span class="version-cell svelte-7mkeya"><code${attr_class(`version-value status-${stringify(s.status)}`, "svelte-7mkeya")}>${escape_html(formatVersionForDisplay(s.version) || "—")}</code> `);
|
|
662
|
-
if (hasStatusIcon(s.status)) {
|
|
663
|
-
$$renderer.push("<!--[0-->");
|
|
664
|
-
$$renderer.push(`<span class="status-icon svelte-7mkeya"${attr("aria-label", statusTitle(s.status))}${attr("title", statusTitle(s.status))}>`);
|
|
665
|
-
if (s.status === "current") {
|
|
666
|
-
$$renderer.push("<!--[0-->");
|
|
667
|
-
IconDone($$renderer, { size: 13 });
|
|
668
|
-
} else {
|
|
669
|
-
$$renderer.push("<!--[-1-->");
|
|
670
|
-
IconCloudDownload($$renderer, { size: 13 });
|
|
671
|
-
}
|
|
672
|
-
$$renderer.push(`<!--]--></span>`);
|
|
673
|
-
} else $$renderer.push("<!--[-1-->");
|
|
674
|
-
$$renderer.push(`<!--]--></span> `);
|
|
675
|
-
if (s.status === "update") {
|
|
676
|
-
$$renderer.push("<!--[0-->");
|
|
677
|
-
$$renderer.push(`<button class="btn btn-sm btn-secondary version-action svelte-7mkeya"${attr("disabled", anyDangerousLoading || !tokenStored, true)}${attr("aria-busy", upgradeLoading)}>`);
|
|
678
|
-
if (upgradeLoading) {
|
|
679
|
-
$$renderer.push("<!--[0-->");
|
|
680
|
-
Spinner($$renderer, {});
|
|
681
|
-
$$renderer.push(`<!----> Updating…`);
|
|
682
|
-
} else {
|
|
683
|
-
$$renderer.push("<!--[-1-->");
|
|
684
|
-
$$renderer.push(`Update to ${escape_html(formatVersionForDisplay(s.latestVersion ?? latestImageTag ?? platformVersion))}`);
|
|
685
|
-
}
|
|
686
|
-
$$renderer.push(`<!--]--></button>`);
|
|
687
|
-
} else $$renderer.push("<!--[-1-->");
|
|
688
|
-
$$renderer.push(`<!--]--></dd></div>`);
|
|
689
|
-
}
|
|
690
|
-
$$renderer.push(`<!--]--> <div class="versions-subhead svelte-7mkeya"><dt class="svelte-7mkeya">App</dt><dd class="svelte-7mkeya"></dd></div> <div class="versions-row svelte-7mkeya"><dt class="svelte-7mkeya">OpenPalm App</dt> <dd class="svelte-7mkeya"><span class="version-cell svelte-7mkeya"><code${attr_class(`version-value status-${stringify(appStatus())}`, "svelte-7mkeya")}>${escape_html(formatVersionForDisplay(electronVersion) || "—")}</code> `);
|
|
691
|
-
if (hasStatusIcon(appStatus())) {
|
|
692
|
-
$$renderer.push("<!--[0-->");
|
|
693
|
-
$$renderer.push(`<span class="status-icon svelte-7mkeya"${attr("aria-label", statusTitle(appStatus()))}${attr("title", statusTitle(appStatus()))}>`);
|
|
694
|
-
if (appStatus() === "current") {
|
|
695
|
-
$$renderer.push("<!--[0-->");
|
|
696
|
-
IconDone($$renderer, { size: 13 });
|
|
697
|
-
} else {
|
|
698
|
-
$$renderer.push("<!--[-1-->");
|
|
699
|
-
IconCloudDownload($$renderer, { size: 13 });
|
|
700
|
-
}
|
|
701
|
-
$$renderer.push(`<!--]--></span>`);
|
|
702
|
-
} else $$renderer.push("<!--[-1-->");
|
|
703
|
-
$$renderer.push(`<!--]--></span> `);
|
|
704
|
-
if (appStatus() === "update") {
|
|
705
|
-
$$renderer.push("<!--[0-->");
|
|
706
|
-
$$renderer.push(`<a class="btn btn-sm btn-secondary version-action svelte-7mkeya"${attr("href", appDownloadUrl())} target="_blank" rel="noopener noreferrer">Download ${escape_html(formatVersionForDisplay(appLatest()))}</a>`);
|
|
707
|
-
} else $$renderer.push("<!--[-1-->");
|
|
708
|
-
$$renderer.push(`<!--]--></dd></div> <div class="versions-row svelte-7mkeya"><dt class="svelte-7mkeya">Admin interface</dt> <dd class="svelte-7mkeya"><span class="version-cell svelte-7mkeya"><code${attr_class(`version-value status-${stringify(uiStatus())}`, "svelte-7mkeya")}>${escape_html(formatVersionForDisplay(uiVersion) || "—")}</code> `);
|
|
709
|
-
if (hasStatusIcon(uiStatus())) {
|
|
710
|
-
$$renderer.push("<!--[0-->");
|
|
711
|
-
$$renderer.push(`<span class="status-icon svelte-7mkeya"${attr("aria-label", statusTitle(uiStatus()))}${attr("title", statusTitle(uiStatus()))}>`);
|
|
712
|
-
if (uiStatus() === "current") {
|
|
713
|
-
$$renderer.push("<!--[0-->");
|
|
714
|
-
IconDone($$renderer, { size: 13 });
|
|
715
|
-
} else {
|
|
716
|
-
$$renderer.push("<!--[-1-->");
|
|
717
|
-
IconCloudDownload($$renderer, { size: 13 });
|
|
718
|
-
}
|
|
719
|
-
$$renderer.push(`<!--]--></span>`);
|
|
720
|
-
} else $$renderer.push("<!--[-1-->");
|
|
721
|
-
$$renderer.push(`<!--]--></span> `);
|
|
722
|
-
if (uiStatus() === "update") {
|
|
723
|
-
$$renderer.push("<!--[0-->");
|
|
724
|
-
if (uiDownloadRestarting) {
|
|
725
|
-
$$renderer.push("<!--[0-->");
|
|
726
|
-
$$renderer.push(`<span class="version-action-note svelte-7mkeya" role="status">`);
|
|
727
|
-
Spinner($$renderer, {});
|
|
728
|
-
$$renderer.push(`<!----> Admin interface updated — reconnecting…</span>`);
|
|
729
|
-
} else if (uiDownloadReady) {
|
|
730
|
-
$$renderer.push("<!--[1-->");
|
|
731
|
-
$$renderer.push(`<span class="version-action-note svelte-7mkeya">Downloaded. `);
|
|
732
|
-
if (inElectron) {
|
|
733
|
-
$$renderer.push("<!--[0-->");
|
|
734
|
-
$$renderer.push(`<button class="btn btn-sm btn-primary svelte-7mkeya">Restart app</button>`);
|
|
735
|
-
} else {
|
|
736
|
-
$$renderer.push("<!--[-1-->");
|
|
737
|
-
$$renderer.push(`Restart OpenPalm to apply.`);
|
|
738
|
-
}
|
|
739
|
-
$$renderer.push(`<!--]--></span>`);
|
|
740
|
-
} else {
|
|
741
|
-
$$renderer.push("<!--[-1-->");
|
|
742
|
-
$$renderer.push(`<button class="btn btn-sm btn-secondary version-action svelte-7mkeya"${attr("disabled", uiDownloadLoading || !uiLatest(), true)}${attr("aria-busy", uiDownloadLoading)}>`);
|
|
743
|
-
if (uiDownloadLoading) {
|
|
744
|
-
$$renderer.push("<!--[0-->");
|
|
745
|
-
Spinner($$renderer, {});
|
|
746
|
-
$$renderer.push(`<!----> Downloading…`);
|
|
747
|
-
} else {
|
|
748
|
-
$$renderer.push("<!--[-1-->");
|
|
749
|
-
$$renderer.push(`Download ${escape_html(formatVersionForDisplay(uiLatest()))}`);
|
|
750
|
-
}
|
|
751
|
-
$$renderer.push(`<!--]--></button>`);
|
|
752
|
-
}
|
|
753
|
-
$$renderer.push(`<!--]-->`);
|
|
754
|
-
} else $$renderer.push("<!--[-1-->");
|
|
755
|
-
$$renderer.push(`<!--]--></dd></div></dl> <section class="version-pin-section svelte-7mkeya" aria-labelledby="stack-pin-title"><div class="version-pin-header svelte-7mkeya"><h3 id="stack-pin-title" class="version-pin-title svelte-7mkeya">Stack images</h3> <p class="version-pin-subtitle svelte-7mkeya">Install a specific version per unit — roll a single image back to a known-good release or pin it to a tested build.
|
|
756
|
-
Each unit is released independently.</p></div> <!--[-->`);
|
|
757
|
-
const each_array_1 = ensure_array_like(unitRows());
|
|
758
|
-
for (let $$index_2 = 0, $$length = each_array_1.length; $$index_2 < $$length; $$index_2++) {
|
|
759
|
-
let row = each_array_1[$$index_2];
|
|
760
|
-
$$renderer.push(`<div class="version-section version-unit-row svelte-7mkeya"><div class="version-unit-head svelte-7mkeya"><label class="version-label svelte-7mkeya"${attr("for", `unit-version-select-${stringify(row.unit)}`)}>${escape_html(row.service.label)}</label> <span class="version-cell svelte-7mkeya"><code${attr_class(`version-value status-${stringify(row.service.status)}`, "svelte-7mkeya")}>${escape_html(formatVersionForDisplay(row.service.version) || "—")}</code> `);
|
|
761
|
-
if (hasStatusIcon(row.service.status)) {
|
|
762
|
-
$$renderer.push("<!--[0-->");
|
|
763
|
-
$$renderer.push(`<span class="status-icon svelte-7mkeya"${attr("aria-label", statusTitle(row.service.status))}${attr("title", statusTitle(row.service.status))}>`);
|
|
764
|
-
if (row.service.status === "current") {
|
|
765
|
-
$$renderer.push("<!--[0-->");
|
|
766
|
-
IconDone($$renderer, { size: 13 });
|
|
767
|
-
} else {
|
|
768
|
-
$$renderer.push("<!--[-1-->");
|
|
769
|
-
IconCloudDownload($$renderer, { size: 13 });
|
|
770
|
-
}
|
|
771
|
-
$$renderer.push(`<!--]--></span>`);
|
|
772
|
-
} else $$renderer.push("<!--[-1-->");
|
|
773
|
-
$$renderer.push(`<!--]--></span></div> <div class="version-input-row svelte-7mkeya">`);
|
|
774
|
-
if (releasesLoading) {
|
|
775
|
-
$$renderer.push("<!--[0-->");
|
|
776
|
-
$$renderer.push(`<div class="version-select-skeleton svelte-7mkeya"></div>`);
|
|
777
|
-
} else if (row.tags.length > 0) {
|
|
778
|
-
$$renderer.push("<!--[1-->");
|
|
779
|
-
$$renderer.select({
|
|
780
|
-
id: `unit-version-select-${stringify(row.unit)}`,
|
|
781
|
-
class: "version-select",
|
|
782
|
-
"aria-label": `${stringify(row.service.label)} version to install`,
|
|
783
|
-
value: unitSelectedTag(row.unit),
|
|
784
|
-
onchange: (e) => setUnitSelectedTag(row.unit, e.currentTarget.value),
|
|
785
|
-
disabled: unitInstallLoading !== null || anyDangerousLoading
|
|
786
|
-
}, ($$renderer) => {
|
|
787
|
-
$$renderer.option({
|
|
788
|
-
value: "latest",
|
|
789
|
-
class: ""
|
|
790
|
-
}, ($$renderer) => {
|
|
791
|
-
$$renderer.push(`latest`);
|
|
792
|
-
}, "svelte-7mkeya");
|
|
793
|
-
$$renderer.push(`<!--[-->`);
|
|
794
|
-
const each_array_2 = ensure_array_like(row.tags);
|
|
795
|
-
for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
|
|
796
|
-
let tag = each_array_2[$$index_1];
|
|
797
|
-
$$renderer.option({
|
|
798
|
-
value: tag,
|
|
799
|
-
class: ""
|
|
800
|
-
}, ($$renderer) => {
|
|
801
|
-
$$renderer.push(`${escape_html(tag)}`);
|
|
802
|
-
}, "svelte-7mkeya");
|
|
803
|
-
}
|
|
804
|
-
$$renderer.push(`<!--]-->`);
|
|
805
|
-
}, "svelte-7mkeya");
|
|
806
|
-
} else {
|
|
807
|
-
$$renderer.push("<!--[-1-->");
|
|
808
|
-
$$renderer.push(`<input${attr("id", `unit-version-select-${stringify(row.unit)}`)} class="version-input svelte-7mkeya" type="text"${attr("aria-label", `${stringify(row.service.label)} version to install`)} placeholder="e.g. 0.12.5 or latest"${attr("value", unitSelectedTag(row.unit))}${attr("disabled", unitInstallLoading !== null || anyDangerousLoading, true)}/>`);
|
|
809
|
-
}
|
|
810
|
-
$$renderer.push(`<!--]--> <button class="btn btn-sm btn-secondary svelte-7mkeya"${attr("disabled", !unitSelectedTag(row.unit).trim() || unitInstallLoading !== null || anyDangerousLoading, true)}${attr("aria-busy", unitInstallLoading === row.unit)}>`);
|
|
811
|
-
if (unitInstallLoading === row.unit) {
|
|
812
|
-
$$renderer.push("<!--[0-->");
|
|
813
|
-
Spinner($$renderer, {});
|
|
814
|
-
$$renderer.push(`<!----> Installing…`);
|
|
815
|
-
} else {
|
|
816
|
-
$$renderer.push("<!--[-1-->");
|
|
817
|
-
$$renderer.push(`Install & restart`);
|
|
818
|
-
}
|
|
819
|
-
$$renderer.push(`<!--]--></button></div> <p class="version-hint svelte-7mkeya">Pins the ${escape_html(row.service.label.toLowerCase())} image and restarts services (about a minute offline).</p> `);
|
|
820
|
-
if (unitDowngradePrompt && unitDowngradePrompt.unit === row.unit) {
|
|
821
|
-
$$renderer.push("<!--[0-->");
|
|
822
|
-
$$renderer.push(`<div class="downgrade-warning svelte-7mkeya" role="alertdialog" aria-label="Confirm downgrade"><p class="downgrade-warning-title svelte-7mkeya">This is a downgrade.</p> <p class="svelte-7mkeya">You're moving ${escape_html(row.service.label)} from ${escape_html(unitDowngradePrompt.currentVersion)} back to ${escape_html(unitDowngradePrompt.targetVersion)}.
|
|
823
|
-
Release migrations don't run backward; your data may not be compatible with the older
|
|
824
|
-
version — restore from a backup if needed.</p> <div class="downgrade-actions svelte-7mkeya"><button class="btn btn-sm btn-secondary svelte-7mkeya"${attr("disabled", unitInstallLoading !== null, true)}>Cancel</button> <button class="btn btn-sm btn-danger svelte-7mkeya"${attr("disabled", unitInstallLoading !== null, true)}${attr("aria-busy", unitInstallLoading === row.unit)}>`);
|
|
825
|
-
if (unitInstallLoading === row.unit) {
|
|
826
|
-
$$renderer.push("<!--[0-->");
|
|
827
|
-
Spinner($$renderer, {});
|
|
828
|
-
$$renderer.push(`<!----> Downgrading…`);
|
|
829
|
-
} else {
|
|
830
|
-
$$renderer.push("<!--[-1-->");
|
|
831
|
-
$$renderer.push(`Downgrade anyway`);
|
|
832
|
-
}
|
|
833
|
-
$$renderer.push(`<!--]--></button></div></div>`);
|
|
834
|
-
} else $$renderer.push("<!--[-1-->");
|
|
835
|
-
$$renderer.push(`<!--]--></div>`);
|
|
836
|
-
}
|
|
408
|
+
$$renderer.push("<!--[0-->");
|
|
409
|
+
$$renderer.push(`<p class="loading-line svelte-7mkeya">`);
|
|
410
|
+
Spinner($$renderer, {});
|
|
411
|
+
$$renderer.push(`<!----> Loading versions…</p>`);
|
|
412
|
+
$$renderer.push(`<!--]--> <section class="version-group svelte-7mkeya" aria-labelledby="ui-build-title"><h3 id="ui-build-title" class="version-group-title svelte-7mkeya">Admin UI build</h3> <p class="version-group-subtitle svelte-7mkeya">Install a specific <code>@openpalm/ui</code> npm version. The new build takes effect after the
|
|
413
|
+
admin UI restarts — done automatically in the desktop app; reload the page otherwise.</p> <div class="ui-build-row svelte-7mkeya"><label class="version-label svelte-7mkeya" for="ui-build-tag">Version tag</label> <input id="ui-build-tag" class="version-input svelte-7mkeya" type="text" autocomplete="off" spellcheck="false" placeholder="e.g. 0.12.19 or latest"${attr("value", uiBuildTag)}${attr("disabled", uiBuildBusy, true)}/> <button class="btn btn-secondary svelte-7mkeya"${attr("disabled", !uiBuildTag.trim(), true)}${attr("aria-busy", uiBuildBusy)}>`);
|
|
414
|
+
$$renderer.push("<!--[-1-->");
|
|
415
|
+
$$renderer.push(`Install`);
|
|
416
|
+
$$renderer.push(`<!--]--></button></div> `);
|
|
417
|
+
$$renderer.push("<!--[-1-->");
|
|
837
418
|
$$renderer.push(`<!--]--></section> `);
|
|
838
|
-
|
|
839
|
-
$$renderer.push("<!--[0-->");
|
|
840
|
-
$$renderer.push(`<section class="version-pin-section svelte-7mkeya" aria-labelledby="ui-pin-title"><div class="version-pin-header svelte-7mkeya"><h3 id="ui-pin-title" class="version-pin-title svelte-7mkeya">Admin interface</h3> <p class="version-pin-subtitle svelte-7mkeya">Install a specific build of the admin interface — useful for testing a pre-release or rolling back after an update.</p></div> <div class="version-section svelte-7mkeya"><label class="version-label svelte-7mkeya" for="ui-version-select">Version</label> <div class="version-input-row svelte-7mkeya">`);
|
|
841
|
-
if (uiVersionsLoading) {
|
|
842
|
-
$$renderer.push("<!--[0-->");
|
|
843
|
-
$$renderer.push(`<div class="version-select-skeleton svelte-7mkeya"></div>`);
|
|
844
|
-
} else if (uiVersions.length > 0) {
|
|
845
|
-
$$renderer.push("<!--[1-->");
|
|
846
|
-
$$renderer.select({
|
|
847
|
-
id: "ui-version-select",
|
|
848
|
-
class: "version-select",
|
|
849
|
-
"aria-label": "Admin interface version to download",
|
|
850
|
-
value: selectedUiTag,
|
|
851
|
-
onchange: (e) => onSelectedUiTagChange(e.currentTarget.value),
|
|
852
|
-
disabled: uiDownloadLoading
|
|
853
|
-
}, ($$renderer) => {
|
|
854
|
-
$$renderer.push(`<!--[-->`);
|
|
855
|
-
const each_array_3 = ensure_array_like(uiVersions);
|
|
856
|
-
for (let $$index_3 = 0, $$length = each_array_3.length; $$index_3 < $$length; $$index_3++) {
|
|
857
|
-
let v = each_array_3[$$index_3];
|
|
858
|
-
$$renderer.option({
|
|
859
|
-
value: v.version,
|
|
860
|
-
class: ""
|
|
861
|
-
}, ($$renderer) => {
|
|
862
|
-
$$renderer.push(`${escape_html(uiVersionLabel(v))}`);
|
|
863
|
-
}, "svelte-7mkeya");
|
|
864
|
-
}
|
|
865
|
-
$$renderer.push(`<!--]-->`);
|
|
866
|
-
}, "svelte-7mkeya");
|
|
867
|
-
} else {
|
|
868
|
-
$$renderer.push("<!--[-1-->");
|
|
869
|
-
$$renderer.push(`<input id="ui-version-select" class="version-input svelte-7mkeya" type="text" aria-label="Admin interface version to download" placeholder="e.g. 0.11.0-beta.7"${attr("value", selectedUiTag)}${attr("disabled", uiDownloadLoading, true)}/>`);
|
|
870
|
-
}
|
|
871
|
-
$$renderer.push(`<!--]--> <button class="btn btn-sm btn-secondary svelte-7mkeya"${attr("disabled", !selectedUiTag.trim() || uiDownloadLoading, true)}${attr("aria-busy", uiDownloadLoading)}>`);
|
|
872
|
-
if (uiDownloadLoading) {
|
|
873
|
-
$$renderer.push("<!--[0-->");
|
|
874
|
-
Spinner($$renderer, {});
|
|
875
|
-
$$renderer.push(`<!----> Downloading…`);
|
|
876
|
-
} else {
|
|
877
|
-
$$renderer.push("<!--[-1-->");
|
|
878
|
-
$$renderer.push(`Download`);
|
|
879
|
-
}
|
|
880
|
-
$$renderer.push(`<!--]--></button></div> `);
|
|
881
|
-
if (uiDownloadRestarting) {
|
|
882
|
-
$$renderer.push("<!--[0-->");
|
|
883
|
-
$$renderer.push(`<div class="version-restart-prompt svelte-7mkeya" role="status">`);
|
|
884
|
-
Spinner($$renderer, {});
|
|
885
|
-
$$renderer.push(`<!----> Admin interface updated — reconnecting…</div>`);
|
|
886
|
-
} else if (uiDownloadReady) {
|
|
887
|
-
$$renderer.push("<!--[1-->");
|
|
888
|
-
$$renderer.push(`<div class="version-restart-prompt svelte-7mkeya">Admin interface updated. <button class="btn btn-sm btn-primary svelte-7mkeya">Restart app</button></div>`);
|
|
889
|
-
} else {
|
|
890
|
-
$$renderer.push("<!--[-1-->");
|
|
891
|
-
$$renderer.push(`<p class="version-hint svelte-7mkeya">Downloads and replaces the admin interface. Takes effect after restart.</p>`);
|
|
892
|
-
}
|
|
893
|
-
$$renderer.push(`<!--]--></div></section>`);
|
|
894
|
-
} else $$renderer.push("<!--[-1-->");
|
|
895
|
-
$$renderer.push(`<!--]--> `);
|
|
896
|
-
if (inElectron) {
|
|
897
|
-
$$renderer.push("<!--[0-->");
|
|
898
|
-
$$renderer.push(`<section class="desktop-settings svelte-7mkeya" aria-labelledby="desktop-settings-title"><h3 id="desktop-settings-title" class="desktop-settings-title svelte-7mkeya">Desktop settings</h3> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Launch on login</div> <label class="desktop-toggle svelte-7mkeya"><input type="checkbox"${attr("checked", launchOnLoginEnabled, true)}${attr("disabled", true, true)} class="svelte-7mkeya"/> <span class="svelte-7mkeya">Start OpenPalm automatically when you sign in on this device.</span></label> <p class="version-hint svelte-7mkeya">`);
|
|
899
|
-
$$renderer.push("<!--[-1-->");
|
|
900
|
-
$$renderer.push(`Not wired on this platform yet. The current desktop build only exposes this safely on macOS and Windows.`);
|
|
901
|
-
$$renderer.push(`<!--]--></p></div> <div class="desktop-setting-row svelte-7mkeya"><div class="version-label svelte-7mkeya">Desktop notifications</div> `);
|
|
902
|
-
if (typeof window !== "undefined" && typeof window.openpalm?.notify === "function") {
|
|
903
|
-
$$renderer.push("<!--[0-->");
|
|
904
|
-
$$renderer.push(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox"${attr("checked", notificationsEnabled, true)} class="svelte-7mkeya"/> <span class="svelte-7mkeya">Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox"${attr("checked", replyPreviewEnabled, true)}${attr("disabled", true, true)} class="svelte-7mkeya"/> <span class="svelte-7mkeya">Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Reply previews stay off by default because desktop notifications can persist outside the app.</p>`);
|
|
905
|
-
} else {
|
|
906
|
-
$$renderer.push("<!--[-1-->");
|
|
907
|
-
$$renderer.push(`<label class="desktop-toggle svelte-7mkeya"><input type="checkbox" disabled="" class="svelte-7mkeya"/> <span class="svelte-7mkeya">Notify when the assistant replies or errors while the app is in the background.</span></label> <label class="desktop-toggle desktop-toggle--nested svelte-7mkeya"><input type="checkbox" disabled="" class="svelte-7mkeya"/> <span class="svelte-7mkeya">Include reply preview in the notification body.</span></label> <p class="version-hint svelte-7mkeya">Desktop notifications are available in the OpenPalm desktop app.</p>`);
|
|
908
|
-
}
|
|
909
|
-
$$renderer.push(`<!--]--></div></section>`);
|
|
910
|
-
} else $$renderer.push("<!--[-1-->");
|
|
419
|
+
$$renderer.push("<!--[-1-->");
|
|
911
420
|
$$renderer.push(`<!--]--></div></div>`);
|
|
912
421
|
});
|
|
913
422
|
}
|
|
@@ -3524,11 +3033,9 @@ function VoiceTab($$renderer, $$props) {
|
|
|
3524
3033
|
function _page($$renderer, $$props) {
|
|
3525
3034
|
$$renderer.component(($$renderer) => {
|
|
3526
3035
|
let healthLoading = false;
|
|
3527
|
-
let
|
|
3036
|
+
let applyLoading = false;
|
|
3528
3037
|
let containersLoading = false;
|
|
3529
3038
|
let automationsLoading = false;
|
|
3530
|
-
let operationResult = "";
|
|
3531
|
-
let operationResultType = "info";
|
|
3532
3039
|
let containerData = null;
|
|
3533
3040
|
let containerError = "";
|
|
3534
3041
|
let containersLastUpdated = null;
|
|
@@ -3536,31 +3043,9 @@ function _page($$renderer, $$props) {
|
|
|
3536
3043
|
let automationsError = "";
|
|
3537
3044
|
let selectedContainerId = null;
|
|
3538
3045
|
let activeTab = "overview";
|
|
3539
|
-
let currentImageTag = "";
|
|
3540
|
-
let services = [];
|
|
3541
|
-
let inElectron = false;
|
|
3542
|
-
let electronVersion = null;
|
|
3543
|
-
let electronLatestVersion = null;
|
|
3544
|
-
let electronLatestUrl = null;
|
|
3545
|
-
let harnessUpdateAvailable = false;
|
|
3546
|
-
let unitInstallLoading = null;
|
|
3547
|
-
let unitDowngradePrompt = null;
|
|
3548
|
-
let uiDownloadLoading = false;
|
|
3549
|
-
let uiDownloadReady = false;
|
|
3550
|
-
let uiDownloadRestarting = false;
|
|
3551
|
-
let selectedUiTag = "";
|
|
3552
|
-
let releases = [];
|
|
3553
|
-
let unitTags = {};
|
|
3554
|
-
let releasesLoading = false;
|
|
3555
|
-
let platformVersion = "";
|
|
3556
|
-
let platformLatest = null;
|
|
3557
|
-
let latestImageTag = null;
|
|
3558
|
-
let uiVersions = [];
|
|
3559
|
-
let uiVersionsLoading = false;
|
|
3560
|
-
const updateAvailable = derived(() => services.some((s) => isSemver(s.version) && isSemver(s.latestVersion ?? null) && compareVersions(s.version, s.latestVersion) < 0));
|
|
3561
3046
|
onDestroy(() => {
|
|
3562
3047
|
});
|
|
3563
|
-
let anyDangerousLoading = derived(() =>
|
|
3048
|
+
let anyDangerousLoading = derived(() => applyLoading);
|
|
3564
3049
|
/** Merged service → state map (used by OverviewTab for health indicators) */
|
|
3565
3050
|
let mergedServices = derived(() => {
|
|
3566
3051
|
if (!containerData) return /* @__PURE__ */ new Map();
|
|
@@ -3632,132 +3117,6 @@ function _page($$renderer, $$props) {
|
|
|
3632
3117
|
}
|
|
3633
3118
|
automationsLoading = false;
|
|
3634
3119
|
}
|
|
3635
|
-
async function loadVersions() {
|
|
3636
|
-
try {
|
|
3637
|
-
const data = await fetchVersions();
|
|
3638
|
-
currentImageTag = data.imageTag;
|
|
3639
|
-
services = data.services;
|
|
3640
|
-
inElectron = data.inElectron;
|
|
3641
|
-
electronVersion = data.electronVersion;
|
|
3642
|
-
electronLatestVersion = data.electronLatestVersion;
|
|
3643
|
-
electronLatestUrl = data.electronLatestUrl;
|
|
3644
|
-
harnessUpdateAvailable = data.harnessUpdateAvailable;
|
|
3645
|
-
platformVersion = data.platformVersion;
|
|
3646
|
-
platformLatest = data.platformLatest ?? null;
|
|
3647
|
-
latestImageTag = data.latestImageTag ?? null;
|
|
3648
|
-
unitTags = data.unitTags ?? {};
|
|
3649
|
-
} catch {}
|
|
3650
|
-
}
|
|
3651
|
-
async function loadReleases() {
|
|
3652
|
-
releasesLoading = true;
|
|
3653
|
-
uiVersionsLoading = true;
|
|
3654
|
-
try {
|
|
3655
|
-
const [releaseData, uiData] = await Promise.all([fetchReleases(), fetchUiVersions()]);
|
|
3656
|
-
releases = releaseData.releases;
|
|
3657
|
-
uiVersions = uiData.versions;
|
|
3658
|
-
if (!selectedUiTag) {
|
|
3659
|
-
const channelPick = uiData.versions.find((v) => v.distTag === "next" || v.distTag === "latest") ?? uiData.versions[0];
|
|
3660
|
-
if (channelPick) selectedUiTag = channelPick.version;
|
|
3661
|
-
}
|
|
3662
|
-
} catch {}
|
|
3663
|
-
releasesLoading = false;
|
|
3664
|
-
uiVersionsLoading = false;
|
|
3665
|
-
}
|
|
3666
|
-
/** "Check for updates" button: invalidate server-side caches, then re-fetch
|
|
3667
|
-
* versions (Docker Hub tags + npm platform latest) + releases (GitHub app
|
|
3668
|
-
* releases) + UI versions (npm @openpalm/ui) in parallel. The invalidate
|
|
3669
|
-
* call runs first so the GETs see a cold cache and hit the upstreams once. */
|
|
3670
|
-
async function handleRefreshReleases() {
|
|
3671
|
-
releasesLoading = true;
|
|
3672
|
-
uiVersionsLoading = true;
|
|
3673
|
-
await invalidateVersionCache();
|
|
3674
|
-
await Promise.all([loadVersions(), loadReleases()]);
|
|
3675
|
-
}
|
|
3676
|
-
async function handleUpgradeStack() {
|
|
3677
|
-
if (anyDangerousLoading()) return;
|
|
3678
|
-
upgradeLoading = true;
|
|
3679
|
-
try {
|
|
3680
|
-
const result = await upgradeStack();
|
|
3681
|
-
operationResult = `Upgrade complete (image: ${result.imageTag}). ${result.assetsUpdated.length} asset(s) updated, ${result.restarted.length} service(s) restarted.`;
|
|
3682
|
-
operationResultType = "success";
|
|
3683
|
-
} catch (e) {
|
|
3684
|
-
const err = e;
|
|
3685
|
-
if (err.status === 401) applyInvalidTokenState();
|
|
3686
|
-
else {
|
|
3687
|
-
operationResult = `Error upgrading stack: ${err.message ?? e}`;
|
|
3688
|
-
operationResultType = "error";
|
|
3689
|
-
}
|
|
3690
|
-
}
|
|
3691
|
-
upgradeLoading = false;
|
|
3692
|
-
}
|
|
3693
|
-
async function handleSetUnitImageTag(unit, tag, confirmDowngrade = false) {
|
|
3694
|
-
if (unitInstallLoading !== null) return;
|
|
3695
|
-
unitInstallLoading = unit;
|
|
3696
|
-
try {
|
|
3697
|
-
const result = await setUnitImageTag(unit, tag, { confirmDowngrade });
|
|
3698
|
-
operationResult = `${unit} image tag set to ${result.imageTag}. Restarted: ${result.restarted.join(", ") || "none"}.`;
|
|
3699
|
-
operationResultType = "success";
|
|
3700
|
-
unitDowngradePrompt = null;
|
|
3701
|
-
await loadVersions();
|
|
3702
|
-
} catch (e) {
|
|
3703
|
-
if (e instanceof DowngradeConfirmationRequiredError) unitDowngradePrompt = {
|
|
3704
|
-
unit,
|
|
3705
|
-
tag,
|
|
3706
|
-
currentVersion: e.currentVersion,
|
|
3707
|
-
targetVersion: e.targetVersion,
|
|
3708
|
-
message: e.message
|
|
3709
|
-
};
|
|
3710
|
-
else {
|
|
3711
|
-
operationResult = `Failed to apply ${unit} image tag: ${e.message ?? e}`;
|
|
3712
|
-
operationResultType = "error";
|
|
3713
|
-
}
|
|
3714
|
-
}
|
|
3715
|
-
unitInstallLoading = null;
|
|
3716
|
-
}
|
|
3717
|
-
function handleConfirmUnitDowngrade() {
|
|
3718
|
-
if (!unitDowngradePrompt) return;
|
|
3719
|
-
handleSetUnitImageTag(unitDowngradePrompt.unit, unitDowngradePrompt.tag, true);
|
|
3720
|
-
}
|
|
3721
|
-
function handleCancelUnitDowngrade() {
|
|
3722
|
-
unitDowngradePrompt = null;
|
|
3723
|
-
}
|
|
3724
|
-
async function handleDownloadUiVersion(tag) {
|
|
3725
|
-
if (uiDownloadLoading) return;
|
|
3726
|
-
uiDownloadLoading = true;
|
|
3727
|
-
uiDownloadReady = false;
|
|
3728
|
-
uiDownloadRestarting = false;
|
|
3729
|
-
try {
|
|
3730
|
-
const result = await downloadUiVersion(tag);
|
|
3731
|
-
selectedUiTag = tag;
|
|
3732
|
-
uiDownloadReady = true;
|
|
3733
|
-
if (result.restarting) {
|
|
3734
|
-
uiDownloadRestarting = true;
|
|
3735
|
-
waitForUiServerAndReload();
|
|
3736
|
-
}
|
|
3737
|
-
} catch (e) {
|
|
3738
|
-
operationResult = `Failed to download UI version: ${e.message ?? e}`;
|
|
3739
|
-
operationResultType = "error";
|
|
3740
|
-
}
|
|
3741
|
-
uiDownloadLoading = false;
|
|
3742
|
-
}
|
|
3743
|
-
async function waitForUiServerAndReload() {
|
|
3744
|
-
const deadline = Date.now() + 3e4;
|
|
3745
|
-
await new Promise((r) => setTimeout(r, 1500));
|
|
3746
|
-
while (Date.now() < deadline) {
|
|
3747
|
-
try {
|
|
3748
|
-
const res = await fetch("/health", { signal: AbortSignal.timeout(1e3) });
|
|
3749
|
-
if (res.ok || res.status === 401) {
|
|
3750
|
-
window.location.reload();
|
|
3751
|
-
return;
|
|
3752
|
-
}
|
|
3753
|
-
} catch {}
|
|
3754
|
-
await new Promise((r) => setTimeout(r, 750));
|
|
3755
|
-
}
|
|
3756
|
-
uiDownloadRestarting = false;
|
|
3757
|
-
}
|
|
3758
|
-
function handleRestartApp() {
|
|
3759
|
-
window.openpalm?.restart?.();
|
|
3760
|
-
}
|
|
3761
3120
|
/** Derive service names from container data for the logs tab */
|
|
3762
3121
|
let serviceNames = derived(() => {
|
|
3763
3122
|
if (!containerData) return [];
|
|
@@ -3780,19 +3139,12 @@ function _page($$renderer, $$props) {
|
|
|
3780
3139
|
});
|
|
3781
3140
|
Navbar($$renderer);
|
|
3782
3141
|
$$renderer.push(`<!----> `);
|
|
3783
|
-
if (updateAvailable() && activeTab !== "updates") {
|
|
3784
|
-
$$renderer.push("<!--[0-->");
|
|
3785
|
-
$$renderer.push(`<div class="update-banner svelte-1jef3w8" role="status"><span class="update-banner-text svelte-1jef3w8">An OpenPalm update is available.</span> <button class="update-banner-action svelte-1jef3w8">Review it</button></div>`);
|
|
3786
|
-
} else $$renderer.push("<!--[-1-->");
|
|
3787
|
-
$$renderer.push(`<!--]--> `);
|
|
3788
3142
|
TabBar($$renderer, {
|
|
3789
3143
|
active: activeTab});
|
|
3790
3144
|
$$renderer.push(`<!----> <main class="svelte-1jef3w8">`);
|
|
3791
3145
|
if (activeTab === "overview") {
|
|
3792
3146
|
$$renderer.push("<!--[0-->");
|
|
3793
3147
|
OverviewTab($$renderer, {
|
|
3794
|
-
operationResult,
|
|
3795
|
-
operationResultType,
|
|
3796
3148
|
healthLoading,
|
|
3797
3149
|
anyDangerousLoading: anyDangerousLoading(),
|
|
3798
3150
|
mergedServices: mergedServices(),
|
|
@@ -3801,43 +3153,7 @@ function _page($$renderer, $$props) {
|
|
|
3801
3153
|
});
|
|
3802
3154
|
} else if (activeTab === "updates") {
|
|
3803
3155
|
$$renderer.push("<!--[1-->");
|
|
3804
|
-
UpdatesTab($$renderer
|
|
3805
|
-
currentImageTag,
|
|
3806
|
-
services,
|
|
3807
|
-
anyDangerousLoading: anyDangerousLoading(),
|
|
3808
|
-
tokenStored: true,
|
|
3809
|
-
upgradeLoading,
|
|
3810
|
-
inElectron,
|
|
3811
|
-
electronVersion,
|
|
3812
|
-
electronLatestVersion,
|
|
3813
|
-
electronLatestUrl,
|
|
3814
|
-
harnessUpdateAvailable,
|
|
3815
|
-
uiVersion: version,
|
|
3816
|
-
uiVersions,
|
|
3817
|
-
uiVersionsLoading,
|
|
3818
|
-
selectedUiTag,
|
|
3819
|
-
uiDownloadLoading,
|
|
3820
|
-
uiDownloadReady,
|
|
3821
|
-
uiDownloadRestarting,
|
|
3822
|
-
releases,
|
|
3823
|
-
unitTags,
|
|
3824
|
-
releasesLoading,
|
|
3825
|
-
platformVersion,
|
|
3826
|
-
platformLatest,
|
|
3827
|
-
latestImageTag,
|
|
3828
|
-
unitInstallLoading,
|
|
3829
|
-
unitDowngradePrompt,
|
|
3830
|
-
onSetUnitImageTag: (unit, tag) => handleSetUnitImageTag(unit, tag),
|
|
3831
|
-
onConfirmUnitDowngrade: handleConfirmUnitDowngrade,
|
|
3832
|
-
onCancelUnitDowngrade: handleCancelUnitDowngrade,
|
|
3833
|
-
onUpgradeStack: handleUpgradeStack,
|
|
3834
|
-
onSelectedUiTagChange: (t) => {
|
|
3835
|
-
selectedUiTag = t;
|
|
3836
|
-
},
|
|
3837
|
-
onDownloadUiVersion: handleDownloadUiVersion,
|
|
3838
|
-
onRestartApp: handleRestartApp,
|
|
3839
|
-
onRefreshReleases: handleRefreshReleases
|
|
3840
|
-
});
|
|
3156
|
+
UpdatesTab($$renderer);
|
|
3841
3157
|
} else if (activeTab === "recovery") {
|
|
3842
3158
|
$$renderer.push("<!--[2-->");
|
|
3843
3159
|
RecoveryTab($$renderer);
|
|
@@ -3894,4 +3210,4 @@ function _page($$renderer, $$props) {
|
|
|
3894
3210
|
}
|
|
3895
3211
|
|
|
3896
3212
|
export { _page as default };
|
|
3897
|
-
//# sourceMappingURL=_page.svelte-
|
|
3213
|
+
//# sourceMappingURL=_page.svelte-VwZb1o-L.js.map
|