plum-e2e 2.6.7 → 2.6.9

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 (829) hide show
  1. package/.env +5 -0
  2. package/backend/config/scripts/generate-report.js +8 -0
  3. package/backend/lib/runnerProcess.js +29 -15
  4. package/backend/logs/runner-cmqneqerz0000qq01i5ap2rvl.log +4 -0
  5. package/backend/logs/runner-cmqnfv7kr0000r101aeocm8eu.log +4 -0
  6. package/backend/logs/runner-cmqnfvb560001r101qoi0phau.log +4 -0
  7. package/backend/logs/runner-cmqnfvlm20002r101gsyqb837.log +4 -0
  8. package/backend/logs/runner-cmqnfvqfy0003r101fh41pzx3.log +4 -0
  9. package/backend/logs/runner-cmqnfvvwo0004r101q4dtqxd2.log +4 -0
  10. package/backend/logs/runner-cmr8o2x3n0000mg01410tpuck.log +4 -0
  11. package/backend/logs/runner-cmr90hvcx0000n2016edtmrtv.log +4 -0
  12. package/backend/logs/runner-cmr90i7h20001n201g2wg6v3n.log +4 -0
  13. package/backend/logs/runner-cmr90iilm0002n201mmisva95.log +4 -0
  14. package/backend/logs/runner-cmr90j70r0003n201xz8525dz.log +4 -0
  15. package/backend/logs/runner-cmr90yup70000qp017ianc2gp.log +4 -0
  16. package/backend/logs/runner-cmr90zbtm0001qp01u9tfdkh1.log +4 -0
  17. package/backend/logs/runner-cmr91a3mw0000tb01414rd1df.log +4 -0
  18. package/backend/logs/runner-cmr91dhla0001tb01jp7thjnl.log +4 -0
  19. package/backend/logs/runner-cmrkk6fcl0000qj012kve79f4.log +4 -0
  20. package/backend/logs/runner-cmrkl8sym0000qy01euz4270n.log +4 -0
  21. package/backend/logs/runner-cmrkl9oyx0001qy0137nzr94d.log +4 -0
  22. package/bin/plum.js +13 -0
  23. package/bin/postinstall.js +46 -0
  24. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +95 -39
  25. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +5 -0
  26. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Badge.D1SV0Gv7.css +5 -0
  27. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +23 -0
  28. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/EmptyState.DUDM4P19.css +23 -0
  29. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/{ConfirmModal.CdhOYVBb.css → Modal.BuaCfdLj.css} +6 -1
  30. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Pagination.DZmi2Po-.css +5 -0
  31. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Toast.DENwYn3g.css +5 -0
  32. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +5 -0
  33. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +5 -0
  34. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +5 -0
  35. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BR3wgXcZ.css +5 -0
  36. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BWAH0Beh.css +23 -0
  37. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +5 -0
  38. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +5 -0
  39. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +23 -0
  40. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CBHi6pzT.css +5 -0
  41. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +5 -0
  42. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CrXpMrqh.css +5 -0
  43. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page._h2o67kg.css +5 -0
  44. package/frontend/.svelte-kit/adapter-node/chunks/BackLink.js +5 -0
  45. package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +5 -0
  46. package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +12 -20
  47. package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +29 -7
  48. package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +43 -0
  49. package/frontend/.svelte-kit/adapter-node/chunks/Toast.js +17 -1
  50. package/frontend/.svelte-kit/adapter-node/chunks/attributes.js +5 -0
  51. package/frontend/.svelte-kit/adapter-node/chunks/auth.js +5 -0
  52. package/frontend/.svelte-kit/adapter-node/{_app/immutable/assets/EmptyState.BdO1q9cJ.css → chunks/auth2.js} +13 -1
  53. package/frontend/.svelte-kit/adapter-node/chunks/client.js +5 -0
  54. package/frontend/.svelte-kit/adapter-node/chunks/common.js +56 -0
  55. package/frontend/.svelte-kit/adapter-node/chunks/constants.js +9 -2
  56. package/frontend/.svelte-kit/adapter-node/chunks/escaping.js +5 -0
  57. package/frontend/.svelte-kit/adapter-node/chunks/exports.js +5 -0
  58. package/frontend/.svelte-kit/adapter-node/chunks/format.js +5 -0
  59. package/frontend/.svelte-kit/adapter-node/chunks/index-server.js +5 -0
  60. package/frontend/.svelte-kit/adapter-node/chunks/index.js +5 -0
  61. package/frontend/.svelte-kit/adapter-node/chunks/index2.js +5 -0
  62. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +7 -2
  63. package/frontend/.svelte-kit/adapter-node/chunks/reports.js +5 -0
  64. package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +109 -0
  65. package/frontend/.svelte-kit/adapter-node/chunks/repository.js +111 -0
  66. package/frontend/.svelte-kit/adapter-node/chunks/runner.js +12 -0
  67. package/frontend/.svelte-kit/adapter-node/chunks/stores.js +5 -0
  68. package/frontend/.svelte-kit/adapter-node/chunks/theme.js +5 -0
  69. package/frontend/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +5 -0
  70. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.js +5 -0
  71. package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +7 -0
  72. package/frontend/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +35 -12
  73. package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +9 -2
  74. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +9 -2
  75. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +21 -25
  76. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +31 -24
  77. package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +72 -32
  78. package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +276 -95
  79. package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +9 -2
  80. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +43 -36
  81. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +66 -13
  82. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +23 -17
  83. package/frontend/.svelte-kit/adapter-node/index.js +5 -0
  84. package/frontend/.svelte-kit/adapter-node/internal.js +5 -0
  85. package/frontend/.svelte-kit/adapter-node/manifest-full.js +6 -1
  86. package/frontend/.svelte-kit/adapter-node/manifest.js +6 -1
  87. package/frontend/.svelte-kit/adapter-node/nodes/0.js +7 -2
  88. package/frontend/.svelte-kit/adapter-node/nodes/1.js +6 -1
  89. package/frontend/.svelte-kit/adapter-node/nodes/10.js +7 -2
  90. package/frontend/.svelte-kit/adapter-node/nodes/11.js +7 -2
  91. package/frontend/.svelte-kit/adapter-node/nodes/12.js +7 -2
  92. package/frontend/.svelte-kit/adapter-node/nodes/2.js +7 -2
  93. package/frontend/.svelte-kit/adapter-node/nodes/3.js +6 -1
  94. package/frontend/.svelte-kit/adapter-node/nodes/4.js +7 -2
  95. package/frontend/.svelte-kit/adapter-node/nodes/5.js +6 -1
  96. package/frontend/.svelte-kit/adapter-node/nodes/6.js +6 -1
  97. package/frontend/.svelte-kit/adapter-node/nodes/7.js +7 -2
  98. package/frontend/.svelte-kit/adapter-node/nodes/8.js +7 -2
  99. package/frontend/.svelte-kit/adapter-node/nodes/9.js +6 -1
  100. package/frontend/.svelte-kit/ambient.d.ts +5 -4
  101. package/frontend/.svelte-kit/generated/client/app.js +5 -0
  102. package/frontend/.svelte-kit/generated/client/matchers.js +5 -0
  103. package/frontend/.svelte-kit/generated/client/nodes/0.js +5 -0
  104. package/frontend/.svelte-kit/generated/client/nodes/1.js +5 -0
  105. package/frontend/.svelte-kit/generated/client/nodes/10.js +5 -0
  106. package/frontend/.svelte-kit/generated/client/nodes/11.js +5 -0
  107. package/frontend/.svelte-kit/generated/client/nodes/12.js +5 -0
  108. package/frontend/.svelte-kit/generated/client/nodes/2.js +5 -0
  109. package/frontend/.svelte-kit/generated/client/nodes/3.js +5 -0
  110. package/frontend/.svelte-kit/generated/client/nodes/4.js +5 -0
  111. package/frontend/.svelte-kit/generated/client/nodes/5.js +5 -0
  112. package/frontend/.svelte-kit/generated/client/nodes/6.js +5 -0
  113. package/frontend/.svelte-kit/generated/client/nodes/7.js +5 -0
  114. package/frontend/.svelte-kit/generated/client/nodes/8.js +5 -0
  115. package/frontend/.svelte-kit/generated/client/nodes/9.js +5 -0
  116. package/frontend/.svelte-kit/generated/client-optimized/app.js +5 -0
  117. package/frontend/.svelte-kit/generated/client-optimized/matchers.js +5 -0
  118. package/frontend/.svelte-kit/generated/client-optimized/nodes/0.js +5 -0
  119. package/frontend/.svelte-kit/generated/client-optimized/nodes/1.js +5 -0
  120. package/frontend/.svelte-kit/generated/client-optimized/nodes/10.js +5 -0
  121. package/frontend/.svelte-kit/generated/client-optimized/nodes/11.js +5 -0
  122. package/frontend/.svelte-kit/generated/client-optimized/nodes/12.js +5 -0
  123. package/frontend/.svelte-kit/generated/client-optimized/nodes/2.js +5 -0
  124. package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +5 -0
  125. package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +5 -0
  126. package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +5 -0
  127. package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +5 -0
  128. package/frontend/.svelte-kit/generated/client-optimized/nodes/7.js +5 -0
  129. package/frontend/.svelte-kit/generated/client-optimized/nodes/8.js +5 -0
  130. package/frontend/.svelte-kit/generated/client-optimized/nodes/9.js +5 -0
  131. package/frontend/.svelte-kit/generated/root.js +5 -0
  132. package/frontend/.svelte-kit/generated/root.svelte +5 -0
  133. package/frontend/.svelte-kit/generated/server/internal.js +7 -2
  134. package/frontend/.svelte-kit/non-ambient.d.ts +5 -0
  135. package/frontend/.svelte-kit/output/client/.vite/manifest.json +404 -351
  136. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +5 -0
  137. package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.CdaQUS6U.css +5 -0
  138. package/frontend/.svelte-kit/output/client/_app/immutable/assets/11.BWAH0Beh.css +23 -0
  139. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Bj_a_5lv.css +5 -0
  140. package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.CrXpMrqh.css +5 -0
  141. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.BR3wgXcZ.css +5 -0
  142. package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +5 -0
  143. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +5 -0
  144. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +5 -0
  145. package/frontend/.svelte-kit/output/client/_app/immutable/assets/7.CBHi6pzT.css +5 -0
  146. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +23 -0
  147. package/frontend/.svelte-kit/output/client/_app/immutable/assets/9._h2o67kg.css +5 -0
  148. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.css +5 -0
  149. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Badge.D1SV0Gv7.css +5 -0
  150. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.FOWXxvc7.css +5 -0
  151. package/frontend/.svelte-kit/output/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +23 -0
  152. package/frontend/.svelte-kit/output/client/_app/immutable/assets/EmptyState.DUDM4P19.css +23 -0
  153. package/frontend/{build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css → .svelte-kit/output/client/_app/immutable/assets/Modal.BZpm0HP8.css} +6 -1
  154. package/frontend/{build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css → .svelte-kit/output/client/_app/immutable/assets/Modal.BuaCfdLj.css} +6 -1
  155. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Pagination.DZmi2Po-.css +5 -0
  156. package/frontend/.svelte-kit/output/client/_app/immutable/assets/Toast.DENwYn3g.css +5 -0
  157. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.BuhMvMUj.css +5 -0
  158. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.css +5 -0
  159. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.5IJAEAjc.css +5 -0
  160. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BR3wgXcZ.css +5 -0
  161. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BWAH0Beh.css +23 -0
  162. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BZfe6nWe.css +5 -0
  163. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +5 -0
  164. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +23 -0
  165. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CBHi6pzT.css +5 -0
  166. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +5 -0
  167. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CrXpMrqh.css +5 -0
  168. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page._h2o67kg.css +5 -0
  169. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{BLAiBE__.js → 2zMvi6fR.js} +6 -1
  170. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3IV-uqHa.js +23 -0
  171. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/4N1zIH8t.js +23 -0
  172. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B98sHkeB.js +23 -0
  173. package/frontend/{build/client/_app/immutable/chunks/C67QNx7Z.js → .svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js} +6 -1
  174. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Bfc47y5P.js +5 -0
  175. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BhvHtTRh.js +23 -0
  176. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BjUpWNbl.js +23 -0
  177. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DIx44H9N.js → C1Vid6wz.js} +6 -1
  178. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C1sukchk.js +23 -0
  179. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8OURRSs.js +23 -0
  180. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DGryW1Vp.js → CKDtmZUQ.js} +6 -1
  181. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +23 -0
  182. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C4eeChIU.js → CNdcuGR0.js} +6 -1
  183. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CgnwuKKO.js +23 -0
  184. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +23 -0
  185. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D2cvzNT9.js +23 -0
  186. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{B0pefNHY.js → D2gYTmAA.js} +6 -1
  187. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{uFRI_bmR.js → DCgHuuvs.js} +6 -1
  188. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CxTX_lpP.js → DDblTLLE.js} +6 -1
  189. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DW85KPAh.js +24 -0
  190. package/frontend/{build/client/_app/immutable/chunks/BFgtfHj2.js → .svelte-kit/output/client/_app/immutable/chunks/DW_iTTZe.js} +6 -1
  191. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{BVMec-1T.js → DYlaQsvN.js} +6 -1
  192. package/frontend/{build/client/_app/immutable/chunks/BFEiffAL.js → .svelte-kit/output/client/_app/immutable/chunks/DkNBSlo2.js} +6 -1
  193. package/frontend/{build/client/_app/immutable/chunks/BkKmeUbA.js → .svelte-kit/output/client/_app/immutable/chunks/DlNYZJ7K.js} +6 -1
  194. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dlnxgs49.js +23 -0
  195. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DtGXv8RA.js +25 -0
  196. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +28 -0
  197. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CyQ_oBw2.js → oN0Z3NSF.js} +6 -1
  198. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{raHbXn_9.js → t-La0hgu.js} +6 -1
  199. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DP6QP4L6.js → w0D4Uzlq.js} +6 -1
  200. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.BCWbw5zZ.js +24 -0
  201. package/frontend/{build/client/_app/immutable/entry/start.MMlC62np.js → .svelte-kit/output/client/_app/immutable/entry/start.2_AF42wj.js} +6 -1
  202. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.BAqq2UTE.js +28 -0
  203. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.Dbck5ct8.js → 1.D5VvLtGP.js} +6 -1
  204. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.Bn4Ma-MU.js +23 -0
  205. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.BacEu7sW.js +23 -0
  206. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.0YGtl1uj.js +23 -0
  207. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.C2jjMA-Z.js +23 -0
  208. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.DHx0kho3.js +23 -0
  209. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.CnaMiirx.js +23 -0
  210. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.B6m-zTVe.js +23 -0
  211. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.BPDag1zv.js +23 -0
  212. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.D7LwxSvT.js +23 -0
  213. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.CCkNX20G.js +26 -0
  214. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/9.HDerA6JV.js +23 -0
  215. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  216. package/frontend/.svelte-kit/output/server/.vite/manifest.json +95 -39
  217. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +5 -0
  218. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Badge.D1SV0Gv7.css +5 -0
  219. package/frontend/.svelte-kit/output/server/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +23 -0
  220. package/frontend/.svelte-kit/output/server/_app/immutable/assets/EmptyState.DUDM4P19.css +23 -0
  221. package/frontend/.svelte-kit/output/{client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css → server/_app/immutable/assets/Modal.BuaCfdLj.css} +6 -1
  222. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Pagination.DZmi2Po-.css +5 -0
  223. package/frontend/.svelte-kit/output/server/_app/immutable/assets/Toast.DENwYn3g.css +5 -0
  224. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +5 -0
  225. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +5 -0
  226. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +5 -0
  227. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BR3wgXcZ.css +5 -0
  228. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BWAH0Beh.css +23 -0
  229. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +5 -0
  230. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +5 -0
  231. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +23 -0
  232. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CBHi6pzT.css +5 -0
  233. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +5 -0
  234. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CrXpMrqh.css +5 -0
  235. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page._h2o67kg.css +5 -0
  236. package/frontend/.svelte-kit/output/server/chunks/BackLink.js +5 -0
  237. package/frontend/.svelte-kit/output/server/chunks/Badge.js +5 -0
  238. package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +12 -20
  239. package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +29 -7
  240. package/frontend/.svelte-kit/output/server/chunks/Modal.js +43 -0
  241. package/frontend/.svelte-kit/output/server/chunks/Toast.js +17 -1
  242. package/frontend/.svelte-kit/output/server/chunks/attributes.js +5 -0
  243. package/frontend/.svelte-kit/output/server/chunks/auth.js +5 -0
  244. package/frontend/.svelte-kit/output/{client/_app/immutable/assets/EmptyState.BdO1q9cJ.css → server/chunks/auth2.js} +13 -1
  245. package/frontend/.svelte-kit/output/server/chunks/client.js +5 -0
  246. package/frontend/.svelte-kit/output/server/chunks/common.js +56 -0
  247. package/frontend/.svelte-kit/output/server/chunks/constants.js +9 -2
  248. package/frontend/.svelte-kit/output/server/chunks/escaping.js +5 -0
  249. package/frontend/.svelte-kit/output/server/chunks/exports.js +5 -0
  250. package/frontend/.svelte-kit/output/server/chunks/format.js +5 -0
  251. package/frontend/.svelte-kit/output/server/chunks/index-server.js +5 -0
  252. package/frontend/.svelte-kit/output/server/chunks/index.js +5 -0
  253. package/frontend/.svelte-kit/output/server/chunks/index2.js +5 -0
  254. package/frontend/.svelte-kit/output/server/chunks/internal.js +7 -2
  255. package/frontend/.svelte-kit/output/server/chunks/reports.js +5 -0
  256. package/frontend/.svelte-kit/output/server/chunks/reports2.js +109 -0
  257. package/frontend/.svelte-kit/output/server/chunks/repository.js +111 -0
  258. package/frontend/.svelte-kit/output/server/chunks/runner.js +12 -0
  259. package/frontend/.svelte-kit/output/server/chunks/stores.js +5 -0
  260. package/frontend/.svelte-kit/output/server/chunks/theme.js +5 -0
  261. package/frontend/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +5 -0
  262. package/frontend/.svelte-kit/output/server/entries/pages/_layout.js +5 -0
  263. package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +7 -0
  264. package/frontend/.svelte-kit/output/server/entries/pages/_page.svelte.js +35 -12
  265. package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +9 -2
  266. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +9 -2
  267. package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +21 -25
  268. package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +31 -24
  269. package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +72 -32
  270. package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +276 -95
  271. package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +9 -2
  272. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +43 -36
  273. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +66 -13
  274. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +23 -17
  275. package/frontend/.svelte-kit/output/server/index.js +5 -0
  276. package/frontend/.svelte-kit/output/server/internal.js +5 -0
  277. package/frontend/.svelte-kit/output/server/manifest-full.js +6 -1
  278. package/frontend/.svelte-kit/output/server/manifest.js +6 -1
  279. package/frontend/.svelte-kit/output/server/nodes/0.js +7 -2
  280. package/frontend/.svelte-kit/output/server/nodes/1.js +6 -1
  281. package/frontend/.svelte-kit/output/server/nodes/10.js +7 -2
  282. package/frontend/.svelte-kit/output/server/nodes/11.js +7 -2
  283. package/frontend/.svelte-kit/output/server/nodes/12.js +7 -2
  284. package/frontend/.svelte-kit/output/server/nodes/2.js +7 -2
  285. package/frontend/.svelte-kit/output/server/nodes/3.js +6 -1
  286. package/frontend/.svelte-kit/output/server/nodes/4.js +7 -2
  287. package/frontend/.svelte-kit/output/server/nodes/5.js +6 -1
  288. package/frontend/.svelte-kit/output/server/nodes/6.js +6 -1
  289. package/frontend/.svelte-kit/output/server/nodes/7.js +7 -2
  290. package/frontend/.svelte-kit/output/server/nodes/8.js +7 -2
  291. package/frontend/.svelte-kit/output/server/nodes/9.js +6 -1
  292. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +5 -0
  293. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
  294. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.gz +0 -0
  295. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css +5 -0
  296. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.br +0 -0
  297. package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.gz +0 -0
  298. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css +23 -0
  299. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css.br +0 -0
  300. package/frontend/build/client/_app/immutable/assets/11.BWAH0Beh.css.gz +0 -0
  301. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css +5 -0
  302. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
  303. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
  304. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css +5 -0
  305. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css.br +0 -0
  306. package/frontend/build/client/_app/immutable/assets/2.CrXpMrqh.css.gz +0 -0
  307. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css +5 -0
  308. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css.br +0 -0
  309. package/frontend/build/client/_app/immutable/assets/3.BR3wgXcZ.css.gz +0 -0
  310. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +5 -0
  311. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
  312. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
  313. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +5 -0
  314. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
  315. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
  316. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +5 -0
  317. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
  318. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
  319. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css +5 -0
  320. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css.br +0 -0
  321. package/frontend/build/client/_app/immutable/assets/7.CBHi6pzT.css.gz +0 -0
  322. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +23 -0
  323. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
  324. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
  325. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css +5 -0
  326. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css.br +0 -0
  327. package/frontend/build/client/_app/immutable/assets/9._h2o67kg.css.gz +0 -0
  328. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +5 -0
  329. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
  330. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.gz +0 -0
  331. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css +5 -0
  332. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css.br +0 -0
  333. package/frontend/build/client/_app/immutable/assets/Badge.D1SV0Gv7.css.gz +0 -0
  334. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css +5 -0
  335. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.br +0 -0
  336. package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.gz +0 -0
  337. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css +23 -0
  338. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css.br +0 -0
  339. package/frontend/build/client/_app/immutable/assets/ConfirmModal.Dd3uP-Sk.css.gz +0 -0
  340. package/frontend/build/client/_app/immutable/assets/EmptyState.DUDM4P19.css +23 -0
  341. package/frontend/build/client/_app/immutable/assets/{EmptyState.BdO1q9cJ.css.gz → EmptyState.DUDM4P19.css.br} +0 -0
  342. package/frontend/build/client/_app/immutable/assets/EmptyState.DUDM4P19.css.gz +0 -0
  343. package/frontend/{.svelte-kit/output/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css → build/client/_app/immutable/assets/Modal.BZpm0HP8.css} +6 -1
  344. package/frontend/build/client/_app/immutable/assets/Modal.BZpm0HP8.css.br +0 -0
  345. package/frontend/build/client/_app/immutable/assets/Modal.BZpm0HP8.css.gz +0 -0
  346. package/frontend/{.svelte-kit/output/server/_app/immutable/assets/ConfirmModal.CdhOYVBb.css → build/client/_app/immutable/assets/Modal.BuaCfdLj.css} +6 -1
  347. package/frontend/build/client/_app/immutable/assets/Modal.BuaCfdLj.css.br +0 -0
  348. package/frontend/build/client/_app/immutable/assets/Modal.BuaCfdLj.css.gz +0 -0
  349. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css +5 -0
  350. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css.br +0 -0
  351. package/frontend/build/client/_app/immutable/assets/Pagination.DZmi2Po-.css.gz +0 -0
  352. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css +5 -0
  353. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.br +0 -0
  354. package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.gz +0 -0
  355. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css +5 -0
  356. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
  357. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
  358. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +5 -0
  359. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
  360. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.gz +0 -0
  361. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css +5 -0
  362. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.br +0 -0
  363. package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.gz +0 -0
  364. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css +5 -0
  365. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css.br +0 -0
  366. package/frontend/build/client/_app/immutable/assets/_page.BR3wgXcZ.css.gz +0 -0
  367. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css +23 -0
  368. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css.br +0 -0
  369. package/frontend/build/client/_app/immutable/assets/_page.BWAH0Beh.css.gz +0 -0
  370. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css +5 -0
  371. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
  372. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
  373. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +5 -0
  374. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
  375. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
  376. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +23 -0
  377. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
  378. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
  379. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css +5 -0
  380. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css.br +0 -0
  381. package/frontend/build/client/_app/immutable/assets/_page.CBHi6pzT.css.gz +0 -0
  382. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +5 -0
  383. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
  384. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
  385. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css +5 -0
  386. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css.br +0 -0
  387. package/frontend/build/client/_app/immutable/assets/_page.CrXpMrqh.css.gz +0 -0
  388. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css +5 -0
  389. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css.br +0 -0
  390. package/frontend/build/client/_app/immutable/assets/_page._h2o67kg.css.gz +0 -0
  391. package/frontend/build/client/_app/immutable/chunks/{BLAiBE__.js → 2zMvi6fR.js} +6 -1
  392. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
  393. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
  394. package/frontend/build/client/_app/immutable/chunks/3IV-uqHa.js +23 -0
  395. package/frontend/build/client/_app/immutable/chunks/3IV-uqHa.js.br +0 -0
  396. package/frontend/build/client/_app/immutable/chunks/3IV-uqHa.js.gz +0 -0
  397. package/frontend/build/client/_app/immutable/chunks/4N1zIH8t.js +23 -0
  398. package/frontend/build/client/_app/immutable/chunks/4N1zIH8t.js.br +0 -0
  399. package/frontend/build/client/_app/immutable/chunks/4N1zIH8t.js.gz +0 -0
  400. package/frontend/build/client/_app/immutable/chunks/B98sHkeB.js +23 -0
  401. package/frontend/build/client/_app/immutable/chunks/B98sHkeB.js.br +0 -0
  402. package/frontend/build/client/_app/immutable/chunks/B98sHkeB.js.gz +0 -0
  403. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C67QNx7Z.js → build/client/_app/immutable/chunks/BAACMRH5.js} +6 -1
  404. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
  405. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
  406. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js +5 -0
  407. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js.br +0 -0
  408. package/frontend/build/client/_app/immutable/chunks/Bfc47y5P.js.gz +0 -0
  409. package/frontend/build/client/_app/immutable/chunks/BhvHtTRh.js +23 -0
  410. package/frontend/build/client/_app/immutable/chunks/BhvHtTRh.js.br +0 -0
  411. package/frontend/build/client/_app/immutable/chunks/BhvHtTRh.js.gz +0 -0
  412. package/frontend/build/client/_app/immutable/chunks/BjUpWNbl.js +23 -0
  413. package/frontend/build/client/_app/immutable/chunks/BjUpWNbl.js.br +0 -0
  414. package/frontend/build/client/_app/immutable/chunks/BjUpWNbl.js.gz +0 -0
  415. package/frontend/build/client/_app/immutable/chunks/{DIx44H9N.js → C1Vid6wz.js} +6 -1
  416. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
  417. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
  418. package/frontend/build/client/_app/immutable/chunks/C1sukchk.js +23 -0
  419. package/frontend/build/client/_app/immutable/chunks/C1sukchk.js.br +0 -0
  420. package/frontend/build/client/_app/immutable/chunks/C1sukchk.js.gz +0 -0
  421. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js +23 -0
  422. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
  423. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
  424. package/frontend/build/client/_app/immutable/chunks/{DGryW1Vp.js → CKDtmZUQ.js} +6 -1
  425. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
  426. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
  427. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +23 -0
  428. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
  429. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
  430. package/frontend/build/client/_app/immutable/chunks/{C4eeChIU.js → CNdcuGR0.js} +6 -1
  431. package/frontend/build/client/_app/immutable/chunks/{BFgtfHj2.js.br → CNdcuGR0.js.br} +0 -0
  432. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
  433. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js +23 -0
  434. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
  435. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
  436. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +23 -0
  437. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +21 -0
  438. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
  439. package/frontend/build/client/_app/immutable/chunks/D2cvzNT9.js +23 -0
  440. package/frontend/build/client/_app/immutable/chunks/D2cvzNT9.js.br +0 -0
  441. package/frontend/build/client/_app/immutable/chunks/D2cvzNT9.js.gz +0 -0
  442. package/frontend/build/client/_app/immutable/chunks/{B0pefNHY.js → D2gYTmAA.js} +6 -1
  443. package/frontend/build/client/_app/immutable/chunks/D2gYTmAA.js.br +0 -0
  444. package/frontend/build/client/_app/immutable/chunks/D2gYTmAA.js.gz +0 -0
  445. package/frontend/build/client/_app/immutable/chunks/{uFRI_bmR.js → DCgHuuvs.js} +6 -1
  446. package/frontend/build/client/_app/immutable/{assets/EmptyState.BdO1q9cJ.css.br → chunks/DCgHuuvs.js.br} +0 -0
  447. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
  448. package/frontend/build/client/_app/immutable/chunks/{CxTX_lpP.js → DDblTLLE.js} +6 -1
  449. package/frontend/build/client/_app/immutable/chunks/DDblTLLE.js.br +0 -0
  450. package/frontend/build/client/_app/immutable/chunks/DDblTLLE.js.gz +0 -0
  451. package/frontend/build/client/_app/immutable/chunks/DW85KPAh.js +24 -0
  452. package/frontend/build/client/_app/immutable/chunks/DW85KPAh.js.br +0 -0
  453. package/frontend/build/client/_app/immutable/chunks/DW85KPAh.js.gz +0 -0
  454. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BFgtfHj2.js → build/client/_app/immutable/chunks/DW_iTTZe.js} +6 -1
  455. package/frontend/build/client/_app/immutable/chunks/{BFgtfHj2.js.gz → DW_iTTZe.js.br} +0 -0
  456. package/frontend/build/client/_app/immutable/chunks/DW_iTTZe.js.gz +0 -0
  457. package/frontend/build/client/_app/immutable/chunks/{BVMec-1T.js → DYlaQsvN.js} +6 -1
  458. package/frontend/build/client/_app/immutable/chunks/DYlaQsvN.js.br +0 -0
  459. package/frontend/build/client/_app/immutable/chunks/DYlaQsvN.js.gz +0 -0
  460. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BFEiffAL.js → build/client/_app/immutable/chunks/DkNBSlo2.js} +6 -1
  461. package/frontend/build/client/_app/immutable/chunks/DkNBSlo2.js.br +0 -0
  462. package/frontend/build/client/_app/immutable/chunks/DkNBSlo2.js.gz +0 -0
  463. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BkKmeUbA.js → build/client/_app/immutable/chunks/DlNYZJ7K.js} +6 -1
  464. package/frontend/build/client/_app/immutable/chunks/DlNYZJ7K.js.br +0 -0
  465. package/frontend/build/client/_app/immutable/chunks/DlNYZJ7K.js.gz +0 -0
  466. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js +23 -0
  467. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js.br +0 -0
  468. package/frontend/build/client/_app/immutable/chunks/Dlnxgs49.js.gz +0 -0
  469. package/frontend/build/client/_app/immutable/chunks/DtGXv8RA.js +25 -0
  470. package/frontend/build/client/_app/immutable/chunks/DtGXv8RA.js.br +0 -0
  471. package/frontend/build/client/_app/immutable/chunks/DtGXv8RA.js.gz +0 -0
  472. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +28 -0
  473. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
  474. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
  475. package/frontend/build/client/_app/immutable/chunks/{CyQ_oBw2.js → oN0Z3NSF.js} +6 -1
  476. package/frontend/build/client/_app/immutable/chunks/oN0Z3NSF.js.br +0 -0
  477. package/frontend/build/client/_app/immutable/chunks/oN0Z3NSF.js.gz +0 -0
  478. package/frontend/build/client/_app/immutable/chunks/{raHbXn_9.js → t-La0hgu.js} +6 -1
  479. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
  480. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
  481. package/frontend/build/client/_app/immutable/chunks/{DP6QP4L6.js → w0D4Uzlq.js} +6 -1
  482. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
  483. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
  484. package/frontend/build/client/_app/immutable/entry/app.BCWbw5zZ.js +24 -0
  485. package/frontend/build/client/_app/immutable/entry/app.BCWbw5zZ.js.br +0 -0
  486. package/frontend/build/client/_app/immutable/entry/app.BCWbw5zZ.js.gz +0 -0
  487. package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.MMlC62np.js → build/client/_app/immutable/entry/start.2_AF42wj.js} +6 -1
  488. package/frontend/build/client/_app/immutable/entry/{start.MMlC62np.js.br → start.2_AF42wj.js.br} +5 -1
  489. package/frontend/build/client/_app/immutable/entry/{start.MMlC62np.js.gz → start.2_AF42wj.js.gz} +0 -0
  490. package/frontend/build/client/_app/immutable/nodes/0.BAqq2UTE.js +28 -0
  491. package/frontend/build/client/_app/immutable/nodes/0.BAqq2UTE.js.br +0 -0
  492. package/frontend/build/client/_app/immutable/nodes/0.BAqq2UTE.js.gz +0 -0
  493. package/frontend/build/client/_app/immutable/nodes/{1.Dbck5ct8.js → 1.D5VvLtGP.js} +6 -1
  494. package/frontend/build/client/_app/immutable/nodes/1.D5VvLtGP.js.br +0 -0
  495. package/frontend/build/client/_app/immutable/nodes/1.D5VvLtGP.js.gz +0 -0
  496. package/frontend/build/client/_app/immutable/nodes/10.Bn4Ma-MU.js +23 -0
  497. package/frontend/build/client/_app/immutable/nodes/10.Bn4Ma-MU.js.br +0 -0
  498. package/frontend/build/client/_app/immutable/nodes/10.Bn4Ma-MU.js.gz +0 -0
  499. package/frontend/build/client/_app/immutable/nodes/11.BacEu7sW.js +23 -0
  500. package/frontend/build/client/_app/immutable/nodes/11.BacEu7sW.js.br +0 -0
  501. package/frontend/build/client/_app/immutable/nodes/11.BacEu7sW.js.gz +0 -0
  502. package/frontend/build/client/_app/immutable/nodes/12.0YGtl1uj.js +23 -0
  503. package/frontend/build/client/_app/immutable/nodes/12.0YGtl1uj.js.br +0 -0
  504. package/frontend/build/client/_app/immutable/nodes/12.0YGtl1uj.js.gz +0 -0
  505. package/frontend/build/client/_app/immutable/nodes/2.C2jjMA-Z.js +23 -0
  506. package/frontend/build/client/_app/immutable/nodes/2.C2jjMA-Z.js.br +0 -0
  507. package/frontend/build/client/_app/immutable/nodes/2.C2jjMA-Z.js.gz +0 -0
  508. package/frontend/build/client/_app/immutable/nodes/3.DHx0kho3.js +23 -0
  509. package/frontend/build/client/_app/immutable/nodes/3.DHx0kho3.js.br +0 -0
  510. package/frontend/build/client/_app/immutable/nodes/3.DHx0kho3.js.gz +0 -0
  511. package/frontend/build/client/_app/immutable/nodes/4.CnaMiirx.js +23 -0
  512. package/frontend/build/client/_app/immutable/nodes/4.CnaMiirx.js.br +0 -0
  513. package/frontend/build/client/_app/immutable/nodes/4.CnaMiirx.js.gz +0 -0
  514. package/frontend/build/client/_app/immutable/nodes/5.B6m-zTVe.js +23 -0
  515. package/frontend/build/client/_app/immutable/nodes/5.B6m-zTVe.js.br +0 -0
  516. package/frontend/build/client/_app/immutable/nodes/5.B6m-zTVe.js.gz +0 -0
  517. package/frontend/build/client/_app/immutable/nodes/6.BPDag1zv.js +23 -0
  518. package/frontend/build/client/_app/immutable/nodes/6.BPDag1zv.js.br +0 -0
  519. package/frontend/build/client/_app/immutable/nodes/6.BPDag1zv.js.gz +0 -0
  520. package/frontend/build/client/_app/immutable/nodes/7.D7LwxSvT.js +23 -0
  521. package/frontend/build/client/_app/immutable/nodes/7.D7LwxSvT.js.br +0 -0
  522. package/frontend/build/client/_app/immutable/nodes/7.D7LwxSvT.js.gz +0 -0
  523. package/frontend/build/client/_app/immutable/nodes/8.CCkNX20G.js +26 -0
  524. package/frontend/build/client/_app/immutable/nodes/8.CCkNX20G.js.br +0 -0
  525. package/frontend/build/client/_app/immutable/nodes/8.CCkNX20G.js.gz +0 -0
  526. package/frontend/build/client/_app/immutable/nodes/9.HDerA6JV.js +23 -0
  527. package/frontend/build/client/_app/immutable/nodes/9.HDerA6JV.js.br +0 -0
  528. package/frontend/build/client/_app/immutable/nodes/9.HDerA6JV.js.gz +0 -0
  529. package/frontend/build/client/_app/version.json +1 -1
  530. package/frontend/build/client/_app/version.json.br +0 -0
  531. package/frontend/build/client/_app/version.json.gz +0 -0
  532. package/frontend/build/env.js +5 -0
  533. package/frontend/build/handler.js +5 -0
  534. package/frontend/build/index.js +5 -0
  535. package/frontend/build/server/chunks/{0-Dzas6zkl.js → 0-Di4jNU9J.js} +9 -4
  536. package/frontend/build/server/chunks/0-Di4jNU9J.js.map +21 -0
  537. package/frontend/build/server/chunks/{1-B4EsP8yr.js → 1-DR5YRUTa.js} +7 -2
  538. package/frontend/build/server/chunks/{1-B4EsP8yr.js.map → 1-DR5YRUTa.js.map} +5 -1
  539. package/frontend/build/server/chunks/10-Bhe409bL.js +31 -0
  540. package/frontend/build/server/chunks/10-Bhe409bL.js.map +21 -0
  541. package/frontend/build/server/chunks/11-DqyXW7n1.js +31 -0
  542. package/frontend/build/server/chunks/11-DqyXW7n1.js.map +21 -0
  543. package/frontend/build/server/chunks/12-BCpjMUbs.js +31 -0
  544. package/frontend/build/server/chunks/12-BCpjMUbs.js.map +21 -0
  545. package/frontend/build/server/chunks/{2-Bkz8H7CT.js → 2-D-0buH5i.js} +9 -4
  546. package/frontend/build/server/chunks/{2-Bkz8H7CT.js.map → 2-D-0buH5i.js.map} +5 -1
  547. package/frontend/build/server/chunks/{3-DDtaiqu7.js → 3-y2kzPO2X.js} +8 -3
  548. package/frontend/build/server/chunks/3-y2kzPO2X.js.map +21 -0
  549. package/frontend/build/server/chunks/4-CFrK8HST.js +31 -0
  550. package/frontend/build/server/chunks/4-CFrK8HST.js.map +21 -0
  551. package/frontend/build/server/chunks/{5-CK5hY2WF.js → 5-B0lJu5bT.js} +8 -3
  552. package/frontend/build/server/chunks/5-B0lJu5bT.js.map +21 -0
  553. package/frontend/build/server/chunks/{6-Cps9fL3Z.js → 6-BD4CEJ3Z.js} +8 -3
  554. package/frontend/build/server/chunks/6-BD4CEJ3Z.js.map +21 -0
  555. package/frontend/build/server/chunks/7-DekQfQHu.js +31 -0
  556. package/frontend/build/server/chunks/7-DekQfQHu.js.map +21 -0
  557. package/frontend/build/server/chunks/8-BMqmu7WF.js +31 -0
  558. package/frontend/build/server/chunks/8-BMqmu7WF.js.map +21 -0
  559. package/frontend/build/server/chunks/{9-CUJxgoIN.js → 9-C5sKo9aY.js} +8 -3
  560. package/frontend/build/server/chunks/9-C5sKo9aY.js.map +21 -0
  561. package/frontend/build/server/chunks/BackLink-KxZNqsaq.js +5 -0
  562. package/frontend/build/server/chunks/BackLink-KxZNqsaq.js.map +4 -0
  563. package/frontend/build/server/chunks/Badge-B5V-z6pI.js +5 -0
  564. package/frontend/build/server/chunks/Badge-B5V-z6pI.js.map +4 -0
  565. package/frontend/build/server/chunks/{ConfirmModal-DBtnLLsU.js → ConfirmModal-Ckkt99Pn.js} +12 -19
  566. package/frontend/build/server/chunks/ConfirmModal-Ckkt99Pn.js.map +21 -0
  567. package/frontend/build/server/chunks/EmptyState-BwwbShnX.js +56 -0
  568. package/frontend/build/server/chunks/EmptyState-BwwbShnX.js.map +21 -0
  569. package/frontend/build/server/chunks/Modal-DG-6c5si.js +43 -0
  570. package/frontend/build/server/chunks/Modal-DG-6c5si.js.map +21 -0
  571. package/frontend/build/server/chunks/{Button-CuacyA7Y.js → Toast-CIG4edEp.js} +22 -3
  572. package/frontend/build/server/chunks/Toast-CIG4edEp.js.map +21 -0
  573. package/frontend/build/server/chunks/{_layout.svelte-DoJXDbP1.js → _layout.svelte-BjPrZpoG.js} +10 -3
  574. package/frontend/build/server/chunks/_layout.svelte-BjPrZpoG.js.map +21 -0
  575. package/frontend/build/server/chunks/{_page.svelte-DNNyBx4y.js → _page.svelte-B9rjnZWE.js} +10 -4
  576. package/frontend/build/server/chunks/_page.svelte-B9rjnZWE.js.map +21 -0
  577. package/frontend/build/server/chunks/{_page.svelte-C0vstY93.js → _page.svelte-BHw14GPR.js} +76 -36
  578. package/frontend/build/server/chunks/_page.svelte-BHw14GPR.js.map +21 -0
  579. package/frontend/build/server/chunks/{_page.svelte-LcJmR5du.js → _page.svelte-BbZNxvCl.js} +29 -31
  580. package/frontend/build/server/chunks/_page.svelte-BbZNxvCl.js.map +21 -0
  581. package/frontend/build/server/chunks/_page.svelte-CLFpft5D.js +118 -0
  582. package/frontend/build/server/chunks/_page.svelte-CLFpft5D.js.map +21 -0
  583. package/frontend/build/server/chunks/_page.svelte-Cr16HubD.js +746 -0
  584. package/frontend/build/server/chunks/_page.svelte-Cr16HubD.js.map +21 -0
  585. package/frontend/build/server/chunks/{_page.svelte-DALHRFEX.js → _page.svelte-D1aYn1PL.js} +10 -4
  586. package/frontend/build/server/chunks/_page.svelte-D1aYn1PL.js.map +21 -0
  587. package/frontend/build/server/chunks/{_page.svelte-CC27sZag.js → _page.svelte-D2oF79cT.js} +45 -38
  588. package/frontend/build/server/chunks/_page.svelte-D2oF79cT.js.map +21 -0
  589. package/frontend/build/server/chunks/{_page.svelte-gnktnXKP.js → _page.svelte-D78qaBDN.js} +35 -28
  590. package/frontend/build/server/chunks/_page.svelte-D78qaBDN.js.map +21 -0
  591. package/frontend/build/server/chunks/{_page.svelte-DqWsUJRp.js → _page.svelte-DyyuZN_3.js} +25 -19
  592. package/frontend/build/server/chunks/_page.svelte-DyyuZN_3.js.map +21 -0
  593. package/frontend/build/server/chunks/{_page.svelte-CYkOPxn2.js → _page.svelte-sbqebZYx.js} +40 -17
  594. package/frontend/build/server/chunks/_page.svelte-sbqebZYx.js.map +21 -0
  595. package/frontend/build/server/chunks/{_page.svelte-BETENC2e.js → _page.svelte-ubW5EUCf.js} +13 -6
  596. package/frontend/build/server/chunks/_page.svelte-ubW5EUCf.js.map +21 -0
  597. package/frontend/build/server/chunks/attributes-BeaNKpgU.js +5 -0
  598. package/frontend/build/server/chunks/attributes-BeaNKpgU.js.map +4 -0
  599. package/frontend/build/server/chunks/auth-rlH-cIzn.js +5 -0
  600. package/frontend/build/server/chunks/auth-rlH-cIzn.js.map +4 -0
  601. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BIRVeCLU.js → build/server/chunks/auth2-C02yYDpz.js} +11 -1
  602. package/frontend/build/server/chunks/auth2-C02yYDpz.js.map +21 -0
  603. package/frontend/build/server/chunks/client-DyII78e0.js +5 -0
  604. package/frontend/build/server/chunks/client-DyII78e0.js.map +4 -0
  605. package/frontend/build/server/chunks/common-Db-bgKYG.js +42 -0
  606. package/frontend/build/server/chunks/common-Db-bgKYG.js.map +21 -0
  607. package/frontend/build/server/chunks/{constants-Drz-Vo39.js → constants-cZ2kUwWa.js} +9 -3
  608. package/frontend/build/server/chunks/{constants-Drz-Vo39.js.map → constants-cZ2kUwWa.js.map} +5 -1
  609. package/frontend/build/server/chunks/error.svelte-BDW3iP1O.js +5 -0
  610. package/frontend/build/server/chunks/error.svelte-BDW3iP1O.js.map +4 -0
  611. package/frontend/build/server/chunks/escaping-CqgfEcN3.js +5 -0
  612. package/frontend/build/server/chunks/escaping-CqgfEcN3.js.map +4 -0
  613. package/frontend/build/server/chunks/exports-D0QHgeSL.js +5 -0
  614. package/frontend/build/server/chunks/exports-D0QHgeSL.js.map +4 -0
  615. package/frontend/build/server/chunks/{format-D26ZQccb.js → format-0SSB1oGG.js} +7 -2
  616. package/frontend/build/server/chunks/{format-D26ZQccb.js.map → format-0SSB1oGG.js.map} +5 -1
  617. package/frontend/build/server/chunks/index-server-Dr2Nvcmu.js +5 -0
  618. package/frontend/build/server/chunks/index-server-Dr2Nvcmu.js.map +4 -0
  619. package/frontend/build/server/chunks/index2-DG8XHU5D.js +5 -0
  620. package/frontend/build/server/chunks/index2-DG8XHU5D.js.map +4 -0
  621. package/frontend/build/server/chunks/{reports-Bgi7V5N7.js → reports-DnYbvluH.js} +7 -2
  622. package/frontend/build/server/chunks/{reports-Bgi7V5N7.js.map → reports-DnYbvluH.js.map} +5 -1
  623. package/frontend/build/server/chunks/reports2-DR4XlcJg.js +69 -0
  624. package/frontend/build/server/chunks/reports2-DR4XlcJg.js.map +21 -0
  625. package/frontend/build/server/chunks/repository-D9Derhnk.js +70 -0
  626. package/frontend/build/server/chunks/repository-D9Derhnk.js.map +21 -0
  627. package/frontend/build/server/chunks/{runner-D18Ml_vF.js → runner-DE5sufZH.js} +13 -1
  628. package/frontend/build/server/chunks/runner-DE5sufZH.js.map +21 -0
  629. package/frontend/build/server/chunks/stores-DlkXV308.js +5 -0
  630. package/frontend/build/server/chunks/stores-DlkXV308.js.map +4 -0
  631. package/frontend/build/server/chunks/theme-D_NKm6iI.js +5 -0
  632. package/frontend/build/server/chunks/theme-D_NKm6iI.js.map +4 -0
  633. package/frontend/build/server/index.js +7 -2
  634. package/frontend/build/server/index.js.map +5 -1
  635. package/frontend/build/server/manifest.js +19 -14
  636. package/frontend/build/server/manifest.js.map +5 -1
  637. package/frontend/build/shims.js +5 -0
  638. package/package.json +2 -1
  639. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  640. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  641. package/frontend/.svelte-kit/adapter-node/chunks/Button.js +0 -33
  642. package/frontend/.svelte-kit/output/client/_app/immutable/assets/11.BJ-I1gHO.css +0 -18
  643. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.Bhof07Eg.css +0 -18
  644. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  645. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  646. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKCNyxZ2.js +0 -18
  647. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BeO8veBd.js +0 -18
  648. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BgNaeXAp.js +0 -18
  649. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C3SY6-sX.js +0 -19
  650. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CVV6HrFb.js +0 -18
  651. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CstKKb9b.js +0 -18
  652. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DmRbbcS3.js +0 -23
  653. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/IFIFk6zi.js +0 -18
  654. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/KJdjlibc.js +0 -20
  655. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/ll-VsEGv.js +0 -18
  656. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.Dz_CBZcR.js +0 -19
  657. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CKD9Qja6.js +0 -23
  658. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.BfmGpmC1.js +0 -19
  659. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.C7l9HPom.js +0 -18
  660. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.Iu9bcGdC.js +0 -19
  661. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.BqQhRvYh.js +0 -18
  662. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.BZRTKadS.js +0 -18
  663. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.BfKoPKdM.js +0 -18
  664. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.B4a2uCWn.js +0 -18
  665. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.CI508CMS.js +0 -18
  666. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.3x_eiof1.js +0 -18
  667. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.BfUuob4H.js +0 -29
  668. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/9.BZhCKRJe.js +0 -18
  669. package/frontend/.svelte-kit/output/server/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  670. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  671. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  672. package/frontend/.svelte-kit/output/server/chunks/Button.js +0 -33
  673. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css +0 -18
  674. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css.br +0 -0
  675. package/frontend/build/client/_app/immutable/assets/11.BJ-I1gHO.css.gz +0 -0
  676. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css +0 -18
  677. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css.br +0 -0
  678. package/frontend/build/client/_app/immutable/assets/8.Bhof07Eg.css.gz +0 -0
  679. package/frontend/build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css.br +0 -0
  680. package/frontend/build/client/_app/immutable/assets/ConfirmModal.CdhOYVBb.css.gz +0 -0
  681. package/frontend/build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css.br +0 -0
  682. package/frontend/build/client/_app/immutable/assets/ConfirmModal.DmxkcwXv.css.gz +0 -0
  683. package/frontend/build/client/_app/immutable/assets/EmptyState.BdO1q9cJ.css +0 -18
  684. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css +0 -18
  685. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css.br +0 -0
  686. package/frontend/build/client/_app/immutable/assets/_page.BJ-I1gHO.css.gz +0 -0
  687. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css +0 -18
  688. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css.br +0 -0
  689. package/frontend/build/client/_app/immutable/assets/_page.Bhof07Eg.css.gz +0 -0
  690. package/frontend/build/client/_app/immutable/chunks/B0pefNHY.js.br +0 -0
  691. package/frontend/build/client/_app/immutable/chunks/B0pefNHY.js.gz +0 -0
  692. package/frontend/build/client/_app/immutable/chunks/BFEiffAL.js.br +0 -0
  693. package/frontend/build/client/_app/immutable/chunks/BFEiffAL.js.gz +0 -0
  694. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js +0 -18
  695. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js.br +0 -20
  696. package/frontend/build/client/_app/immutable/chunks/BIRVeCLU.js.gz +0 -0
  697. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js +0 -18
  698. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js.br +0 -0
  699. package/frontend/build/client/_app/immutable/chunks/BKCNyxZ2.js.gz +0 -0
  700. package/frontend/build/client/_app/immutable/chunks/BLAiBE__.js.br +0 -18
  701. package/frontend/build/client/_app/immutable/chunks/BLAiBE__.js.gz +0 -0
  702. package/frontend/build/client/_app/immutable/chunks/BVMec-1T.js.br +0 -0
  703. package/frontend/build/client/_app/immutable/chunks/BVMec-1T.js.gz +0 -0
  704. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js +0 -18
  705. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js.br +0 -0
  706. package/frontend/build/client/_app/immutable/chunks/BeO8veBd.js.gz +0 -0
  707. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js +0 -18
  708. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js.br +0 -0
  709. package/frontend/build/client/_app/immutable/chunks/BgNaeXAp.js.gz +0 -0
  710. package/frontend/build/client/_app/immutable/chunks/BkKmeUbA.js.br +0 -0
  711. package/frontend/build/client/_app/immutable/chunks/BkKmeUbA.js.gz +0 -0
  712. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js +0 -19
  713. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js.br +0 -0
  714. package/frontend/build/client/_app/immutable/chunks/C3SY6-sX.js.gz +0 -0
  715. package/frontend/build/client/_app/immutable/chunks/C4eeChIU.js.br +0 -0
  716. package/frontend/build/client/_app/immutable/chunks/C4eeChIU.js.gz +0 -0
  717. package/frontend/build/client/_app/immutable/chunks/C67QNx7Z.js.br +0 -0
  718. package/frontend/build/client/_app/immutable/chunks/C67QNx7Z.js.gz +0 -0
  719. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js +0 -18
  720. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js.br +0 -0
  721. package/frontend/build/client/_app/immutable/chunks/CVV6HrFb.js.gz +0 -0
  722. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js +0 -18
  723. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js.br +0 -0
  724. package/frontend/build/client/_app/immutable/chunks/CstKKb9b.js.gz +0 -0
  725. package/frontend/build/client/_app/immutable/chunks/CxTX_lpP.js.br +0 -0
  726. package/frontend/build/client/_app/immutable/chunks/CxTX_lpP.js.gz +0 -0
  727. package/frontend/build/client/_app/immutable/chunks/CyQ_oBw2.js.br +0 -0
  728. package/frontend/build/client/_app/immutable/chunks/CyQ_oBw2.js.gz +0 -0
  729. package/frontend/build/client/_app/immutable/chunks/DGryW1Vp.js.br +0 -0
  730. package/frontend/build/client/_app/immutable/chunks/DGryW1Vp.js.gz +0 -0
  731. package/frontend/build/client/_app/immutable/chunks/DIx44H9N.js.br +0 -0
  732. package/frontend/build/client/_app/immutable/chunks/DIx44H9N.js.gz +0 -0
  733. package/frontend/build/client/_app/immutable/chunks/DP6QP4L6.js.br +0 -0
  734. package/frontend/build/client/_app/immutable/chunks/DP6QP4L6.js.gz +0 -0
  735. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js +0 -23
  736. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js.br +0 -0
  737. package/frontend/build/client/_app/immutable/chunks/DmRbbcS3.js.gz +0 -0
  738. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js +0 -18
  739. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js.br +0 -0
  740. package/frontend/build/client/_app/immutable/chunks/IFIFk6zi.js.gz +0 -0
  741. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js +0 -20
  742. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js.br +0 -0
  743. package/frontend/build/client/_app/immutable/chunks/KJdjlibc.js.gz +0 -0
  744. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js +0 -18
  745. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js.br +0 -0
  746. package/frontend/build/client/_app/immutable/chunks/ll-VsEGv.js.gz +0 -0
  747. package/frontend/build/client/_app/immutable/chunks/raHbXn_9.js.br +0 -0
  748. package/frontend/build/client/_app/immutable/chunks/raHbXn_9.js.gz +0 -0
  749. package/frontend/build/client/_app/immutable/chunks/uFRI_bmR.js.br +0 -0
  750. package/frontend/build/client/_app/immutable/chunks/uFRI_bmR.js.gz +0 -0
  751. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js +0 -19
  752. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js.br +0 -0
  753. package/frontend/build/client/_app/immutable/entry/app.Dz_CBZcR.js.gz +0 -0
  754. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js +0 -23
  755. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js.br +0 -0
  756. package/frontend/build/client/_app/immutable/nodes/0.CKD9Qja6.js.gz +0 -0
  757. package/frontend/build/client/_app/immutable/nodes/1.Dbck5ct8.js.br +0 -0
  758. package/frontend/build/client/_app/immutable/nodes/1.Dbck5ct8.js.gz +0 -0
  759. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js +0 -19
  760. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js.br +0 -0
  761. package/frontend/build/client/_app/immutable/nodes/10.BfmGpmC1.js.gz +0 -0
  762. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js +0 -18
  763. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js.br +0 -0
  764. package/frontend/build/client/_app/immutable/nodes/11.C7l9HPom.js.gz +0 -0
  765. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js +0 -19
  766. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js.br +0 -0
  767. package/frontend/build/client/_app/immutable/nodes/12.Iu9bcGdC.js.gz +0 -0
  768. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js +0 -18
  769. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js.br +0 -0
  770. package/frontend/build/client/_app/immutable/nodes/2.BqQhRvYh.js.gz +0 -0
  771. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js +0 -18
  772. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js.br +0 -0
  773. package/frontend/build/client/_app/immutable/nodes/3.BZRTKadS.js.gz +0 -0
  774. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js +0 -18
  775. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js.br +0 -0
  776. package/frontend/build/client/_app/immutable/nodes/4.BfKoPKdM.js.gz +0 -0
  777. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js +0 -18
  778. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js.br +0 -0
  779. package/frontend/build/client/_app/immutable/nodes/5.B4a2uCWn.js.gz +0 -0
  780. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js +0 -18
  781. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js.br +0 -0
  782. package/frontend/build/client/_app/immutable/nodes/6.CI508CMS.js.gz +0 -0
  783. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js +0 -18
  784. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js.br +0 -0
  785. package/frontend/build/client/_app/immutable/nodes/7.3x_eiof1.js.gz +0 -0
  786. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js +0 -29
  787. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js.br +0 -0
  788. package/frontend/build/client/_app/immutable/nodes/8.BfUuob4H.js.gz +0 -0
  789. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js +0 -18
  790. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js.br +0 -0
  791. package/frontend/build/client/_app/immutable/nodes/9.BZhCKRJe.js.gz +0 -0
  792. package/frontend/build/server/chunks/0-Dzas6zkl.js.map +0 -17
  793. package/frontend/build/server/chunks/10-UhDQZ5BY.js +0 -26
  794. package/frontend/build/server/chunks/10-UhDQZ5BY.js.map +0 -17
  795. package/frontend/build/server/chunks/11-mTH3nQlX.js +0 -26
  796. package/frontend/build/server/chunks/11-mTH3nQlX.js.map +0 -17
  797. package/frontend/build/server/chunks/12-9mg6kp53.js +0 -26
  798. package/frontend/build/server/chunks/12-9mg6kp53.js.map +0 -17
  799. package/frontend/build/server/chunks/3-DDtaiqu7.js.map +0 -17
  800. package/frontend/build/server/chunks/4-DbdkTAvS.js +0 -26
  801. package/frontend/build/server/chunks/4-DbdkTAvS.js.map +0 -17
  802. package/frontend/build/server/chunks/5-CK5hY2WF.js.map +0 -17
  803. package/frontend/build/server/chunks/6-Cps9fL3Z.js.map +0 -17
  804. package/frontend/build/server/chunks/7-CgUpbaJD.js +0 -26
  805. package/frontend/build/server/chunks/7-CgUpbaJD.js.map +0 -17
  806. package/frontend/build/server/chunks/8-dilaVKYo.js +0 -26
  807. package/frontend/build/server/chunks/8-dilaVKYo.js.map +0 -17
  808. package/frontend/build/server/chunks/9-CUJxgoIN.js.map +0 -17
  809. package/frontend/build/server/chunks/Button-CuacyA7Y.js.map +0 -17
  810. package/frontend/build/server/chunks/ConfirmModal-DBtnLLsU.js.map +0 -17
  811. package/frontend/build/server/chunks/EmptyState-B74-VZ15.js +0 -34
  812. package/frontend/build/server/chunks/EmptyState-B74-VZ15.js.map +0 -17
  813. package/frontend/build/server/chunks/Toast-DDF2wi_5.js +0 -37
  814. package/frontend/build/server/chunks/Toast-DDF2wi_5.js.map +0 -17
  815. package/frontend/build/server/chunks/_layout.svelte-DoJXDbP1.js.map +0 -17
  816. package/frontend/build/server/chunks/_page.svelte-BETENC2e.js.map +0 -17
  817. package/frontend/build/server/chunks/_page.svelte-C0vstY93.js.map +0 -17
  818. package/frontend/build/server/chunks/_page.svelte-CC27sZag.js.map +0 -17
  819. package/frontend/build/server/chunks/_page.svelte-CYkOPxn2.js.map +0 -17
  820. package/frontend/build/server/chunks/_page.svelte-CperUuP9.js +0 -564
  821. package/frontend/build/server/chunks/_page.svelte-CperUuP9.js.map +0 -17
  822. package/frontend/build/server/chunks/_page.svelte-CwrCf0C8.js +0 -65
  823. package/frontend/build/server/chunks/_page.svelte-CwrCf0C8.js.map +0 -17
  824. package/frontend/build/server/chunks/_page.svelte-DALHRFEX.js.map +0 -17
  825. package/frontend/build/server/chunks/_page.svelte-DNNyBx4y.js.map +0 -17
  826. package/frontend/build/server/chunks/_page.svelte-DqWsUJRp.js.map +0 -17
  827. package/frontend/build/server/chunks/_page.svelte-LcJmR5du.js.map +0 -17
  828. package/frontend/build/server/chunks/_page.svelte-gnktnXKP.js.map +0 -17
  829. package/frontend/build/server/chunks/runner-D18Ml_vF.js.map +0 -17
