plum-e2e 2.9.17 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (705) hide show
  1. package/backend/constants/socketEvents.js +8 -14
  2. package/backend/lib/serverBootstrap.js +4 -4
  3. package/backend/mcp/server.js +3 -3
  4. package/backend/prisma/migrations/20260829000000_add_run_queue/migration.sql +29 -0
  5. package/backend/prisma/schema.prisma +30 -0
  6. package/backend/routes/active-runs.routes.js +10 -6
  7. package/backend/routes/node.routes.js +7 -0
  8. package/backend/routes/trigger.routes.js +8 -5
  9. package/backend/server.js +5 -1
  10. package/backend/services/cronService.js +15 -443
  11. package/backend/services/nodeExecutionService.js +13 -1
  12. package/backend/services/runExecutorService.js +423 -0
  13. package/backend/services/runQueueService.js +276 -0
  14. package/backend/services/runnerService.js +22 -4
  15. package/backend/services/triggerService.js +13 -231
  16. package/backend/websockets/socketHandler.js +32 -590
  17. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +35 -35
  18. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  19. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  20. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  21. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  22. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  23. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  24. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  25. package/frontend/.svelte-kit/adapter-node/chunks/BackLink.js +1 -1
  26. package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +1 -1
  27. package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +1 -1
  28. package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +1 -1
  29. package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +1 -1
  30. package/frontend/.svelte-kit/adapter-node/chunks/Toast.js +1 -1
  31. package/frontend/.svelte-kit/adapter-node/chunks/constants.js +6 -4
  32. package/frontend/.svelte-kit/adapter-node/chunks/format.js +3 -3
  33. package/frontend/.svelte-kit/adapter-node/chunks/index.js +4 -4
  34. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  35. package/frontend/.svelte-kit/adapter-node/chunks/reports.js +1 -1
  36. package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +38 -40
  37. package/frontend/.svelte-kit/adapter-node/chunks/repository.js +8 -0
  38. package/frontend/.svelte-kit/adapter-node/chunks/runner.js +10 -20
  39. package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +254 -0
  40. package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +1 -1
  41. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +29 -24
  42. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +23 -19
  43. package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +3 -3
  44. package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +173 -51
  45. package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +1 -1
  46. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +1 -1
  47. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +63 -11
  48. package/frontend/.svelte-kit/adapter-node/manifest-full.js +10 -10
  49. package/frontend/.svelte-kit/adapter-node/manifest.js +10 -10
  50. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
  51. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  52. package/frontend/.svelte-kit/adapter-node/nodes/10.js +1 -1
  53. package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
  54. package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -2
  55. package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
  56. package/frontend/.svelte-kit/adapter-node/nodes/3.js +3 -3
  57. package/frontend/.svelte-kit/adapter-node/nodes/4.js +3 -3
  58. package/frontend/.svelte-kit/adapter-node/nodes/5.js +3 -3
  59. package/frontend/.svelte-kit/adapter-node/nodes/6.js +3 -3
  60. package/frontend/.svelte-kit/adapter-node/nodes/7.js +1 -1
  61. package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -2
  62. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  63. package/frontend/.svelte-kit/ambient.d.ts +28 -28
  64. package/frontend/.svelte-kit/generated/client/app.js +4 -4
  65. package/frontend/.svelte-kit/generated/client/nodes/13.js +6 -0
  66. package/frontend/.svelte-kit/generated/client/nodes/3.js +1 -1
  67. package/frontend/.svelte-kit/generated/client/nodes/4.js +1 -1
  68. package/frontend/.svelte-kit/generated/client/nodes/5.js +1 -1
  69. package/frontend/.svelte-kit/generated/client/nodes/6.js +1 -1
  70. package/frontend/.svelte-kit/generated/client-optimized/app.js +4 -4
  71. package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +1 -1
  72. package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +1 -1
  73. package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +1 -1
  74. package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +1 -1
  75. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  76. package/frontend/.svelte-kit/output/client/.vite/manifest.json +413 -401
  77. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.CmJTG5mP.css +6 -0
  78. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.B9H_IpSU.css +6 -0
  79. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
  80. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
  81. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BN5XbLUX.css +6 -0
  82. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.COwSGmmy.css +6 -0
  83. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  84. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  85. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  86. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  87. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  88. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  89. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  90. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/2-KCkWZO.js +6 -0
  91. package/frontend/{build/client/_app/immutable/chunks/CNdcuGR0.js → .svelte-kit/output/client/_app/immutable/chunks/B00vxw57.js} +1 -1
  92. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B0_HKFXV.js +6 -0
  93. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{t-La0hgu.js → BAvTKHxT.js} +1 -1
  94. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BJ_ypKl3.js +6 -0
  95. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BbYY_TzB.js +6 -0
  96. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Beula-TH.js +11 -0
  97. package/frontend/{build/client/_app/immutable/chunks/CKDtmZUQ.js → .svelte-kit/output/client/_app/immutable/chunks/C00jnSU2.js} +1 -1
  98. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C2_rQ4aY.js +175 -0
  99. package/frontend/{build/client/_app/immutable/chunks/DCgHuuvs.js → .svelte-kit/output/client/_app/immutable/chunks/C7uEQ-LH.js} +1 -1
  100. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8S7qQjQ.js +6 -0
  101. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CzlPaHY9.js → CZWchtW8.js} +1 -1
  102. package/frontend/{build/client/_app/immutable/chunks/2zMvi6fR.js → .svelte-kit/output/client/_app/immutable/chunks/CboYYxrf.js} +1 -1
  103. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CeH-RgMb.js +6 -0
  104. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CgnwuKKO.js → CegSvdD-.js} +1 -1
  105. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CfkUW1vA.js +6 -0
  106. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cfmt4_tJ.js +6 -0
  107. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cgw8TOOy.js +6 -0
  108. package/frontend/{build/client/_app/immutable/chunks/C1Vid6wz.js → .svelte-kit/output/client/_app/immutable/chunks/Ck6C3Fl0.js} +1 -1
  109. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CoTEzvLa.js +6 -0
  110. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DMZwI8Cj.js → DAmOMhaf.js} +1 -1
  111. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DB3YXVFP.js +6 -0
  112. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{w0D4Uzlq.js → DWzEJYIF.js} +1 -1
  113. package/frontend/{build/client/_app/immutable/chunks/CMEtqUfQ.js → .svelte-kit/output/client/_app/immutable/chunks/DgQy0SB2.js} +1 -1
  114. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{kkA1mrsH.js → DiVmSEJa.js} +2 -2
  115. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dl-F6VCo.js +6 -0
  116. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DuAVKaL3.js +6 -0
  117. package/frontend/{build/client/_app/immutable/chunks/BmZ9upwL.js → .svelte-kit/output/client/_app/immutable/chunks/GDjpV3r7.js} +1 -1
  118. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/K1h4wprj.js +6 -0
  119. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DDZw0L0T.js → d2K3c8Kx.js} +1 -1
  120. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.DRjRA71t.js +7 -0
  121. package/frontend/{build/client/_app/immutable/entry/start.4qxHHAcl.js → .svelte-kit/output/client/_app/immutable/entry/start.BXOLyf9R.js} +1 -1
  122. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CRb8Nyce.js +6 -0
  123. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.BI97il3r.js} +1 -1
  124. package/frontend/{build/client/_app/immutable/nodes/10.DEbnxfND.js → .svelte-kit/output/client/_app/immutable/nodes/10.kyazROhw.js} +1 -1
  125. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{11.BViaDK2m.js → 11.B3vMgT2v.js} +1 -1
  126. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.DkPcIrgW.js +6 -0
  127. package/frontend/{build/client/_app/immutable/nodes/2.BCPSg7H4.js → .svelte-kit/output/client/_app/immutable/nodes/2.Dr6yugXz.js} +1 -1
  128. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.DUiL7fb5.js +6 -0
  129. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{3.8BFAJoHT.js → 4.DDADylfF.js} +1 -1
  130. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.N4CeDeoD.js +6 -0
  131. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DWd93Bv5.js +10 -0
  132. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.c8d1cQQM.js +6 -0
  133. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.Cvd3MauU.js +9 -0
  134. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.BOK0GNF_.js} +1 -1
  135. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  136. package/frontend/.svelte-kit/output/server/.vite/manifest.json +35 -35
  137. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  138. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  139. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  140. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  141. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  142. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  143. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  144. package/frontend/.svelte-kit/output/server/chunks/BackLink.js +1 -1
  145. package/frontend/.svelte-kit/output/server/chunks/Badge.js +1 -1
  146. package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +1 -1
  147. package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +1 -1
  148. package/frontend/.svelte-kit/output/server/chunks/Modal.js +1 -1
  149. package/frontend/.svelte-kit/output/server/chunks/Toast.js +1 -1
  150. package/frontend/.svelte-kit/output/server/chunks/constants.js +6 -4
  151. package/frontend/.svelte-kit/output/server/chunks/format.js +3 -3
  152. package/frontend/.svelte-kit/output/server/chunks/index.js +4 -4
  153. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  154. package/frontend/.svelte-kit/output/server/chunks/reports.js +1 -1
  155. package/frontend/.svelte-kit/output/server/chunks/reports2.js +38 -40
  156. package/frontend/.svelte-kit/output/server/chunks/repository.js +8 -0
  157. package/frontend/.svelte-kit/output/server/chunks/runner.js +10 -20
  158. package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +254 -0
  159. package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +1 -1
  160. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +29 -24
  161. package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +23 -19
  162. package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +3 -3
  163. package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +173 -51
  164. package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +1 -1
  165. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +1 -1
  166. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +63 -11
  167. package/frontend/.svelte-kit/output/server/manifest-full.js +10 -10
  168. package/frontend/.svelte-kit/output/server/manifest.js +10 -10
  169. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
  170. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  171. package/frontend/.svelte-kit/output/server/nodes/10.js +1 -1
  172. package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
  173. package/frontend/.svelte-kit/output/server/nodes/12.js +2 -2
  174. package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
  175. package/frontend/.svelte-kit/output/server/nodes/3.js +3 -3
  176. package/frontend/.svelte-kit/output/server/nodes/4.js +3 -3
  177. package/frontend/.svelte-kit/output/server/nodes/5.js +3 -3
  178. package/frontend/.svelte-kit/output/server/nodes/6.js +3 -3
  179. package/frontend/.svelte-kit/output/server/nodes/7.js +1 -1
  180. package/frontend/.svelte-kit/output/server/nodes/8.js +2 -2
  181. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  182. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css +6 -0
  183. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.br +0 -0
  184. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.gz +0 -0
  185. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css +6 -0
  186. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.br +0 -0
  187. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.gz +0 -0
  188. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
  189. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
  190. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
  191. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
  192. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.br +0 -0
  193. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.gz +0 -0
  194. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css +6 -0
  195. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.br +0 -0
  196. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.gz +0 -0
  197. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css +6 -0
  198. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.br +0 -0
  199. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.gz +0 -0
  200. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  201. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.br +0 -0
  202. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.gz +0 -0
  203. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  204. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.br +0 -0
  205. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.gz +0 -0
  206. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  207. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.br +0 -0
  208. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.gz +0 -0
  209. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  210. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
  211. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
  212. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  213. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.br +0 -0
  214. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.gz +0 -0
  215. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  216. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.br +0 -0
  217. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.gz +0 -0
  218. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  219. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.br +0 -0
  220. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.gz +0 -0
  221. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js +6 -0
  222. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.br +0 -0
  223. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.gz +0 -0
  224. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CNdcuGR0.js → build/client/_app/immutable/chunks/B00vxw57.js} +1 -1
  225. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.br +0 -0
  226. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.gz +0 -0
  227. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js +6 -0
  228. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.br +0 -0
  229. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.gz +0 -0
  230. package/frontend/build/client/_app/immutable/chunks/{t-La0hgu.js → BAvTKHxT.js} +1 -1
  231. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.br +0 -0
  232. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.gz +0 -0
  233. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js +6 -0
  234. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.br +0 -0
  235. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.gz +0 -0
  236. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js +6 -0
  237. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.br +0 -0
  238. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.gz +0 -0
  239. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js +11 -0
  240. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.br +0 -0
  241. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.gz +0 -0
  242. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CKDtmZUQ.js → build/client/_app/immutable/chunks/C00jnSU2.js} +1 -1
  243. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.br +0 -0
  244. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.gz +0 -0
  245. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js +175 -0
  246. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.br +0 -0
  247. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.gz +0 -0
  248. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/DCgHuuvs.js → build/client/_app/immutable/chunks/C7uEQ-LH.js} +1 -1
  249. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.br +0 -0
  250. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.gz +0 -0
  251. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js +6 -0
  252. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.br +0 -0
  253. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.gz +0 -0
  254. package/frontend/build/client/_app/immutable/chunks/{CzlPaHY9.js → CZWchtW8.js} +1 -1
  255. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.br +0 -0
  256. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.gz +0 -0
  257. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/2zMvi6fR.js → build/client/_app/immutable/chunks/CboYYxrf.js} +1 -1
  258. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.br +6 -0
  259. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.gz +0 -0
  260. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js +6 -0
  261. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.br +0 -0
  262. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.gz +0 -0
  263. package/frontend/build/client/_app/immutable/chunks/{CgnwuKKO.js → CegSvdD-.js} +1 -1
  264. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.br +0 -0
  265. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.gz +0 -0
  266. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js +6 -0
  267. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.br +0 -0
  268. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.gz +0 -0
  269. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js +6 -0
  270. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.br +0 -0
  271. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.gz +0 -0
  272. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js +6 -0
  273. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.br +0 -0
  274. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.gz +0 -0
  275. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C1Vid6wz.js → build/client/_app/immutable/chunks/Ck6C3Fl0.js} +1 -1
  276. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.br +0 -0
  277. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.gz +0 -0
  278. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js +6 -0
  279. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.br +0 -0
  280. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.gz +0 -0
  281. package/frontend/build/client/_app/immutable/chunks/{DMZwI8Cj.js → DAmOMhaf.js} +1 -1
  282. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.br +0 -0
  283. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.gz +0 -0
  284. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js +6 -0
  285. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.br +0 -0
  286. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.gz +0 -0
  287. package/frontend/build/client/_app/immutable/chunks/{w0D4Uzlq.js → DWzEJYIF.js} +1 -1
  288. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.br +7 -0
  289. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.gz +0 -0
  290. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CMEtqUfQ.js → build/client/_app/immutable/chunks/DgQy0SB2.js} +1 -1
  291. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.br +0 -0
  292. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.gz +0 -0
  293. package/frontend/build/client/_app/immutable/chunks/{kkA1mrsH.js → DiVmSEJa.js} +2 -2
  294. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.br +0 -0
  295. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.gz +0 -0
  296. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js +6 -0
  297. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.br +0 -0
  298. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.gz +0 -0
  299. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js +6 -0
  300. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.br +0 -0
  301. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.gz +0 -0
  302. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BmZ9upwL.js → build/client/_app/immutable/chunks/GDjpV3r7.js} +1 -1
  303. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.br +0 -0
  304. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.gz +0 -0
  305. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js +6 -0
  306. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.br +0 -0
  307. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.gz +0 -0
  308. package/frontend/build/client/_app/immutable/chunks/{DDZw0L0T.js → d2K3c8Kx.js} +1 -1
  309. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.br +0 -0
  310. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.gz +0 -0
  311. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js +7 -0
  312. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.br +0 -0
  313. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.gz +0 -0
  314. package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.4qxHHAcl.js → build/client/_app/immutable/entry/start.BXOLyf9R.js} +1 -1
  315. package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.br → start.BXOLyf9R.js.br} +1 -1
  316. package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.gz → start.BXOLyf9R.js.gz} +0 -0
  317. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js +6 -0
  318. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.br +0 -0
  319. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.gz +0 -0
  320. package/frontend/build/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.BI97il3r.js} +1 -1
  321. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.br +0 -0
  322. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.gz +0 -0
  323. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/10.DEbnxfND.js → build/client/_app/immutable/nodes/10.kyazROhw.js} +1 -1
  324. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.br +0 -0
  325. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.gz +0 -0
  326. package/frontend/build/client/_app/immutable/nodes/{11.BViaDK2m.js → 11.B3vMgT2v.js} +1 -1
  327. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.br +0 -0
  328. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.gz +0 -0
  329. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js +6 -0
  330. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.br +0 -0
  331. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.gz +0 -0
  332. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/2.BCPSg7H4.js → build/client/_app/immutable/nodes/2.Dr6yugXz.js} +1 -1
  333. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.br +0 -0
  334. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.gz +0 -0
  335. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js +6 -0
  336. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.br +0 -0
  337. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.gz +0 -0
  338. package/frontend/build/client/_app/immutable/nodes/{3.8BFAJoHT.js → 4.DDADylfF.js} +1 -1
  339. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.br +0 -0
  340. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.gz +0 -0
  341. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js +6 -0
  342. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.br +0 -0
  343. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.gz +0 -0
  344. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js +10 -0
  345. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.br +0 -0
  346. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.gz +0 -0
  347. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js +6 -0
  348. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.br +0 -0
  349. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.gz +0 -0
  350. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js +9 -0
  351. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.br +0 -0
  352. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.gz +0 -0
  353. package/frontend/build/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.BOK0GNF_.js} +1 -1
  354. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.br +0 -0
  355. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.gz +0 -0
  356. package/frontend/build/client/_app/version.json +1 -1
  357. package/frontend/build/client/_app/version.json.br +0 -0
  358. package/frontend/build/client/_app/version.json.gz +0 -0
  359. package/frontend/build/server/chunks/0-_rljpEay.js +22 -0
  360. package/frontend/build/server/chunks/0-_rljpEay.js.map +5 -0
  361. package/frontend/build/server/chunks/{1-Kxn9d30Z.js → 1-B3HpigzL.js} +3 -3
  362. package/frontend/build/server/chunks/{1-Kxn9d30Z.js.map → 1-B3HpigzL.js.map} +1 -1
  363. package/frontend/build/server/chunks/10-BQBBYpxV.js +14 -0
  364. package/frontend/build/server/chunks/10-BQBBYpxV.js.map +5 -0
  365. package/frontend/build/server/chunks/11-10xw0TIP.js +14 -0
  366. package/frontend/build/server/chunks/11-10xw0TIP.js.map +5 -0
  367. package/frontend/build/server/chunks/12-CZ3_Uw3c.js +14 -0
  368. package/frontend/build/server/chunks/{12-De6Ol6pu.js.map → 12-CZ3_Uw3c.js.map} +1 -1
  369. package/frontend/build/server/chunks/2-DioMbKbC.js +14 -0
  370. package/frontend/build/server/chunks/{2-Dc_rKWoK.js.map → 2-DioMbKbC.js.map} +1 -1
  371. package/frontend/build/server/chunks/3-CgiZg_9v.js +14 -0
  372. package/frontend/build/server/chunks/3-CgiZg_9v.js.map +5 -0
  373. package/frontend/build/server/chunks/4-BM-49dbE.js +14 -0
  374. package/frontend/build/server/chunks/4-BM-49dbE.js.map +5 -0
  375. package/frontend/build/server/chunks/5-Brx_KOzy.js +14 -0
  376. package/frontend/build/server/chunks/5-Brx_KOzy.js.map +5 -0
  377. package/frontend/build/server/chunks/6-C5swINND.js +14 -0
  378. package/frontend/build/server/chunks/6-C5swINND.js.map +5 -0
  379. package/frontend/build/server/chunks/7-B8e4y3CB.js +14 -0
  380. package/frontend/build/server/chunks/{7-DiQJZEF_.js.map → 7-B8e4y3CB.js.map} +1 -1
  381. package/frontend/build/server/chunks/8-BZtkZMIZ.js +14 -0
  382. package/frontend/build/server/chunks/8-BZtkZMIZ.js.map +5 -0
  383. package/frontend/build/server/chunks/9-BMAKiAem.js +14 -0
  384. package/frontend/build/server/chunks/{9-DirZG_Lu.js.map → 9-BMAKiAem.js.map} +1 -1
  385. package/frontend/build/server/chunks/{BackLink-BJ8NaemM.js → BackLink-CMpNTYqE.js} +2 -2
  386. package/frontend/build/server/chunks/BackLink-CMpNTYqE.js.map +5 -0
  387. package/frontend/build/server/chunks/{Badge-44ZTDx0V.js → Badge-BTWnF9pA.js} +2 -2
  388. package/frontend/build/server/chunks/Badge-BTWnF9pA.js.map +5 -0
  389. package/frontend/build/server/chunks/{ConfirmModal-C0EAXcq_.js → ConfirmModal-CtGWHl0v.js} +3 -3
  390. package/frontend/build/server/chunks/ConfirmModal-CtGWHl0v.js.map +5 -0
  391. package/frontend/build/server/chunks/{EmptyState-BA_eXaeR.js → EmptyState-Zpm9tJe1.js} +2 -2
  392. package/frontend/build/server/chunks/EmptyState-Zpm9tJe1.js.map +5 -0
  393. package/frontend/build/server/chunks/{Modal-DChG187n.js → Modal-BJJMnfIg.js} +2 -2
  394. package/frontend/build/server/chunks/Modal-BJJMnfIg.js.map +5 -0
  395. package/frontend/build/server/chunks/{Toast-v-q4ZnYq.js → Toast-CHB87F8k.js} +2 -2
  396. package/frontend/build/server/chunks/Toast-CHB87F8k.js.map +5 -0
  397. package/frontend/build/server/chunks/{_layout.svelte-CHVI3Prt.js → _layout.svelte-C_6nsIpT.js} +7 -7
  398. package/frontend/build/server/chunks/{_layout.svelte-CHVI3Prt.js.map → _layout.svelte-C_6nsIpT.js.map} +1 -1
  399. package/frontend/build/server/chunks/{_page.svelte-1jo8MapI.js → _page.svelte-BNwU9zza.js} +11 -10
  400. package/frontend/build/server/chunks/_page.svelte-BNwU9zza.js.map +5 -0
  401. package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js → _page.svelte-Bamoq11m.js} +8 -8
  402. package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js.map → _page.svelte-Bamoq11m.js.map} +1 -1
  403. package/frontend/build/server/chunks/{_page.svelte-Kg69DDaM.js → _page.svelte-BrYksycU.js} +5 -5
  404. package/frontend/build/server/chunks/_page.svelte-BrYksycU.js.map +5 -0
  405. package/frontend/build/server/chunks/{_page.svelte-BuFusRK1.js → _page.svelte-CAlhaCzS.js} +12 -12
  406. package/frontend/build/server/chunks/_page.svelte-CAlhaCzS.js.map +5 -0
  407. package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js +62 -0
  408. package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js.map +5 -0
  409. package/frontend/build/server/chunks/{_page.svelte-1as75nPc.js → _page.svelte-CbTrCeeX.js} +32 -28
  410. package/frontend/build/server/chunks/_page.svelte-CbTrCeeX.js.map +5 -0
  411. package/frontend/build/server/chunks/{_page.svelte-D3E6Eojd.js → _page.svelte-Cf6bI1Y2.js} +5 -5
  412. package/frontend/build/server/chunks/_page.svelte-Cf6bI1Y2.js.map +5 -0
  413. package/frontend/build/server/chunks/{_page.svelte-CWWeZuid.js → _page.svelte-CmJKt3-H.js} +71 -19
  414. package/frontend/build/server/chunks/_page.svelte-CmJKt3-H.js.map +5 -0
  415. package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js → _page.svelte-DHZhNTPg.js} +11 -10
  416. package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js.map → _page.svelte-DHZhNTPg.js.map} +1 -1
  417. package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js +257 -0
  418. package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js.map +5 -0
  419. package/frontend/build/server/chunks/{_page.svelte-8gELc_B1.js → _page.svelte-ywHy9KCh.js} +182 -59
  420. package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js.map +5 -0
  421. package/frontend/build/server/chunks/{auth-Chw-wBpI.js → auth-DDPlushv.js} +2 -2
  422. package/frontend/build/server/chunks/{auth-Chw-wBpI.js.map → auth-DDPlushv.js.map} +1 -1
  423. package/frontend/build/server/chunks/{client-DEmxR_a-.js → client-CsTiGNZy.js} +2 -2
  424. package/frontend/build/server/chunks/{client-DEmxR_a-.js.map → client-CsTiGNZy.js.map} +1 -1
  425. package/frontend/build/server/chunks/{constants-CXTaQaB6.js → constants-BYVkTZ-O.js} +3 -2
  426. package/frontend/build/server/chunks/constants-BYVkTZ-O.js.map +5 -0
  427. package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js → error.svelte-BXr4lXlB.js} +3 -3
  428. package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js.map → error.svelte-BXr4lXlB.js.map} +1 -1
  429. package/frontend/build/server/chunks/{format-CiNRMfHu.js → format-2pqy61MU.js} +2 -2
  430. package/frontend/build/server/chunks/{format-CiNRMfHu.js.map → format-2pqy61MU.js.map} +1 -1
  431. package/frontend/build/server/chunks/{index-server-B3M9vyh2.js → index-server-53nOZg5X.js} +2 -2
  432. package/frontend/build/server/chunks/{index-server-B3M9vyh2.js.map → index-server-53nOZg5X.js.map} +1 -1
  433. package/frontend/build/server/chunks/{index2-5R1tbrep.js → index2-DGcbugKe.js} +2 -2
  434. package/frontend/build/server/chunks/{index2-5R1tbrep.js.map → index2-DGcbugKe.js.map} +1 -1
  435. package/frontend/build/server/chunks/{reports-D_ApeeNh.js → reports-WuXG6tj3.js} +2 -2
  436. package/frontend/build/server/chunks/{reports-D_ApeeNh.js.map → reports-WuXG6tj3.js.map} +1 -1
  437. package/frontend/build/server/chunks/{reports2-BtElN_53.js → reports2-CCpI0xkQ.js} +7 -8
  438. package/frontend/build/server/chunks/reports2-CCpI0xkQ.js.map +5 -0
  439. package/frontend/build/server/chunks/{repository-FYYV_vKE.js → repository-TYWcFuWP.js} +6 -2
  440. package/frontend/build/server/chunks/repository-TYWcFuWP.js.map +5 -0
  441. package/frontend/build/server/chunks/runner-D5yCWOsy.js +27 -0
  442. package/frontend/build/server/chunks/runner-D5yCWOsy.js.map +5 -0
  443. package/frontend/build/server/chunks/{stores-BLenR3c1.js → stores-C4ZkywTG.js} +3 -3
  444. package/frontend/build/server/chunks/{stores-BLenR3c1.js.map → stores-C4ZkywTG.js.map} +1 -1
  445. package/frontend/build/server/chunks/{theme-nAx-GvX_.js → theme-C81wSe5T.js} +2 -2
  446. package/frontend/build/server/chunks/{theme-nAx-GvX_.js.map → theme-C81wSe5T.js.map} +1 -1
  447. package/frontend/build/server/index.js +2 -2
  448. package/frontend/build/server/index.js.map +1 -1
  449. package/frontend/build/server/manifest.js +23 -23
  450. package/frontend/build/server/manifest.js.map +1 -1
  451. package/frontend/src/lib/components/layout/RunnerPanel.svelte +186 -266
  452. package/frontend/src/lib/copy/reports.js +9 -0
  453. package/frontend/src/lib/copy/runners.js +9 -6
  454. package/frontend/src/lib/socketEvents.js +3 -15
  455. package/frontend/src/lib/stores/runner.js +62 -46
  456. package/frontend/src/routes/{reports/live → live/[id]}/+page.svelte +112 -183
  457. package/frontend/src/routes/scheduled-tests/+page.svelte +2 -2
  458. package/package.json +1 -1
  459. package/backend/services/activeRunsService.js +0 -55
  460. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  461. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  462. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  463. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  464. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  465. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  466. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  467. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +0 -247
  468. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
  469. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
  470. package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
  471. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
  472. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
  473. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
  474. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  475. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  476. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  477. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  478. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  479. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  480. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  481. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3InFPLvE.js +0 -6
  482. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js +0 -6
  483. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
  484. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKuh57WU.js +0 -6
  485. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
  486. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8OURRSs.js +0 -6
  487. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
  488. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
  489. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
  490. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
  491. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +0 -6
  492. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DHM6H-es.js +0 -7
  493. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
  494. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
  495. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +0 -11
  496. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
  497. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
  498. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
  499. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
  500. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
  501. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
  502. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
  503. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
  504. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  505. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  506. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  507. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  508. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  509. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  510. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  511. package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +0 -247
  512. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
  513. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
  514. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.gz +0 -0
  515. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
  516. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
  517. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
  518. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
  519. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
  520. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
  521. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
  522. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
  523. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
  524. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
  525. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
  526. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
  527. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
  528. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
  529. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
  530. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  531. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
  532. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.gz +0 -0
  533. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  534. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
  535. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
  536. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  537. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
  538. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.gz +0 -0
  539. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  540. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
  541. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
  542. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  543. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
  544. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
  545. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  546. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
  547. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
  548. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  549. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
  550. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
  551. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
  552. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
  553. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js +0 -6
  554. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.br +0 -0
  555. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.gz +0 -0
  556. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js +0 -6
  557. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
  558. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
  559. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
  560. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.br +0 -0
  561. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.gz +0 -0
  562. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js +0 -6
  563. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.br +0 -0
  564. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.gz +0 -0
  565. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
  566. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.br +0 -0
  567. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.gz +0 -0
  568. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.br +0 -0
  569. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.gz +0 -0
  570. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
  571. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
  572. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js +0 -6
  573. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
  574. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
  575. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
  576. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.br +0 -0
  577. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.gz +0 -0
  578. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
  579. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
  580. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
  581. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
  582. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
  583. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.br +0 -0
  584. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.gz +0 -0
  585. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.br +0 -0
  586. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
  587. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
  588. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.br +0 -0
  589. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.gz +0 -0
  590. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
  591. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
  592. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
  593. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.br +0 -0
  594. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.gz +0 -0
  595. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +0 -6
  596. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +0 -5
  597. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
  598. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.br +0 -0
  599. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.gz +0 -0
  600. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.br +0 -0
  601. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
  602. package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.br +0 -0
  603. package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.gz +0 -0
  604. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js +0 -7
  605. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.br +0 -0
  606. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.gz +0 -0
  607. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.br +0 -0
  608. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.gz +0 -0
  609. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
  610. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.br +0 -0
  611. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.gz +0 -0
  612. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
  613. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.br +0 -0
  614. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.gz +0 -0
  615. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +0 -11
  616. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
  617. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
  618. package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.br +0 -0
  619. package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.gz +0 -0
  620. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
  621. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
  622. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
  623. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
  624. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
  625. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.br +0 -0
  626. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.gz +0 -0
  627. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
  628. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.br +0 -0
  629. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.gz +0 -0
  630. package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.br +0 -0
  631. package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.gz +0 -0
  632. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.br +0 -0
  633. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.gz +0 -0
  634. package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.br +0 -0
  635. package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.gz +0 -0
  636. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
  637. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.br +0 -0
  638. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.gz +0 -0
  639. package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.br +0 -0
  640. package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.gz +0 -0
  641. package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.br +0 -0
  642. package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.gz +0 -0
  643. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
  644. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.br +0 -0
  645. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.gz +0 -0
  646. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
  647. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.br +0 -0
  648. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.gz +0 -0
  649. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
  650. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.br +0 -0
  651. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.gz +0 -0
  652. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
  653. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.br +0 -0
  654. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.gz +0 -0
  655. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
  656. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.br +0 -0
  657. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.gz +0 -0
  658. package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.br +0 -0
  659. package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.gz +0 -0
  660. package/frontend/build/server/chunks/0-D5YWFygh.js +0 -22
  661. package/frontend/build/server/chunks/0-D5YWFygh.js.map +0 -5
  662. package/frontend/build/server/chunks/10-l6_ikL_D.js +0 -14
  663. package/frontend/build/server/chunks/10-l6_ikL_D.js.map +0 -5
  664. package/frontend/build/server/chunks/11-CNLerze_.js +0 -14
  665. package/frontend/build/server/chunks/11-CNLerze_.js.map +0 -5
  666. package/frontend/build/server/chunks/12-De6Ol6pu.js +0 -14
  667. package/frontend/build/server/chunks/2-Dc_rKWoK.js +0 -14
  668. package/frontend/build/server/chunks/3-DrRqVrcX.js +0 -14
  669. package/frontend/build/server/chunks/3-DrRqVrcX.js.map +0 -5
  670. package/frontend/build/server/chunks/4-Bo04DC5Z.js +0 -14
  671. package/frontend/build/server/chunks/4-Bo04DC5Z.js.map +0 -5
  672. package/frontend/build/server/chunks/5-CFeE5dPZ.js +0 -14
  673. package/frontend/build/server/chunks/5-CFeE5dPZ.js.map +0 -5
  674. package/frontend/build/server/chunks/6-DZk37MZH.js +0 -14
  675. package/frontend/build/server/chunks/6-DZk37MZH.js.map +0 -5
  676. package/frontend/build/server/chunks/7-DiQJZEF_.js +0 -14
  677. package/frontend/build/server/chunks/8-CKPVFOqJ.js +0 -14
  678. package/frontend/build/server/chunks/8-CKPVFOqJ.js.map +0 -5
  679. package/frontend/build/server/chunks/9-DirZG_Lu.js +0 -14
  680. package/frontend/build/server/chunks/BackLink-BJ8NaemM.js.map +0 -5
  681. package/frontend/build/server/chunks/Badge-44ZTDx0V.js.map +0 -5
  682. package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js.map +0 -5
  683. package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js.map +0 -5
  684. package/frontend/build/server/chunks/Modal-DChG187n.js.map +0 -5
  685. package/frontend/build/server/chunks/Toast-v-q4ZnYq.js.map +0 -5
  686. package/frontend/build/server/chunks/_page.svelte-1as75nPc.js.map +0 -5
  687. package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js.map +0 -5
  688. package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js.map +0 -5
  689. package/frontend/build/server/chunks/_page.svelte-BuFusRK1.js.map +0 -5
  690. package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js +0 -250
  691. package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js.map +0 -5
  692. package/frontend/build/server/chunks/_page.svelte-CWWeZuid.js.map +0 -5
  693. package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js.map +0 -5
  694. package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js.map +0 -5
  695. package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js +0 -57
  696. package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js.map +0 -5
  697. package/frontend/build/server/chunks/constants-CXTaQaB6.js.map +0 -5
  698. package/frontend/build/server/chunks/reports2-BtElN_53.js.map +0 -5
  699. package/frontend/build/server/chunks/repository-FYYV_vKE.js.map +0 -5
  700. package/frontend/build/server/chunks/runner-DC7hXbnY.js +0 -37
  701. package/frontend/build/server/chunks/runner-DC7hXbnY.js.map +0 -5
  702. /package/frontend/.svelte-kit/output/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
  703. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
  704. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.br → 4.BR3wgXcZ.css.br} +0 -0
  705. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.gz → 4.BR3wgXcZ.css.gz} +0 -0
@@ -3,21 +3,29 @@
3
3
  * Licensed under the MIT License. See LICENSE file in the project root for details.
4
4
  */
5
5
 
6
- import { N as push, a0 as store_get, a2 as copy_payload, a3 as assign_payload, a1 as unsubscribe_stores, P as pop, _ as ensure_array_like, Z as head, $ as stringify } from './index2-5R1tbrep.js';
7
- import './client-DEmxR_a-.js';
8
- import { A as API_BASE, M as MAX_TEST_RETRIES, B as BROWSERS } from './constants-CXTaQaB6.js';
9
- import { a as auth } from './auth-Chw-wBpI.js';
10
- import { c as builtInEnabled } from './runner-DC7hXbnY.js';
11
- import { t as theme } from './theme-nAx-GvX_.js';
12
- import { T as Toast, B as Button } from './Toast-v-q4ZnYq.js';
13
- import { C as ConfirmModal } from './ConfirmModal-C0EAXcq_.js';
14
- import { B as Badge } from './Badge-44ZTDx0V.js';
6
+ import { N as push, a0 as store_get, a4 as copy_payload, a5 as assign_payload, a1 as unsubscribe_stores, P as pop, _ as ensure_array_like, Z as head, $ as stringify } from './index2-DGcbugKe.js';
7
+ import './client-CsTiGNZy.js';
8
+ import { A as API_BASE, M as MAX_TEST_RETRIES, B as BROWSERS, T as TOAST_TIMEOUT_MS } from './constants-BYVkTZ-O.js';
9
+ import { a as auth } from './auth-DDPlushv.js';
10
+ import { a as builtInEnabled } from './runner-D5yCWOsy.js';
11
+ import { t as theme } from './theme-C81wSe5T.js';
12
+ import { T as Toast, B as Button } from './Toast-CHB87F8k.js';
13
+ import { C as ConfirmModal } from './ConfirmModal-CtGWHl0v.js';
14
+ import { B as Badge } from './Badge-BTWnF9pA.js';
15
15
  import { a as CANCEL_LABEL, E as EDIT_LABEL, b as EMAIL_LABEL, c as SAVE_LABEL } from './common-DYYTVHPw.js';