@@ -15,24 +15,193 @@
15
15
  * along with Plum. If not, see https://www.gnu.org/licenses/.
16
16
  */
17
17
 
18
+ /*
19
+ * This file is part of Plum.
20
+ * Licensed under the MIT License. See LICENSE file in the project root for details.
21
+ */
22
+
18
23
  import { X as store_get, a2 as copy_payload, a3 as assign_payload, $ as unsubscribe_stores, p as pop, a as push, Z as ensure_array_like, Y as head, _ as stringify } from "../../../chunks/index.js";
19
24
  import "../../../chunks/client.js";
20
- import { B as BROWSERS, A as API_BASE } from "../../../chunks/constants.js";
25
+ import { A as API_BASE, M as MAX_TEST_RETRIES, B as BROWSERS } from "../../../chunks/constants.js";
21
26
  import { a as auth } from "../../../chunks/auth.js";
22
27
  import { c as builtInEnabled } from "../../../chunks/runner.js";
23
28
  import { t as theme } from "../../../chunks/theme.js";
24
- import { B as Button } from "../../../chunks/Button.js";
25
- import { T as Toast } from "../../../chunks/Toast.js";
29
+ import { T as Toast, B as Button } from "../../../chunks/Toast.js";
26
30
  import { C as ConfirmModal } from "../../../chunks/ConfirmModal.js";