16
16
  import { e as escape_html } from './escaping-CqgfEcN3.js';
17
17
  import { a as attr } from './attributes-BeaNKpgU.js';
18
18
  import './exports-D0QHgeSL.js';
19
- import './Modal-DChG187n.js';
19
+ import './format-2pqy61MU.js';
20
+ import './Modal-BJJMnfIg.js';
20
21
 
22
+ function authHeaders() {
23
+ return { Authorization: `Bearer ${auth.getToken()}` };
24
+ }
25
+ async function fetchS3Backups() {
26
+ const res = await fetch(`${API_BASE}/backup/s3-backups`, { headers: authHeaders() });
27
+ return res.json();
28
+ }
21
29
  const PAGE_TITLE = "Settings — Plum";
22
30
  const HEADING = "Settings";
23
31
  const NAME_LABEL = "Name";
@@ -93,7 +101,7 @@ const SLACK_WEBHOOK_LABEL = "Slack Webhook URL";
93
101
  const SLACK_WEBHOOK_HINT = "Leave blank to disable Slack notifications";
94
102
  const SLACK_WEBHOOK_PLACEHOLDER = "https://hooks.slack.com/services/…";
95
103
  const PUBLIC_URL_LABEL = "Public URL";
96
- const PUBLIC_URL_HINT = "Base URL of this Plum instance, used to link reports in notifications";
104
+ const PUBLIC_URL_HINT = "Base URL of this Plum instance used to link reports in notifications, and by remote runner nodes to stream live test output back here";
97
105
  const PUBLIC_URL_PLACEHOLDER = "https://plum.yourcompany.com";
98
106
  const CI_TRIGGERS_CARD_TITLE = "CI / External Triggers";
99
107
  const CI_DESC_PART1 = "Trigger a Plum run from GitHub Actions (e.g. on a pull request, against its preview deployment) or any other external script by calling";
@@ -135,8 +143,10 @@ const EXPORT_BLOCK_DESC_SUFFIX = "file with all cron jobs, test cases, test runs
135
143
  const IMPORT_BLOCK_TITLE = "Import";
136
144
  const IMPORT_BLOCK_DESC = "Restores all data from a previously exported backup. Existing records are overwritten. Cron jobs are re-scheduled after import.";
137
145
  const CHOOSE_FILE_LABEL = "Choose file…";
138
- const BACKUP_DISCLAIMER_PREFIX = "Reports are not included in backups. To back up report history, run";
139
- const BACKUP_DISCLAIMER_SUFFIX = "directly on the PostgreSQL volume.";
146
+ const INCLUDE_REPORTS_LABEL = "Include reports & recordings";
147
+ const INCLUDE_REPORTS_HINT = "Applies to both manual export and scheduled S3 backups. Can make backups significantly larger — recordings are session replays, not just screenshots.";
148
+ const includeReportsDisclaimer = (included) => 'Reports are not included in backups — enable "Include reports & recordings" above, or run pg_dump directly on the PostgreSQL volume, to back up report history.';
149
+ const saveIncludeReportsLabel = (saving) => SAVE_LABEL;
140
150
  const S3_STORAGE_CARD_TITLE = "S3 Storage";
141
151
  const S3_STORAGE_DESC_PREFIX = "Works with any S3-compatible provider — Cloudflare R2, Backblaze B2, AWS S3, or MinIO. Leave";
142
152
  const ENDPOINT_URL_LABEL = "Endpoint URL";
@@ -160,6 +170,13 @@ const SAVE_S3_CONFIG_LABEL = "Save S3 Config";
160
170
  const SECRET_KEY_REQUIRED_HINT = "Required";
161
171
  const SECRET_KEY_SET_PLACEHOLDER = "••••••••";
162
172
  const SECRET_KEY_UNSET_PLACEHOLDER = "Enter secret key";
173
+ const RESTORE_FROM_S3_CARD_TITLE = "Restore from S3";
174
+ const RESTORE_FROM_S3_DESC = "Restores directly from a backup already uploaded to S3 — no need to download it yourself first. Existing records are overwritten. Cron jobs are re-scheduled after restore.";
175
+ const CONFIGURE_S3_FIRST_RESTORE_MESSAGE = "Configure S3 storage above to restore from it.";
176
+ const NO_S3_BACKUPS_MESSAGE = "No backups found at this bucket/prefix.";
177
+ const REFRESH_LABEL = "Refresh";
178
+ const RESTORE_CONFIRM_TITLE = "Restore this backup?";
179
+ const LIST_S3_BACKUPS_FAILED = "Failed to list S3 backups.";
163
180
  const SCHEDULED_BACKUP_CARD_TITLE = "Scheduled Backup";
164
181
  const CONFIGURE_S3_FIRST_MESSAGE = "Configure S3 storage above to enable scheduled backups.";
165
182
  const ENABLE_SCHEDULED_BACKUP_LABEL = "Enable scheduled backup";
@@ -178,6 +195,9 @@ const testConnectionLabel = (testing) => TEST_CONNECTION_LABEL;
178
195
  const saveS3ConfigLabel = (saving) => SAVE_S3_CONFIG_LABEL;
179
196
  const uploadS3NowLabel = (running) => UPLOAD_TO_S3_NOW_LABEL;
180
197
  const saveScheduleLabel = (saving) => SAVE_SCHEDULE_LABEL;