27
31
  import { B as Badge } from "../../../chunks/Badge.js";
28
- import { a as attr } from "../../../chunks/attributes.js";
32
+ import { S as SAVE_LABEL, a as CANCEL_LABEL, E as EDIT_LABEL, b as EMAIL_LABEL } from "../../../chunks/common.js";
29
33
  import { e as escape_html } from "../../../chunks/escaping.js";
34
+ import { a as attr } from "../../../chunks/attributes.js";
35
+ const PAGE_TITLE = "Settings — Plum";
36
+ const HEADING = "Settings";
37
+ const NAME_LABEL = "Name";
38
+ const PROJECT_LABEL = "Project";
39
+ const RUNNERS_LABEL = "Runners";
40
+ const REPOSITORY_NAV_LABEL = "Repository";
41
+ const REPOSITORY_HEADING = "Test Repository";
42
+ const INTEGRATIONS_LABEL = "Integrations";
43
+ const MCP_NAV_LABEL = "MCP";
44
+ const MCP_HEADING = "MCP Integration";
45
+ const ACCOUNT_LABEL = "Account";
46
+ const USERS_LABEL = "Users";
47
+ const BACKUP_LABEL = "Backup";
48
+ const PROJECT_DESC = "Identity information shown across the UI";
49
+ const RUNNERS_DESC = "Register self-hosted runner nodes to distribute tests across machines.";
50
+ const REPOSITORY_DESC = "Configure ID prefixes for test suites and cases.";
51
+ const INTEGRATIONS_DESC = "Connect Discord and Slack to receive run notifications with pass/fail results and report links.";
52
+ const MCP_DESC = "Generate an API key for any MCP-compatible AI client — Claude, Cursor, Windsurf, and others.";
53
+ const ACCOUNT_DESC = "Manage your profile, credentials and session.";
54
+ const USERS_DESC = "Add and manage who can access Plum.";
55
+ const BACKUP_DESC = "Export your test cases, schedules, users, and project settings. Automate uploads to any S3-compatible storage — Cloudflare R2, Backblaze B2, AWS S3, or MinIO.";
56
+ const PROJECT_NAME_LABEL = "Project Name";
57
+ const PROJECT_NAME_PLACEHOLDER = "My Test Suite";
58
+ const LOGO_URL_LABEL = "Logo URL";
59
+ const LOGO_URL_HINT = "Direct link to an image (PNG, SVG, JPG)";
60
+ const LOGO_URL_PLACEHOLDER = "https://example.com/logo.png";
61
+ const TIMEZONE_LABEL = "Timezone";
62
+ const TIMEZONE_HINT = "Used to schedule cron jobs and backups";
63
+ const RETRY_FAILED_TESTS_LABEL = "Retry failed tests";
64
+ const RETRY_FAILED_TESTS_HINT = "Automatically re-run failed scenarios up to this many times before finalizing the report. 0 disables retries.";
65
+ const DARK_MODE_LABEL = "Dark mode";
66
+ const DARK_MODE_DESC = "Switch between light and dark appearance";
67
+ const saveProjectLabel = (saving) => "Save Project";
68
+ const BUILTIN_RUNNER_TOGGLE_LABEL = "Built-in runner";
69
+ const BUILTIN_RUNNER_TOGGLE_DESC = "Use this server to run tests locally. Disable to route all runs to external nodes.";
70
+ const RUNNER_URL_LABEL = "URL";
71
+ const RUNNER_URL_HINT_PREFIX = "Use";
72
+ const RUNNER_URL_HINT_SUFFIX = "for local nodes";
73
+ const RUNNER_URL_PLACEHOLDER = "http://host.docker.internal:3002";
74
+ const TOKEN_LABEL = "Token";
75
+ const KEEP_TOKEN_PLACEHOLDER = "Leave blank to keep current token";
76
+ const BROWSER_LABEL = "Browser";
77
+ const RUNNER_NAME_PLACEHOLDER = "staging-node";
78
+ const RUNNER_UNREACHABLE_LABEL = "unreachable";
79
+ const RUNNER_PINGING_LABEL = "pinging…";
80
+ const REMOVE_LABEL = "Remove";
81
+ const OPEN_ADD_RUNNER_LABEL = "+ Add Runner";
82
+ const RESTART_LABEL = "Restart";
83
+ const RESTARTING_LABEL = "Restarting…";
84
+ const STOP_LABEL = "Stop";
85
+ const STOPPING_LABEL = "Stopping…";
86
+ const editRunnerSubmitLabel = (saving) => SAVE_LABEL;
87
+ const restartRunnerLabel = (restarting) => restarting ? RESTARTING_LABEL : RESTART_LABEL;
88
+ const stopRunnerLabel = (stopping) => stopping ? STOPPING_LABEL : STOP_LABEL;
89
+ const CASE_PREFIX_LABEL = "Test Case prefix";
90
+ const CASE_PREFIX_PLACEHOLDER = "TC";
91
+ const SUITE_PREFIX_LABEL = "Test Suite prefix";
92
+ const SUITE_PREFIX_PLACEHOLDER = "TS";
93
+ const EXAMPLES_LABEL = "Examples:";
94
+ const MIGRATE_IDS_HEADING = "Migrate IDs";
95
+ const MIGRATE_DESC_PREFIX = "Rename all existing test IDs to use a new prefix. Cucumber tags in code are";
96
+ const MIGRATE_DESC_STRONG = "not";
97
+ const MIGRATE_DESC_SUFFIX = "affected — you manage those separately.";
98
+ const NEW_CASE_PREFIX_LABEL = "New case prefix";
99
+ const NEW_SUITE_PREFIX_LABEL = "New suite prefix";
100
+ const savePrefixesLabel = (saving) => "Save Prefixes";
101
+ const runMigrationLabel = (migrating) => "Run Migration";
102
+ const WEBHOOKS_CARD_TITLE = "Webhooks";
103
+ const DISCORD_WEBHOOK_LABEL = "Discord Webhook URL";
104
+ const DISCORD_WEBHOOK_HINT = "Leave blank to disable Discord notifications";
105
+ const DISCORD_WEBHOOK_PLACEHOLDER = "https://discord.com/api/webhooks/…";
106
+ const SLACK_WEBHOOK_LABEL = "Slack Webhook URL";
107
+ const SLACK_WEBHOOK_HINT = "Leave blank to disable Slack notifications";
108
+ const SLACK_WEBHOOK_PLACEHOLDER = "https://hooks.slack.com/services/…";
109
+ const PUBLIC_URL_LABEL = "Public URL";
110
+ const PUBLIC_URL_HINT = "Base URL of this Plum instance, used to link reports in notifications";
111
+ const PUBLIC_URL_PLACEHOLDER = "https://plum.yourcompany.com";
112
+ const CI_TRIGGERS_CARD_TITLE = "CI / External Triggers";
113
+ 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";
114
+ const CI_DESC_PART2 = "with an";
115
+ const CI_DESC_PART3 = "header. Generate a key on the";
116
+ const MCP_TAB_LINK_LABEL = "MCP tab";
117
+ const CI_DESC_PART4 = "and store it as a repo secret — never commit it directly. Runs triggered this way show up in Reports tagged";
118
+ const EXTERNAL_BADGE_LABEL = "External";
119
+ const COPY_WORKFLOW_STEP_LABEL = "Copy Workflow Step";
120
+ const saveIntegrationsLabel = (saving) => "Save Integrations";
121
+ const copyCiSnippetLabel = (copied) => COPY_WORKFLOW_STEP_LABEL;
122
+ const API_KEY_CARD_TITLE = "API Key";
123
+ const NO_KEY_GENERATED_MESSAGE = "No key generated yet.";
124
+ const generateKeyLabel = (generating) => "Generate Key";
125
+ const PROFILE_CARD_TITLE = "Profile";
126
+ const CHANGE_PASSWORD_CARD_TITLE = "Change password";
127
+ const CURRENT_PASSWORD_LABEL = "Current password";
128
+ const NEW_PASSWORD_LABEL = "New password";
129
+ const CONFIRM_NEW_PASSWORD_LABEL = "Confirm new password";
130
+ const SIGN_OUT_LABEL = "Sign out";
131
+ const saveProfileLabel = (saving) => "Save Profile";
132
+ const changePasswordLabel = (saving) => "Change Password";
133
+ const REMOVE_USER_MODAL_TITLE = "Remove User";
134
+ const REMOVE_USER_LABEL = "Remove";
135
+ const ADD_USER_CARD_TITLE = "Add User";
136
+ const USER_NAME_PLACEHOLDER = "Jane Smith";
137
+ const USER_EMAIL_PLACEHOLDER = "jane@example.com";
138
+ const PASSWORD_LABEL = "Password";
139
+ const ROLE_LABEL = "Role";
140
+ const USER_ROLE_OPTION = "User";
141
+ const ADMIN_ROLE_OPTION = "Admin";
142
+ const REMOVE_USER_ICON_TITLE = "Remove user";
143
+ const YOU_CHIP_LABEL = "you";
144
+ const addUserLabel = (saving) => "Add User";
145
+ const MANUAL_BACKUP_CARD_TITLE = "Manual Backup";
146
+ const EXPORT_BLOCK_TITLE = "Export";
147
+ const EXPORT_BLOCK_DESC_PREFIX = "Downloads a";
148
+ const EXPORT_BLOCK_DESC_SUFFIX = "file with all cron jobs, test cases, test runs, users, runners, and project settings.";
149
+ const IMPORT_BLOCK_TITLE = "Import";
150
+ const IMPORT_BLOCK_DESC = "Restores all data from a previously exported backup. Existing records are overwritten. Cron jobs are re-scheduled after import.";
151
+ const CHOOSE_FILE_LABEL = "Choose file…";
152
+ const BACKUP_DISCLAIMER_PREFIX = "Reports are not included in backups. To back up report history, run";
153
+ const BACKUP_DISCLAIMER_SUFFIX = "directly on the PostgreSQL volume.";
154
+ const S3_STORAGE_CARD_TITLE = "S3 Storage";
155
+ const S3_STORAGE_DESC_PREFIX = "Works with any S3-compatible provider — Cloudflare R2, Backblaze B2, AWS S3, or MinIO. Leave";
156
+ const ENDPOINT_URL_LABEL = "Endpoint URL";
157
+ const S3_STORAGE_DESC_SUFFIX = "empty for AWS S3.";
158
+ const ENDPOINT_URL_HINT = "Leave blank for AWS S3";
159
+ const ENDPOINT_URL_PLACEHOLDER = "https://account.r2.cloudflarestorage.com";
160
+ const REGION_LABEL = "Region";
161
+ const REGION_HINT_PREFIX = "Use";
162
+ const REGION_HINT_SUFFIX = "for Cloudflare R2";
163
+ const REGION_PLACEHOLDER = "us-east-1";
164
+ const BUCKET_LABEL = "Bucket";
165
+ const BUCKET_PLACEHOLDER = "my-plum-backups";
166
+ const PATH_PREFIX_LABEL = "Path Prefix";
167
+ const PATH_PREFIX_HINT = "Optional folder inside the bucket";
168
+ const PATH_PREFIX_PLACEHOLDER = "plum/";
169
+ const ACCESS_KEY_LABEL = "Access Key ID";
170
+ const ACCESS_KEY_PLACEHOLDER = "AKIAIOSFODNN7EXAMPLE";
171
+ const SECRET_KEY_LABEL = "Secret Access Key";
172
+ const TEST_CONNECTION_LABEL = "Test Connection";
173
+ const SAVE_S3_CONFIG_LABEL = "Save S3 Config";
174
+ const SECRET_KEY_REQUIRED_HINT = "Required";
175
+ const SECRET_KEY_SET_PLACEHOLDER = "••••••••";
176
+ const SECRET_KEY_UNSET_PLACEHOLDER = "Enter secret key";
177
+ const SCHEDULED_BACKUP_CARD_TITLE = "Scheduled Backup";
178
+ const CONFIGURE_S3_FIRST_MESSAGE = "Configure S3 storage above to enable scheduled backups.";
179
+ const ENABLE_SCHEDULED_BACKUP_LABEL = "Enable scheduled backup";
180
+ const CRON_EXPRESSION_LABEL = "Cron Expression";
181
+ const CRON_HINT_PREFIX = "5-field cron — e.g.";
182
+ const CRON_HINT_SUFFIX = "= daily at 2 AM.";
183
+ const CRONTAB_LINK_LABEL = "Test at crontab.guru ↗";
184
+ const CRON_PLACEHOLDER = "0 2 * * *";
185
+ const UPLOAD_TO_S3_NOW_LABEL = "Upload to S3 Now";
186
+ const SAVE_SCHEDULE_LABEL = "Save Schedule";
187
+ const exportLabel = (exporting) => "Export JSON";
188
+ const importLabel = (importing) => "Import";
189
+ const secretKeyHint = (isSet) => SECRET_KEY_REQUIRED_HINT;
190
+ const secretKeyPlaceholder = (isSet) => isSet ? SECRET_KEY_SET_PLACEHOLDER : SECRET_KEY_UNSET_PLACEHOLDER;
191
+ const testConnectionLabel = (testing) => TEST_CONNECTION_LABEL;
192
+ const saveS3ConfigLabel = (saving) => SAVE_S3_CONFIG_LABEL;
193
+ const uploadS3NowLabel = (running) => UPLOAD_TO_S3_NOW_LABEL;
194
+ const saveScheduleLabel = (saving) => SAVE_SCHEDULE_LABEL;
30
195
  function _page($$payload, $$props) {
31
196
  push();
32
197
  var $$store_subs;
33
198
  let s3Configured, ciWorkflowSnippet, navItems;
34
199
  let section = typeof sessionStorage !== "undefined" && sessionStorage.getItem("plum:settings:section") || "project";
35
- let project = { name: "", logoUrl: "" };
200
+ let project = {
201
+ name: "",
202
+ logoUrl: "",
203
+ maxRetries: 0
204
+ };
36
205
  let projectSaving = false;
37
206
  let toast = null;
38
207
  const TIMEZONES = (() => {
@@ -80,10 +249,13 @@ function _page($$payload, $$props) {
80
249
  backupS3Prefix: ""
81
250
  };
82
251
  let backupConfigSaving = false;
252
+ let backupS3SecretKeySet = false;
83
253
  let backupTestingS3 = false;
84
254
  let backupRunningNow = false;
85
255
  let runners = [];
86
256
  let pingResults = {};
257
+ let stoppingId = null;
258
+ let restartingId = null;
87
259
  let editingId = null;
88
260
  let editForm = {
89
261
  name: "",
@@ -110,10 +282,7 @@ function _page($$payload, $$props) {
110
282
  plum: {
111
283
  command: "plum",
112
284
  args: ["mcp"],
113
- env: {
114
- PLUM_API_URL: "http://localhost:3001",
115
- PLUM_API_KEY: mcpKey
116
- }
285
+ env: { PLUM_API_URL: API_BASE, PLUM_API_KEY: mcpKey }
117
286
  }
118
287
  }
119
288
  },
@@ -129,48 +298,48 @@ function _page($$payload, $$props) {
129
298
  ` -d '{"tag": "@smoke", "baseUrl": "https://your-pr-preview-url"}'`
130
299
  ].join("\n");
131
300
  navItems = store_get($$store_subs ??= {}, "$auth", auth).user?.role === "admin" ? [
132
- { id: "project", label: "Project" },
133
- { id: "runners", label: "Runners" },
134
- { id: "repository", label: "Repository" },
135
- { id: "integrations", label: "Integrations" },
136
- { id: "mcp", label: "MCP" },
137
- { id: "account", label: "Account" },
138
- { id: "users", label: "Users" },
139
- { id: "backup", label: "Backup" }
140
- ] : [{ id: "account", label: "Account" }];
301
+ { id: "project", label: PROJECT_LABEL },
302
+ { id: "runners", label: RUNNERS_LABEL },
303
+ { id: "repository", label: REPOSITORY_NAV_LABEL },
304
+ { id: "integrations", label: INTEGRATIONS_LABEL },
305
+ { id: "mcp", label: MCP_NAV_LABEL },
306
+ { id: "account", label: ACCOUNT_LABEL },
307
+ { id: "users", label: USERS_LABEL },
308
+ { id: "backup", label: BACKUP_LABEL }
309
+ ] : [{ id: "account", label: ACCOUNT_LABEL }];
141
310
  let $$settled = true;
142
311
  let $$inner_payload;
143
312
  function $$render_inner($$payload2) {
144
313
  const each_array = ensure_array_like(navItems);
145
314
  head($$payload2, ($$payload3) => {
146
- $$payload3.title = `<title>Settings — Plum</title>`;
315
+ $$payload3.title = `<title>${escape_html(PAGE_TITLE)}</title>`;
147
316
  });
148
317
  Toast($$payload2, { toast });
149
- $$payload2.out += `<!----> <div class="page-header svelte-9l533f"><h1 class="svelte-9l533f">Settings</h1></div> <div class="settings-layout svelte-9l533f"><aside class="settings-sidebar svelte-9l533f"><nav class="svelte-9l533f"><!--[-->`;
318
+ $$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"><!--[-->`;
150
319
  for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
151
320
  let item = each_array[$$index];
152
- $$payload2.out += `<button${attr("class", `sidebar-item svelte-9l533f ${stringify([section === item.id ? "active" : ""].filter(Boolean).join(" "))}`)}>${escape_html(item.label)}</button>`;
321
+ $$payload2.out += `<button${attr("class", `sidebar-item svelte-bpb2i4 ${stringify([section === item.id ? "active" : ""].filter(Boolean).join(" "))}`)}>${escape_html(item.label)}</button>`;
153
322
  }
154
- $$payload2.out += `<!--]--></nav></aside> <div class="settings-content svelte-9l533f">`;
323
+ $$payload2.out += `<!--]--></nav></aside> <div class="settings-content svelte-bpb2i4">`;
155
324
  if (section === "project") {
156
325
  $$payload2.out += "<!--[-->";
157
326
  const each_array_1 = ensure_array_like(TIMEZONES);
158
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Project</h2> <p class="content-desc svelte-9l533f">Identity information shown across the UI</p></div> <div class="card settings-card svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="project-name">Project Name</label> <input id="project-name" type="text" class="field-input"${attr("value", project.name)} placeholder="My Test Suite"></div> <div class="field"><label class="field-label svelte-9l533f" for="project-logo"><span>Logo URL</span> <span class="field-hint svelte-9l533f">Direct link to an image (PNG, SVG, JPG)</span></label> <input id="project-logo" type="url" class="field-input"${attr("value", project.logoUrl)} placeholder="https://example.com/logo.png"></div> `;
327
+ $$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> `;
159
328
  {
160
329
  $$payload2.out += "<!--[!-->";
161
330
  }
162
- $$payload2.out += `<!--]--> <div class="field"><label class="field-label svelte-9l533f" for="project-timezone"><span>Timezone</span> <span class="field-hint svelte-9l533f">Used to schedule cron jobs and backups</span></label> <select id="project-timezone" class="field-input"><!--[-->`;
331
+ $$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"><!--[-->`;
163
332
  for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
164
333
  let tz = each_array_1[$$index_1];
165
334
  $$payload2.out += `<option${attr("value", tz)}>${escape_html(tz)}</option>`;
166
335
  }
167
- $$payload2.out += `<!--]--></select></div> <div class="toggle-row svelte-9l533f"><div class="toggle-info svelte-9l533f"><span class="toggle-label svelte-9l533f">Dark mode</span> <span class="toggle-desc svelte-9l533f">Switch between light and dark appearance</span></div> <button${attr("class", `toggle-switch svelte-9l533f ${stringify([
336
+ $$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([
168
337
  store_get($$store_subs ??= {}, "$theme", theme) === "dark" ? "on" : ""
169
- ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$theme", theme) === "dark")}><span class="toggle-thumb svelte-9l533f"></span></button></div> <div class="card-footer svelte-9l533f">`;
338
+ ].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">`;
170
339
  Button($$payload2, {
171
340
  disabled: projectSaving,
172
341
  children: ($$payload3) => {
173
- $$payload3.out += `<!---->${escape_html("Save Project")}`;
342
+ $$payload3.out += `<!---->${escape_html(saveProjectLabel())}`;
174
343
  },
175
344
  $$slots: { default: true }
176
345
  });
@@ -179,20 +348,20 @@ function _page($$payload, $$props) {
179
348
  $$payload2.out += "<!--[!-->";
180
349
  if (section === "runners") {
181
350
  $$payload2.out += "<!--[-->";
182
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Runners</h2> <p class="content-desc svelte-9l533f">Register self-hosted runner nodes to distribute tests across machines.</p></div> <div class="card settings-card svelte-9l533f"><div class="toggle-row svelte-9l533f"><div class="toggle-info svelte-9l533f"><span class="toggle-label svelte-9l533f">Built-in runner</span> <span class="toggle-desc svelte-9l533f">Use this server to run tests locally. Disable to route all runs to external nodes.</span></div> <button${attr("class", `toggle-switch svelte-9l533f ${stringify([
351
+ $$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([
183
352
  store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled) ? "on" : ""
184
- ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled))}><span class="toggle-thumb svelte-9l533f"></span></button></div> `;
353
+ ].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", store_get($$store_subs ??= {}, "$builtInEnabled", builtInEnabled))}><span class="toggle-thumb svelte-bpb2i4"></span></button></div> `;
185
354
  if (runners.length > 0) {
186
355
  $$payload2.out += "<!--[-->";
187
356
  const each_array_2 = ensure_array_like(runners);
188
- $$payload2.out += `<div class="runner-cards svelte-9l533f"><!--[-->`;
357
+ $$payload2.out += `<div class="runner-cards svelte-bpb2i4"><!--[-->`;
189
358
  for (let $$index_3 = 0, $$length = each_array_2.length; $$index_3 < $$length; $$index_3++) {
190
359
  let r = each_array_2[$$index_3];
191
360
  const ping = pingResults[r.id];
192
361
  if (editingId === r.id) {
193
362
  $$payload2.out += "<!--[-->";
194
363
  const each_array_3 = ensure_array_like(BROWSERS);
195
- $$payload2.out += `<div class="runner-card editing svelte-9l533f"><div class="runner-form-fields svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f"${attr("for", `edit-name-${stringify(r.id)}`)}>Name</label> <input${attr("id", `edit-name-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.name)} placeholder="staging-node"></div> <div class="field"><label class="field-label svelte-9l533f"${attr("for", `edit-url-${stringify(r.id)}`)}>URL <span class="field-hint svelte-9l533f">Use <code>host.docker.internal</code> for local nodes</span></label> <input${attr("id", `edit-url-${stringify(r.id)}`)} type="url" class="field-input"${attr("value", editForm.url)} placeholder="http://host.docker.internal:3002"></div> <div class="field"><label class="field-label svelte-9l533f"${attr("for", `edit-token-${stringify(r.id)}`)}>Token</label> <input${attr("id", `edit-token-${stringify(r.id)}`)} type="text" class="field-input"${attr("value", editForm.token)} placeholder="secret-token" spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-9l533f"${attr("for", `edit-browser-${stringify(r.id)}`)}>Browser</label> <select${attr("id", `edit-browser-${stringify(r.id)}`)} class="field-input"><!--[-->`;
364
+ $$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"><!--[-->`;
196
365
  for (let $$index_2 = 0, $$length2 = each_array_3.length; $$index_2 < $$length2; $$index_2++) {
197
366
  let b = each_array_3[$$index_2];
198
367
  $$payload2.out += `<option${attr("value", b.id)}>${escape_html(b.label)}</option>`;
@@ -201,11 +370,11 @@ function _page($$payload, $$props) {
201
370
  {
202
371
  $$payload2.out += "<!--[!-->";
203
372
  }
204
- $$payload2.out += `<!--]--> <div class="runner-form-actions svelte-9l533f">`;
373
+ $$payload2.out += `<!--]--> <div class="runner-form-actions svelte-bpb2i4">`;
205
374
  Button($$payload2, {
206
375
  disabled: editFormSaving,
207
376
  children: ($$payload3) => {
208
- $$payload3.out += `<!---->${escape_html("Save")}`;
377
+ $$payload3.out += `<!---->${escape_html(editRunnerSubmitLabel())}`;
209
378
  },
210
379
  $$slots: { default: true }
211
380
  });
@@ -214,40 +383,60 @@ function _page($$payload, $$props) {
214
383
  variant: "ghost",
215
384
  disabled: editFormSaving,
216
385
  children: ($$payload3) => {
217
- $$payload3.out += `<!---->Cancel`;
386
+ $$payload3.out += `<!---->${escape_html(CANCEL_LABEL)}`;
218
387
  },
219
388
  $$slots: { default: true }
220
389
  });
221
390
  $$payload2.out += `<!----></div></div>`;
222
391
  } else {
223
392
  $$payload2.out += "<!--[!-->";
224
- $$payload2.out += `<div class="runner-card svelte-9l533f"><div class="runner-card-header svelte-9l533f"><svg class="runner-card-icon svelte-9l533f" 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-9l533f">${escape_html(r.name)}</span> <span class="runner-browser-pill svelte-9l533f">${escape_html(r.browser)}</span> `;
393
+ $$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> `;
225
394
  if (ping && !ping.loading) {
226
395
  $$payload2.out += "<!--[-->";
227
396
  if (ping.ok) {
228
397
  $$payload2.out += "<!--[-->";
229
- $$payload2.out += `<span class="ping-badge ok svelte-9l533f">${escape_html(ping.latency)}ms</span>`;
398
+ $$payload2.out += `<span class="ping-badge ok svelte-bpb2i4">${escape_html(ping.latency)}ms</span>`;
230
399
  } else {
231
400
  $$payload2.out += "<!--[!-->";
232
- $$payload2.out += `<span class="ping-badge fail svelte-9l533f"${attr("title", ping.error)}>unreachable</span>`;
401
+ $$payload2.out += `<span class="ping-badge fail svelte-bpb2i4"${attr("title", ping.error)}>${escape_html(RUNNER_UNREACHABLE_LABEL)}</span>`;
233
402
  }
234
403
  $$payload2.out += `<!--]-->`;
235
404
  } else {
236
405
  $$payload2.out += "<!--[!-->";
237
406
  if (ping?.loading) {
238
407
  $$payload2.out += "<!--[-->";
239
- $$payload2.out += `<span class="ping-badge pinging svelte-9l533f">pinging…</span>`;
408
+ $$payload2.out += `<span class="ping-badge pinging svelte-bpb2i4">${escape_html(RUNNER_PINGING_LABEL)}</span>`;
240
409
  } else {
241
410
  $$payload2.out += "<!--[!-->";
242
411
  }
243
412
  $$payload2.out += `<!--]-->`;
244
413
  }
245
- $$payload2.out += `<!--]--></div> <p class="runner-card-url svelte-9l533f">${escape_html(r.url)}</p> <div class="runner-card-actions svelte-9l533f">`;
414
+ $$payload2.out += `<!--]--></div> <p class="runner-card-url svelte-bpb2i4">${escape_html(r.url)}</p> <div class="runner-card-actions svelte-bpb2i4">`;
415
+ Button($$payload2, {
416
+ variant: "ghost",
417
+ size: "sm",
418
+ children: ($$payload3) => {
419
+ $$payload3.out += `<!---->${escape_html(EDIT_LABEL)}`;
420
+ },
421
+ $$slots: { default: true }
422
+ });
423
+ $$payload2.out += `<!----> `;
424
+ Button($$payload2, {
425
+ variant: "ghost",
426
+ size: "sm",
427
+ disabled: restartingId === r.id,
428
+ children: ($$payload3) => {
429
+ $$payload3.out += `<!---->${escape_html(restartRunnerLabel(restartingId === r.id))}`;
430
+ },
431
+ $$slots: { default: true }
432
+ });
433
+ $$payload2.out += `<!----> `;
246
434
  Button($$payload2, {
247
435
  variant: "ghost",
248
436
  size: "sm",
437
+ disabled: stoppingId === r.id,
249
438
  children: ($$payload3) => {
250
- $$payload3.out += `<!---->Edit`;
439
+ $$payload3.out += `<!---->${escape_html(stopRunnerLabel(stoppingId === r.id))}`;
251
440
  },
252
441
  $$slots: { default: true }
253
442
  });
@@ -256,7 +445,7 @@ function _page($$payload, $$props) {
256
445
  variant: "danger",
257
446
  size: "sm",
258
447
  children: ($$payload3) => {
259
- $$payload3.out += `<!---->Remove`;
448
+ $$payload3.out += `<!---->${escape_html(REMOVE_LABEL)}`;
260
449
  },
261
450
  $$slots: { default: true }
262
451
  });
@@ -271,11 +460,11 @@ function _page($$payload, $$props) {
271
460
  $$payload2.out += `<!--]--> `;
272
461
  {
273
462
  $$payload2.out += "<!--[!-->";
274
- $$payload2.out += `<div class="card-footer svelte-9l533f">`;
463
+ $$payload2.out += `<div class="card-footer svelte-bpb2i4">`;
275
464
  Button($$payload2, {
276
465
  variant: "ghost",
277
466
  children: ($$payload3) => {
278
- $$payload3.out += `<!---->+ Add Runner`;
467
+ $$payload3.out += `<!---->${escape_html(OPEN_ADD_RUNNER_LABEL)}`;
279
468
  },
280
469
  $$slots: { default: true }
281
470
  });
@@ -286,20 +475,20 @@ function _page($$payload, $$props) {
286
475
  $$payload2.out += "<!--[!-->";
287
476
  if (section === "repository") {
288
477
  $$payload2.out += "<!--[-->";
289
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Test Repository</h2> <p class="content-desc svelte-9l533f">Configure ID prefixes for test suites and cases.</p></div> <div class="card settings-card svelte-9l533f"><div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="tc-prefix">Test Case prefix</label> <input id="tc-prefix" type="text" class="field-input mono svelte-9l533f"${attr("value", prefixes.testCasePrefix)} placeholder="TC" maxlength="10"></div> <div class="field"><label class="field-label svelte-9l533f" for="ts-prefix">Test Suite prefix</label> <input id="ts-prefix" type="text" class="field-input mono svelte-9l533f"${attr("value", prefixes.testSuitePrefix)} placeholder="TS" maxlength="10"></div></div> <p class="content-desc svelte-9l533f">Examples: <code class="code-sample svelte-9l533f">${escape_html(prefixes.testCasePrefix)}-001</code>, <code class="code-sample svelte-9l533f">${escape_html(prefixes.testSuitePrefix)}-001</code></p> <div class="card-footer svelte-9l533f">`;
478
+ $$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">`;
290
479
  Button($$payload2, {
291
480
  disabled: prefixesSaving,
292
481
  children: ($$payload3) => {
293
- $$payload3.out += `<!---->${escape_html("Save Prefixes")}`;
482
+ $$payload3.out += `<!---->${escape_html(savePrefixesLabel())}`;
294
483
  },
295
484
  $$slots: { default: true }
296
485
  });
297
- $$payload2.out += `<!----></div></div> <div class="content-header svelte-9l533f" style="margin-top: 1rem"><h2 class="svelte-9l533f">Migrate IDs</h2> <p class="content-desc svelte-9l533f">Rename all existing test IDs to use a new prefix. Cucumber tags in code are <strong>not</strong> affected — you manage those separately.</p></div> <div class="card settings-card svelte-9l533f"><div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="mig-tc">New case prefix</label> <input id="mig-tc" type="text" class="field-input mono svelte-9l533f"${attr("value", migrateForm.testCasePrefix)}${attr("placeholder", prefixes.testCasePrefix)} maxlength="10"></div> <div class="field"><label class="field-label svelte-9l533f" for="mig-ts">New suite prefix</label> <input id="mig-ts" type="text" class="field-input mono svelte-9l533f"${attr("value", migrateForm.testSuitePrefix)}${attr("placeholder", prefixes.testSuitePrefix)} maxlength="10"></div></div> <div class="card-footer svelte-9l533f">`;
486
+ $$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">`;
298
487
  Button($$payload2, {
299
488
  variant: "ghost",
300
489
  disabled: migrating,
301
490
  children: ($$payload3) => {
302
- $$payload3.out += `<!---->${escape_html("Run Migration")}`;
491
+ $$payload3.out += `<!---->${escape_html(runMigrationLabel())}`;
303
492
  },
304
493
  $$slots: { default: true }
305
494
  });
@@ -308,30 +497,27 @@ function _page($$payload, $$props) {
308
497
  $$payload2.out += "<!--[!-->";
309
498
  if (section === "integrations") {
310
499
  $$payload2.out += "<!--[-->";
311
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Integrations</h2> <p class="content-desc svelte-9l533f">Connect Discord and Slack to receive run notifications with pass/fail results and report
312
- links.</p></div> <div class="card settings-card svelte-9l533f"><p class="card-title">Webhooks</p> <div class="field"><label class="field-label svelte-9l533f" for="discord-url"><span>Discord Webhook URL</span> <span class="field-hint svelte-9l533f">Leave blank to disable Discord notifications</span></label> <input id="discord-url" type="url" class="field-input"${attr("value", integrations.discordWebhookUrl)} placeholder="https://discord.com/api/webhooks/…"></div> <div class="field"><label class="field-label svelte-9l533f" for="slack-url"><span>Slack Webhook URL</span> <span class="field-hint svelte-9l533f">Leave blank to disable Slack notifications</span></label> <input id="slack-url" type="url" class="field-input"${attr("value", integrations.slackWebhookUrl)} placeholder="https://hooks.slack.com/services/…"></div> <div class="field"><label class="field-label svelte-9l533f" for="public-url"><span>Public URL</span> <span class="field-hint svelte-9l533f">Base URL of this Plum instance, used to link reports in notifications</span></label> <input id="public-url" type="url" class="field-input"${attr("value", integrations.notifyPublicUrl)} placeholder="https://plum.yourcompany.com"></div> `;
500
+ $$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> `;
313
501
  Button($$payload2, {
314
502
  disabled: integrationsSaving,
315
503
  children: ($$payload3) => {
316
- $$payload3.out += `<!---->${escape_html("Save Integrations")}`;
504
+ $$payload3.out += `<!---->${escape_html(saveIntegrationsLabel())}`;
317
505
  },
318
506
  $$slots: { default: true }
319
507
  });
320
- $$payload2.out += `<!----></div> <div class="card settings-card svelte-9l533f"><p class="card-title">CI / External Triggers</p> <p class="content-desc svelte-9l533f">Trigger a Plum run from GitHub Actions (e.g. on a pull request, against its preview
321
- deployment) or any other external script by calling <code class="code-sample svelte-9l533f">POST ${escape_html(API_BASE)}/trigger</code> with an <code class="code-sample svelte-9l533f">Authorization: ApiKey …</code> header. Generate a key on the <button class="link-btn svelte-9l533f">MCP tab</button> and store it as a repo secret — never commit it directly. Runs triggered this way show up
322
- in Reports tagged `;
508
+ $$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)} `;
323
509
  Badge($$payload2, {
324
510
  variant: "external",
325
511
  children: ($$payload3) => {
326
- $$payload3.out += `<!---->External`;
512
+ $$payload3.out += `<!---->${escape_html(EXTERNAL_BADGE_LABEL)}`;
327
513
  },
328
514
  $$slots: { default: true }
329
515
  });
330
- $$payload2.out += `<!---->.</p> <pre class="mcp-snippet svelte-9l533f">${escape_html(ciWorkflowSnippet)}</pre> <div class="card-footer svelte-9l533f">`;
516
+ $$payload2.out += `<!---->.</p> <pre class="mcp-snippet svelte-bpb2i4">${escape_html(ciWorkflowSnippet)}</pre> <div class="card-footer svelte-bpb2i4">`;
331
517
  Button($$payload2, {
332
518
  variant: "ghost",
333
519
  children: ($$payload3) => {
334
- $$payload3.out += `<!---->${escape_html("Copy Workflow Step")}`;
520
+ $$payload3.out += `<!---->${escape_html(copyCiSnippetLabel())}`;
335
521
  },
336
522
  $$slots: { default: true }
337
523
  });
@@ -340,15 +526,14 @@ function _page($$payload, $$props) {
340
526
  $$payload2.out += "<!--[!-->";
341
527
  if (section === "mcp") {
342
528
  $$payload2.out += "<!--[-->";
343
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">MCP Integration</h2> <p class="content-desc svelte-9l533f">Generate an API key for any MCP-compatible AI client — Claude, Cursor, Windsurf, and
344
- others.</p></div> <div class="card settings-card svelte-9l533f"><p class="card-title">API Key</p> `;
529
+ $$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> `;
345
530
  {
346
531
  $$payload2.out += "<!--[-->";
347
- $$payload2.out += `<p class="content-desc svelte-9l533f">No key generated yet.</p> <div class="card-footer svelte-9l533f">`;
532
+ $$payload2.out += `<p class="content-desc svelte-bpb2i4">${escape_html(NO_KEY_GENERATED_MESSAGE)}</p> <div class="card-footer svelte-bpb2i4">`;
348
533
  Button($$payload2, {
349
534
  disabled: mcpGenerating,
350
535
  children: ($$payload3) => {
351
- $$payload3.out += `<!---->${escape_html("Generate Key")}`;
536
+ $$payload3.out += `<!---->${escape_html(generateKeyLabel())}`;
352
537
  },
353
538
  $$slots: { default: true }
354
539
  });
@@ -363,36 +548,36 @@ function _page($$payload, $$props) {
363
548
  $$payload2.out += "<!--[!-->";
364
549
  if (section === "account") {
365
550
  $$payload2.out += "<!--[-->";
366
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Account</h2> <p class="content-desc svelte-9l533f">Manage your profile, credentials and session.</p></div> <div class="card settings-card svelte-9l533f"><p class="card-title">Profile</p> <div class="field"><label class="field-label svelte-9l533f" for="profile-name">Name</label> <input id="profile-name" type="text" class="field-input"${attr("value", profileForm.name)}></div> <div class="field"><label class="field-label svelte-9l533f" for="profile-email">Email</label> <input id="profile-email" type="email" class="field-input"${attr("value", profileForm.email)}></div> `;
551
+ $$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> `;
367
552
  {
368
553
  $$payload2.out += "<!--[!-->";
369
554
  }
370
- $$payload2.out += `<!--]--> <div class="card-footer svelte-9l533f">`;
555
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
371
556
  Button($$payload2, {
372
557
  disabled: true,
373
558
  children: ($$payload3) => {
374
- $$payload3.out += `<!---->${escape_html("Save Profile")}`;
559
+ $$payload3.out += `<!---->${escape_html(saveProfileLabel())}`;
375
560
  },
376
561
  $$slots: { default: true }
377
562
  });
378
- $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-9l533f"><p class="card-title">Change password</p> <div class="field"><label class="field-label svelte-9l533f" for="pw-current">Current password</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-9l533f" for="pw-new">New password</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-9l533f" for="pw-confirm">Confirm new password</label> <input id="pw-confirm" type="password" class="field-input"${attr("value", pwForm.confirmPassword)} autocomplete="new-password"></div> `;
563
+ $$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> `;
379
564
  {
380
565
  $$payload2.out += "<!--[!-->";
381
566
  }
382
- $$payload2.out += `<!--]--> <div class="card-footer svelte-9l533f">`;
567
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
383
568
  Button($$payload2, {
384
569
  disabled: true,
385
570
  children: ($$payload3) => {
386
- $$payload3.out += `<!---->${escape_html("Change Password")}`;
571
+ $$payload3.out += `<!---->${escape_html(changePasswordLabel())}`;
387
572
  },
388
573
  $$slots: { default: true }
389
574
  });
390
- $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-9l533f"><div class="card-footer svelte-9l533f">`;
575
+ $$payload2.out += `<!----></div></div> <div class="card settings-card svelte-bpb2i4"><div class="card-footer svelte-bpb2i4">`;
391
576
  Button($$payload2, {
392
577
  variant: "danger",
393
578
  size: "sm",
394
579
  children: ($$payload3) => {
395
- $$payload3.out += `<!---->Sign out`;
580
+ $$payload3.out += `<!---->${escape_html(SIGN_OUT_LABEL)}`;
396
581
  },
397
582
  $$slots: { default: true }
398
583
  });
@@ -401,10 +586,10 @@ function _page($$payload, $$props) {
401
586
  $$payload2.out += "<!--[!-->";
402
587
  if (section === "users") {
403
588
  $$payload2.out += "<!--[-->";
404
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Users</h2> <p class="content-desc svelte-9l533f">Add and manage who can access Plum.</p></div> `;
589
+ $$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> `;
405
590
  ConfirmModal($$payload2, {
406
- title: "Remove User",
407
- confirmLabel: "Remove",
591
+ title: REMOVE_USER_MODAL_TITLE,
592
+ confirmLabel: REMOVE_USER_LABEL,
408
593
  get open() {
409
594
  return confirmDeleteUserOpen;
410
595
  },
@@ -420,15 +605,15 @@ function _page($$payload, $$props) {
420
605
  },
421
606
  $$slots: { default: true }
422
607
  });
423
- $$payload2.out += `<!----> <div class="card settings-card svelte-9l533f"><p class="card-title">Add User</p> <div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="u-name">Name</label> <input id="u-name" type="text" class="field-input"${attr("value", userForm.name)} placeholder="Jane Smith"></div> <div class="field"><label class="field-label svelte-9l533f" for="u-email">Email</label> <input id="u-email" type="email" class="field-input"${attr("value", userForm.email)} placeholder="jane@example.com"></div></div> <div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="u-pw">Password</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-9l533f" for="u-role">Role</label> <select id="u-role" class="field-input"><option value="user">User</option><option value="admin">Admin</option></select></div></div> `;
608
+ $$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> `;
424
609
  {
425
610
  $$payload2.out += "<!--[!-->";
426
611
  }
427
- $$payload2.out += `<!--]--> <div class="card-footer svelte-9l533f">`;
612
+ $$payload2.out += `<!--]--> <div class="card-footer svelte-bpb2i4">`;
428
613
  Button($$payload2, {
429
614
  disabled: userFormSaving,
430
615
  children: ($$payload3) => {
431
- $$payload3.out += `<!---->${escape_html("Add User")}`;
616
+ $$payload3.out += `<!---->${escape_html(addUserLabel())}`;
432
617
  },
433
618
  $$slots: { default: true }
434
619
  });
@@ -436,16 +621,16 @@ function _page($$payload, $$props) {
436
621
  if (allUsers.length > 0) {
437
622
  $$payload2.out += "<!--[-->";
438
623
  const each_array_5 = ensure_array_like(allUsers);
439
- $$payload2.out += `<div class="users-table svelte-9l533f"><!--[-->`;
624
+ $$payload2.out += `<div class="users-table svelte-bpb2i4"><!--[-->`;
440
625
  for (let $$index_5 = 0, $$length = each_array_5.length; $$index_5 < $$length; $$index_5++) {
441
626
  let u = each_array_5[$$index_5];
442
- $$payload2.out += `<div class="user-row svelte-9l533f"><div class="user-info svelte-9l533f"><span class="user-name svelte-9l533f">${escape_html(u.name)}</span> <span class="user-email svelte-9l533f">${escape_html(u.email)}</span></div> <span${attr("class", `role-chip ${stringify(u.role)} svelte-9l533f`)}>${escape_html(u.role)}</span> `;
627
+ $$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> `;
443
628
  if (u.id !== store_get($$store_subs ??= {}, "$auth", auth).user?.id) {
444
629
  $$payload2.out += "<!--[-->";
445
- $$payload2.out += `<button class="icon-btn danger svelte-9l533f" title="Remove user"><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>`;
630
+ $$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>`;
446
631
  } else {
447
632
  $$payload2.out += "<!--[!-->";
448
- $$payload2.out += `<span class="you-chip svelte-9l533f">you</span>`;
633
+ $$payload2.out += `<span class="you-chip svelte-bpb2i4">${escape_html(YOU_CHIP_LABEL)}</span>`;
449
634
  }
450
635
  $$payload2.out += `<!--]--></div>`;
451
636
  }
@@ -458,32 +643,28 @@ function _page($$payload, $$props) {
458
643
  $$payload2.out += "<!--[!-->";
459
644
  if (section === "backup") {
460
645
  $$payload2.out += "<!--[-->";
461
- $$payload2.out += `<div class="content-section svelte-9l533f"><div class="content-header svelte-9l533f"><h2 class="svelte-9l533f">Backup</h2> <p class="content-desc svelte-9l533f">Export your test cases, schedules, users, and project settings. Automate uploads to any
462
- S3-compatible storage — Cloudflare R2, Backblaze B2, AWS S3, or MinIO.</p></div> <div class="card settings-card svelte-9l533f"><p class="card-title">Manual Backup</p> <div class="backup-row svelte-9l533f"><div class="backup-block svelte-9l533f"><p class="backup-block-title svelte-9l533f">Export</p> <p class="backup-block-desc svelte-9l533f">Downloads a <code class="svelte-9l533f">.json</code> file with all cron jobs, test cases, test runs, users,
463
- runners, and project settings.</p> `;
646
+ $$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> `;
464
647
  Button($$payload2, {
465
648
  disabled: exporting,
466
649
  children: ($$payload3) => {
467
- $$payload3.out += `<!---->${escape_html("Export JSON")}`;
650
+ $$payload3.out += `<!---->${escape_html(exportLabel())}`;
468
651
  },
469
652
  $$slots: { default: true }
470
653
  });
471
- $$payload2.out += `<!----></div> <div class="backup-divider svelte-9l533f"></div> <div class="backup-block svelte-9l533f"><p class="backup-block-title svelte-9l533f">Import</p> <p class="backup-block-desc svelte-9l533f">Restores all data from a previously exported backup. Existing records are
472
- overwritten. Cron jobs are re-scheduled after import.</p> <div class="import-row svelte-9l533f"><label class="file-label svelte-9l533f"><input type="file" accept=".json" class="file-input-hidden svelte-9l533f"> <span class="file-btn svelte-9l533f">${escape_html("Choose file…")}</span></label> `;
654
+ $$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> `;
473
655
  Button($$payload2, {
474
656
  disabled: true,
475
657
  children: ($$payload3) => {
476
- $$payload3.out += `<!---->${escape_html("Import")}`;
658
+ $$payload3.out += `<!---->${escape_html(importLabel())}`;
477
659
  },
478
660
  $$slots: { default: true }
479
661
  });
480
- $$payload2.out += `<!----></div></div></div> <p class="backup-disclaimer svelte-9l533f">Reports are not included in backups. To back up report history, run <code>pg_dump</code> directly on the PostgreSQL volume.</p></div> <div class="card settings-card svelte-9l533f"><p class="card-title">S3 Storage</p> <p class="backup-block-desc svelte-9l533f" style="margin-bottom: 1.25rem;">Works with any S3-compatible provider Cloudflare R2, Backblaze B2, AWS S3, or MinIO.
481
- Leave <strong>Endpoint URL</strong> empty for AWS S3.</p> <div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="s3-endpoint"><span>Endpoint URL</span> <span class="field-hint svelte-9l533f">Leave blank for AWS S3</span></label> <input id="s3-endpoint" type="url" class="field-input"${attr("value", backupConfig.backupS3Endpoint)} placeholder="https://account.r2.cloudflarestorage.com"></div> <div class="field"><label class="field-label svelte-9l533f" for="s3-region"><span>Region</span> <span class="field-hint svelte-9l533f">Use <code>auto</code> for Cloudflare R2</span></label> <input id="s3-region" type="text" class="field-input"${attr("value", backupConfig.backupS3Region)} placeholder="us-east-1"></div></div> <div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="s3-bucket"><span>Bucket</span></label> <input id="s3-bucket" type="text" class="field-input"${attr("value", backupConfig.backupS3Bucket)} placeholder="my-plum-backups"></div> <div class="field"><label class="field-label svelte-9l533f" for="s3-prefix"><span>Path Prefix</span> <span class="field-hint svelte-9l533f">Optional folder inside the bucket</span></label> <input id="s3-prefix" type="text" class="field-input"${attr("value", backupConfig.backupS3Prefix)} placeholder="plum/"></div></div> <div class="field-row svelte-9l533f"><div class="field"><label class="field-label svelte-9l533f" for="s3-access-key"><span>Access Key ID</span></label> <input id="s3-access-key" type="text" class="field-input"${attr("value", backupConfig.backupS3AccessKey)} placeholder="AKIAIOSFODNN7EXAMPLE" autocomplete="off"></div> <div class="field"><label class="field-label svelte-9l533f" for="s3-secret-key"><span>Secret Access Key</span> <span class="field-hint svelte-9l533f">${escape_html("Required")}</span></label> <input id="s3-secret-key" type="password" class="field-input"${attr("value", backupConfig.backupS3SecretKey)}${attr("placeholder", "Enter secret key")} autocomplete="new-password"></div></div> <div class="backup-actions svelte-9l533f">`;
662
+ $$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">`;
482
663
  Button($$payload2, {
483
664
  variant: "ghost",
484
665
  disabled: backupTestingS3,
485
666
  children: ($$payload3) => {
486
- $$payload3.out += `<!---->${escape_html("Test Connection")}`;
667
+ $$payload3.out += `<!---->${escape_html(testConnectionLabel())}`;
487
668
  },
488
669
  $$slots: { default: true }
489
670
  });
@@ -491,7 +672,7 @@ function _page($$payload, $$props) {
491
672
  Button($$payload2, {
492
673
  disabled: backupConfigSaving,
493
674
  children: ($$payload3) => {
494
- $$payload3.out += `<!---->${escape_html("Save S3 Config")}`;
675
+ $$payload3.out += `<!---->${escape_html(saveS3ConfigLabel())}`;
495
676
  },
496
677
  $$slots: { default: true }
497
678
  });
@@ -499,22 +680,22 @@ function _page($$payload, $$props) {
499
680
  {
500
681
  $$payload2.out += "<!--[!-->";
501
682
  }
502
- $$payload2.out += `<!--]--></div> <div${attr("class", `card settings-card svelte-9l533f ${stringify([!s3Configured ? "card-disabled" : ""].filter(Boolean).join(" "))}`)}><p class="card-title">Scheduled Backup</p> `;
683
+ $$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> `;
503
684
  if (!s3Configured) {
504
685
  $$payload2.out += "<!--[-->";
505
- $$payload2.out += `<p class="backup-block-desc svelte-9l533f">Configure S3 storage above to enable scheduled backups.</p>`;
686
+ $$payload2.out += `<p class="backup-block-desc svelte-bpb2i4">${escape_html(CONFIGURE_S3_FIRST_MESSAGE)}</p>`;
506
687
  } else {
507
688
  $$payload2.out += "<!--[!-->";
508
- $$payload2.out += `<div class="field"><label class="field-label backup-toggle-label svelte-9l533f" for="backup-enabled"><span>Enable scheduled backup</span> <button id="backup-enabled"${attr("class", `toggle-btn svelte-9l533f ${stringify([""].filter(Boolean).join(" "))}`)} role="switch"${attr("aria-checked", backupConfig.backupEnabled)}><span class="toggle-thumb svelte-9l533f"></span></button></label></div> <div class="field"><label class="field-label svelte-9l533f" for="backup-cron"><span>Cron Expression</span> <span class="field-hint svelte-9l533f">5-field cron — e.g. <code>0 2 * * *</code> = daily at 2 AM. <a href="https://crontab.guru" target="_blank" rel="noopener noreferrer">Test at crontab.guru ↗</a></span></label> <input id="backup-cron" type="text" class="field-input field-input-mono svelte-9l533f"${attr("value", backupConfig.backupCron)} placeholder="0 2 * * *"></div> `;
689
+ $$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> `;
509
690
  {
510
691
  $$payload2.out += "<!--[!-->";
511
692
  }
512
- $$payload2.out += `<!--]--> <div class="backup-actions svelte-9l533f">`;
693
+ $$payload2.out += `<!--]--> <div class="backup-actions svelte-bpb2i4">`;
513
694
  Button($$payload2, {
514
695
  variant: "ghost",
515
696
  disabled: backupRunningNow,
516
697
  children: ($$payload3) => {
517
- $$payload3.out += `<!---->${escape_html("Upload to S3 Now")}`;
698
+ $$payload3.out += `<!---->${escape_html(uploadS3NowLabel())}`;
518
699
  },
519
700
  $$slots: { default: true }
520
701
  });
@@ -522,7 +703,7 @@ function _page($$payload, $$props) {
522
703
  Button($$payload2, {
523
704
  disabled: backupConfigSaving,
524
705
  children: ($$payload3) => {
525
- $$payload3.out += `<!---->${escape_html("Save Schedule")}`;
706
+ $$payload3.out += `<!---->${escape_html(saveScheduleLabel())}`;
526
707
  },
527
708
  $$slots: { default: true }
528
709
  });