198
+ const restoreLabel = (restoring) => restoring ? "Restoring…" : "Restore";
199
+ const refreshingLabel = (loading) => loading ? "Loading…" : REFRESH_LABEL;
200
+ const backupSizeLabel = (bytes) => `${(bytes / 1024).toFixed(1)} KB`;
181
201
  function _page($$payload, $$props) {
182
202
  push();
183
203
  var $$store_subs;
@@ -232,12 +252,19 @@ function _page($$payload, $$props) {
232
252
  backupS3Bucket: "",
233
253
  backupS3AccessKey: "",
234
254
  backupS3SecretKey: "",
235
- backupS3Prefix: ""
255
+ backupS3Prefix: "",
256
+ backupIncludeReports: false
236
257
  };
237
258
  let backupConfigSaving = false;
259
+ let includeReportsSaving = false;
238
260
  let backupS3SecretKeySet = false;
239
261
  let backupTestingS3 = false;
240
262
  let backupRunningNow = false;
263
+ let s3Backups = [];
264
+ let s3BackupsLoaded = false;
265
+ let loadingS3Backups = false;
266
+ let restoringKey = null;
267
+ let restoreConfirmOpen = false;
241
268
  let runners = [];
242
269
  let pingResults = {};
243
270
  let stoppingId = null;
@@ -249,6 +276,22 @@ function _page($$payload, $$props) {
249
276
  token: ""
250
277
  };
251
278
  let editFormSaving = false;
279
+ function showToast(type, message) {
280
+ toast = { type, message };
281
+ setTimeout(() => toast = null, TOAST_TIMEOUT_MS);
282
+ }
283
+ async function loadS3Backups() {
284
+ loadingS3Backups = true;
285
+ try {
286
+ const result = await fetchS3Backups();
287
+ if (result.error) throw new Error(result.error);
288
+ s3Backups = result.backups ?? [];
289
+ } catch (e) {
290
+ showToast("error", e.message || LIST_S3_BACKUPS_FAILED);
291
+ } finally {
292
+ loadingS3Backups = false;
293
+ }
294
+ }
252
295
  const ADMIN_SECTIONS = /* @__PURE__ */ new Set([
253
296
  "project",
254
297
  "runners",
@@ -262,6 +305,10 @@ function _page($$payload, $$props) {
262
305
  section = "account";
263
306
  }
264
307
  s3Configured = false;
308
+ if (s3Configured && !s3BackupsLoaded) {
309
+ s3BackupsLoaded = true;
310
+ loadS3Backups();
311
+ }
265
312
  JSON.stringify(
266
313
  {
267
314
  mcpServers: {
@@ -301,27 +348,27 @@ function _page($$payload, $$props) {
301
348
  $$payload3.title = `<title>${escape_html(PAGE_TITLE)}</title>`;
302
349
  });
303
350
  Toast($$payload2, { toast });
304
- $$payload2.out += `<!----> <div class="page-header svelte-bpb2i4"><h1 class="svelte-bpb2i4">${escape_html(HEADING)}</h1></div> <div class="settings-layout svelte-bpb2i4"><aside class="settings-sidebar svelte-bpb2i4"><nav class="svelte-bpb2i4"><!--[-->`;
351
+ $$payload2.out += `<!----> <div class="page-header svelte-1b139ls"><h1 class="svelte-1b139ls">${escape_html(HEADING)}</h1></div> <div class="settings-layout svelte-1b139ls"><aside class="settings-sidebar svelte-1b139ls"><nav class="svelte-1b139ls"><!--[-->`;
305
352
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
306
353
  let item = each_array[$$index];
307
- $$payload2.out += `<button${attr("class", `sidebar-item svelte-bpb2i4 ${stringify([section === item.id ? "active" : ""].filter(Boolean).join(" "))}`)}>${escape_html(item.label)}</button>`;
354
+ $$payload2.out += `<button${attr("class", `sidebar-item svelte-1b139ls ${stringify([section === item.id ? "active" : ""].filter(Boolean).join(" "))}`)}>${escape_html(item.label)}</button>`;
308
355
  }
309
- $$payload2.out += `<!--]--></nav></aside> <div class="settings-content svelte-bpb2i4">`;
356
+ $$payload2.out += `<!--]--></nav></aside> <div class="settings-content svelte-1b139ls">`;
310
357
  if (section === "project") {
311
358
  $$payload2.out += "<!--[-->";
312
359
  const each_array_1 = ensure_array_like(TIMEZONES);
313
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(PROJECT_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(PROJECT_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="project-name">${escape_html(PROJECT_NAME_LABEL)}</label> <input id="project-name" type="text" class="field-input"${attr("value", project.name)}${attr("placeholder", PROJECT_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="project-logo"><span>${escape_html(LOGO_URL_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(LOGO_URL_HINT)}</span></label> <input id="project-logo" type="url" class="field-input"${attr("value", project.logoUrl)}${attr("placeholder", LOGO_URL_PLACEHOLDER)}></div> `;
360
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(PROJECT_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(PROJECT_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="project-name">${escape_html(PROJECT_NAME_LABEL)}</label> <input id="project-name" type="text" class="field-input"${attr("value", project.name)}${attr("placeholder", PROJECT_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="project-logo"><span>${escape_html(LOGO_URL_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(LOGO_URL_HINT)}</span></label> <input id="project-logo" type="url" class="field-input"${attr("value", project.logoUrl)}${attr("placeholder", LOGO_URL_PLACEHOLDER)}></div> `;
314
361
  {
315
362
  $$payload2.out += "<!--[!-->";
316
363
  }
317
- $$payload2.out += `<!--]--> <div class="field"><label class="field-label svelte-bpb2i4" for="project-timezone"><span>${escape_html(TIMEZONE_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(TIMEZONE_HINT)}</span></label> <select id="project-timezone" class="field-input"><!--[-->`;
364
+ $$payload2.out += `<!--]--> <div class="field"><label class="field-label svelte-1b139ls" for="project-timezone"><span>${escape_html(TIMEZONE_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(TIMEZONE_HINT)}</span></label> <select id="project-timezone" class="field-input"><!--[-->`;
318
365
  for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
319
366
  let tz = each_array_1[$$index_1];
320
367
  $$payload2.out += `<option${attr("value", tz)}>${escape_html(tz)}</option>`;
321
368
  }
322
- $$payload2.out += `<!--]--></select></div> <div class="field"><label class="field-label svelte-bpb2i4" for="project-max-retries"><span>${escape_html(RETRY_FAILED_TESTS_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(RETRY_FAILED_TESTS_HINT)}</span></label> <input id="project-max-retries" type="number" class="field-input" min="0"${attr("max", MAX_TEST_RETRIES)}${attr("value", project.maxRetries)}></div> <div class="toggle-row svelte-bpb2i4"><div class="toggle-info svelte-bpb2i4"><span class="toggle-label svelte-bpb2i4">${escape_html(DARK_MODE_LABEL)}</span> <span class="toggle-desc svelte-bpb2i4">${escape_html(DARK_MODE_DESC)}</span></div> <button${attr("class", `toggle-switch svelte-bpb2i4 ${stringify([
369
+ $$payload2.out += `<!--]--></select></div> <div class="field"><label class="field-label svelte-1b139ls" for="project-max-retries"><span>${escape_html(RETRY_FAILED_TESTS_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(RETRY_FAILED_TESTS_HINT)}</span></label> <input id="project-max-retries" type="number" class="field-input" min="0"${attr("max", MAX_TEST_RETRIES)}${attr("value", project.maxRetries)}></div> <div class="toggle-row svelte-1b139ls"><div class="toggle-info svelte-1b139ls"><span class="toggle-label svelte-1b139ls">${escape_html(DARK_MODE_LABEL)}</span> <span class="toggle-desc svelte-1b139ls">${escape_html(DARK_MODE_DESC)}</span></div> <button${attr("class", `toggle-switch svelte-1b139ls ${stringify([
323
370
  store_get($$store_subs ??= {}, "$theme", theme) === "dark" ? "on" : ""
324
- ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$theme", theme) === "dark")}><span class="toggle-thumb svelte-bpb2i4"></span></button></div> <div class="card-footer svelte-bpb2i4">`;
371
+ ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$theme", theme) === "dark")}><span class="toggle-thumb svelte-1b139ls"></span></button></div> <div class="card-footer svelte-1b139ls">`;
325
372
  Button($$payload2, {
326
373
  disabled: projectSaving,
327
374
  children: ($$payload3) => {
@@ -334,20 +381,20 @@ function _page($$payload, $$props) {
334
381
  $$payload2.out += "<!--[!-->";
335
382
  if (section === "runners") {
336
383
  $$payload2.out += "<!--[-->";
337
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(RUNNERS_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(RUNNERS_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><div class="toggle-row svelte-bpb2i4"><div class="toggle-info svelte-bpb2i4"><span class="toggle-label svelte-bpb2i4">${escape_html(BUILTIN_RUNNER_TOGGLE_LABEL)}</span> <span class="toggle-desc svelte-bpb2i4">${escape_html(BUILTIN_RUNNER_TOGGLE_DESC)}</span></div> <button${attr("class", `toggle-switch svelte-bpb2i4 ${stringify([
384
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(RUNNERS_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(RUNNERS_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><div class="toggle-row svelte-1b139ls"><div class="toggle-info svelte-1b139ls"><span class="toggle-label svelte-1b139ls">${escape_html(BUILTIN_RUNNER_TOGGLE_LABEL)}</span> <span class="toggle-desc svelte-1b139ls">${escape_html(BUILTIN_RUNNER_TOGGLE_DESC)}</span></div> <button${attr("class", `toggle-switch svelte-1b139ls ${stringify([
338
385
  store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled) ? "on" : ""
339
- ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled))}><span class="toggle-thumb svelte-bpb2i4"></span></button></div> `;
386
+ ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled))}><span class="toggle-thumb svelte-1b139ls"></span></button></div> `;
340
387
  if (runners.length > 0) {
341
388
  $$payload2.out += "<!--[-->";
342
389
  const each_array_2 = ensure_array_like(runners);
343
- $$payload2.out += `<div class="runner-cards svelte-bpb2i4"><!--[-->`;
390
+ $$payload2.out += `<div class="runner-cards svelte-1b139ls"><!--[-->`;
344
391
  for (let $$index_3 = 0, $$length = each_array_2.length; $$index_3 < $$length; $$index_3++) {
345
392
  let r = each_array_2[$$index_3];
346
393
  const ping = pingResults[r.id];
347
394
  if (editingId === r.id) {
348
395
  $$payload2.out += "<!--[-->";
349
396
  const each_array_3 = ensure_array_like(BROWSERS);
350
- $$payload2.out += `<div class="runner-card editing svelte-bpb2i4"><div class="runner-form-fields svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4"${attr("for", `edit-name-${stringify(r.id)}`)}>${escape_html(NAME_LABEL)}</label> <input${attr("id", `edit-name-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.name)}${attr("placeholder", RUNNER_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4"${attr("for", `edit-url-${stringify(r.id)}`)}>${escape_html(RUNNER_URL_LABEL)} <span class="field-hint svelte-bpb2i4">${escape_html(RUNNER_URL_HINT_PREFIX)} <code>host.docker.internal</code> ${escape_html(RUNNER_URL_HINT_SUFFIX)}</span></label> <input${attr("id", `edit-url-${stringify(r.id)}`)} type="url" class="field-input"${attr("value", editForm.url)}${attr("placeholder", RUNNER_URL_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4"${attr("for", `edit-token-${stringify(r.id)}`)}>${escape_html(TOKEN_LABEL)}</label> <input${attr("id", `edit-token-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.token)}${attr("placeholder", KEEP_TOKEN_PLACEHOLDER)} spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-bpb2i4"${attr("for", `edit-browser-${stringify(r.id)}`)}>${escape_html(BROWSER_LABEL)}</label> <select${attr("id", `edit-browser-${stringify(r.id)}`)} class="field-input"><!--[-->`;
397
+ $$payload2.out += `<div class="runner-card editing svelte-1b139ls"><div class="runner-form-fields svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls"${attr("for", `edit-name-${stringify(r.id)}`)}>${escape_html(NAME_LABEL)}</label> <input${attr("id", `edit-name-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.name)}${attr("placeholder", RUNNER_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls"${attr("for", `edit-url-${stringify(r.id)}`)}>${escape_html(RUNNER_URL_LABEL)} <span class="field-hint svelte-1b139ls">${escape_html(RUNNER_URL_HINT_PREFIX)} <code>host.docker.internal</code> ${escape_html(RUNNER_URL_HINT_SUFFIX)}</span></label> <input${attr("id", `edit-url-${stringify(r.id)}`)} type="url" class="field-input"${attr("value", editForm.url)}${attr("placeholder", RUNNER_URL_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls"${attr("for", `edit-token-${stringify(r.id)}`)}>${escape_html(TOKEN_LABEL)}</label> <input${attr("id", `edit-token-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.token)}${attr("placeholder", KEEP_TOKEN_PLACEHOLDER)} spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-1b139ls"${attr("for", `edit-browser-${stringify(r.id)}`)}>${escape_html(BROWSER_LABEL)}</label> <select${attr("id", `edit-browser-${stringify(r.id)}`)} class="field-input"><!--[-->`;
351
398
  for (let $$index_2 = 0, $$length2 = each_array_3.length; $$index_2 < $$length2; $$index_2++) {
352
399
  let b = each_array_3[$$index_2];
353
400
  $$payload2.out += `<option${attr("value", b.id)}>${escape_html(b.label)}</option>`;
@@ -356,7 +403,7 @@ function _page($$payload, $$props) {
356
403
  {
357
404
  $$payload2.out += "<!--[!-->";
358
405
  }
359
- $$payload2.out += `<!--]--> <div class="runner-form-actions svelte-bpb2i4">`;
406
+ $$payload2.out += `<!--]--> <div class="runner-form-actions svelte-1b139ls">`;
360
407
  Button($$payload2, {
361
408
  disabled: editFormSaving,
362
409
  children: ($$payload3) => {
@@ -376,28 +423,28 @@ function _page($$payload, $$props) {
376
423
  $$payload2.out += `<!----></div></div>`;
377
424
  } else {
378
425
  $$payload2.out += "<!--[!-->";
379
- $$payload2.out += `<div class="runner-card svelte-bpb2i4"><div class="runner-card-header svelte-bpb2i4"><svg class="runner-card-icon svelte-bpb2i4" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="3" width="20" height="14" rx="2"></rect><path d="M8 21h8M12 17v4"></path></svg> <span class="runner-card-name svelte-bpb2i4">${escape_html(r.name)}</span> <span class="runner-browser-pill svelte-bpb2i4">${escape_html(r.browser)}</span> `;
426
+ $$payload2.out += `<div class="runner-card svelte-1b139ls"><div class="runner-card-header svelte-1b139ls"><svg class="runner-card-icon svelte-1b139ls" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="3" width="20" height="14" rx="2"></rect><path d="M8 21h8M12 17v4"></path></svg> <span class="runner-card-name svelte-1b139ls">${escape_html(r.name)}</span> <span class="runner-browser-pill svelte-1b139ls">${escape_html(r.browser)}</span> `;
380
427
  if (ping && !ping.loading) {
381
428
  $$payload2.out += "<!--[-->";
382
429
  if (ping.ok) {
383
430
  $$payload2.out += "<!--[-->";
384
- $$payload2.out += `<span class="ping-badge ok svelte-bpb2i4">${escape_html(ping.latency)}ms</span>`;
431
+ $$payload2.out += `<span class="ping-badge ok svelte-1b139ls">${escape_html(ping.latency)}ms</span>`;
385
432
  } else {
386
433
  $$payload2.out += "<!--[!-->";
387
- $$payload2.out += `<span class="ping-badge fail svelte-bpb2i4"${attr("title", ping.error)}>${escape_html(RUNNER_UNREACHABLE_LABEL)}</span>`;
434
+ $$payload2.out += `<span class="ping-badge fail svelte-1b139ls"${attr("title", ping.error)}>${escape_html(RUNNER_UNREACHABLE_LABEL)}</span>`;
388
435
  }
389
436
  $$payload2.out += `<!--]-->`;
390
437
  } else {
391
438
  $$payload2.out += "<!--[!-->";
392
439
  if (ping?.loading) {
393
440
  $$payload2.out += "<!--[-->";
394
- $$payload2.out += `<span class="ping-badge pinging svelte-bpb2i4">${escape_html(RUNNER_PINGING_LABEL)}</span>`;
441
+ $$payload2.out += `<span class="ping-badge pinging svelte-1b139ls">${escape_html(RUNNER_PINGING_LABEL)}</span>`;
395
442
  } else {
396
443
  $$payload2.out += "<!--[!-->";
397
444
  }
398
445
  $$payload2.out += `<!--]-->`;
399
446
  }
400
- $$payload2.out += `<!--]--></div> <p class="runner-card-url svelte-bpb2i4">${escape_html(r.url)}</p> <div class="runner-card-actions svelte-bpb2i4">`;
447
+ $$payload2.out += `<!--]--></div> <p class="runner-card-url svelte-1b139ls">${escape_html(r.url)}</p> <div class="runner-card-actions svelte-1b139ls">`;
401
448
  Button($$payload2, {
402
449
  variant: "ghost",
403
450
  size: "sm",
@@ -446,7 +493,7 @@ function _page($$payload, $$props) {
446
493
  $$payload2.out += `<!--]--> `;
447
494
  {
448
495
  $$payload2.out += "<!--[!-->";
449
- $$payload2.out += `<div class="card-footer svelte-bpb2i4">`;
496
+ $$payload2.out += `<div class="card-footer svelte-1b139ls">`;
450
497
  Button($$payload2, {
451
498
  variant: "ghost",
452
499
  children: ($$payload3) => {
@@ -461,7 +508,7 @@ function _page($$payload, $$props) {
461
508
  $$payload2.out += "<!--[!-->";
462
509
  if (section === "repository") {
463
510
  $$payload2.out += "<!--[-->";
464
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(REPOSITORY_HEADING)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(REPOSITORY_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="tc-prefix">${escape_html(CASE_PREFIX_LABEL)}</label> <input id="tc-prefix" type="text" class="field-input mono svelte-bpb2i4"${attr("value", prefixes.testCasePrefix)}${attr("placeholder", CASE_PREFIX_PLACEHOLDER)} maxlength="10"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="ts-prefix">${escape_html(SUITE_PREFIX_LABEL)}</label> <input id="ts-prefix" type="text" class="field-input mono svelte-bpb2i4"${attr("value", prefixes.testSuitePrefix)}${attr("placeholder", SUITE_PREFIX_PLACEHOLDER)} maxlength="10"></div></div> <p class="content-desc svelte-bpb2i4">${escape_html(EXAMPLES_LABEL)} <code class="code-sample svelte-bpb2i4">${escape_html(prefixes.testCasePrefix)}-001</code>, <code class="code-sample svelte-bpb2i4">${escape_html(prefixes.testSuitePrefix)}-001</code></p> <div class="card-footer svelte-bpb2i4">`;
511
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(REPOSITORY_HEADING)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(REPOSITORY_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="tc-prefix">${escape_html(CASE_PREFIX_LABEL)}</label> <input id="tc-prefix" type="text" class="field-input mono svelte-1b139ls"${attr("value", prefixes.testCasePrefix)}${attr("placeholder", CASE_PREFIX_PLACEHOLDER)} maxlength="10"></div> <div class="field"><label class="field-label svelte-1b139ls" for="ts-prefix">${escape_html(SUITE_PREFIX_LABEL)}</label> <input id="ts-prefix" type="text" class="field-input mono svelte-1b139ls"${attr("value", prefixes.testSuitePrefix)}${attr("placeholder", SUITE_PREFIX_PLACEHOLDER)} maxlength="10"></div></div> <p class="content-desc svelte-1b139ls">${escape_html(EXAMPLES_LABEL)} <code class="code-sample svelte-1b139ls">${escape_html(prefixes.testCasePrefix)}-001</code>, <code class="code-sample svelte-1b139ls">${escape_html(prefixes.testSuitePrefix)}-001</code></p> <div class="card-footer svelte-1b139ls">`;
465
512
  Button($$payload2, {
466
513
  disabled: prefixesSaving,
467
514
  children: ($$payload3) => {
@@ -469,7 +516,7 @@ function _page($$payload, $$props) {
469
516
  },
470
517
  $$slots: { default: true }
471
518
  });
472
- $$payload2.out += `<!----></div></div> <div class="content-header svelte-bpb2i4" style="margin-top: 1rem"><h2 class="svelte-bpb2i4">${escape_html(MIGRATE_IDS_HEADING)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(MIGRATE_DESC_PREFIX)} <strong>${escape_html(MIGRATE_DESC_STRONG)}</strong> ${escape_html(MIGRATE_DESC_SUFFIX)}</p></div> <div class="card settings-card svelte-bpb2i4"><div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="mig-tc">${escape_html(NEW_CASE_PREFIX_LABEL)}</label> <input id="mig-tc" type="text" class="field-input mono svelte-bpb2i4"${attr("value", migrateForm.testCasePrefix)}${attr("placeholder", prefixes.testCasePrefix)} maxlength="10"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="mig-ts">${escape_html(NEW_SUITE_PREFIX_LABEL)}</label> <input id="mig-ts" type="text" class="field-input mono svelte-bpb2i4"${attr("value", migrateForm.testSuitePrefix)}${attr("placeholder", prefixes.testSuitePrefix)} maxlength="10"></div></div> <div class="card-footer svelte-bpb2i4">`;
519
+ $$payload2.out += `<!----></div></div> <div class="content-header svelte-1b139ls" style="margin-top: 1rem"><h2 class="svelte-1b139ls">${escape_html(MIGRATE_IDS_HEADING)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(MIGRATE_DESC_PREFIX)} <strong>${escape_html(MIGRATE_DESC_STRONG)}</strong> ${escape_html(MIGRATE_DESC_SUFFIX)}</p></div> <div class="card settings-card svelte-1b139ls"><div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="mig-tc">${escape_html(NEW_CASE_PREFIX_LABEL)}</label> <input id="mig-tc" type="text" class="field-input mono svelte-1b139ls"${attr("value", migrateForm.testCasePrefix)}${attr("placeholder", prefixes.testCasePrefix)} maxlength="10"></div> <div class="field"><label class="field-label svelte-1b139ls" for="mig-ts">${escape_html(NEW_SUITE_PREFIX_LABEL)}</label> <input id="mig-ts" type="text" class="field-input mono svelte-1b139ls"${attr("value", migrateForm.testSuitePrefix)}${attr("placeholder", prefixes.testSuitePrefix)} maxlength="10"></div></div> <div class="card-footer svelte-1b139ls">`;
473
520
  Button($$payload2, {
474
521
  variant: "ghost",
475
522
  disabled: migrating,
@@ -483,7 +530,7 @@ function _page($$payload, $$props) {
483
530
  $$payload2.out += "<!--[!-->";
484
531
  if (section === "integrations") {
485
532
  $$payload2.out += "<!--[-->";
486
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(INTEGRATIONS_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(INTEGRATIONS_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(WEBHOOKS_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-bpb2i4" for="discord-url"><span>${escape_html(DISCORD_WEBHOOK_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(DISCORD_WEBHOOK_HINT)}</span></label> <input id="discord-url" type="url" class="field-input"${attr("value", integrations.discordWebhookUrl)}${attr("placeholder", DISCORD_WEBHOOK_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="slack-url"><span>${escape_html(SLACK_WEBHOOK_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(SLACK_WEBHOOK_HINT)}</span></label> <input id="slack-url" type="url" class="field-input"${attr("value", integrations.slackWebhookUrl)}${attr("placeholder", SLACK_WEBHOOK_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="public-url"><span>${escape_html(PUBLIC_URL_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(PUBLIC_URL_HINT)}</span></label> <input id="public-url" type="url" class="field-input"${attr("value", integrations.notifyPublicUrl)}${attr("placeholder", PUBLIC_URL_PLACEHOLDER)}></div> `;
533
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(INTEGRATIONS_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(INTEGRATIONS_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(WEBHOOKS_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-1b139ls" for="discord-url"><span>${escape_html(DISCORD_WEBHOOK_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(DISCORD_WEBHOOK_HINT)}</span></label> <input id="discord-url" type="url" class="field-input"${attr("value", integrations.discordWebhookUrl)}${attr("placeholder", DISCORD_WEBHOOK_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="slack-url"><span>${escape_html(SLACK_WEBHOOK_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(SLACK_WEBHOOK_HINT)}</span></label> <input id="slack-url" type="url" class="field-input"${attr("value", integrations.slackWebhookUrl)}${attr("placeholder", SLACK_WEBHOOK_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="public-url"><span>${escape_html(PUBLIC_URL_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(PUBLIC_URL_HINT)}</span></label> <input id="public-url" type="url" class="field-input"${attr("value", integrations.notifyPublicUrl)}${attr("placeholder", PUBLIC_URL_PLACEHOLDER)}></div> `;
487
534
  Button($$payload2, {
488
535
  disabled: integrationsSaving,
489
536
  children: ($$payload3) => {
@@ -491,7 +538,7 @@ function _page($$payload, $$props) {
491
538
  },
492
539
  $$slots: { default: true }
493
540
  });
494
- $$payload2.out += `<!----></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(CI_TRIGGERS_CARD_TITLE)}</p> <p class="content-desc svelte-bpb2i4">${escape_html(CI_DESC_PART1)} <code class="code-sample svelte-bpb2i4">POST ${escape_html(API_BASE)}/trigger</code> ${escape_html(CI_DESC_PART2)} <code class="code-sample svelte-bpb2i4">Authorization: ApiKey …</code> ${escape_html(CI_DESC_PART3)} <button class="link-btn svelte-bpb2i4">${escape_html(MCP_TAB_LINK_LABEL)}</button> ${escape_html(CI_DESC_PART4)} `;
541
+ $$payload2.out += `<!----></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(CI_TRIGGERS_CARD_TITLE)}</p> <p class="content-desc svelte-1b139ls">${escape_html(CI_DESC_PART1)} <code class="code-sample svelte-1b139ls">POST ${escape_html(API_BASE)}/trigger</code> ${escape_html(CI_DESC_PART2)} <code class="code-sample svelte-1b139ls">Authorization: ApiKey …</code> ${escape_html(CI_DESC_PART3)} <button class="link-btn svelte-1b139ls">${escape_html(MCP_TAB_LINK_LABEL)}</button> ${escape_html(CI_DESC_PART4)} `;
495
542
  Badge($$payload2, {
496
543
  variant: "external",
497
544
  children: ($$payload3) => {
@@ -499,7 +546,7 @@ function _page($$payload, $$props) {
499
546
  },
500
547
  $$slots: { default: true }
501
548
  });
502
- $$payload2.out += `<!---->.</p> <pre class="mcp-snippet svelte-bpb2i4">${escape_html(ciWorkflowSnippet)}</pre> <div class="card-footer svelte-bpb2i4">`;
549
+ $$payload2.out += `<!---->.</p> <pre class="mcp-snippet svelte-1b139ls">${escape_html(ciWorkflowSnippet)}</pre> <div class="card-footer svelte-1b139ls">`;
503
550
  Button($$payload2, {
504
551
  variant: "ghost",
505
552
  children: ($$payload3) => {
@@ -512,10 +559,10 @@ function _page($$payload, $$props) {
512
559
  $$payload2.out += "<!--[!-->";
513
560
  if (section === "mcp") {
514
561
  $$payload2.out += "<!--[-->";
515
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(MCP_HEADING)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(MCP_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(API_KEY_CARD_TITLE)}</p> `;
562
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(MCP_HEADING)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(MCP_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(API_KEY_CARD_TITLE)}</p> `;
516
563
  {
517
564
  $$payload2.out += "<!--[-->";
518
- $$payload2.out += `<p class="content-desc svelte-bpb2i4">${escape_html(NO_KEY_GENERATED_MESSAGE)}</p> <div class="card-footer svelte-bpb2i4">`;
565
+ $$payload2.out += `<p class="content-desc svelte-1b139ls">${escape_html(NO_KEY_GENERATED_MESSAGE)}</p> <div class="card-footer svelte-1b139ls">`;
519
566
  Button($$payload2, {
520
567
  disabled: mcpGenerating,
521
568
  children: ($$payload3) => {
@@ -534,11 +581,11 @@ function _page($$payload, $$props) {
534
581
  $$payload2.out += "<!--[!-->";
535
582
  if (section === "account") {
536
583
  $$payload2.out += "<!--[-->";
537
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(ACCOUNT_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(ACCOUNT_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(PROFILE_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-bpb2i4" for="profile-name">${escape_html(NAME_LABEL)}</label> <input id="profile-name" type="text" class="field-input"${attr("value", profileForm.name)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="profile-email">${escape_html(EMAIL_LABEL)}</label> <input id="profile-email" type="email" class="field-input"${attr("value", profileForm.email)}></div> `;
584
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(ACCOUNT_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(ACCOUNT_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(PROFILE_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-1b139ls" for="profile-name">${escape_html(NAME_LABEL)}</label> <input id="profile-name" type="text" class="field-input"${attr("value", profileForm.name)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="profile-email">${escape_html(EMAIL_LABEL)}</label> <input id="profile-email" type="email" class="field-input"${attr("value", profileForm.email)}></div> `;
538
585
  {
539
586
  $$payload2.out += "<!--[!-->";
540
587
  }
541
- $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
588
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-1b139ls">`;
542
589
  Button($$payload2, {
543
590
  disabled: true,
544
591
  children: ($$payload3) => {
@@ -546,11 +593,11 @@ function _page($$payload, $$props) {
546
593
  },
547
594
  $$slots: { default: true }
548
595
  });
549
- $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(CHANGE_PASSWORD_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-current">${escape_html(CURRENT_PASSWORD_LABEL)}</label> <input id="pw-current" type="password" class="field-input"${attr("value", pwForm.currentPassword)} autocomplete="current-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-new">${escape_html(NEW_PASSWORD_LABEL)}</label> <input id="pw-new" type="password" class="field-input"${attr("value", pwForm.newPassword)} autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-confirm">${escape_html(CONFIRM_NEW_PASSWORD_LABEL)}</label> <input id="pw-confirm" type="password" class="field-input"${attr("value", pwForm.confirmPassword)} autocomplete="new-password"></div> `;
596
+ $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(CHANGE_PASSWORD_CARD_TITLE)}</p> <div class="field"><label class="field-label svelte-1b139ls" for="pw-current">${escape_html(CURRENT_PASSWORD_LABEL)}</label> <input id="pw-current" type="password" class="field-input"${attr("value", pwForm.currentPassword)} autocomplete="current-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="pw-new">${escape_html(NEW_PASSWORD_LABEL)}</label> <input id="pw-new" type="password" class="field-input"${attr("value", pwForm.newPassword)} autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="pw-confirm">${escape_html(CONFIRM_NEW_PASSWORD_LABEL)}</label> <input id="pw-confirm" type="password" class="field-input"${attr("value", pwForm.confirmPassword)} autocomplete="new-password"></div> `;
550
597
  {
551
598
  $$payload2.out += "<!--[!-->";
552
599
  }
553
- $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
600
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-1b139ls">`;
554
601
  Button($$payload2, {
555
602
  disabled: true,
556
603
  children: ($$payload3) => {
@@ -558,7 +605,7 @@ function _page($$payload, $$props) {
558
605
  },
559
606
  $$slots: { default: true }
560
607
  });
561
- $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-bpb2i4"><div class="card-footer svelte-bpb2i4">`;
608
+ $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-1b139ls"><div class="card-footer svelte-1b139ls">`;
562
609
  Button($$payload2, {
563
610
  variant: "danger",
564
611
  size: "sm",
@@ -572,7 +619,7 @@ function _page($$payload, $$props) {
572
619
  $$payload2.out += "<!--[!-->";
573
620
  if (section === "users") {
574
621
  $$payload2.out += "<!--[-->";
575
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(USERS_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(USERS_DESC)}</p></div> `;
622
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(USERS_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(USERS_DESC)}</p></div> `;
576
623
  ConfirmModal($$payload2, {
577
624
  title: REMOVE_USER_MODAL_TITLE,
578
625
  confirmLabel: REMOVE_USER_LABEL,
@@ -591,11 +638,11 @@ function _page($$payload, $$props) {
591
638
  },
592
639
  $$slots: { default: true }
593
640
  });
594
- $$payload2.out += `<!----> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(ADD_USER_CARD_TITLE)}</p> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="u-name">${escape_html(NAME_LABEL)}</label> <input id="u-name" type="text" class="field-input"${attr("value", userForm.name)}${attr("placeholder", USER_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="u-email">${escape_html(EMAIL_LABEL)}</label> <input id="u-email" type="email" class="field-input"${attr("value", userForm.email)}${attr("placeholder", USER_EMAIL_PLACEHOLDER)}></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="u-pw">${escape_html(PASSWORD_LABEL)}</label> <input id="u-pw" type="password" class="field-input"${attr("value", userForm.password)} autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="u-role">${escape_html(ROLE_LABEL)}</label> <select id="u-role" class="field-input"><option value="user">${escape_html(USER_ROLE_OPTION)}</option><option value="admin">${escape_html(ADMIN_ROLE_OPTION)}</option></select></div></div> `;
641
+ $$payload2.out += `<!----> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(ADD_USER_CARD_TITLE)}</p> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="u-name">${escape_html(NAME_LABEL)}</label> <input id="u-name" type="text" class="field-input"${attr("value", userForm.name)}${attr("placeholder", USER_NAME_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="u-email">${escape_html(EMAIL_LABEL)}</label> <input id="u-email" type="email" class="field-input"${attr("value", userForm.email)}${attr("placeholder", USER_EMAIL_PLACEHOLDER)}></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="u-pw">${escape_html(PASSWORD_LABEL)}</label> <input id="u-pw" type="password" class="field-input"${attr("value", userForm.password)} autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-1b139ls" for="u-role">${escape_html(ROLE_LABEL)}</label> <select id="u-role" class="field-input"><option value="user">${escape_html(USER_ROLE_OPTION)}</option><option value="admin">${escape_html(ADMIN_ROLE_OPTION)}</option></select></div></div> `;
595
642
  {
596
643
  $$payload2.out += "<!--[!-->";
597
644
  }
598
- $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
645
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-1b139ls">`;
599
646
  Button($$payload2, {
600
647
  disabled: userFormSaving,
601
648
  children: ($$payload3) => {
@@ -607,16 +654,16 @@ function _page($$payload, $$props) {
607
654
  if (allUsers.length > 0) {
608
655
  $$payload2.out += "<!--[-->";
609
656
  const each_array_5 = ensure_array_like(allUsers);
610
- $$payload2.out += `<div class="users-table svelte-bpb2i4"><!--[-->`;
657
+ $$payload2.out += `<div class="users-table svelte-1b139ls"><!--[-->`;
611
658
  for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {
612
659
  let u = each_array_5[$$index_5];
613
- $$payload2.out += `<div class="user-row svelte-bpb2i4"><div class="user-info svelte-bpb2i4"><span class="user-name svelte-bpb2i4">${escape_html(u.name)}</span> <span class="user-email svelte-bpb2i4">${escape_html(u.email)}</span></div> <span${attr("class", `role-chip ${stringify(u.role)} svelte-bpb2i4`)}>${escape_html(u.role)}</span> `;
660
+ $$payload2.out += `<div class="user-row svelte-1b139ls"><div class="user-info svelte-1b139ls"><span class="user-name svelte-1b139ls">${escape_html(u.name)}</span> <span class="user-email svelte-1b139ls">${escape_html(u.email)}</span></div> <span${attr("class", `role-chip ${stringify(u.role)} svelte-1b139ls`)}>${escape_html(u.role)}</span> `;
614
661
  if (u.id !== store_get($$store_subs ??= {}, "$auth", auth).user?.id) {
615
662
  $$payload2.out += "<!--[-->";
616
- $$payload2.out += `<button class="icon-btn danger svelte-bpb2i4"${attr("title", REMOVE_USER_ICON_TITLE)}><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><path d="M10 11v6M14 11v6"></path><path d="M9 6V4h6v2"></path></svg></button>`;
663
+ $$payload2.out += `<button class="icon-btn danger svelte-1b139ls"${attr("title", REMOVE_USER_ICON_TITLE)}><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><path d="M10 11v6M14 11v6"></path><path d="M9 6V4h6v2"></path></svg></button>`;
617
664
  } else {
618
665
  $$payload2.out += "<!--[!-->";
619
- $$payload2.out += `<span class="you-chip svelte-bpb2i4">${escape_html(YOU_CHIP_LABEL)}</span>`;
666
+ $$payload2.out += `<span class="you-chip svelte-1b139ls">${escape_html(YOU_CHIP_LABEL)}</span>`;
620
667
  }
621
668
  $$payload2.out += `<!--]--></div>`;
622
669
  }
@@ -629,7 +676,7 @@ function _page($$payload, $$props) {
629
676
  $$payload2.out += "<!--[!-->";
630
677
  if (section === "backup") {
631
678
  $$payload2.out += "<!--[-->";
632
- $$payload2.out += `<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4">${escape_html(BACKUP_LABEL)}</h2> <p class="content-desc svelte-bpb2i4">${escape_html(BACKUP_DESC)}</p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(MANUAL_BACKUP_CARD_TITLE)}</p> <div class="backup-row svelte-bpb2i4"><div class="backup-block svelte-bpb2i4"><p class="backup-block-title svelte-bpb2i4">${escape_html(EXPORT_BLOCK_TITLE)}</p> <p class="backup-block-desc svelte-bpb2i4">${escape_html(EXPORT_BLOCK_DESC_PREFIX)} <code class="svelte-bpb2i4">.json</code> ${escape_html(EXPORT_BLOCK_DESC_SUFFIX)}</p> `;
679
+ $$payload2.out += `<div class="content-section svelte-1b139ls"><div class="content-header svelte-1b139ls"><h2 class="svelte-1b139ls">${escape_html(BACKUP_LABEL)}</h2> <p class="content-desc svelte-1b139ls">${escape_html(BACKUP_DESC)}</p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(MANUAL_BACKUP_CARD_TITLE)}</p> <div class="backup-row svelte-1b139ls"><div class="backup-block svelte-1b139ls"><p class="backup-block-title svelte-1b139ls">${escape_html(EXPORT_BLOCK_TITLE)}</p> <p class="backup-block-desc svelte-1b139ls">${escape_html(EXPORT_BLOCK_DESC_PREFIX)} <code class="svelte-1b139ls">.json</code> ${escape_html(EXPORT_BLOCK_DESC_SUFFIX)}</p> `;
633
680
  Button($$payload2, {
634
681
  disabled: exporting,
635
682
  children: ($$payload3) => {
@@ -637,7 +684,7 @@ function _page($$payload, $$props) {
637
684
  },
638
685
  $$slots: { default: true }
639
686
  });
640
- $$payload2.out += `<!----></div> <div class="backup-divider svelte-bpb2i4"></div> <div class="backup-block svelte-bpb2i4"><p class="backup-block-title svelte-bpb2i4">${escape_html(IMPORT_BLOCK_TITLE)}</p> <p class="backup-block-desc svelte-bpb2i4">${escape_html(IMPORT_BLOCK_DESC)}</p> <div class="import-row svelte-bpb2i4"><label class="file-label svelte-bpb2i4"><input type="file" accept=".json" class="file-input-hidden svelte-bpb2i4"> <span class="file-btn svelte-bpb2i4">${escape_html(CHOOSE_FILE_LABEL)}</span></label> `;
687
+ $$payload2.out += `<!----></div> <div class="backup-divider svelte-1b139ls"></div> <div class="backup-block svelte-1b139ls"><p class="backup-block-title svelte-1b139ls">${escape_html(IMPORT_BLOCK_TITLE)}</p> <p class="backup-block-desc svelte-1b139ls">${escape_html(IMPORT_BLOCK_DESC)}</p> <div class="import-row svelte-1b139ls"><label class="file-label svelte-1b139ls"><input type="file" accept=".json" class="file-input-hidden svelte-1b139ls"> <span class="file-btn svelte-1b139ls">${escape_html(CHOOSE_FILE_LABEL)}</span></label> `;
641
688
  Button($$payload2, {
642
689
  disabled: true,
643
690
  children: ($$payload3) => {
@@ -645,7 +692,18 @@ function _page($$payload, $$props) {
645
692
  },
646
693
  $$slots: { default: true }
647
694
  });
648
- $$payload2.out += `<!----></div></div></div> <p class="backup-disclaimer svelte-bpb2i4">${escape_html(BACKUP_DISCLAIMER_PREFIX)} <code>pg_dump</code> ${escape_html(BACKUP_DISCLAIMER_SUFFIX)}</p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title">${escape_html(S3_STORAGE_CARD_TITLE)}</p> <p class="backup-block-desc svelte-bpb2i4" style="margin-bottom: 1.25rem;">${escape_html(S3_STORAGE_DESC_PREFIX)} <strong>${escape_html(ENDPOINT_URL_LABEL)}</strong> ${escape_html(S3_STORAGE_DESC_SUFFIX)}</p> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-endpoint"><span>${escape_html(ENDPOINT_URL_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(ENDPOINT_URL_HINT)}</span></label> <input id="s3-endpoint" type="url" class="field-input"${attr("value", backupConfig.backupS3Endpoint)}${attr("placeholder", ENDPOINT_URL_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-region"><span>${escape_html(REGION_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(REGION_HINT_PREFIX)} <code>auto</code> ${escape_html(REGION_HINT_SUFFIX)}</span></label> <input id="s3-region" type="text" class="field-input"${attr("value", backupConfig.backupS3Region)}${attr("placeholder", REGION_PLACEHOLDER)}></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-bucket"><span>${escape_html(BUCKET_LABEL)}</span></label> <input id="s3-bucket" type="text" class="field-input"${attr("value", backupConfig.backupS3Bucket)}${attr("placeholder", BUCKET_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-prefix"><span>${escape_html(PATH_PREFIX_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(PATH_PREFIX_HINT)}</span></label> <input id="s3-prefix" type="text" class="field-input"${attr("value", backupConfig.backupS3Prefix)}${attr("placeholder", PATH_PREFIX_PLACEHOLDER)}></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-access-key"><span>${escape_html(ACCESS_KEY_LABEL)}</span></label> <input id="s3-access-key" type="text" class="field-input"${attr("value", backupConfig.backupS3AccessKey)}${attr("placeholder", ACCESS_KEY_PLACEHOLDER)} autocomplete="off"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-secret-key"><span>${escape_html(SECRET_KEY_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(secretKeyHint())}</span></label> <input id="s3-secret-key" type="password" class="field-input"${attr("value", backupConfig.backupS3SecretKey)}${attr("placeholder", secretKeyPlaceholder(backupS3SecretKeySet))} autocomplete="new-password"></div></div> <div class="backup-actions svelte-bpb2i4">`;
695
+ $$payload2.out += `<!----></div></div></div> <div class="include-reports-row svelte-1b139ls"><label class="field-label backup-toggle-label svelte-1b139ls" for="include-reports"><span class="svelte-1b139ls">${escape_html(INCLUDE_REPORTS_LABEL)} <span class="field-hint svelte-1b139ls">${escape_html(INCLUDE_REPORTS_HINT)}</span></span> <button id="include-reports"${attr("class", `toggle-btn svelte-1b139ls ${stringify([
696
+ ""
697
+ ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", backupConfig.backupIncludeReports)}><span class="toggle-thumb svelte-1b139ls"></span></button></label> `;
698
+ Button($$payload2, {
699
+ variant: "ghost",
700
+ disabled: includeReportsSaving,
701
+ children: ($$payload3) => {
702
+ $$payload3.out += `<!---->${escape_html(saveIncludeReportsLabel())}`;
703
+ },
704
+ $$slots: { default: true }
705
+ });
706
+ $$payload2.out += `<!----></div> <p class="backup-disclaimer svelte-1b139ls">${escape_html(includeReportsDisclaimer())}</p></div> <div class="card settings-card svelte-1b139ls"><p class="card-title">${escape_html(S3_STORAGE_CARD_TITLE)}</p> <p class="backup-block-desc svelte-1b139ls" style="margin-bottom: 1.25rem;">${escape_html(S3_STORAGE_DESC_PREFIX)} <strong>${escape_html(ENDPOINT_URL_LABEL)}</strong> ${escape_html(S3_STORAGE_DESC_SUFFIX)}</p> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-endpoint"><span>${escape_html(ENDPOINT_URL_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(ENDPOINT_URL_HINT)}</span></label> <input id="s3-endpoint" type="url" class="field-input"${attr("value", backupConfig.backupS3Endpoint)}${attr("placeholder", ENDPOINT_URL_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-region"><span>${escape_html(REGION_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(REGION_HINT_PREFIX)} <code>auto</code> ${escape_html(REGION_HINT_SUFFIX)}</span></label> <input id="s3-region" type="text" class="field-input"${attr("value", backupConfig.backupS3Region)}${attr("placeholder", REGION_PLACEHOLDER)}></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-bucket"><span>${escape_html(BUCKET_LABEL)}</span></label> <input id="s3-bucket" type="text" class="field-input"${attr("value", backupConfig.backupS3Bucket)}${attr("placeholder", BUCKET_PLACEHOLDER)}></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-prefix"><span>${escape_html(PATH_PREFIX_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(PATH_PREFIX_HINT)}</span></label> <input id="s3-prefix" type="text" class="field-input"${attr("value", backupConfig.backupS3Prefix)}${attr("placeholder", PATH_PREFIX_PLACEHOLDER)}></div></div> <div class="field-row svelte-1b139ls"><div class="field"><label class="field-label svelte-1b139ls" for="s3-access-key"><span>${escape_html(ACCESS_KEY_LABEL)}</span></label> <input id="s3-access-key" type="text" class="field-input"${attr("value", backupConfig.backupS3AccessKey)}${attr("placeholder", ACCESS_KEY_PLACEHOLDER)} autocomplete="off"></div> <div class="field"><label class="field-label svelte-1b139ls" for="s3-secret-key"><span>${escape_html(SECRET_KEY_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(secretKeyHint())}</span></label> <input id="s3-secret-key" type="password" class="field-input"${attr("value", backupConfig.backupS3SecretKey)}${attr("placeholder", secretKeyPlaceholder(backupS3SecretKeySet))} autocomplete="new-password"></div></div> <div class="backup-actions svelte-1b139ls">`;
649
707
  Button($$payload2, {
650
708
  variant: "ghost",
651
709
  disabled: backupTestingS3,
@@ -666,17 +724,82 @@ function _page($$payload, $$props) {
666
724
  {
667
725
  $$payload2.out += "<!--[!-->";
668
726
  }
669
- $$payload2.out += `<!--]--></div> <div${attr("class", `card settings-card svelte-bpb2i4 ${stringify([!s3Configured ? "card-disabled" : ""].filter(Boolean).join(" "))}`)}><p class="card-title">${escape_html(SCHEDULED_BACKUP_CARD_TITLE)}</p> `;
727
+ $$payload2.out += `<!--]--></div> `;
728
+ ConfirmModal($$payload2, {
729
+ title: RESTORE_CONFIRM_TITLE,
730
+ confirmLabel: restoreLabel(false),
731
+ loading: false,
732
+ get open() {
733
+ return restoreConfirmOpen;
734
+ },
735
+ set open($$value) {
736
+ restoreConfirmOpen = $$value;
737
+ $$settled = false;
738
+ },
739
+ children: ($$payload3) => {
740
+ {
741
+ $$payload3.out += "<!--[!-->";
742
+ }
743
+ $$payload3.out += `<!--]-->`;
744
+ },
745
+ $$slots: { default: true }
746
+ });
747
+ $$payload2.out += `<!----> <div${attr("class", `card settings-card svelte-1b139ls ${stringify([!s3Configured ? "card-disabled" : ""].filter(Boolean).join(" "))}`)}><div class="card-title-row svelte-1b139ls"><p class="card-title svelte-1b139ls">${escape_html(RESTORE_FROM_S3_CARD_TITLE)}</p> `;
748
+ if (s3Configured) {
749
+ $$payload2.out += "<!--[-->";
750
+ Button($$payload2, {
751
+ variant: "ghost",
752
+ disabled: loadingS3Backups,
753
+ children: ($$payload3) => {
754
+ $$payload3.out += `<!---->${escape_html(refreshingLabel(loadingS3Backups))}`;
755
+ },
756
+ $$slots: { default: true }
757
+ });
758
+ } else {
759
+ $$payload2.out += "<!--[!-->";
760
+ }
761
+ $$payload2.out += `<!--]--></div> `;
762
+ if (!s3Configured) {
763
+ $$payload2.out += "<!--[-->";
764
+ $$payload2.out += `<p class="backup-block-desc svelte-1b139ls">${escape_html(CONFIGURE_S3_FIRST_RESTORE_MESSAGE)}</p>`;
765
+ } else {
766
+ $$payload2.out += "<!--[!-->";
767
+ $$payload2.out += `<p class="backup-block-desc svelte-1b139ls" style="margin-bottom: 1rem;">${escape_html(RESTORE_FROM_S3_DESC)}</p> `;
768
+ if (s3Backups.length === 0) {
769
+ $$payload2.out += "<!--[-->";
770
+ $$payload2.out += `<p class="backup-block-desc svelte-1b139ls">${escape_html(loadingS3Backups ? refreshingLabel(true) : NO_S3_BACKUPS_MESSAGE)}</p>`;
771
+ } else {
772
+ $$payload2.out += "<!--[!-->";
773
+ const each_array_6 = ensure_array_like(s3Backups);
774
+ $$payload2.out += `<ul class="s3-backup-list svelte-1b139ls"><!--[-->`;
775
+ for (let $$index_6 = 0, $$length = each_array_6.length; $$index_6 < $$length; $$index_6++) {
776
+ let backup = each_array_6[$$index_6];
777
+ $$payload2.out += `<li class="s3-backup-row svelte-1b139ls"><div class="s3-backup-info svelte-1b139ls"><span class="s3-backup-key svelte-1b139ls">${escape_html(backup.key)}</span> <span class="s3-backup-meta svelte-1b139ls">${escape_html(new Date(backup.lastModified).toLocaleString())} · ${escape_html(backupSizeLabel(backup.size))}</span></div> `;
778
+ Button($$payload2, {
779
+ variant: "ghost",
780
+ disabled: restoringKey === backup.key,
781
+ children: ($$payload3) => {
782
+ $$payload3.out += `<!---->${escape_html(restoreLabel(restoringKey === backup.key))}`;
783
+ },
784
+ $$slots: { default: true }
785
+ });
786
+ $$payload2.out += `<!----></li>`;
787
+ }
788
+ $$payload2.out += `<!--]--></ul>`;
789
+ }
790
+ $$payload2.out += `<!--]-->`;
791
+ }
792
+ $$payload2.out += `<!--]--></div> <div${attr("class", `card settings-card svelte-1b139ls ${stringify([!s3Configured ? "card-disabled" : ""].filter(Boolean).join(" "))}`)}><p class="card-title">${escape_html(SCHEDULED_BACKUP_CARD_TITLE)}</p> `;
670
793
  if (!s3Configured) {
671
794
  $$payload2.out += "<!--[-->";
672
- $$payload2.out += `<p class="backup-block-desc svelte-bpb2i4">${escape_html(CONFIGURE_S3_FIRST_MESSAGE)}</p>`;
795
+ $$payload2.out += `<p class="backup-block-desc svelte-1b139ls">${escape_html(CONFIGURE_S3_FIRST_MESSAGE)}</p>`;
673
796
  } else {
674
797
  $$payload2.out += "<!--[!-->";
675
- $$payload2.out += `<div class="field"><label class="field-label backup-toggle-label svelte-bpb2i4" for="backup-enabled"><span>${escape_html(ENABLE_SCHEDULED_BACKUP_LABEL)}</span> <button id="backup-enabled"${attr("class", `toggle-btn svelte-bpb2i4 ${stringify([""].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", backupConfig.backupEnabled)}><span class="toggle-thumb svelte-bpb2i4"></span></button></label></div> <div class="field"><label class="field-label svelte-bpb2i4" for="backup-cron"><span>${escape_html(CRON_EXPRESSION_LABEL)}</span> <span class="field-hint svelte-bpb2i4">${escape_html(CRON_HINT_PREFIX)} <code>0 2 * * *</code> ${escape_html(CRON_HINT_SUFFIX)} <a href="https://crontab.guru" target="_blank" rel="noopener noreferrer">${escape_html(CRONTAB_LINK_LABEL)}</a></span></label> <input id="backup-cron" type="text" class="field-input field-input-mono svelte-bpb2i4"${attr("value", backupConfig.backupCron)}${attr("placeholder", CRON_PLACEHOLDER)}></div> `;
798
+ $$payload2.out += `<div class="field"><label class="field-label backup-toggle-label svelte-1b139ls" for="backup-enabled"><span>${escape_html(ENABLE_SCHEDULED_BACKUP_LABEL)}</span> <button id="backup-enabled"${attr("class", `toggle-btn svelte-1b139ls ${stringify([""].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", backupConfig.backupEnabled)}><span class="toggle-thumb svelte-1b139ls"></span></button></label></div> <div class="field"><label class="field-label svelte-1b139ls" for="backup-cron"><span>${escape_html(CRON_EXPRESSION_LABEL)}</span> <span class="field-hint svelte-1b139ls">${escape_html(CRON_HINT_PREFIX)} <code>0 2 * * *</code> ${escape_html(CRON_HINT_SUFFIX)} <a href="https://crontab.guru" target="_blank" rel="noopener noreferrer">${escape_html(CRONTAB_LINK_LABEL)}</a></span></label> <input id="backup-cron" type="text" class="field-input field-input-mono svelte-1b139ls"${attr("value", backupConfig.backupCron)}${attr("placeholder", CRON_PLACEHOLDER)}></div> `;
676
799
  {
677
800
  $$payload2.out += "<!--[!-->";
678
801
  }
679
- $$payload2.out += `<!--]--> <div class="backup-actions svelte-bpb2i4">`;
802
+ $$payload2.out += `<!--]--> <div class="backup-actions svelte-1b139ls">`;
680
803
  Button($$payload2, {
681
804
  variant: "ghost",
682
805
  disabled: backupRunningNow,
@@ -726,4 +849,4 @@ function _page($$payload, $$props) {
726
849
  }
727
850
 
728
851
  export { _page as default };
729
- //# sourceMappingURL=_page.svelte-8gELc_B1.js.map
852
+ //# sourceMappingURL=_page.svelte-ywHy9KCh.js.map