plum-e2e 2.9.14 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (709) hide show
  1. package/CLAUDE.md +1 -1
  2. package/README.md +23 -20
  3. package/backend/_scaffold/utils/browser.ts +1 -13
  4. package/backend/_scaffold/utils/hooks.ts +1 -13
  5. package/backend/constants/socketEvents.js +8 -14
  6. package/backend/lib/serverBootstrap.js +4 -4
  7. package/backend/mcp/server.js +3 -3
  8. package/backend/prisma/migrations/20260829000000_add_run_queue/migration.sql +29 -0
  9. package/backend/prisma/schema.prisma +33 -13
  10. package/backend/routes/active-runs.routes.js +10 -6
  11. package/backend/routes/node.routes.js +7 -0
  12. package/backend/routes/trigger.routes.js +8 -5
  13. package/backend/server.js +5 -1
  14. package/backend/services/cronService.js +15 -443
  15. package/backend/services/nodeExecutionService.js +13 -1
  16. package/backend/services/runExecutorService.js +423 -0
  17. package/backend/services/runQueueService.js +276 -0
  18. package/backend/services/runnerService.js +22 -4
  19. package/backend/services/triggerService.js +13 -231
  20. package/backend/websockets/socketHandler.js +32 -590
  21. package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +35 -35
  22. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  23. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  24. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  25. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  26. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  27. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  28. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  29. package/frontend/.svelte-kit/adapter-node/chunks/BackLink.js +1 -1
  30. package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +1 -1
  31. package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +1 -1
  32. package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +1 -1
  33. package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +1 -1
  34. package/frontend/.svelte-kit/adapter-node/chunks/Toast.js +1 -1
  35. package/frontend/.svelte-kit/adapter-node/chunks/constants.js +6 -4
  36. package/frontend/.svelte-kit/adapter-node/chunks/format.js +3 -3
  37. package/frontend/.svelte-kit/adapter-node/chunks/index.js +4 -4
  38. package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
  39. package/frontend/.svelte-kit/adapter-node/chunks/reports.js +1 -1
  40. package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +38 -40
  41. package/frontend/.svelte-kit/adapter-node/chunks/repository.js +8 -0
  42. package/frontend/.svelte-kit/adapter-node/chunks/runner.js +10 -20
  43. package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +254 -0
  44. package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +1 -1
  45. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +29 -24
  46. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +23 -19
  47. package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +3 -3
  48. package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +173 -51
  49. package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +1 -1
  50. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +1 -1
  51. package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +63 -11
  52. package/frontend/.svelte-kit/adapter-node/manifest-full.js +10 -10
  53. package/frontend/.svelte-kit/adapter-node/manifest.js +10 -10
  54. package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
  55. package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
  56. package/frontend/.svelte-kit/adapter-node/nodes/10.js +1 -1
  57. package/frontend/.svelte-kit/adapter-node/nodes/11.js +1 -1
  58. package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -2
  59. package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
  60. package/frontend/.svelte-kit/adapter-node/nodes/3.js +3 -3
  61. package/frontend/.svelte-kit/adapter-node/nodes/4.js +3 -3
  62. package/frontend/.svelte-kit/adapter-node/nodes/5.js +3 -3
  63. package/frontend/.svelte-kit/adapter-node/nodes/6.js +3 -3
  64. package/frontend/.svelte-kit/adapter-node/nodes/7.js +1 -1
  65. package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -2
  66. package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
  67. package/frontend/.svelte-kit/ambient.d.ts +28 -28
  68. package/frontend/.svelte-kit/generated/client/app.js +4 -4
  69. package/frontend/.svelte-kit/generated/client/nodes/13.js +6 -0
  70. package/frontend/.svelte-kit/generated/client/nodes/3.js +1 -1
  71. package/frontend/.svelte-kit/generated/client/nodes/4.js +1 -1
  72. package/frontend/.svelte-kit/generated/client/nodes/5.js +1 -1
  73. package/frontend/.svelte-kit/generated/client/nodes/6.js +1 -1
  74. package/frontend/.svelte-kit/generated/client-optimized/app.js +4 -4
  75. package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +1 -1
  76. package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +1 -1
  77. package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +1 -1
  78. package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +1 -1
  79. package/frontend/.svelte-kit/generated/server/internal.js +1 -1
  80. package/frontend/.svelte-kit/output/client/.vite/manifest.json +413 -401
  81. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.CmJTG5mP.css +6 -0
  82. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.B9H_IpSU.css +6 -0
  83. package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
  84. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
  85. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.BN5XbLUX.css +6 -0
  86. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.COwSGmmy.css +6 -0
  87. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  88. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  89. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  90. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  91. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  92. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  93. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  94. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/2-KCkWZO.js +6 -0
  95. package/frontend/{build/client/_app/immutable/chunks/CNdcuGR0.js → .svelte-kit/output/client/_app/immutable/chunks/B00vxw57.js} +1 -1
  96. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B0_HKFXV.js +6 -0
  97. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{t-La0hgu.js → BAvTKHxT.js} +1 -1
  98. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BJ_ypKl3.js +6 -0
  99. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BbYY_TzB.js +6 -0
  100. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Beula-TH.js +11 -0
  101. package/frontend/{build/client/_app/immutable/chunks/CKDtmZUQ.js → .svelte-kit/output/client/_app/immutable/chunks/C00jnSU2.js} +1 -1
  102. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C2_rQ4aY.js +175 -0
  103. package/frontend/{build/client/_app/immutable/chunks/DCgHuuvs.js → .svelte-kit/output/client/_app/immutable/chunks/C7uEQ-LH.js} +1 -1
  104. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8S7qQjQ.js +6 -0
  105. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CzlPaHY9.js → CZWchtW8.js} +1 -1
  106. package/frontend/{build/client/_app/immutable/chunks/2zMvi6fR.js → .svelte-kit/output/client/_app/immutable/chunks/CboYYxrf.js} +1 -1
  107. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CeH-RgMb.js +6 -0
  108. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{CgnwuKKO.js → CegSvdD-.js} +1 -1
  109. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CfkUW1vA.js +6 -0
  110. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cfmt4_tJ.js +6 -0
  111. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cgw8TOOy.js +6 -0
  112. package/frontend/{build/client/_app/immutable/chunks/C1Vid6wz.js → .svelte-kit/output/client/_app/immutable/chunks/Ck6C3Fl0.js} +1 -1
  113. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CoTEzvLa.js +6 -0
  114. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DMZwI8Cj.js → DAmOMhaf.js} +1 -1
  115. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DB3YXVFP.js +6 -0
  116. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{w0D4Uzlq.js → DWzEJYIF.js} +1 -1
  117. package/frontend/{build/client/_app/immutable/chunks/CMEtqUfQ.js → .svelte-kit/output/client/_app/immutable/chunks/DgQy0SB2.js} +1 -1
  118. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{kkA1mrsH.js → DiVmSEJa.js} +2 -2
  119. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Dl-F6VCo.js +6 -0
  120. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DuAVKaL3.js +6 -0
  121. package/frontend/{build/client/_app/immutable/chunks/BmZ9upwL.js → .svelte-kit/output/client/_app/immutable/chunks/GDjpV3r7.js} +1 -1
  122. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/K1h4wprj.js +6 -0
  123. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DDZw0L0T.js → d2K3c8Kx.js} +1 -1
  124. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.DRjRA71t.js +7 -0
  125. package/frontend/{build/client/_app/immutable/entry/start.4qxHHAcl.js → .svelte-kit/output/client/_app/immutable/entry/start.BXOLyf9R.js} +1 -1
  126. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.CRb8Nyce.js +6 -0
  127. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.BI97il3r.js} +1 -1
  128. package/frontend/{build/client/_app/immutable/nodes/10.DEbnxfND.js → .svelte-kit/output/client/_app/immutable/nodes/10.kyazROhw.js} +1 -1
  129. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{11.BViaDK2m.js → 11.B3vMgT2v.js} +1 -1
  130. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.DkPcIrgW.js +6 -0
  131. package/frontend/{build/client/_app/immutable/nodes/2.BCPSg7H4.js → .svelte-kit/output/client/_app/immutable/nodes/2.Dr6yugXz.js} +1 -1
  132. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.DUiL7fb5.js +6 -0
  133. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{3.8BFAJoHT.js → 4.DDADylfF.js} +1 -1
  134. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.N4CeDeoD.js +6 -0
  135. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DWd93Bv5.js +10 -0
  136. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.c8d1cQQM.js +6 -0
  137. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.Cvd3MauU.js +9 -0
  138. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.BOK0GNF_.js} +1 -1
  139. package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
  140. package/frontend/.svelte-kit/output/server/.vite/manifest.json +35 -35
  141. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  142. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  143. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  144. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  145. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  146. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  147. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  148. package/frontend/.svelte-kit/output/server/chunks/BackLink.js +1 -1
  149. package/frontend/.svelte-kit/output/server/chunks/Badge.js +1 -1
  150. package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +1 -1
  151. package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +1 -1
  152. package/frontend/.svelte-kit/output/server/chunks/Modal.js +1 -1
  153. package/frontend/.svelte-kit/output/server/chunks/Toast.js +1 -1
  154. package/frontend/.svelte-kit/output/server/chunks/constants.js +6 -4
  155. package/frontend/.svelte-kit/output/server/chunks/format.js +3 -3
  156. package/frontend/.svelte-kit/output/server/chunks/index.js +4 -4
  157. package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
  158. package/frontend/.svelte-kit/output/server/chunks/reports.js +1 -1
  159. package/frontend/.svelte-kit/output/server/chunks/reports2.js +38 -40
  160. package/frontend/.svelte-kit/output/server/chunks/repository.js +8 -0
  161. package/frontend/.svelte-kit/output/server/chunks/runner.js +10 -20
  162. package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +254 -0
  163. package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +1 -1
  164. package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +29 -24
  165. package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +23 -19
  166. package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +3 -3
  167. package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +173 -51
  168. package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +1 -1
  169. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +1 -1
  170. package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +63 -11
  171. package/frontend/.svelte-kit/output/server/manifest-full.js +10 -10
  172. package/frontend/.svelte-kit/output/server/manifest.js +10 -10
  173. package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
  174. package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
  175. package/frontend/.svelte-kit/output/server/nodes/10.js +1 -1
  176. package/frontend/.svelte-kit/output/server/nodes/11.js +1 -1
  177. package/frontend/.svelte-kit/output/server/nodes/12.js +2 -2
  178. package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
  179. package/frontend/.svelte-kit/output/server/nodes/3.js +3 -3
  180. package/frontend/.svelte-kit/output/server/nodes/4.js +3 -3
  181. package/frontend/.svelte-kit/output/server/nodes/5.js +3 -3
  182. package/frontend/.svelte-kit/output/server/nodes/6.js +3 -3
  183. package/frontend/.svelte-kit/output/server/nodes/7.js +1 -1
  184. package/frontend/.svelte-kit/output/server/nodes/8.js +2 -2
  185. package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
  186. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css +6 -0
  187. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.br +0 -0
  188. package/frontend/build/client/_app/immutable/assets/0.CmJTG5mP.css.gz +0 -0
  189. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css +6 -0
  190. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.br +0 -0
  191. package/frontend/build/client/_app/immutable/assets/12.B9H_IpSU.css.gz +0 -0
  192. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
  193. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
  194. package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
  195. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
  196. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.br +0 -0
  197. package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.gz +0 -0
  198. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css +6 -0
  199. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.br +0 -0
  200. package/frontend/build/client/_app/immutable/assets/6.BN5XbLUX.css.gz +0 -0
  201. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css +6 -0
  202. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.br +0 -0
  203. package/frontend/build/client/_app/immutable/assets/8.COwSGmmy.css.gz +0 -0
  204. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
  205. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.br +0 -0
  206. package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.gz +0 -0
  207. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css +6 -0
  208. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.br +0 -0
  209. package/frontend/build/client/_app/immutable/assets/_layout.HkPnpRl9.css.gz +0 -0
  210. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css +6 -0
  211. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.br +0 -0
  212. package/frontend/build/client/_app/immutable/assets/_page.B9H_IpSU.css.gz +0 -0
  213. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
  214. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
  215. package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
  216. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css +6 -0
  217. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.br +0 -0
  218. package/frontend/build/client/_app/immutable/assets/_page.COwSGmmy.css.gz +0 -0
  219. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
  220. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.br +0 -0
  221. package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.gz +0 -0
  222. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css +6 -0
  223. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.br +0 -0
  224. package/frontend/build/client/_app/immutable/assets/_page.Dp6vaGRc.css.gz +0 -0
  225. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js +6 -0
  226. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.br +0 -0
  227. package/frontend/build/client/_app/immutable/chunks/2-KCkWZO.js.gz +0 -0
  228. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CNdcuGR0.js → build/client/_app/immutable/chunks/B00vxw57.js} +1 -1
  229. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.br +0 -0
  230. package/frontend/build/client/_app/immutable/chunks/B00vxw57.js.gz +0 -0
  231. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js +6 -0
  232. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.br +0 -0
  233. package/frontend/build/client/_app/immutable/chunks/B0_HKFXV.js.gz +0 -0
  234. package/frontend/build/client/_app/immutable/chunks/{t-La0hgu.js → BAvTKHxT.js} +1 -1
  235. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.br +0 -0
  236. package/frontend/build/client/_app/immutable/chunks/BAvTKHxT.js.gz +0 -0
  237. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js +6 -0
  238. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.br +0 -0
  239. package/frontend/build/client/_app/immutable/chunks/BJ_ypKl3.js.gz +0 -0
  240. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js +6 -0
  241. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.br +0 -0
  242. package/frontend/build/client/_app/immutable/chunks/BbYY_TzB.js.gz +0 -0
  243. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js +11 -0
  244. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.br +0 -0
  245. package/frontend/build/client/_app/immutable/chunks/Beula-TH.js.gz +0 -0
  246. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CKDtmZUQ.js → build/client/_app/immutable/chunks/C00jnSU2.js} +1 -1
  247. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.br +0 -0
  248. package/frontend/build/client/_app/immutable/chunks/C00jnSU2.js.gz +0 -0
  249. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js +175 -0
  250. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.br +0 -0
  251. package/frontend/build/client/_app/immutable/chunks/C2_rQ4aY.js.gz +0 -0
  252. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/DCgHuuvs.js → build/client/_app/immutable/chunks/C7uEQ-LH.js} +1 -1
  253. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.br +0 -0
  254. package/frontend/build/client/_app/immutable/chunks/C7uEQ-LH.js.gz +0 -0
  255. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js +6 -0
  256. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.br +0 -0
  257. package/frontend/build/client/_app/immutable/chunks/C8S7qQjQ.js.gz +0 -0
  258. package/frontend/build/client/_app/immutable/chunks/{CzlPaHY9.js → CZWchtW8.js} +1 -1
  259. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.br +0 -0
  260. package/frontend/build/client/_app/immutable/chunks/CZWchtW8.js.gz +0 -0
  261. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/2zMvi6fR.js → build/client/_app/immutable/chunks/CboYYxrf.js} +1 -1
  262. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.br +6 -0
  263. package/frontend/build/client/_app/immutable/chunks/CboYYxrf.js.gz +0 -0
  264. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js +6 -0
  265. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.br +0 -0
  266. package/frontend/build/client/_app/immutable/chunks/CeH-RgMb.js.gz +0 -0
  267. package/frontend/build/client/_app/immutable/chunks/{CgnwuKKO.js → CegSvdD-.js} +1 -1
  268. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.br +0 -0
  269. package/frontend/build/client/_app/immutable/chunks/CegSvdD-.js.gz +0 -0
  270. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js +6 -0
  271. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.br +0 -0
  272. package/frontend/build/client/_app/immutable/chunks/CfkUW1vA.js.gz +0 -0
  273. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js +6 -0
  274. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.br +0 -0
  275. package/frontend/build/client/_app/immutable/chunks/Cfmt4_tJ.js.gz +0 -0
  276. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js +6 -0
  277. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.br +0 -0
  278. package/frontend/build/client/_app/immutable/chunks/Cgw8TOOy.js.gz +0 -0
  279. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/C1Vid6wz.js → build/client/_app/immutable/chunks/Ck6C3Fl0.js} +1 -1
  280. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.br +0 -0
  281. package/frontend/build/client/_app/immutable/chunks/Ck6C3Fl0.js.gz +0 -0
  282. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js +6 -0
  283. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.br +0 -0
  284. package/frontend/build/client/_app/immutable/chunks/CoTEzvLa.js.gz +0 -0
  285. package/frontend/build/client/_app/immutable/chunks/{DMZwI8Cj.js → DAmOMhaf.js} +1 -1
  286. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.br +0 -0
  287. package/frontend/build/client/_app/immutable/chunks/DAmOMhaf.js.gz +0 -0
  288. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js +6 -0
  289. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.br +0 -0
  290. package/frontend/build/client/_app/immutable/chunks/DB3YXVFP.js.gz +0 -0
  291. package/frontend/build/client/_app/immutable/chunks/{w0D4Uzlq.js → DWzEJYIF.js} +1 -1
  292. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.br +7 -0
  293. package/frontend/build/client/_app/immutable/chunks/DWzEJYIF.js.gz +0 -0
  294. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CMEtqUfQ.js → build/client/_app/immutable/chunks/DgQy0SB2.js} +1 -1
  295. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.br +0 -0
  296. package/frontend/build/client/_app/immutable/chunks/DgQy0SB2.js.gz +0 -0
  297. package/frontend/build/client/_app/immutable/chunks/{kkA1mrsH.js → DiVmSEJa.js} +2 -2
  298. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.br +0 -0
  299. package/frontend/build/client/_app/immutable/chunks/DiVmSEJa.js.gz +0 -0
  300. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js +6 -0
  301. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.br +0 -0
  302. package/frontend/build/client/_app/immutable/chunks/Dl-F6VCo.js.gz +0 -0
  303. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js +6 -0
  304. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.br +0 -0
  305. package/frontend/build/client/_app/immutable/chunks/DuAVKaL3.js.gz +0 -0
  306. package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BmZ9upwL.js → build/client/_app/immutable/chunks/GDjpV3r7.js} +1 -1
  307. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.br +0 -0
  308. package/frontend/build/client/_app/immutable/chunks/GDjpV3r7.js.gz +0 -0
  309. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js +6 -0
  310. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.br +0 -0
  311. package/frontend/build/client/_app/immutable/chunks/K1h4wprj.js.gz +0 -0
  312. package/frontend/build/client/_app/immutable/chunks/{DDZw0L0T.js → d2K3c8Kx.js} +1 -1
  313. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.br +0 -0
  314. package/frontend/build/client/_app/immutable/chunks/d2K3c8Kx.js.gz +0 -0
  315. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js +7 -0
  316. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.br +0 -0
  317. package/frontend/build/client/_app/immutable/entry/app.DRjRA71t.js.gz +0 -0
  318. package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.4qxHHAcl.js → build/client/_app/immutable/entry/start.BXOLyf9R.js} +1 -1
  319. package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.br → start.BXOLyf9R.js.br} +1 -1
  320. package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.gz → start.BXOLyf9R.js.gz} +0 -0
  321. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js +6 -0
  322. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.br +0 -0
  323. package/frontend/build/client/_app/immutable/nodes/0.CRb8Nyce.js.gz +0 -0
  324. package/frontend/build/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.BI97il3r.js} +1 -1
  325. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.br +0 -0
  326. package/frontend/build/client/_app/immutable/nodes/1.BI97il3r.js.gz +0 -0
  327. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/10.DEbnxfND.js → build/client/_app/immutable/nodes/10.kyazROhw.js} +1 -1
  328. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.br +0 -0
  329. package/frontend/build/client/_app/immutable/nodes/10.kyazROhw.js.gz +0 -0
  330. package/frontend/build/client/_app/immutable/nodes/{11.BViaDK2m.js → 11.B3vMgT2v.js} +1 -1
  331. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.br +0 -0
  332. package/frontend/build/client/_app/immutable/nodes/11.B3vMgT2v.js.gz +0 -0
  333. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js +6 -0
  334. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.br +0 -0
  335. package/frontend/build/client/_app/immutable/nodes/12.DkPcIrgW.js.gz +0 -0
  336. package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/2.BCPSg7H4.js → build/client/_app/immutable/nodes/2.Dr6yugXz.js} +1 -1
  337. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.br +0 -0
  338. package/frontend/build/client/_app/immutable/nodes/2.Dr6yugXz.js.gz +0 -0
  339. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js +6 -0
  340. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.br +0 -0
  341. package/frontend/build/client/_app/immutable/nodes/3.DUiL7fb5.js.gz +0 -0
  342. package/frontend/build/client/_app/immutable/nodes/{3.8BFAJoHT.js → 4.DDADylfF.js} +1 -1
  343. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.br +0 -0
  344. package/frontend/build/client/_app/immutable/nodes/4.DDADylfF.js.gz +0 -0
  345. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js +6 -0
  346. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.br +0 -0
  347. package/frontend/build/client/_app/immutable/nodes/5.N4CeDeoD.js.gz +0 -0
  348. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js +10 -0
  349. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.br +0 -0
  350. package/frontend/build/client/_app/immutable/nodes/6.DWd93Bv5.js.gz +0 -0
  351. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js +6 -0
  352. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.br +0 -0
  353. package/frontend/build/client/_app/immutable/nodes/7.c8d1cQQM.js.gz +0 -0
  354. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js +9 -0
  355. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.br +0 -0
  356. package/frontend/build/client/_app/immutable/nodes/8.Cvd3MauU.js.gz +0 -0
  357. package/frontend/build/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.BOK0GNF_.js} +1 -1
  358. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.br +0 -0
  359. package/frontend/build/client/_app/immutable/nodes/9.BOK0GNF_.js.gz +0 -0
  360. package/frontend/build/client/_app/version.json +1 -1
  361. package/frontend/build/client/_app/version.json.br +0 -0
  362. package/frontend/build/client/_app/version.json.gz +0 -0
  363. package/frontend/build/server/chunks/0-_rljpEay.js +22 -0
  364. package/frontend/build/server/chunks/0-_rljpEay.js.map +5 -0
  365. package/frontend/build/server/chunks/{1-Kxn9d30Z.js → 1-B3HpigzL.js} +3 -3
  366. package/frontend/build/server/chunks/{1-Kxn9d30Z.js.map → 1-B3HpigzL.js.map} +1 -1
  367. package/frontend/build/server/chunks/10-BQBBYpxV.js +14 -0
  368. package/frontend/build/server/chunks/10-BQBBYpxV.js.map +5 -0
  369. package/frontend/build/server/chunks/11-10xw0TIP.js +14 -0
  370. package/frontend/build/server/chunks/11-10xw0TIP.js.map +5 -0
  371. package/frontend/build/server/chunks/12-CZ3_Uw3c.js +14 -0
  372. package/frontend/build/server/chunks/{12-De6Ol6pu.js.map → 12-CZ3_Uw3c.js.map} +1 -1
  373. package/frontend/build/server/chunks/2-DioMbKbC.js +14 -0
  374. package/frontend/build/server/chunks/{2-Dc_rKWoK.js.map → 2-DioMbKbC.js.map} +1 -1
  375. package/frontend/build/server/chunks/3-CgiZg_9v.js +14 -0
  376. package/frontend/build/server/chunks/3-CgiZg_9v.js.map +5 -0
  377. package/frontend/build/server/chunks/4-BM-49dbE.js +14 -0
  378. package/frontend/build/server/chunks/4-BM-49dbE.js.map +5 -0
  379. package/frontend/build/server/chunks/5-Brx_KOzy.js +14 -0
  380. package/frontend/build/server/chunks/5-Brx_KOzy.js.map +5 -0
  381. package/frontend/build/server/chunks/6-C5swINND.js +14 -0
  382. package/frontend/build/server/chunks/6-C5swINND.js.map +5 -0
  383. package/frontend/build/server/chunks/7-B8e4y3CB.js +14 -0
  384. package/frontend/build/server/chunks/{7-DiQJZEF_.js.map → 7-B8e4y3CB.js.map} +1 -1
  385. package/frontend/build/server/chunks/8-BZtkZMIZ.js +14 -0
  386. package/frontend/build/server/chunks/8-BZtkZMIZ.js.map +5 -0
  387. package/frontend/build/server/chunks/9-BMAKiAem.js +14 -0
  388. package/frontend/build/server/chunks/{9-DirZG_Lu.js.map → 9-BMAKiAem.js.map} +1 -1
  389. package/frontend/build/server/chunks/{BackLink-BJ8NaemM.js → BackLink-CMpNTYqE.js} +2 -2
  390. package/frontend/build/server/chunks/BackLink-CMpNTYqE.js.map +5 -0
  391. package/frontend/build/server/chunks/{Badge-44ZTDx0V.js → Badge-BTWnF9pA.js} +2 -2
  392. package/frontend/build/server/chunks/Badge-BTWnF9pA.js.map +5 -0
  393. package/frontend/build/server/chunks/{ConfirmModal-C0EAXcq_.js → ConfirmModal-CtGWHl0v.js} +3 -3
  394. package/frontend/build/server/chunks/ConfirmModal-CtGWHl0v.js.map +5 -0
  395. package/frontend/build/server/chunks/{EmptyState-BA_eXaeR.js → EmptyState-Zpm9tJe1.js} +2 -2
  396. package/frontend/build/server/chunks/EmptyState-Zpm9tJe1.js.map +5 -0
  397. package/frontend/build/server/chunks/{Modal-DChG187n.js → Modal-BJJMnfIg.js} +2 -2
  398. package/frontend/build/server/chunks/Modal-BJJMnfIg.js.map +5 -0
  399. package/frontend/build/server/chunks/{Toast-v-q4ZnYq.js → Toast-CHB87F8k.js} +2 -2
  400. package/frontend/build/server/chunks/Toast-CHB87F8k.js.map +5 -0
  401. package/frontend/build/server/chunks/{_layout.svelte-CHVI3Prt.js → _layout.svelte-C_6nsIpT.js} +7 -7
  402. package/frontend/build/server/chunks/{_layout.svelte-CHVI3Prt.js.map → _layout.svelte-C_6nsIpT.js.map} +1 -1
  403. package/frontend/build/server/chunks/{_page.svelte-1jo8MapI.js → _page.svelte-BNwU9zza.js} +11 -10
  404. package/frontend/build/server/chunks/_page.svelte-BNwU9zza.js.map +5 -0
  405. package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js → _page.svelte-Bamoq11m.js} +8 -8
  406. package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js.map → _page.svelte-Bamoq11m.js.map} +1 -1
  407. package/frontend/build/server/chunks/{_page.svelte-Kg69DDaM.js → _page.svelte-BrYksycU.js} +5 -5
  408. package/frontend/build/server/chunks/_page.svelte-BrYksycU.js.map +5 -0
  409. package/frontend/build/server/chunks/{_page.svelte-BuFusRK1.js → _page.svelte-CAlhaCzS.js} +12 -12
  410. package/frontend/build/server/chunks/_page.svelte-CAlhaCzS.js.map +5 -0
  411. package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js +62 -0
  412. package/frontend/build/server/chunks/_page.svelte-CTebwzwy.js.map +5 -0
  413. package/frontend/build/server/chunks/{_page.svelte-1as75nPc.js → _page.svelte-CbTrCeeX.js} +32 -28
  414. package/frontend/build/server/chunks/_page.svelte-CbTrCeeX.js.map +5 -0
  415. package/frontend/build/server/chunks/{_page.svelte-D3E6Eojd.js → _page.svelte-Cf6bI1Y2.js} +5 -5
  416. package/frontend/build/server/chunks/_page.svelte-Cf6bI1Y2.js.map +5 -0
  417. package/frontend/build/server/chunks/{_page.svelte-CWWeZuid.js → _page.svelte-CmJKt3-H.js} +71 -19
  418. package/frontend/build/server/chunks/_page.svelte-CmJKt3-H.js.map +5 -0
  419. package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js → _page.svelte-DHZhNTPg.js} +11 -10
  420. package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js.map → _page.svelte-DHZhNTPg.js.map} +1 -1
  421. package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js +257 -0
  422. package/frontend/build/server/chunks/_page.svelte-DObTHQe2.js.map +5 -0
  423. package/frontend/build/server/chunks/{_page.svelte-8gELc_B1.js → _page.svelte-ywHy9KCh.js} +182 -59
  424. package/frontend/build/server/chunks/_page.svelte-ywHy9KCh.js.map +5 -0
  425. package/frontend/build/server/chunks/{auth-Chw-wBpI.js → auth-DDPlushv.js} +2 -2
  426. package/frontend/build/server/chunks/{auth-Chw-wBpI.js.map → auth-DDPlushv.js.map} +1 -1
  427. package/frontend/build/server/chunks/{client-DEmxR_a-.js → client-CsTiGNZy.js} +2 -2
  428. package/frontend/build/server/chunks/{client-DEmxR_a-.js.map → client-CsTiGNZy.js.map} +1 -1
  429. package/frontend/build/server/chunks/{constants-CXTaQaB6.js → constants-BYVkTZ-O.js} +3 -2
  430. package/frontend/build/server/chunks/constants-BYVkTZ-O.js.map +5 -0
  431. package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js → error.svelte-BXr4lXlB.js} +3 -3
  432. package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js.map → error.svelte-BXr4lXlB.js.map} +1 -1
  433. package/frontend/build/server/chunks/{format-CiNRMfHu.js → format-2pqy61MU.js} +2 -2
  434. package/frontend/build/server/chunks/{format-CiNRMfHu.js.map → format-2pqy61MU.js.map} +1 -1
  435. package/frontend/build/server/chunks/{index-server-B3M9vyh2.js → index-server-53nOZg5X.js} +2 -2
  436. package/frontend/build/server/chunks/{index-server-B3M9vyh2.js.map → index-server-53nOZg5X.js.map} +1 -1
  437. package/frontend/build/server/chunks/{index2-5R1tbrep.js → index2-DGcbugKe.js} +2 -2
  438. package/frontend/build/server/chunks/{index2-5R1tbrep.js.map → index2-DGcbugKe.js.map} +1 -1
  439. package/frontend/build/server/chunks/{reports-D_ApeeNh.js → reports-WuXG6tj3.js} +2 -2
  440. package/frontend/build/server/chunks/{reports-D_ApeeNh.js.map → reports-WuXG6tj3.js.map} +1 -1
  441. package/frontend/build/server/chunks/{reports2-BtElN_53.js → reports2-CCpI0xkQ.js} +7 -8
  442. package/frontend/build/server/chunks/reports2-CCpI0xkQ.js.map +5 -0
  443. package/frontend/build/server/chunks/{repository-FYYV_vKE.js → repository-TYWcFuWP.js} +6 -2
  444. package/frontend/build/server/chunks/repository-TYWcFuWP.js.map +5 -0
  445. package/frontend/build/server/chunks/runner-D5yCWOsy.js +27 -0
  446. package/frontend/build/server/chunks/runner-D5yCWOsy.js.map +5 -0
  447. package/frontend/build/server/chunks/{stores-BLenR3c1.js → stores-C4ZkywTG.js} +3 -3
  448. package/frontend/build/server/chunks/{stores-BLenR3c1.js.map → stores-C4ZkywTG.js.map} +1 -1
  449. package/frontend/build/server/chunks/{theme-nAx-GvX_.js → theme-C81wSe5T.js} +2 -2
  450. package/frontend/build/server/chunks/{theme-nAx-GvX_.js.map → theme-C81wSe5T.js.map} +1 -1
  451. package/frontend/build/server/index.js +2 -2
  452. package/frontend/build/server/index.js.map +1 -1
  453. package/frontend/build/server/manifest.js +23 -23
  454. package/frontend/build/server/manifest.js.map +1 -1
  455. package/frontend/src/lib/components/layout/RunnerPanel.svelte +186 -266
  456. package/frontend/src/lib/copy/reports.js +9 -0
  457. package/frontend/src/lib/copy/runners.js +9 -6
  458. package/frontend/src/lib/socketEvents.js +3 -15
  459. package/frontend/src/lib/stores/runner.js +62 -46
  460. package/frontend/src/routes/{reports/live → live/[id]}/+page.svelte +112 -183
  461. package/frontend/src/routes/scheduled-tests/+page.svelte +2 -2
  462. package/package.json +1 -1
  463. package/backend/services/activeRunsService.js +0 -55
  464. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  465. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  466. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  467. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  468. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  469. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  470. package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  471. package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +0 -247
  472. package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
  473. package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
  474. package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
  475. package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
  476. package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
  477. package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
  478. package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  479. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  480. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  481. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  482. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  483. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  484. package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  485. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3InFPLvE.js +0 -6
  486. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js +0 -6
  487. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
  488. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKuh57WU.js +0 -6
  489. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
  490. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C8OURRSs.js +0 -6
  491. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
  492. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
  493. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
  494. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
  495. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +0 -6
  496. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DHM6H-es.js +0 -7
  497. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
  498. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
  499. package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +0 -11
  500. package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
  501. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
  502. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
  503. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
  504. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
  505. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
  506. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
  507. package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
  508. package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  509. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  510. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  511. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  512. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  513. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  514. package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  515. package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +0 -247
  516. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
  517. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
  518. package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.gz +0 -0
  519. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
  520. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
  521. package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
  522. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
  523. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
  524. package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
  525. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
  526. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
  527. package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
  528. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
  529. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
  530. package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
  531. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
  532. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
  533. package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
  534. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
  535. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
  536. package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.gz +0 -0
  537. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
  538. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
  539. package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
  540. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
  541. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
  542. package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.gz +0 -0
  543. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
  544. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
  545. package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
  546. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
  547. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
  548. package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
  549. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
  550. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
  551. package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
  552. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
  553. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
  554. package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
  555. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
  556. package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
  557. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js +0 -6
  558. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.br +0 -0
  559. package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.gz +0 -0
  560. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js +0 -6
  561. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
  562. package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
  563. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
  564. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.br +0 -0
  565. package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.gz +0 -0
  566. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js +0 -6
  567. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.br +0 -0
  568. package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.gz +0 -0
  569. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
  570. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.br +0 -0
  571. package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.gz +0 -0
  572. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.br +0 -0
  573. package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.gz +0 -0
  574. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
  575. package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
  576. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js +0 -6
  577. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
  578. package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
  579. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
  580. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.br +0 -0
  581. package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.gz +0 -0
  582. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
  583. package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
  584. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
  585. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
  586. package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
  587. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.br +0 -0
  588. package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.gz +0 -0
  589. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.br +0 -0
  590. package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
  591. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
  592. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.br +0 -0
  593. package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.gz +0 -0
  594. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
  595. package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
  596. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
  597. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.br +0 -0
  598. package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.gz +0 -0
  599. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +0 -6
  600. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +0 -5
  601. package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
  602. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.br +0 -0
  603. package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.gz +0 -0
  604. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.br +0 -0
  605. package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
  606. package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.br +0 -0
  607. package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.gz +0 -0
  608. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js +0 -7
  609. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.br +0 -0
  610. package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.gz +0 -0
  611. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.br +0 -0
  612. package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.gz +0 -0
  613. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
  614. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.br +0 -0
  615. package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.gz +0 -0
  616. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
  617. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.br +0 -0
  618. package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.gz +0 -0
  619. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +0 -11
  620. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
  621. package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
  622. package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.br +0 -0
  623. package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.gz +0 -0
  624. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
  625. package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
  626. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
  627. package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
  628. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
  629. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.br +0 -0
  630. package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.gz +0 -0
  631. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
  632. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.br +0 -0
  633. package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.gz +0 -0
  634. package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.br +0 -0
  635. package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.gz +0 -0
  636. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.br +0 -0
  637. package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.gz +0 -0
  638. package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.br +0 -0
  639. package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.gz +0 -0
  640. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
  641. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.br +0 -0
  642. package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.gz +0 -0
  643. package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.br +0 -0
  644. package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.gz +0 -0
  645. package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.br +0 -0
  646. package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.gz +0 -0
  647. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
  648. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.br +0 -0
  649. package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.gz +0 -0
  650. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
  651. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.br +0 -0
  652. package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.gz +0 -0
  653. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
  654. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.br +0 -0
  655. package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.gz +0 -0
  656. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
  657. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.br +0 -0
  658. package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.gz +0 -0
  659. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
  660. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.br +0 -0
  661. package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.gz +0 -0
  662. package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.br +0 -0
  663. package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.gz +0 -0
  664. package/frontend/build/server/chunks/0-D5YWFygh.js +0 -22
  665. package/frontend/build/server/chunks/0-D5YWFygh.js.map +0 -5
  666. package/frontend/build/server/chunks/10-l6_ikL_D.js +0 -14
  667. package/frontend/build/server/chunks/10-l6_ikL_D.js.map +0 -5
  668. package/frontend/build/server/chunks/11-CNLerze_.js +0 -14
  669. package/frontend/build/server/chunks/11-CNLerze_.js.map +0 -5
  670. package/frontend/build/server/chunks/12-De6Ol6pu.js +0 -14
  671. package/frontend/build/server/chunks/2-Dc_rKWoK.js +0 -14
  672. package/frontend/build/server/chunks/3-DrRqVrcX.js +0 -14
  673. package/frontend/build/server/chunks/3-DrRqVrcX.js.map +0 -5
  674. package/frontend/build/server/chunks/4-Bo04DC5Z.js +0 -14
  675. package/frontend/build/server/chunks/4-Bo04DC5Z.js.map +0 -5
  676. package/frontend/build/server/chunks/5-CFeE5dPZ.js +0 -14
  677. package/frontend/build/server/chunks/5-CFeE5dPZ.js.map +0 -5
  678. package/frontend/build/server/chunks/6-DZk37MZH.js +0 -14
  679. package/frontend/build/server/chunks/6-DZk37MZH.js.map +0 -5
  680. package/frontend/build/server/chunks/7-DiQJZEF_.js +0 -14
  681. package/frontend/build/server/chunks/8-CKPVFOqJ.js +0 -14
  682. package/frontend/build/server/chunks/8-CKPVFOqJ.js.map +0 -5
  683. package/frontend/build/server/chunks/9-DirZG_Lu.js +0 -14
  684. package/frontend/build/server/chunks/BackLink-BJ8NaemM.js.map +0 -5
  685. package/frontend/build/server/chunks/Badge-44ZTDx0V.js.map +0 -5
  686. package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js.map +0 -5
  687. package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js.map +0 -5
  688. package/frontend/build/server/chunks/Modal-DChG187n.js.map +0 -5
  689. package/frontend/build/server/chunks/Toast-v-q4ZnYq.js.map +0 -5
  690. package/frontend/build/server/chunks/_page.svelte-1as75nPc.js.map +0 -5
  691. package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js.map +0 -5
  692. package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js.map +0 -5
  693. package/frontend/build/server/chunks/_page.svelte-BuFusRK1.js.map +0 -5
  694. package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js +0 -250
  695. package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js.map +0 -5
  696. package/frontend/build/server/chunks/_page.svelte-CWWeZuid.js.map +0 -5
  697. package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js.map +0 -5
  698. package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js.map +0 -5
  699. package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js +0 -57
  700. package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js.map +0 -5
  701. package/frontend/build/server/chunks/constants-CXTaQaB6.js.map +0 -5
  702. package/frontend/build/server/chunks/reports2-BtElN_53.js.map +0 -5
  703. package/frontend/build/server/chunks/repository-FYYV_vKE.js.map +0 -5
  704. package/frontend/build/server/chunks/runner-DC7hXbnY.js +0 -37
  705. package/frontend/build/server/chunks/runner-DC7hXbnY.js.map +0 -5
  706. /package/frontend/.svelte-kit/output/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
  707. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
  708. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.br → 4.BR3wgXcZ.css.br} +0 -0
  709. /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.gz → 4.BR3wgXcZ.css.gz} +0 -0
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- :root{--bg: #fdfcfb;--bg-subtle: #f7f6f4;--bg-elevated: #ffffff;--border: #e9e5df;--text: #18160f;--text-muted: #9c9185;--accent: #5c1b87;--accent-soft: #f3eaff;--pass: #16a34a;--pass-soft: #dcfce7;--fail: #dc2626;--fail-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--node: #0284c7;--node-soft: #e0f2fe;--external: #0d9488;--external-soft: #ccfbf1;--terminal-bg: #0d0c08;--terminal-text: #d6d0c8;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration-base: .24s;--duration-slow: .4s;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 100px;--white: #ffffff;--bottom-bar-height: 55px}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}[data-theme=dark]{--bg: #101009;--bg-subtle: #1a1910;--bg-elevated: #201f14;--border: #2e2c1e;--text: #f0ede6;--text-muted: #706a5e;--accent: #d0a5f5;--accent-soft: #1b0d30;--pass: #22c55e;--pass-soft: #0d2118;--fail: #f87171;--fail-soft: #2d1010;--warn: #fbbf24;--warn-soft: #2a1f06;--node: #38bdf8;--node-soft: #082032;--external: #2dd4bf;--external-soft: #0f2e2b;--terminal-bg: #080807;--terminal-text: #cbc5bd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;font-size:1rem;line-height:1.65;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");background-size:200px 200px;color:var(--text);-webkit-font-smoothing:antialiased;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}h1{font-family:var(--font-display);font-weight:400;line-height:1.1;letter-spacing:-.015em;color:var(--text)}h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;color:var(--text)}a{color:inherit;text-decoration:none}button{font-family:var(--font-body)}.field{display:flex;flex-direction:column;gap:.375rem}.field-label{display:flex;justify-content:space-between;font-size:.8125rem;font-weight:400;color:var(--text-muted)}.field-hint{font-size:.75rem;color:var(--text-muted)}.field-input{width:100%;padding:.6rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;appearance:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.5rem 1rem;font-family:var(--font-body);font-weight:500;font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--text);margin-bottom:.25rem}.card-subtitle{font-size:.8125rem;color:var(--text-muted);margin-bottom:1.25rem}.alert{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;font-weight:400}.alert-success{background:var(--pass-soft);color:var(--pass)}.alert-error{background:var(--fail-soft);color:var(--fail)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.nav.svelte-10t98u4{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.inner.svelte-10t98u4{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-10t98u4{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-10t98u4{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-10t98u4{font-family:var(--font-body);font-weight:400;color:var(--text)}.project-card.svelte-10t98u4{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem .25rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-shrink:0}.project-logo.svelte-10t98u4{width:16px;height:16px;object-fit:contain;border-radius:2px;flex-shrink:0}.project-name.svelte-10t98u4{font-size:.78rem;font-weight:500;color:var(--text);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.links.svelte-10t98u4{display:flex;gap:.125rem;flex:1}.link.svelte-10t98u4{font-size:.875rem;font-weight:400;color:var(--text-muted);text-decoration:none;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast),background var(--duration-fast)}.link.svelte-10t98u4:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.nav-sep.svelte-10t98u4{display:block;width:1px;height:18px;background:var(--border);margin:0 .375rem;flex-shrink:0;align-self:center}.link.repo.svelte-10t98u4{border:1px solid var(--border);padding:.3rem .75rem}.link.repo.svelte-10t98u4:hover{border-color:var(--text-muted)}.link.repo.active.svelte-10t98u4{border-color:var(--accent)}.actions.svelte-10t98u4{display:flex;align-items:center;gap:.5rem;margin-left:auto}.nav-user.svelte-10t98u4{font-size:.8125rem;color:var(--text-muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.nav-user.svelte-10t98u4{display:none}}.settings-btn.svelte-10t98u4{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.settings-btn.svelte-10t98u4:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.settings-btn.active.svelte-10t98u4{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.hamburger.svelte-10t98u4{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:0 8px}.hamburger.svelte-10t98u4 span:where(.svelte-10t98u4){display:block;width:100%;height:1.5px;background:var(--text-muted);border-radius:2px;transform-origin:center;transition:transform var(--duration-base) var(--ease-out),opacity var(--duration-fast)}.hamburger.svelte-10t98u4 span.rotated:where(.svelte-10t98u4){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-10t98u4 span.hidden:where(.svelte-10t98u4){opacity:0}.hamburger.svelte-10t98u4 span.rotated-reverse:where(.svelte-10t98u4){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-10t98u4{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-10t98u4{color:var(--text-muted);text-decoration:none;font-size:.9375rem;font-weight:400;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.mobile-link.svelte-10t98u4:hover,.mobile-link.active.svelte-10t98u4{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.mobile-sep.svelte-10t98u4{border:none;border-top:1px solid var(--border);margin:.375rem .75rem}@media (max-width: 640px){.links.svelte-10t98u4{display:none}.hamburger.svelte-10t98u4{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.panel.svelte-h71cn6{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg-elevated);border-top:1px solid var(--border);box-shadow:0 -4px 32px #00000012}.scan-line.svelte-h71cn6{height:2px;background:var(--border);transition:background .5s ease;overflow:hidden;position:relative}.scan-line.scanning.svelte-h71cn6{background:color-mix(in srgb,var(--accent) 30%,var(--border))}.scan-line.scanning.svelte-h71cn6:after{content:"";position:absolute;inset:0;width:35%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:svelte-h71cn6-scan 1.8s ease-in-out infinite}.scan-line.line-pass.svelte-h71cn6{background:var(--pass)}.scan-line.line-fail.svelte-h71cn6{background:var(--fail)}@keyframes svelte-h71cn6-scan{0%{transform:translate(-100%)}to{transform:translate(400%)}}.bar.svelte-h71cn6{display:flex;align-items:center;height:52px;padding:0 1rem 0 1.25rem;gap:.75rem}.flex-gap.svelte-h71cn6{flex:1}.flex-gap-sm.svelte-h71cn6{width:.5rem}.bar-left.svelte-h71cn6{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.bar-status.svelte-h71cn6{display:flex;align-items:center;gap:.5rem}.status-dot.svelte-h71cn6{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background .4s ease}.status-dot.pulse.svelte-h71cn6{animation:dotPulse 1.6s ease-in-out infinite}.status-word.svelte-h71cn6{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;transition:color .4s ease;white-space:nowrap}.run-tag.svelte-h71cn6{font-size:.7rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.view-report-btn.svelte-h71cn6{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:500;color:var(--accent);text-decoration:none;white-space:nowrap;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.2rem .6rem;background:var(--accent-soft);transition:background var(--duration-fast),color var(--duration-fast)}.view-report-btn.svelte-h71cn6:hover{background:var(--accent);color:var(--white)}.bar-center.svelte-h71cn6{display:flex;align-items:center;gap:.625rem}.input-wrap.svelte-h71cn6{position:relative;display:flex;align-items:center}.input-icon.svelte-h71cn6{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none;opacity:.6}.tag-input.svelte-h71cn6{height:28px;padding:0 .75rem 0 2rem;font-size:.8rem;font-family:JetBrains Mono,monospace;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;transition:border-color var(--duration-fast);width:200px}.tag-input.svelte-h71cn6:focus{border-color:var(--accent)}.tag-input.svelte-h71cn6::placeholder{color:var(--text-muted);opacity:.45}.tag-input.svelte-h71cn6:disabled{opacity:.45}.ctrl-divider.svelte-h71cn6{width:1px;height:24px;background:var(--border);flex-shrink:0}.ctrl-group.svelte-h71cn6{display:flex;flex-direction:column;gap:2px}.ctrl-label.svelte-h71cn6{font-size:.555rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);opacity:.65;line-height:1}.stepper.svelte-h71cn6{display:flex;align-items:center;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.step-btn.svelte-h71cn6{width:20px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-weight:400;line-height:1;transition:color var(--duration-fast),background var(--duration-fast)}.step-btn.svelte-h71cn6:hover:not(:disabled){color:var(--text);background:var(--bg-elevated)}.step-btn.svelte-h71cn6:disabled{opacity:.3;cursor:default}.step-val.svelte-h71cn6{min-width:20px;text-align:center;font-size:.78rem;font-weight:500;color:var(--text);font-family:JetBrains Mono,monospace;line-height:24px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.dropdown-wrap.svelte-h71cn6{position:relative}.dropdown-trigger.svelte-h71cn6{display:inline-flex;align-items:center;gap:.3rem;height:24px;padding:0 .5rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.78rem;color:var(--text);cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast),color var(--duration-fast);white-space:nowrap}.dropdown-trigger.svelte-h71cn6:hover:not(:disabled){border-color:color-mix(in srgb,var(--text-muted) 50%,var(--border))}.dropdown-trigger.open.svelte-h71cn6{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropdown-trigger.has-remote.svelte-h71cn6{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dropdown-trigger.svelte-h71cn6:disabled{opacity:.45;cursor:default}.trigger-chevron.svelte-h71cn6{transition:transform .18s var(--ease-out);flex-shrink:0}.trigger-chevron.open.svelte-h71cn6{transform:rotate(180deg)}.dropdown-menu.svelte-h71cn6{position:absolute;bottom:calc(100% + 8px);left:0;min-width:130px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000021;padding:.3rem;z-index:300;display:flex;flex-direction:column;gap:1px}.dropdown-item.svelte-h71cn6{display:flex;align-items:center;gap:.5rem;width:100%;padding:.35rem .5rem;border:none;border-radius:var(--radius-sm);background:transparent;font-family:var(--font-body);font-size:.8125rem;color:var(--text);cursor:pointer;text-align:left;transition:background var(--duration-fast)}.dropdown-item.svelte-h71cn6:hover{background:var(--bg-subtle)}.dropdown-item.active.svelte-h71cn6{color:var(--accent)}.runners-menu.svelte-h71cn6{min-width:160px}.runner-option.svelte-h71cn6{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;color:var(--text);transition:background var(--duration-fast)}.runner-option.svelte-h71cn6:hover{background:var(--bg-subtle)}.runner-option.svelte-h71cn6 input[type=checkbox]:where(.svelte-h71cn6){accent-color:var(--accent);width:13px;height:13px;cursor:pointer;flex-shrink:0}.runner-dot.svelte-h71cn6{width:6px;height:6px;border-radius:50%;flex-shrink:0}.runner-dot.built-in.svelte-h71cn6{background:var(--accent)}.runner-dot.remote.svelte-h71cn6{background:var(--pass)}.run-btn.svelte-h71cn6{display:inline-flex;align-items:center;gap:.4rem;height:30px;padding:0 .875rem;background:var(--accent);color:var(--white);border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.8125rem;font-weight:500;cursor:pointer;transition:opacity var(--duration-fast);flex-shrink:0}.run-btn.svelte-h71cn6:hover:not(:disabled){opacity:.88}.run-btn.svelte-h71cn6:disabled,.run-btn.is-running.svelte-h71cn6{opacity:.6;cursor:default}.run-spinner.svelte-h71cn6{width:10px;height:10px;border:1.5px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:svelte-h71cn6-spin .65s linear infinite;flex-shrink:0}@keyframes svelte-h71cn6-spin{to{transform:rotate(360deg)}}.notify-toggles.svelte-h71cn6{display:flex;gap:.25rem}.notify-btn.svelte-h71cn6{height:26px;padding:0 .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:.75rem;font-family:inherit;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.notify-btn.svelte-h71cn6:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.notify-btn.active.svelte-h71cn6{background:var(--accent);border-color:var(--accent);color:var(--white)}.notify-btn.svelte-h71cn6:disabled{opacity:.4;cursor:default}.expand-btn.svelte-h71cn6{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast);flex-shrink:0}.expand-btn.svelte-h71cn6:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.expand-btn.svelte-h71cn6 svg:where(.svelte-h71cn6){transition:transform .2s var(--ease-out)}.expand-btn.svelte-h71cn6 svg.flipped:where(.svelte-h71cn6){transform:rotate(180deg)}.body.svelte-h71cn6{border-top:1px solid var(--border);padding:.625rem 1.25rem;display:flex;flex-direction:column;gap:.375rem;min-height:72px}.run-card.svelte-h71cn6{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);text-decoration:none;color:inherit;transition:background var(--duration-fast),border-color var(--duration-fast)}a.run-card.svelte-h71cn6:hover{background:var(--bg-elevated);border-color:var(--accent)}.run-card.active-run.svelte-h71cn6{border-left:3px solid var(--accent)}.run-card.cron-run.svelte-h71cn6{border-left:3px solid var(--warn)}.run-card-dot.svelte-h71cn6{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pulse-accent.svelte-h71cn6{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.pulse-pass.svelte-h71cn6{background:var(--pass);animation:dotPulse 1.6s ease-in-out infinite}.run-card-info.svelte-h71cn6{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.run-card-label.svelte-h71cn6{font-size:.8125rem;font-weight:500;color:var(--text)}.run-card-meta.svelte-h71cn6{font-size:.72rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-dot.svelte-h71cn6{opacity:.4;margin:0 .15rem}.run-card-arrow.svelte-h71cn6{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}a.run-card.svelte-h71cn6:hover .run-card-arrow:where(.svelte-h71cn6){transform:translate(3px);color:var(--accent)}.empty-runs.svelte-h71cn6{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 0;color:var(--text-muted);font-size:.8125rem}.empty-icon.svelte-h71cn6{opacity:.4}.run-chip.svelte-h71cn6{display:inline-flex;align-items:center;gap:.4rem;height:28px;padding:0 .5rem 0 .625rem;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:.78rem;white-space:nowrap;max-width:200px}.run-chip-title.svelte-h71cn6{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.run-chip-count.svelte-h71cn6{font-size:.65rem;font-weight:600;letter-spacing:.04em;opacity:.75;white-space:nowrap;flex-shrink:0}.run-chip-count.none.svelte-h71cn6{color:var(--fail);opacity:1}.run-chip-spinner.svelte-h71cn6{width:9px;height:9px;border:1.5px solid color-mix(in srgb,var(--accent) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:svelte-h71cn6-spin .65s linear infinite;flex-shrink:0}.run-chip-clear.svelte-h71cn6{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:transparent;color:var(--accent);cursor:pointer;border-radius:2px;opacity:.7;padding:0;flex-shrink:0;transition:opacity var(--duration-fast)}.run-chip-clear.svelte-h71cn6:hover{opacity:1}.run-pick-menu.svelte-h71cn6{min-width:180px;max-height:240px;overflow-y:auto}.dropdown-divider.svelte-h71cn6{height:1px;background:var(--border);margin:.25rem 0}.dropdown-empty.svelte-h71cn6{font-size:.8125rem;color:var(--text-muted);padding:.35rem .5rem;text-align:center;opacity:.7}.boot-loading.svelte-3qbr79{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:.875rem}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-wkly2m{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-wkly2m{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-wkly2m{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-wkly2m{color:var(--text-muted);font-size:.875rem}.rate-display.svelte-wkly2m{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem}.rate-number.svelte-wkly2m{font-family:var(--font-display);font-size:2.75rem;line-height:1;font-weight:400}.rate-number.pass.svelte-wkly2m{color:var(--pass)}.rate-number.warn.svelte-wkly2m{color:var(--warn)}.rate-number.fail.svelte-wkly2m{color:var(--fail)}.rate-label.svelte-wkly2m{font-size:.75rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.stats-bar.svelte-wkly2m{margin-bottom:1rem}.pass-bar-track.svelte-wkly2m{height:3px;background:var(--fail-soft);border-radius:var(--radius-pill);overflow:hidden;margin-bottom:.5rem}.pass-bar-fill.svelte-wkly2m{height:100%;background:var(--pass);border-radius:var(--radius-pill);transition:width .9s var(--ease-out) .1s}.bar-legend.svelte-wkly2m{display:flex;gap:1rem}.legend-pass.svelte-wkly2m{font-size:.75rem;color:var(--pass);font-weight:500}.legend-fail.svelte-wkly2m{font-size:.75rem;color:var(--fail);font-weight:500}.trend-row.svelte-wkly2m{display:flex;align-items:center;gap:.75rem}.trend-label.svelte-wkly2m{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.trend-dots.svelte-wkly2m{display:flex;align-items:center;gap:5px}.trend-dot.svelte-wkly2m{width:9px;height:9px;border-radius:50%;transition:transform var(--duration-fast);animation:fadeUp .3s var(--ease-out) both}.trend-dot.svelte-wkly2m:hover{transform:scale(1.4)}.trend-dot.pass.svelte-wkly2m{background:var(--pass)}.trend-dot.fail.svelte-wkly2m{background:var(--fail)}.trend-hint.svelte-wkly2m{font-size:.68rem;color:var(--text-muted);opacity:.6}.list-header.svelte-wkly2m{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem .375rem}.select-all-wrap.svelte-wkly2m{display:flex;align-items:center;cursor:pointer;padding:.25rem}.btn-delete-selected.svelte-wkly2m{height:30px;padding:0 .75rem;font-size:.78rem;font-family:inherit;font-weight:500;color:var(--fail);background:var(--fail-soft, rgba(239, 68, 68, .08));border:1px solid var(--fail);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast),opacity var(--duration-fast)}.btn-delete-selected.svelte-wkly2m:hover{background:var(--fail);color:var(--white)}.report-list.svelte-wkly2m{display:flex;flex-direction:column;gap:.5rem}.report-row.svelte-wkly2m{display:flex;align-items:center;gap:.5rem;animation:fadeUp .32s var(--ease-out) both}.row-check-wrap.svelte-wkly2m{flex-shrink:0;display:flex;align-items:center;cursor:pointer;padding:.25rem}.checkbox.svelte-wkly2m{width:15px;height:15px;accent-color:var(--accent, #7c3aed);cursor:pointer}.report-item.svelte-wkly2m{flex:1;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);text-decoration:none;color:inherit;border-left-width:3px;transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast);min-width:0}.report-item.svelte-wkly2m:hover{background:var(--bg-subtle);transform:translate(2px);box-shadow:0 2px 12px #0000000a}.report-item.is-pass.svelte-wkly2m{border-left-color:var(--pass)}.report-item.is-fail.svelte-wkly2m{border-left-color:var(--fail)}.report-row.is-selected.svelte-wkly2m .report-item:where(.svelte-wkly2m){background:var(--bg-subtle);border-color:var(--accent, #7c3aed)}.item-left.svelte-wkly2m{display:flex;align-items:center;gap:.875rem;min-width:0}.status-mark.svelte-wkly2m{font-size:.875rem;font-weight:600;flex-shrink:0;width:20px;text-align:center}.status-mark.pass.svelte-wkly2m{color:var(--pass)}.status-mark.fail.svelte-wkly2m{color:var(--fail)}.item-meta.svelte-wkly2m{display:flex;align-items:center;gap:.625rem;min-width:0}.item-tags.svelte-wkly2m{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.item-badges.svelte-wkly2m{flex-shrink:0}.item-right.svelte-wkly2m{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.item-date.svelte-wkly2m{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.item-arrow.svelte-wkly2m{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.report-item.svelte-wkly2m:hover .item-arrow:where(.svelte-wkly2m){transform:translate(3px);color:var(--text)}.row-delete-btn.svelte-wkly2m{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;opacity:0;transition:opacity var(--duration-fast),color var(--duration-fast),background var(--duration-fast)}.report-row.svelte-wkly2m:hover .row-delete-btn:where(.svelte-wkly2m){opacity:1}.row-delete-btn.svelte-wkly2m:hover{color:var(--fail);background:var(--fail-soft, rgba(239, 68, 68, .08))}.pagination-wrap.svelte-wkly2m{margin-top:1.25rem}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .status-dot.svelte-eg9xrn{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.pass.svelte-eg9xrn{background:var(--pass)}.fail.svelte-eg9xrn{background:var(--fail)}.skip.svelte-eg9xrn{background:var(--text-muted)}.tag-chip.svelte-foe7v9{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);white-space:nowrap}.kw.svelte-3mvi7i{font-size:.72rem;font-weight:500;letter-spacing:.04em;flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-family:JetBrains Mono,monospace}.kw-given.svelte-3mvi7i{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-3mvi7i{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-3mvi7i{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-3mvi7i{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-status-icon.svelte-9zpq1y{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;text-align:center}.icon-pass.svelte-9zpq1y{color:var(--pass)}.icon-fail.svelte-9zpq1y{color:var(--fail)}.icon-skip.svelte-9zpq1y{color:var(--text-muted)}.report-header.svelte-1cdcqpr{border-radius:var(--radius-lg);border:1px solid var(--border);border-top-width:3px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-1cdcqpr{border-top-color:var(--pass)}.report-header.fail.svelte-1cdcqpr{border-top-color:var(--fail)}.header-main.svelte-1cdcqpr{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-1cdcqpr{display:flex;align-items:center;gap:1rem}.status-icon-wrap.svelte-1cdcqpr{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.status-icon-wrap.pass-bg.svelte-1cdcqpr{background:var(--pass-soft);color:var(--pass)}.status-icon-wrap.fail-bg.svelte-1cdcqpr{background:var(--fail-soft);color:var(--fail)}.h1-row.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;margin-bottom:.2rem}.run-name-badge.svelte-1cdcqpr{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.25rem .7rem;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis;margin-top:3px}h1.svelte-1cdcqpr{font-size:2rem;margin-bottom:0}.header-meta.svelte-1cdcqpr{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.meta-sep.svelte-1cdcqpr{opacity:.4}.mono.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.78rem}.browser-pill.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.3rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:500;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem}.header-stats.svelte-1cdcqpr{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-1cdcqpr{display:flex;flex-direction:column;align-items:center;gap:.15rem}.stat-num.svelte-1cdcqpr{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-1cdcqpr{color:var(--pass)}.fail-color.svelte-1cdcqpr{color:var(--fail)}.muted-color.svelte-1cdcqpr{color:var(--text-muted)}.feature.svelte-1cdcqpr{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-top-width:3px;border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.feature-pass.svelte-1cdcqpr{border-top-color:var(--pass)}.feature-fail.svelte-1cdcqpr{border-top-color:var(--fail)}.feature-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.feature-icon.svelte-1cdcqpr{flex-shrink:0;color:var(--text-muted);opacity:.7}.feature-name.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;font-size:.9375rem;font-family:var(--font-display);font-weight:400;flex:1;min-width:0}.feature-right.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.feature-file.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted)}.suite-tag.svelte-1cdcqpr{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);font-weight:500}.scenarios.svelte-1cdcqpr{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.scenario.svelte-1cdcqpr{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario.scenario-fail.svelte-1cdcqpr{border-left-width:3px;border-left-color:var(--fail)}.scenario-row.svelte-1cdcqpr{display:flex;align-items:stretch}.scenario-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;flex:1;min-width:0;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-1cdcqpr:hover{background:var(--bg-subtle)}.replay-btn.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.3rem;padding:0 .875rem;font-family:var(--font-body);font-size:.72rem;font-weight:500;color:var(--accent);background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast);white-space:nowrap}.replay-btn.svelte-1cdcqpr:hover{background:var(--accent-soft)}.replay-btn-sm.svelte-1cdcqpr{margin-left:auto;padding:.15rem .5rem;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-sm);font-size:.68rem}.scenario-name.svelte-1cdcqpr{flex:1;font-size:.875rem;color:var(--text);font-weight:400;text-align:left;display:inline-flex;align-items:center;gap:.4rem;min-width:0}.scenario-count.svelte-1cdcqpr{font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-1cdcqpr{display:flex;gap:.25rem;flex-shrink:0}.scenario-duration.svelte-1cdcqpr{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-1cdcqpr{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-1cdcqpr{transform:rotate(90deg)}.steps.svelte-1cdcqpr{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem .25rem 1.25rem;color:var(--text-muted);font-size:.72rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.example-header.svelte-1cdcqpr:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-1cdcqpr .scenario-duration:where(.svelte-1cdcqpr){margin-left:auto}.step.svelte-1cdcqpr{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-1cdcqpr{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-1cdcqpr{opacity:.5}.step-row.svelte-1cdcqpr{display:flex;align-items:baseline;gap:.5rem}.step-name.svelte-1cdcqpr{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-1cdcqpr{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-1cdcqpr{margin:.375rem 0 .25rem 1.75rem;padding:.625rem .875rem;background:var(--fail-soft);color:var(--fail);border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;border-left:2px solid var(--fail)}.screenshot-wrap.svelte-1cdcqpr{margin:.5rem 0 .25rem 1.75rem}.screenshot-toggle.svelte-1cdcqpr{font-size:.75rem;color:var(--text-muted);cursor:pointer;user-select:none}.screenshot.svelte-1cdcqpr{margin-top:.5rem;max-width:100%;border-radius:var(--radius-sm);border:1px solid var(--border)}.loading-state.svelte-1cdcqpr{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-1cdcqpr{display:flex;gap:6px;align-items:center}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-1cdcqpr-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr):nth-child(2){animation-delay:.2s}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr):nth-child(3){animation-delay:.4s}@keyframes svelte-1cdcqpr-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-1cdcqpr{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}.logs-section.svelte-1cdcqpr{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.logs-summary.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--text);cursor:pointer;user-select:none;list-style:none}.logs-summary.svelte-1cdcqpr::-webkit-details-marker{display:none}.logs-summary.svelte-1cdcqpr:hover{background:var(--bg-subtle)}.log-runner-count.svelte-1cdcqpr{margin-left:auto;font-size:.7rem;font-weight:500;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .5rem}.log-tabs.svelte-1cdcqpr{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-subtle);overflow-x:auto}.log-tab.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.78rem;font-weight:500;font-family:var(--font-body);color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color var(--duration-fast)}.log-tab.svelte-1cdcqpr:hover{color:var(--text)}.log-tab-active.svelte-1cdcqpr{color:var(--text);border-bottom-color:var(--accent)}.logs-body.svelte-1cdcqpr{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.775rem;line-height:1.7;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;max-height:480px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0;border-top:1px solid var(--border)}.logs-body.svelte-1cdcqpr::-webkit-scrollbar{width:4px}.logs-body.svelte-1cdcqpr::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.replay-overlay.svelte-1cdcqpr{position:fixed;inset:0;background:#000000b8;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.replay-modal.svelte-1cdcqpr{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(920px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px #00000080}.replay-modal-header.svelte-1cdcqpr{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);gap:1rem;flex-shrink:0}.replay-modal-title.svelte-1cdcqpr{font-size:.875rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-close.svelte-1cdcqpr{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;display:flex;align-items:center;border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--duration-fast)}.replay-close.svelte-1cdcqpr:hover{color:var(--text)}.replay-screenshot-area.svelte-1cdcqpr{flex:1;min-height:0;background:var(--bg-subtle);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.replay-screenshot.svelte-1cdcqpr{max-width:100%;max-height:100%;object-fit:contain;display:block}.replay-no-screenshot.svelte-1cdcqpr{color:var(--text-muted);font-size:.8125rem;font-family:JetBrains Mono,monospace}.replay-step-info.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--border);flex-shrink:0;min-width:0}.replay-step-name.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.8125rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-timeline.svelte-1cdcqpr{padding:.5rem 1.25rem;border-top:1px solid var(--border);flex-shrink:0}.replay-slider.svelte-1cdcqpr{display:block;width:100%;height:4px;-webkit-appearance:none;appearance:none;background:transparent;border-radius:2px;cursor:pointer;outline:none}.replay-slider.svelte-1cdcqpr::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--fill, 0%),var(--border) var(--fill, 0%))}.replay-slider.svelte-1cdcqpr::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:var(--accent);cursor:pointer;transition:transform .1s}.replay-slider.svelte-1cdcqpr:hover::-webkit-slider-thumb{transform:scale(1.25)}.replay-slider.svelte-1cdcqpr::-moz-range-track{height:4px;border-radius:2px;background:var(--border)}.replay-slider.svelte-1cdcqpr::-moz-range-progress{height:4px;border-radius:2px;background:var(--accent)}.replay-slider.svelte-1cdcqpr::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.replay-nav.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 1.25rem .625rem;border-top:1px solid var(--border);flex-shrink:0}.replay-nav-btn.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;transition:background var(--duration-fast)}.replay-nav-btn.svelte-1cdcqpr:hover:not(:disabled){background:var(--bg-elevated)}.replay-nav-btn.svelte-1cdcqpr:disabled{opacity:.35;cursor:default}.replay-play-btn.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;width:38px;height:38px;background:var(--accent);border:none;border-radius:50%;color:var(--white);cursor:pointer;transition:opacity var(--duration-fast),transform var(--duration-fast)}.replay-play-btn.svelte-1cdcqpr:hover{opacity:.85;transform:scale(1.05)}.replay-counter.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text-muted);min-width:5ch;text-align:center;margin-left:.25rem}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .loading-state.svelte-1a8ndj3{font-size:.875rem;color:var(--text-muted);padding:3rem 0}.breadcrumb.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted);margin-bottom:1.5rem}.bc-link.svelte-1a8ndj3{color:var(--accent);text-decoration:none}.bc-link.svelte-1a8ndj3:hover{text-decoration:underline}.bc-sep.svelte-1a8ndj3{color:var(--border)}.bc-current.svelte-1a8ndj3{color:var(--text-muted)}.suite-header.svelte-1a8ndj3{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.suite-title-row.svelte-1a8ndj3{display:flex;align-items:center;gap:.625rem;margin-bottom:.5rem;flex-wrap:wrap}.suite-title.svelte-1a8ndj3{font-size:1.75rem;font-weight:600;color:var(--text)}.suite-desc.svelte-1a8ndj3{font-size:.875rem;color:var(--text-muted);margin-bottom:.5rem;line-height:1.5}.suite-meta.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted)}.meta-sep.svelte-1a8ndj3{color:var(--border)}.workspace.svelte-1a8ndj3{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}.workspace.split.svelte-1a8ndj3{grid-template-columns:320px 1fr}.panel-toolbar.svelte-1a8ndj3{display:flex;align-items:center;justify-content:space-between;margin-bottom:.875rem}.panel-title.svelte-1a8ndj3{font-size:.9375rem;font-weight:500;color:var(--text)}.case-search.svelte-1a8ndj3{position:relative;display:flex;align-items:center;margin-bottom:.625rem}.case-search-icon.svelte-1a8ndj3{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none}.case-search-input.svelte-1a8ndj3{width:100%;height:30px;padding:0 1.75rem 0 2rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.case-search-input.svelte-1a8ndj3::placeholder{color:var(--text-muted)}.case-search-input.svelte-1a8ndj3:focus{border-color:var(--accent)}.case-search-input.svelte-1a8ndj3::-webkit-search-cancel-button{display:none}.case-search-clear.svelte-1a8ndj3{position:absolute;right:.5rem;display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.case-search-clear.svelte-1a8ndj3:hover{color:var(--text)}.case-no-results.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);padding:1rem .25rem}.case-list.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.375rem}.cases-pagination.svelte-1a8ndj3{margin-top:.875rem}.case-sort-bar.svelte-1a8ndj3{display:flex;align-items:center;gap:.3rem;margin-bottom:.625rem;flex-wrap:wrap}.case-sort-chip.svelte-1a8ndj3{display:flex;align-items:center;gap:.2rem;height:24px;padding:0 .5rem;font-family:var(--font-body);font-size:.75rem;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.case-sort-chip.svelte-1a8ndj3:hover{color:var(--text);border-color:var(--accent)}.case-sort-chip.active.svelte-1a8ndj3{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.case-sort-dir.svelte-1a8ndj3{font-size:.65rem}.case-row.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem;width:100%;text-align:left;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem;cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast)}.case-row.svelte-1a8ndj3:hover{border-color:var(--accent)}.case-row.selected.svelte-1a8ndj3{border-color:var(--accent);background:var(--accent-soft)}.case-row-top.svelte-1a8ndj3{display:flex;align-items:center;gap:.375rem}.case-row-actions.svelte-1a8ndj3{margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.case-row.svelte-1a8ndj3:hover .case-row-actions:where(.svelte-1a8ndj3){opacity:1}.case-title.svelte-1a8ndj3{font-size:.875rem;color:var(--text);line-height:1.4}.case-steps.svelte-1a8ndj3{font-size:.7rem;color:var(--text-muted)}.detail-panel.svelte-1a8ndj3{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);overflow-y:auto;position:sticky;top:calc(56px + 1.5rem);max-height:calc(100vh - 56px - 3rem);padding-bottom:1.5rem}.detail-loading.svelte-1a8ndj3{padding:2rem;font-size:.875rem;color:var(--text-muted)}.detail-header.svelte-1a8ndj3{padding:1.25rem;border-bottom:1px solid var(--border)}.detail-title-row.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.detail-header-actions.svelte-1a8ndj3{margin-left:auto;display:flex;align-items:center;gap:.25rem}.detail-case-title.svelte-1a8ndj3{font-size:1rem;font-weight:500;color:var(--text);margin-bottom:.375rem}.detail-case-desc.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);line-height:1.5;margin-bottom:.375rem}.detail-meta.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted)}.case-history-bars.svelte-1a8ndj3{display:flex;align-items:flex-end;gap:2px;height:16px;margin-top:.5rem}.history-bar.svelte-1a8ndj3{width:4px;height:100%;border-radius:1px;background:var(--border)}.history-bar.pass.svelte-1a8ndj3{background:var(--pass)}.history-bar.fail.svelte-1a8ndj3{background:var(--fail)}.history-bar.warn.svelte-1a8ndj3{background:var(--warn)}.history-bar.muted.svelte-1a8ndj3{background:var(--text-muted)}.detail-tabs.svelte-1a8ndj3{display:flex;border-bottom:1px solid var(--border)}.detail-tab.svelte-1a8ndj3{padding:.625rem 1rem;font-family:var(--font-body);font-size:.8125rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.detail-tab.svelte-1a8ndj3:hover{color:var(--text)}.detail-tab.active.svelte-1a8ndj3{color:var(--accent);border-bottom-color:var(--accent)}.steps-section.svelte-1a8ndj3,.history-section.svelte-1a8ndj3{padding:1rem 1.25rem}.steps-toolbar.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;margin-bottom:.875rem}.add-step-btn.svelte-1a8ndj3{margin-left:auto;font-size:.8125rem;color:var(--accent);background:none;border:none;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--duration-fast)}.add-step-btn.svelte-1a8ndj3:hover{background:var(--accent-soft)}.no-steps.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);padding:1rem 0}.steps-table.svelte-1a8ndj3{font-size:.8125rem;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.steps-table-head.svelte-1a8ndj3,.steps-table-row.svelte-1a8ndj3{display:grid;grid-template-columns:28px 1fr 1fr 1fr;gap:.5rem;padding:.5rem .75rem;align-items:start}.steps-table-head.svelte-1a8ndj3{background:var(--bg-subtle);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.steps-table-row.svelte-1a8ndj3{border-top:1px solid var(--border);color:var(--text);line-height:1.5}.col-num.svelte-1a8ndj3{color:var(--text-muted)}.steps-editor.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.5rem}.step-editor-row.svelte-1a8ndj3{display:flex;align-items:flex-end;gap:.5rem}.step-num.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted);min-width:20px;padding-bottom:.5rem}.step-editor-fields.svelte-1a8ndj3{flex:1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem}.step-field.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem}.step-field-label.svelte-1a8ndj3{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.edit-case-form.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.history-list.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.5rem}.history-row.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border)}.history-info.svelte-1a8ndj3{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.history-source.svelte-1a8ndj3{font-size:.8125rem;font-weight:500;color:var(--text)}.history-link.svelte-1a8ndj3{color:var(--accent);text-decoration:none}.history-link.svelte-1a8ndj3:hover{text-decoration:underline}.history-missing.svelte-1a8ndj3{font-style:italic;color:var(--text-muted)}.history-by.svelte-1a8ndj3,.history-date.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted)}.history-notes.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted);font-style:italic}.result-badge.svelte-1a8ndj3{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.15rem .5rem;border-radius:var(--radius-pill);align-self:flex-start}.result-badge.pass.svelte-1a8ndj3{background:var(--pass-soft);color:var(--pass)}.result-badge.fail.svelte-1a8ndj3{background:var(--fail-soft);color:var(--fail)}.result-badge.warn.svelte-1a8ndj3{background:var(--warn-soft);color:var(--warn)}.result-badge.muted.svelte-1a8ndj3{background:var(--bg-subtle);color:var(--text-muted)}.id-chip.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;letter-spacing:.02em}.id-chip.large.svelte-1a8ndj3{font-size:.75rem;padding:.1rem .45rem}.id-chip.small.svelte-1a8ndj3{font-size:.65rem;padding:.08rem .35rem}.priority-badge.svelte-1a8ndj3{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem}.priority-badge.small.svelte-1a8ndj3{font-size:.62rem}.priority-badge.critical.svelte-1a8ndj3{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-1a8ndj3{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-1a8ndj3{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-1a8ndj3{background:var(--bg-subtle);color:var(--text-muted)}.auto-badge.svelte-1a8ndj3{font-size:.62rem;font-weight:500;background:var(--pass-soft);color:var(--pass);border-radius:var(--radius-pill);padding:.15rem .5rem}.tag-chip.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:4px;padding:.08rem .4rem}.icon-btn.svelte-1a8ndj3{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.small.svelte-1a8ndj3{width:24px;height:24px}.icon-btn.svelte-1a8ndj3:hover{background:var(--bg-subtle);color:var(--text)}.icon-btn.danger.svelte-1a8ndj3:hover{background:var(--fail-soft);color:var(--fail)}.form-fields.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.875rem}.field.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.375rem}.field-row.svelte-1a8ndj3{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.field-label.svelte-1a8ndj3{font-size:.8125rem;font-weight:500;color:var(--text);display:flex;align-items:baseline;gap:.5rem}.field-hint.svelte-1a8ndj3{font-size:.75rem;font-weight:400;color:var(--text-muted)}.field-textarea.svelte-1a8ndj3{height:auto;resize:vertical}.mono.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-size:.8125rem!important}.form-error.svelte-1a8ndj3{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-1a8ndj3{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 768px){.workspace.split.svelte-1a8ndj3{grid-template-columns:1fr}}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-bpb2i4{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.page-header.svelte-bpb2i4 h1:where(.svelte-bpb2i4){font-size:2.5rem}.settings-layout.svelte-bpb2i4{display:grid;grid-template-columns:200px 1fr;gap:3rem;align-items:start}.settings-sidebar.svelte-bpb2i4{position:sticky;top:72px}.settings-sidebar.svelte-bpb2i4 nav:where(.svelte-bpb2i4){display:flex;flex-direction:column;gap:.125rem}.sidebar-item.svelte-bpb2i4{display:block;width:100%;text-align:left;padding:.45rem .75rem;font-family:var(--font-body);font-size:.875rem;font-weight:400;color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.sidebar-item.svelte-bpb2i4:hover{background:var(--bg-subtle);color:var(--text)}.sidebar-item.active.svelte-bpb2i4{background:var(--accent-soft);color:var(--accent);font-weight:500}.settings-content.svelte-bpb2i4{min-width:0}.content-section.svelte-bpb2i4{display:flex;flex-direction:column;gap:1.25rem}.content-header.svelte-bpb2i4{margin-bottom:.25rem}.content-header.svelte-bpb2i4 h2:where(.svelte-bpb2i4){font-size:1.1rem;font-weight:500;font-family:var(--font-body);color:var(--text);margin-bottom:.25rem}.content-desc.svelte-bpb2i4{font-size:.875rem;color:var(--text-muted);line-height:1.5}.settings-card.svelte-bpb2i4{display:flex;flex-direction:column;gap:1.25rem}.field-label.svelte-bpb2i4{display:flex;align-items:baseline;gap:.5rem;font-size:.8125rem;font-weight:500;color:var(--text)}.field-hint.svelte-bpb2i4{font-size:.75rem;font-weight:400;color:var(--text-muted)}.logo-preview.svelte-bpb2i4{display:flex;flex-direction:column;gap:.5rem}.preview-label.svelte-bpb2i4{font-size:.75rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.06em}.logo-img.svelte-bpb2i4{max-height:56px;max-width:200px;object-fit:contain;border-radius:var(--radius-sm)}.card-footer.svelte-bpb2i4{padding-top:.125rem}.toggle-row.svelte-bpb2i4{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.875rem 1rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm)}.toggle-info.svelte-bpb2i4{display:flex;flex-direction:column;gap:.2rem}.toggle-label.svelte-bpb2i4{font-size:.875rem;font-weight:500;color:var(--text)}.toggle-desc.svelte-bpb2i4{font-size:.78rem;color:var(--text-muted);line-height:1.4}.toggle-switch.svelte-bpb2i4{flex-shrink:0;width:40px;height:22px;border-radius:var(--radius-pill);border:none;background:var(--border);cursor:pointer;position:relative;transition:background .2s var(--ease-out)}.toggle-switch.on.svelte-bpb2i4{background:var(--accent)}.toggle-thumb.svelte-bpb2i4{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s var(--ease-out);box-shadow:0 1px 3px #0003}.toggle-switch.on.svelte-bpb2i4 .toggle-thumb:where(.svelte-bpb2i4){transform:translate(18px)}.runner-cards.svelte-bpb2i4{display:flex;flex-direction:column;gap:.625rem}.runner-card.svelte-bpb2i4{border:1px solid var(--border);border-radius:var(--radius-sm);padding:.75rem 1rem;display:flex;flex-direction:column;gap:.375rem;transition:border-color var(--duration-fast)}.runner-card.svelte-bpb2i4:hover{border-color:color-mix(in srgb,var(--text-muted) 40%,var(--border))}.runner-card.editing.svelte-bpb2i4{border-color:var(--accent);background:var(--accent-soft);gap:.875rem;padding:1rem}.runner-card-header.svelte-bpb2i4{display:flex;align-items:center;gap:.5rem}.runner-card-icon.svelte-bpb2i4{color:var(--node);flex-shrink:0}.runner-card-name.svelte-bpb2i4{font-size:.875rem;font-weight:500;color:var(--text);flex:1}.runner-browser-pill.svelte-bpb2i4{font-size:.65rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem;flex-shrink:0}.runner-card-url.svelte-bpb2i4{font-size:.75rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:calc(13px + .5rem)}.runner-card-actions.svelte-bpb2i4{display:flex;align-items:center;flex-wrap:wrap;gap:.375rem;padding-left:calc(13px + .5rem);margin-top:.125rem}.ping-badge.svelte-bpb2i4{font-size:.7rem;font-weight:500;padding:.15rem .5rem;border-radius:var(--radius-pill);flex-shrink:0}.ping-badge.ok.svelte-bpb2i4{background:var(--pass-soft);color:var(--pass)}.ping-badge.fail.svelte-bpb2i4{background:var(--fail-soft);color:var(--fail)}.ping-badge.pinging.svelte-bpb2i4{color:var(--text-muted)}.runner-form.svelte-bpb2i4{border:1px solid var(--border);border-radius:var(--radius-sm);padding:1rem;display:flex;flex-direction:column;gap:.875rem;background:var(--bg-subtle)}.runner-form-title.svelte-bpb2i4{font-size:.8125rem;font-weight:500;color:var(--text)}.runner-form-fields.svelte-bpb2i4{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.runner-form-actions.svelte-bpb2i4{display:flex;gap:.5rem}.card-disabled.svelte-bpb2i4{opacity:.5;pointer-events:none}.backup-row.svelte-bpb2i4{display:flex;gap:2rem}.backup-block.svelte-bpb2i4{flex:1;display:flex;flex-direction:column;gap:.875rem}.backup-divider.svelte-bpb2i4{width:1px;background:var(--border);flex-shrink:0}.backup-block-title.svelte-bpb2i4{font-size:.875rem;font-weight:500;color:var(--text)}.backup-block-desc.svelte-bpb2i4{font-size:.8125rem;color:var(--text-muted);line-height:1.6}.backup-block-desc.svelte-bpb2i4 code:where(.svelte-bpb2i4){font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);padding:.1em .3em;border-radius:3px}.backup-disclaimer.svelte-bpb2i4{margin-top:1rem;padding:.625rem .875rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-muted);line-height:1.5}.backup-actions.svelte-bpb2i4{display:flex;gap:.625rem;margin-top:.25rem;flex-wrap:wrap}.s3-test-result.svelte-bpb2i4{margin-top:.625rem;font-size:.8125rem;font-weight:500}.s3-test-success.svelte-bpb2i4{color:var(--pass)}.s3-test-error.svelte-bpb2i4{color:var(--fail)}.backup-last-run.svelte-bpb2i4{font-size:.8125rem;color:var(--text-muted);margin-top:.25rem}.status-success.svelte-bpb2i4{color:var(--pass)}.status-error.svelte-bpb2i4{color:var(--fail)}.backup-toggle-label.svelte-bpb2i4{display:flex;align-items:center;justify-content:space-between;cursor:default}.toggle-btn.svelte-bpb2i4{flex-shrink:0;width:40px;height:22px;border-radius:var(--radius-pill);border:none;background:var(--border);cursor:pointer;position:relative;transition:background .2s var(--ease-out)}.toggle-btn.active.svelte-bpb2i4{background:var(--accent)}.toggle-btn.svelte-bpb2i4 .toggle-thumb:where(.svelte-bpb2i4){position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s var(--ease-out);box-shadow:0 1px 3px #0003}.toggle-btn.active.svelte-bpb2i4 .toggle-thumb:where(.svelte-bpb2i4){transform:translate(18px)}.field-input-mono.svelte-bpb2i4{font-family:JetBrains Mono,monospace;font-size:.8125rem}.import-row.svelte-bpb2i4{display:flex;align-items:center;gap:.625rem}.file-label.svelte-bpb2i4{cursor:pointer}.file-input-hidden.svelte-bpb2i4{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.file-btn.svelte-bpb2i4{display:inline-flex;align-items:center;height:34px;padding:0 .875rem;font-size:.8125rem;font-family:inherit;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;transition:background var(--duration-fast),border-color var(--duration-fast)}.file-label.svelte-bpb2i4:hover .file-btn:where(.svelte-bpb2i4){border-color:var(--text-muted);background:var(--bg-subtle)}.field-row.svelte-bpb2i4{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.mono.svelte-bpb2i4{font-family:JetBrains Mono,monospace!important;font-size:.8125rem!important}.code-sample.svelte-bpb2i4{font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);padding:.1em .3em;border-radius:3px}.link-btn.svelte-bpb2i4{font:inherit;color:var(--accent);background:none;border:none;padding:0;cursor:pointer;text-decoration:underline}.account-info.svelte-bpb2i4{display:flex;flex-direction:column;gap:.2rem}.account-name.svelte-bpb2i4{font-size:.9375rem;font-weight:500;color:var(--text)}.account-email.svelte-bpb2i4{font-size:.8125rem;color:var(--text-muted)}.form-error.svelte-bpb2i4{font-size:.8125rem;color:var(--fail)}@media (max-width: 640px){.settings-layout.svelte-bpb2i4{grid-template-columns:1fr;gap:1.5rem}.settings-sidebar.svelte-bpb2i4{position:static}.settings-sidebar.svelte-bpb2i4 nav:where(.svelte-bpb2i4){flex-direction:row;flex-wrap:wrap}.backup-row.svelte-bpb2i4{flex-direction:column}.backup-divider.svelte-bpb2i4{width:100%;height:1px}.runner-form-fields.svelte-bpb2i4,.field-row.svelte-bpb2i4{grid-template-columns:1fr}}.users-table.svelte-bpb2i4{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.user-row.svelte-bpb2i4{display:flex;align-items:center;gap:.75rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem 1rem}.user-info.svelte-bpb2i4{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}.user-name.svelte-bpb2i4{font-size:.9rem;font-weight:500;color:var(--text)}.user-email.svelte-bpb2i4{font-size:.8rem;color:var(--text-muted)}.role-chip.svelte-bpb2i4{font-size:.7rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .55rem;flex-shrink:0}.role-chip.admin.svelte-bpb2i4{background:var(--accent-soft);color:var(--accent)}.role-chip.user.svelte-bpb2i4{background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border)}.you-chip.svelte-bpb2i4{font-size:.7rem;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.15rem .55rem;flex-shrink:0}.mcp-key-row.svelte-bpb2i4{display:flex;align-items:center;gap:.375rem}.mcp-key-input.svelte-bpb2i4{flex:1;font-family:JetBrains Mono,monospace;font-size:.8125rem;min-width:0}.mcp-regen-note.svelte-bpb2i4{font-size:.78rem;color:var(--text-muted)}.mcp-snippet.svelte-bpb2i4{font-family:JetBrains Mono,monospace;font-size:.78rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.875rem 1rem;white-space:pre;overflow-x:auto;color:var(--text);line-height:1.6;margin:0}.icon-btn.svelte-bpb2i4{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.icon-btn.danger.svelte-bpb2i4:hover{background:var(--fail-soft);color:var(--fail)}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .idle-state.svelte-4v9t4g{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5rem 1rem;text-align:center;gap:.75rem}.idle-icon.svelte-4v9t4g{color:var(--text-muted);opacity:.4;margin-bottom:.5rem}.idle-state.svelte-4v9t4g h2:where(.svelte-4v9t4g){font-size:1.5rem;font-weight:400}.idle-state.svelte-4v9t4g p:where(.svelte-4v9t4g){font-size:.9375rem;color:var(--text-muted);max-width:360px}.idle-link.svelte-4v9t4g{font-size:.875rem;color:var(--accent);text-decoration:none;margin-top:.5rem}.idle-link.svelte-4v9t4g:hover{text-decoration:underline}.cron-running-state.svelte-4v9t4g{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5rem 1rem;text-align:center;gap:.75rem}.cron-running-icon.svelte-4v9t4g{margin-bottom:.5rem}.cron-pulse-dot.svelte-4v9t4g{display:inline-block;width:18px;height:18px;border-radius:50%;background:var(--pass);animation:svelte-4v9t4g-pulse-pass 1.4s ease-in-out infinite}@keyframes svelte-4v9t4g-pulse-pass{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.cron-running-state.svelte-4v9t4g h2:where(.svelte-4v9t4g){font-size:1.5rem;font-weight:400}.cron-task-list.svelte-4v9t4g{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.cron-task-chip.svelte-4v9t4g{font-size:.8125rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.2rem .65rem;text-decoration:none;cursor:pointer;transition:background var(--duration-fast)}.cron-task-chip.svelte-4v9t4g:hover{background:color-mix(in srgb,var(--accent) 15%,var(--accent-soft))}.cron-running-state.svelte-4v9t4g p:where(.svelte-4v9t4g){font-size:.9375rem;color:var(--text-muted);max-width:360px}.run-header.svelte-4v9t4g{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-bottom:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:fadeUp .3s var(--ease-out) both}.run-header.header-pass.svelte-4v9t4g{border-top:3px solid var(--pass)}.run-header.header-fail.svelte-4v9t4g{border-top:3px solid var(--fail)}.header-left.svelte-4v9t4g{display:flex;align-items:center;gap:.875rem;flex-wrap:wrap}.live-badge.svelte-4v9t4g{display:inline-flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--white);background:var(--accent);padding:.2rem .6rem;border-radius:var(--radius-pill)}.live-dot.svelte-4v9t4g{width:6px;height:6px;border-radius:50%;background:#fffc;animation:dotPulse 1.2s ease-in-out infinite}.run-info.svelte-4v9t4g{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.run-title-label.svelte-4v9t4g{font-size:.875rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.15rem .6rem;white-space:nowrap}.run-tag-label.svelte-4v9t4g{font-family:JetBrains Mono,monospace;font-size:.8125rem;font-weight:500;color:var(--text)}.run-sep.svelte-4v9t4g{color:var(--text-muted);opacity:.4;font-size:.75rem}.run-detail.svelte-4v9t4g{font-size:.8rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.cancel-btn.svelte-4v9t4g{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-body);font-size:.8rem;font-weight:500;color:var(--fail);background:var(--fail-soft);border:1px solid var(--fail);border-radius:var(--radius-sm);padding:.35rem .75rem;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast);flex-shrink:0}.cancel-btn.svelte-4v9t4g:hover{background:var(--fail);color:var(--white)}.completion-bar.svelte-4v9t4g{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;gap:1rem;border:1px solid var(--border);border-top:none;border-bottom:none}.completion-bar.pass-bar.svelte-4v9t4g{background:var(--pass-soft);border-color:color-mix(in srgb,var(--pass) 30%,var(--border));color:var(--pass)}.completion-bar.fail-bar.svelte-4v9t4g{background:var(--fail-soft);border-color:color-mix(in srgb,var(--fail) 30%,var(--border));color:var(--fail)}.completion-left.svelte-4v9t4g{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500}.completion-right.svelte-4v9t4g{display:flex;align-items:center;gap:.875rem}.redirect-hint.svelte-4v9t4g{font-size:.8rem;opacity:.7;font-family:JetBrains Mono,monospace;color:inherit}.view-now-btn.svelte-4v9t4g{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.8125rem;font-weight:600;color:inherit;background:transparent;border:1.5px solid currentColor;border-radius:var(--radius-sm);padding:.3rem .75rem;cursor:pointer;transition:background var(--duration-fast)}.view-now-btn.svelte-4v9t4g:hover{background:#0000000f}.lane-tabs.svelte-4v9t4g{display:flex;gap:2px;padding:.5rem 1rem 0;background:var(--bg-elevated);border:1px solid var(--border);border-top:none;border-bottom:none}.lane-tab.svelte-4v9t4g{display:inline-flex;align-items:center;gap:.4rem;padding:.375rem .875rem;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:transparent;font-family:var(--font-body);font-size:.8rem;color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast),background var(--duration-fast),border-color var(--duration-fast);white-space:nowrap}.lane-tab.svelte-4v9t4g:hover{color:var(--text);background:var(--bg-subtle)}.lane-tab.active.svelte-4v9t4g{color:var(--text);background:var(--bg-elevated);border-color:var(--border);border-bottom-color:var(--bg-elevated)}.tab-dot.svelte-4v9t4g{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:var(--accent)}.tab-dot-running.svelte-4v9t4g{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.tab-dot-done.svelte-4v9t4g{background:var(--pass)}.tab-dot-error.svelte-4v9t4g{background:var(--fail)}.tab-count.svelte-4v9t4g{font-size:.65rem;font-weight:600;font-family:JetBrains Mono,monospace;opacity:.55}.run-view.svelte-4v9t4g{display:grid;grid-template-columns:1fr 420px;height:calc(100vh - 290px);min-height:380px;border:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);border-top:none;overflow:hidden;animation:fadeUp .35s var(--ease-out) .05s both}.run-view.no-top-radius.svelte-4v9t4g{border-radius:0 0 var(--radius-lg) var(--radius-lg)}.screenshot-panel.svelte-4v9t4g{position:relative;background:var(--terminal-bg);display:flex;align-items:center;justify-content:center;overflow:hidden;border-right:1px solid var(--border)}.live-shot.svelte-4v9t4g{max-width:100%;max-height:100%;object-fit:contain;display:block;border-radius:2px}.step-overlay.svelte-4v9t4g{position:absolute;bottom:0;left:0;right:0;padding:1.25rem 1rem .625rem;background:linear-gradient(transparent,#000000bf);display:flex;align-items:baseline;gap:.5rem;pointer-events:none}.step-keyword.svelte-4v9t4g{font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);flex-shrink:0}.step-name.svelte-4v9t4g{font-size:.8125rem;color:#ffffffd9;font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.awaiting-state.svelte-4v9t4g{display:flex;flex-direction:column;align-items:center;gap:.625rem;color:#fff3;font-size:.8rem;font-family:JetBrains Mono,monospace}.terminal-panel.svelte-4v9t4g{display:flex;flex-direction:column;overflow:hidden}.terminal-bar.svelte-4v9t4g{display:flex;align-items:center;gap:6px;padding:.6rem .875rem;background:#00000059;flex-shrink:0}.dot.svelte-4v9t4g{display:block;width:10px;height:10px;border-radius:50%}.dot.red.svelte-4v9t4g{background:#ff5f57}.dot.yellow.svelte-4v9t4g{background:#febc2e}.dot.green.svelte-4v9t4g{background:#28c840}.terminal-label.svelte-4v9t4g{margin-left:auto;font-size:.68rem;font-family:JetBrains Mono,monospace;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#ffffff4d}.terminal.svelte-4v9t4g{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.8rem;line-height:1.75;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;flex:1;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0}.terminal.svelte-4v9t4g::-webkit-scrollbar{width:4px}.terminal.svelte-4v9t4g::-webkit-scrollbar-track{background:transparent}.terminal.svelte-4v9t4g::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}
@@ -1,247 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- import { _ as store_get, X as head, Y as ensure_array_like, Z as stringify, $ as unsubscribe_stores, p as pop, a as push } from "../../../../chunks/index.js";
7
- import { o as onDestroy } from "../../../../chunks/index-server.js";
8
- import { g as goto } from "../../../../chunks/client.js";
9
- import { p as page } from "../../../../chunks/stores.js";
10
- import { b as backgroundRuns, a as runnerState } from "../../../../chunks/runner.js";
11
- import { r as reportUrl } from "../../../../chunks/reports.js";
12
- import { a as REDIRECT_DELAY_MS } from "../../../../chunks/constants.js";
13
- import { A as ALL_TESTS_LABEL } from "../../../../chunks/common.js";
14
- import { h as runsInProgressHeading, w as workersCountLabel, i as runnersBadge, A as AWAITING_STREAM_LABEL, j as NO_STREAM_LABEL, k as RUNNER_LABEL, l as RUNNING_LABEL, F as FINISHED_LABEL, W as WAITING_FOR_OUTPUT, g as REPORTS_BACK_LABEL, m as LIVE_BROWSER_VIEW_ALT, n as LIVE_PAGE_TITLE, o as NO_TESTS_RUNNING_HEADING, q as NO_TESTS_RUNNING_BODY, V as VIEW_PAST_REPORTS_LINK, s as SELECT_RUN_HINT, u as LIVE_BADGE_LABEL, v as PASSED_LABEL, x as FAILED_LABEL, C as CANCEL_RUN_LABEL, y as ALL_TESTS_PASSED, z as SOME_TESTS_FAILED, B as redirectingIn, E as VIEW_REPORT_NOW_LABEL, G as LIVE_STEP_LABEL } from "../../../../chunks/reports2.js";
15
- import { a as triggerLabel } from "../../../../chunks/format.js";
16
- import { B as BackLink } from "../../../../chunks/BackLink.js";
17
- import { B as Badge } from "../../../../chunks/Badge.js";
18
- import { e as escape_html } from "../../../../chunks/escaping.js";
19
- import { a as attr } from "../../../../chunks/attributes.js";
20
- function _page($$payload, $$props) {
21
- push();
22
- var $$store_subs;
23
- let bgRunId, state, isMulti, runningBgList, showPicker, showIdle, activeLane;
24
- const EMPTY_BG_STATE = {
25
- output: "",
26
- running: false,
27
- testCompleted: false,
28
- latestReportId: null,
29
- status: "idle",
30
- lanes: [],
31
- currentRun: null,
32
- latestScreenshot: null
33
- };
34
- let redirectTimer = null;
35
- let redirectCountdown = REDIRECT_DELAY_MS / 1e3;
36
- let countdownInterval = null;
37
- let activeTab = null;
38
- onDestroy(() => {
39
- if (redirectTimer) clearTimeout(redirectTimer);
40
- if (countdownInterval) clearInterval(countdownInterval);
41
- });
42
- bgRunId = store_get($$store_subs ??= {}, "$page", page).url.searchParams.get("run");
43
- state = bgRunId ? store_get($$store_subs ??= {}, "$backgroundRuns", backgroundRuns)[bgRunId] ?? EMPTY_BG_STATE : store_get($$store_subs ??= {}, "$runnerState", runnerState);
44
- isMulti = state.lanes.length > 0;
45
- runningBgList = Object.entries(store_get($$store_subs ??= {}, "$backgroundRuns", backgroundRuns)).filter(([, r]) => r.running);
46
- showPicker = !bgRunId && !state.running && !state.testCompleted && runningBgList.length > 0;
47
- showIdle = !state.running && !state.testCompleted && !showPicker;
48
- if (showPicker && runningBgList.length === 1) {
49
- goto(`/reports/live?run=${runningBgList[0][0]}`);
50
- }
51
- {
52
- if (state.lanes.length === 0) {
53
- activeTab = null;
54
- } else if (!state.lanes.find((l) => l.id === activeTab)) {
55
- activeTab = state.lanes[0].id;
56
- }
57
- }
58
- activeLane = state.lanes.find((l) => l.id === activeTab) ?? null;
59
- if (state.testCompleted && state.latestReportId && !redirectTimer) {
60
- redirectCountdown = REDIRECT_DELAY_MS / 1e3;
61
- countdownInterval = setInterval(
62
- () => {
63
- redirectCountdown--;
64
- if (redirectCountdown <= 0) clearInterval(countdownInterval);
65
- },
66
- 1e3
67
- );
68
- redirectTimer = setTimeout(() => goto(reportUrl(state.latestReportId)), REDIRECT_DELAY_MS);
69
- }
70
- head($$payload, ($$payload2) => {
71
- $$payload2.title = `<title>${escape_html(LIVE_PAGE_TITLE)}</title>`;
72
- });
73
- BackLink($$payload, { href: "/reports", label: REPORTS_BACK_LABEL });
74
- $$payload.out += `<!----> `;
75
- if (showIdle) {
76
- $$payload.out += "<!--[-->";
77
- $$payload.out += `<div class="idle-state svelte-4v9t4g"><div class="idle-icon svelte-4v9t4g"><svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-4v9t4g"><circle cx="12" cy="12" r="10" class="svelte-4v9t4g"></circle><polyline points="12 6 12 12 16 14" class="svelte-4v9t4g"></polyline></svg></div> <h2 class="svelte-4v9t4g">${escape_html(NO_TESTS_RUNNING_HEADING)}</h2> <p class="svelte-4v9t4g">${escape_html(NO_TESTS_RUNNING_BODY)}</p> <a href="/reports" class="idle-link svelte-4v9t4g">${escape_html(VIEW_PAST_REPORTS_LINK)}</a></div>`;
78
- } else {
79
- $$payload.out += "<!--[!-->";
80
- if (showPicker) {
81
- $$payload.out += "<!--[-->";
82
- const each_array = ensure_array_like(runningBgList);
83
- $$payload.out += `<div class="cron-running-state svelte-4v9t4g"><div class="cron-running-icon svelte-4v9t4g"><span class="cron-pulse-dot svelte-4v9t4g"></span></div> <h2 class="svelte-4v9t4g">${escape_html(runsInProgressHeading(runningBgList.length))}</h2> <div class="cron-task-list svelte-4v9t4g"><!--[-->`;
84
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
85
- let [runId, run] = each_array[$$index];
86
- $$payload.out += `<a${attr("href", `/reports/live?run=${stringify(runId)}`)} class="cron-task-chip svelte-4v9t4g">${escape_html(run.label)} · ${escape_html(triggerLabel(run.kind))}</a>`;
87
- }
88
- $$payload.out += `<!--]--></div> <p class="svelte-4v9t4g">${escape_html(SELECT_RUN_HINT)}</p></div>`;
89
- } else {
90
- $$payload.out += "<!--[!-->";
91
- $$payload.out += `<div${attr("class", `run-header svelte-4v9t4g ${stringify([
92
- state.status === "pass" ? "header-pass" : "",
93
- state.status === "fail" ? "header-fail" : ""
94
- ].filter(Boolean).join(" "))}`)}><div class="header-left svelte-4v9t4g">`;
95
- if (state.running) {
96
- $$payload.out += "<!--[-->";
97
- $$payload.out += `<span class="live-badge svelte-4v9t4g"><span class="live-dot svelte-4v9t4g"></span>${escape_html(LIVE_BADGE_LABEL)}</span>`;
98
- } else {
99
- $$payload.out += "<!--[!-->";
100
- if (state.status === "pass") {
101
- $$payload.out += "<!--[-->";
102
- Badge($$payload, {
103
- variant: "pass",
104
- children: ($$payload2) => {
105
- $$payload2.out += `<!---->${escape_html(PASSED_LABEL)}`;
106
- },
107
- $$slots: { default: true }
108
- });
109
- } else {
110
- $$payload.out += "<!--[!-->";
111
- Badge($$payload, {
112
- variant: "fail",
113
- children: ($$payload2) => {
114
- $$payload2.out += `<!---->${escape_html(FAILED_LABEL)}`;
115
- },
116
- $$slots: { default: true }
117
- });
118
- }
119
- $$payload.out += `<!--]-->`;
120
- }
121
- $$payload.out += `<!--]--> `;
122
- if (state.currentRun) {
123
- $$payload.out += "<!--[-->";
124
- $$payload.out += `<div class="run-info svelte-4v9t4g">`;
125
- if (state.currentRun.runTitle) {
126
- $$payload.out += "<!--[-->";
127
- $$payload.out += `<span class="run-title-label svelte-4v9t4g">${escape_html(state.currentRun.runTitle)}</span> <span class="run-sep svelte-4v9t4g">·</span>`;
128
- } else {
129
- $$payload.out += "<!--[!-->";
130
- }
131
- $$payload.out += `<!--]--> <span class="run-tag-label svelte-4v9t4g">${escape_html(state.currentRun.tag || ALL_TESTS_LABEL)}</span> <span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g">${escape_html(workersCountLabel(state.currentRun.workers))}</span> <span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g">${escape_html(state.currentRun.browser)}</span> `;
132
- if (state.lanes.length > 1) {
133
- $$payload.out += "<!--[-->";
134
- $$payload.out += `<span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g">${escape_html(runnersBadge(state.lanes.length))}</span>`;
135
- } else {
136
- $$payload.out += "<!--[!-->";
137
- }
138
- $$payload.out += `<!--]--></div>`;
139
- } else {
140
- $$payload.out += "<!--[!-->";
141
- }
142
- $$payload.out += `<!--]--></div> `;
143
- if (state.running && !bgRunId) {
144
- $$payload.out += "<!--[-->";
145
- $$payload.out += `<button class="cancel-btn svelte-4v9t4g"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-4v9t4g"><rect x="3" y="3" width="18" height="18" rx="2" class="svelte-4v9t4g"></rect><line x1="9" y1="9" x2="15" y2="15" class="svelte-4v9t4g"></line><line x1="15" y1="9" x2="9" y2="15" class="svelte-4v9t4g"></line></svg> ${escape_html(CANCEL_RUN_LABEL)}</button>`;
146
- } else {
147
- $$payload.out += "<!--[!-->";
148
- }
149
- $$payload.out += `<!--]--></div> `;
150
- if (state.testCompleted && state.latestReportId) {
151
- $$payload.out += "<!--[-->";
152
- $$payload.out += `<div${attr("class", `completion-bar svelte-4v9t4g ${stringify([
153
- state.status === "pass" ? "pass-bar" : "",
154
- state.status === "fail" ? "fail-bar" : ""
155
- ].filter(Boolean).join(" "))}`)}><div class="completion-left svelte-4v9t4g">`;
156
- if (state.status === "pass") {
157
- $$payload.out += "<!--[-->";
158
- $$payload.out += `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-4v9t4g"><polyline points="20 6 9 17 4 12" class="svelte-4v9t4g"></polyline></svg>${escape_html(ALL_TESTS_PASSED)}`;
159
- } else {
160
- $$payload.out += "<!--[!-->";
161
- $$payload.out += `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-4v9t4g"><line x1="18" y1="6" x2="6" y2="18" class="svelte-4v9t4g"></line><line x1="6" y1="6" x2="18" y2="18" class="svelte-4v9t4g"></line></svg>${escape_html(SOME_TESTS_FAILED)}`;
162
- }
163
- $$payload.out += `<!--]--></div> <div class="completion-right svelte-4v9t4g"><span class="redirect-hint svelte-4v9t4g">${escape_html(redirectingIn(redirectCountdown))}</span> <button class="view-now-btn svelte-4v9t4g">${escape_html(VIEW_REPORT_NOW_LABEL)} <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svelte-4v9t4g"><line x1="5" y1="12" x2="19" y2="12" class="svelte-4v9t4g"></line><polyline points="12 5 19 12 12 19" class="svelte-4v9t4g"></polyline></svg></button></div></div>`;
164
- } else {
165
- $$payload.out += "<!--[!-->";
166
- }
167
- $$payload.out += `<!--]--> `;
168
- if (isMulti) {
169
- $$payload.out += "<!--[-->";
170
- const each_array_1 = ensure_array_like(state.lanes);
171
- $$payload.out += `<div class="lane-tabs svelte-4v9t4g"><!--[-->`;
172
- for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
173
- let lane = each_array_1[$$index_1];
174
- $$payload.out += `<button${attr("class", `lane-tab svelte-4v9t4g ${stringify([activeTab === lane.id ? "active" : ""].filter(Boolean).join(" "))}`)}><span${attr("class", `tab-dot svelte-4v9t4g ${stringify([
175
- lane.status === "running" ? "tab-dot-running" : "",
176
- lane.status === "done" ? "tab-dot-done" : "",
177
- lane.status === "error" ? "tab-dot-error" : ""
178
- ].filter(Boolean).join(" "))}`)}></span> ${escape_html(lane.name)} `;
179
- if (lane.testCount) {
180
- $$payload.out += "<!--[-->";
181
- $$payload.out += `<span class="tab-count svelte-4v9t4g">${escape_html(lane.testCount)}</span>`;
182
- } else {
183
- $$payload.out += "<!--[!-->";
184
- }
185
- $$payload.out += `<!--]--></button>`;
186
- }
187
- $$payload.out += `<!--]--></div>`;
188
- } else {
189
- $$payload.out += "<!--[!-->";
190
- }
191
- $$payload.out += `<!--]--> <div${attr("class", `run-view svelte-4v9t4g ${stringify([isMulti ? "no-top-radius" : ""].filter(Boolean).join(" "))}`)}><div class="screenshot-panel svelte-4v9t4g">`;
192
- if (isMulti) {
193
- $$payload.out += "<!--[-->";
194
- if (activeLane?.latestScreenshot) {
195
- $$payload.out += "<!--[-->";
196
- $$payload.out += `<!---->`;
197
- {
198
- $$payload.out += `<img${attr("src", `data:image/jpeg;base64,${stringify(activeLane.latestScreenshot.data)}`)} class="live-shot svelte-4v9t4g"${attr("alt", LIVE_BROWSER_VIEW_ALT)}>`;
199
- }
200
- $$payload.out += `<!----> <div class="step-overlay svelte-4v9t4g"><span class="step-keyword svelte-4v9t4g">${escape_html(LIVE_STEP_LABEL)}</span> <span class="step-name svelte-4v9t4g">${escape_html(activeLane.latestScreenshot.stepName)}</span></div>`;
201
- } else {
202
- $$payload.out += "<!--[!-->";
203
- $$payload.out += `<div class="awaiting-state svelte-4v9t4g"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" opacity="0.25" class="svelte-4v9t4g"><rect x="2" y="5" width="20" height="14" rx="2" class="svelte-4v9t4g"></rect><circle cx="12" cy="12" r="3" class="svelte-4v9t4g"></circle></svg> <span class="svelte-4v9t4g">${escape_html(activeLane?.status === "running" ? AWAITING_STREAM_LABEL : NO_STREAM_LABEL)}</span></div>`;
204
- }
205
- $$payload.out += `<!--]-->`;
206
- } else {
207
- $$payload.out += "<!--[!-->";
208
- if (state.latestScreenshot) {
209
- $$payload.out += "<!--[-->";
210
- $$payload.out += `<!---->`;
211
- {
212
- $$payload.out += `<img${attr("src", `data:image/jpeg;base64,${stringify(state.latestScreenshot.data)}`)} class="live-shot svelte-4v9t4g"${attr("alt", LIVE_BROWSER_VIEW_ALT)}>`;
213
- }
214
- $$payload.out += `<!----> <div class="step-overlay svelte-4v9t4g"><span class="step-keyword svelte-4v9t4g">${escape_html(LIVE_STEP_LABEL)}</span> <span class="step-name svelte-4v9t4g">${escape_html(state.latestScreenshot.stepName)}</span></div>`;
215
- } else {
216
- $$payload.out += "<!--[!-->";
217
- $$payload.out += `<div class="awaiting-state svelte-4v9t4g"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" opacity="0.25" class="svelte-4v9t4g"><rect x="2" y="5" width="20" height="14" rx="2" class="svelte-4v9t4g"></rect><circle cx="12" cy="12" r="3" class="svelte-4v9t4g"></circle></svg> <span class="svelte-4v9t4g">${escape_html(state.running ? AWAITING_STREAM_LABEL : NO_STREAM_LABEL)}</span></div>`;
218
- }
219
- $$payload.out += `<!--]-->`;
220
- }
221
- $$payload.out += `<!--]--></div> <div class="terminal-panel svelte-4v9t4g"><div class="terminal-bar svelte-4v9t4g"><span class="dot red svelte-4v9t4g"></span> <span class="dot yellow svelte-4v9t4g"></span> <span class="dot green svelte-4v9t4g"></span> <span class="terminal-label svelte-4v9t4g">`;
222
- if (isMulti) {
223
- $$payload.out += "<!--[-->";
224
- $$payload.out += `${escape_html(activeLane?.name ?? RUNNER_LABEL)}`;
225
- } else {
226
- $$payload.out += "<!--[!-->";
227
- $$payload.out += `${escape_html(state.running ? RUNNING_LABEL : FINISHED_LABEL)}`;
228
- }
229
- $$payload.out += `<!--]--></span></div> `;
230
- if (isMulti) {
231
- $$payload.out += "<!--[-->";
232
- $$payload.out += `<pre class="terminal svelte-4v9t4g">${escape_html(activeLane?.logs || WAITING_FOR_OUTPUT)}</pre>`;
233
- } else {
234
- $$payload.out += "<!--[!-->";
235
- $$payload.out += `<pre class="terminal svelte-4v9t4g">${escape_html(state.output)}</pre>`;
236
- }
237
- $$payload.out += `<!--]--></div></div>`;
238
- }
239
- $$payload.out += `<!--]-->`;
240
- }
241
- $$payload.out += `<!--]-->`;
242
- if ($$store_subs) unsubscribe_stores($$store_subs);
243
- pop();
244
- }
245
- export {
246
- _page as default
247
- };
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- :root{--bg: #fdfcfb;--bg-subtle: #f7f6f4;--bg-elevated: #ffffff;--border: #e9e5df;--text: #18160f;--text-muted: #9c9185;--accent: #5c1b87;--accent-soft: #f3eaff;--pass: #16a34a;--pass-soft: #dcfce7;--fail: #dc2626;--fail-soft: #fee2e2;--warn: #d97706;--warn-soft: #fef3c7;--node: #0284c7;--node-soft: #e0f2fe;--external: #0d9488;--external-soft: #ccfbf1;--terminal-bg: #0d0c08;--terminal-text: #d6d0c8;--font-display: "Playfair Display", Georgia, serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration-base: .24s;--duration-slow: .4s;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-pill: 100px;--white: #ffffff;--bottom-bar-height: 55px}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.65)}}[data-theme=dark]{--bg: #101009;--bg-subtle: #1a1910;--bg-elevated: #201f14;--border: #2e2c1e;--text: #f0ede6;--text-muted: #706a5e;--accent: #d0a5f5;--accent-soft: #1b0d30;--pass: #22c55e;--pass-soft: #0d2118;--fail: #f87171;--fail-soft: #2d1010;--warn: #fbbf24;--warn-soft: #2a1f06;--node: #38bdf8;--node-soft: #082032;--external: #2dd4bf;--external-soft: #0f2e2b;--terminal-bg: #080807;--terminal-text: #cbc5bd}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-weight:300;font-size:1rem;line-height:1.65;background-color:var(--bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");background-size:200px 200px;color:var(--text);-webkit-font-smoothing:antialiased;transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}h1{font-family:var(--font-display);font-weight:400;line-height:1.1;letter-spacing:-.015em;color:var(--text)}h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;color:var(--text)}a{color:inherit;text-decoration:none}button{font-family:var(--font-body)}.field{display:flex;flex-direction:column;gap:.375rem}.field-label{display:flex;justify-content:space-between;font-size:.8125rem;font-weight:400;color:var(--text-muted)}.field-hint{font-size:.75rem;color:var(--text-muted)}.field-input{width:100%;padding:.6rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);color:var(--text);font-family:var(--font-body);font-size:.875rem;font-weight:300;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field-input:disabled{opacity:.5;cursor:not-allowed}.field-input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{text-align:left;padding:.5rem 1rem;font-family:var(--font-body);font-weight:500;font-size:.7rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border)}.data-table td{padding:.875rem 1rem;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.card-title{font-family:var(--font-display);font-size:1.25rem;font-weight:400;color:var(--text);margin-bottom:.25rem}.card-subtitle{font-size:.8125rem;color:var(--text-muted);margin-bottom:1.25rem}.alert{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;font-weight:400}.alert-success{background:var(--pass-soft);color:var(--pass)}.alert-error{background:var(--fail-soft);color:var(--fail)}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.nav.svelte-10t98u4{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out)}.inner.svelte-10t98u4{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-10t98u4{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-10t98u4{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-10t98u4{font-family:var(--font-body);font-weight:400;color:var(--text)}.project-card.svelte-10t98u4{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem .25rem .5rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);flex-shrink:0}.project-logo.svelte-10t98u4{width:16px;height:16px;object-fit:contain;border-radius:2px;flex-shrink:0}.project-name.svelte-10t98u4{font-size:.78rem;font-weight:500;color:var(--text);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.links.svelte-10t98u4{display:flex;gap:.125rem;flex:1}.link.svelte-10t98u4{font-size:.875rem;font-weight:400;color:var(--text-muted);text-decoration:none;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast),background var(--duration-fast)}.link.svelte-10t98u4:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.nav-sep.svelte-10t98u4{display:block;width:1px;height:18px;background:var(--border);margin:0 .375rem;flex-shrink:0;align-self:center}.link.repo.svelte-10t98u4{border:1px solid var(--border);padding:.3rem .75rem}.link.repo.svelte-10t98u4:hover{border-color:var(--text-muted)}.link.repo.active.svelte-10t98u4{border-color:var(--accent)}.actions.svelte-10t98u4{display:flex;align-items:center;gap:.5rem;margin-left:auto}.nav-user.svelte-10t98u4{font-size:.8125rem;color:var(--text-muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.nav-user.svelte-10t98u4{display:none}}.settings-btn.svelte-10t98u4{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);text-decoration:none;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.settings-btn.svelte-10t98u4:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.settings-btn.active.svelte-10t98u4{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.hamburger.svelte-10t98u4{display:none;flex-direction:column;justify-content:center;gap:4px;width:34px;height:34px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:0 8px}.hamburger.svelte-10t98u4 span:where(.svelte-10t98u4){display:block;width:100%;height:1.5px;background:var(--text-muted);border-radius:2px;transform-origin:center;transition:transform var(--duration-base) var(--ease-out),opacity var(--duration-fast)}.hamburger.svelte-10t98u4 span.rotated:where(.svelte-10t98u4){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-10t98u4 span.hidden:where(.svelte-10t98u4){opacity:0}.hamburger.svelte-10t98u4 span.rotated-reverse:where(.svelte-10t98u4){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-10t98u4{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-10t98u4{color:var(--text-muted);text-decoration:none;font-size:.9375rem;font-weight:400;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:background var(--duration-fast),color var(--duration-fast)}.mobile-link.svelte-10t98u4:hover,.mobile-link.active.svelte-10t98u4{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-10t98u4{color:var(--accent);background:var(--accent-soft)}.mobile-sep.svelte-10t98u4{border:none;border-top:1px solid var(--border);margin:.375rem .75rem}@media (max-width: 640px){.links.svelte-10t98u4{display:none}.hamburger.svelte-10t98u4{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.panel.svelte-h71cn6{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg-elevated);border-top:1px solid var(--border);box-shadow:0 -4px 32px #00000012}.scan-line.svelte-h71cn6{height:2px;background:var(--border);transition:background .5s ease;overflow:hidden;position:relative}.scan-line.scanning.svelte-h71cn6{background:color-mix(in srgb,var(--accent) 30%,var(--border))}.scan-line.scanning.svelte-h71cn6:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:35%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:svelte-h71cn6-scan 1.8s ease-in-out infinite}.scan-line.line-pass.svelte-h71cn6{background:var(--pass)}.scan-line.line-fail.svelte-h71cn6{background:var(--fail)}@keyframes svelte-h71cn6-scan{0%{transform:translate(-100%)}to{transform:translate(400%)}}.bar.svelte-h71cn6{display:flex;align-items:center;height:52px;padding:0 1rem 0 1.25rem;gap:.75rem}.flex-gap.svelte-h71cn6{flex:1}.flex-gap-sm.svelte-h71cn6{width:.5rem}.bar-left.svelte-h71cn6{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.bar-status.svelte-h71cn6{display:flex;align-items:center;gap:.5rem}.status-dot.svelte-h71cn6{width:7px;height:7px;border-radius:50%;flex-shrink:0;transition:background .4s ease}.status-dot.pulse.svelte-h71cn6{animation:dotPulse 1.6s ease-in-out infinite}.status-word.svelte-h71cn6{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;transition:color .4s ease;white-space:nowrap}.run-tag.svelte-h71cn6{font-size:.7rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.view-report-btn.svelte-h71cn6{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:500;color:var(--accent);text-decoration:none;white-space:nowrap;border:1px solid var(--accent);border-radius:var(--radius-sm);padding:.2rem .6rem;background:var(--accent-soft);transition:background var(--duration-fast),color var(--duration-fast)}.view-report-btn.svelte-h71cn6:hover{background:var(--accent);color:var(--white)}.bar-center.svelte-h71cn6{display:flex;align-items:center;gap:.625rem}.input-wrap.svelte-h71cn6{position:relative;display:flex;align-items:center}.input-icon.svelte-h71cn6{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none;opacity:.6}.tag-input.svelte-h71cn6{height:28px;padding:0 .75rem 0 2rem;font-size:.8rem;font-family:JetBrains Mono,monospace;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);outline:none;transition:border-color var(--duration-fast);width:200px}.tag-input.svelte-h71cn6:focus{border-color:var(--accent)}.tag-input.svelte-h71cn6::placeholder{color:var(--text-muted);opacity:.45}.tag-input.svelte-h71cn6:disabled{opacity:.45}.ctrl-divider.svelte-h71cn6{width:1px;height:24px;background:var(--border);flex-shrink:0}.ctrl-group.svelte-h71cn6{display:flex;flex-direction:column;gap:2px}.ctrl-label.svelte-h71cn6{font-size:.555rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);opacity:.65;line-height:1}.stepper.svelte-h71cn6{display:flex;align-items:center;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.step-btn.svelte-h71cn6{width:20px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-muted);cursor:pointer;font-size:.875rem;font-weight:400;line-height:1;transition:color var(--duration-fast),background var(--duration-fast)}.step-btn.svelte-h71cn6:hover:not(:disabled){color:var(--text);background:var(--bg-elevated)}.step-btn.svelte-h71cn6:disabled{opacity:.3;cursor:default}.step-val.svelte-h71cn6{min-width:20px;text-align:center;font-size:.78rem;font-weight:500;color:var(--text);font-family:JetBrains Mono,monospace;line-height:24px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.dropdown-wrap.svelte-h71cn6{position:relative}.dropdown-trigger.svelte-h71cn6{display:inline-flex;align-items:center;gap:.3rem;height:24px;padding:0 .5rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.78rem;color:var(--text);cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast),color var(--duration-fast);white-space:nowrap}.dropdown-trigger.svelte-h71cn6:hover:not(:disabled){border-color:color-mix(in srgb,var(--text-muted) 50%,var(--border))}.dropdown-trigger.open.svelte-h71cn6{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropdown-trigger.has-remote.svelte-h71cn6{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dropdown-trigger.svelte-h71cn6:disabled{opacity:.45;cursor:default}.trigger-chevron.svelte-h71cn6{transition:transform .18s var(--ease-out);flex-shrink:0}.trigger-chevron.open.svelte-h71cn6{transform:rotate(180deg)}.dropdown-menu.svelte-h71cn6{position:absolute;bottom:calc(100% + 8px);left:0;min-width:130px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 8px 28px #00000021;padding:.3rem;z-index:300;display:flex;flex-direction:column;gap:1px}.dropdown-item.svelte-h71cn6{display:flex;align-items:center;gap:.5rem;width:100%;padding:.35rem .5rem;border:none;border-radius:var(--radius-sm);background:transparent;font-family:var(--font-body);font-size:.8125rem;color:var(--text);cursor:pointer;text-align:left;transition:background var(--duration-fast)}.dropdown-item.svelte-h71cn6:hover{background:var(--bg-subtle)}.dropdown-item.active.svelte-h71cn6{color:var(--accent)}.runners-menu.svelte-h71cn6{min-width:160px}.runner-option.svelte-h71cn6{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.8125rem;color:var(--text);transition:background var(--duration-fast)}.runner-option.svelte-h71cn6:hover{background:var(--bg-subtle)}.runner-option.svelte-h71cn6 input[type=checkbox]:where(.svelte-h71cn6){accent-color:var(--accent);width:13px;height:13px;cursor:pointer;flex-shrink:0}.runner-dot.svelte-h71cn6{width:6px;height:6px;border-radius:50%;flex-shrink:0}.runner-dot.built-in.svelte-h71cn6{background:var(--accent)}.runner-dot.remote.svelte-h71cn6{background:var(--pass)}.run-btn.svelte-h71cn6{display:inline-flex;align-items:center;gap:.4rem;height:30px;padding:0 .875rem;background:var(--accent);color:var(--white);border:none;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.8125rem;font-weight:500;cursor:pointer;transition:opacity var(--duration-fast);flex-shrink:0}.run-btn.svelte-h71cn6:hover:not(:disabled){opacity:.88}.run-btn.svelte-h71cn6:disabled,.run-btn.is-running.svelte-h71cn6{opacity:.6;cursor:default}.run-spinner.svelte-h71cn6{width:10px;height:10px;border:1.5px solid rgba(255,255,255,.35);border-top-color:var(--white);border-radius:50%;animation:svelte-h71cn6-spin .65s linear infinite;flex-shrink:0}@keyframes svelte-h71cn6-spin{to{transform:rotate(360deg)}}.notify-toggles.svelte-h71cn6{display:flex;gap:.25rem}.notify-btn.svelte-h71cn6{height:26px;padding:0 .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-size:.75rem;font-family:inherit;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.notify-btn.svelte-h71cn6:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.notify-btn.active.svelte-h71cn6{background:var(--accent);border-color:var(--accent);color:var(--white)}.notify-btn.svelte-h71cn6:disabled{opacity:.4;cursor:default}.expand-btn.svelte-h71cn6{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast);flex-shrink:0}.expand-btn.svelte-h71cn6:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.expand-btn.svelte-h71cn6 svg:where(.svelte-h71cn6){transition:transform .2s var(--ease-out)}.expand-btn.svelte-h71cn6 svg.flipped:where(.svelte-h71cn6){transform:rotate(180deg)}.body.svelte-h71cn6{border-top:1px solid var(--border);padding:.625rem 1.25rem;display:flex;flex-direction:column;gap:.375rem;min-height:72px}.run-card.svelte-h71cn6{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle);text-decoration:none;color:inherit;transition:background var(--duration-fast),border-color var(--duration-fast)}a.run-card.svelte-h71cn6:hover{background:var(--bg-elevated);border-color:var(--accent)}.run-card.active-run.svelte-h71cn6{border-left:3px solid var(--accent)}.run-card.cron-run.svelte-h71cn6{border-left:3px solid var(--warn)}.run-card-dot.svelte-h71cn6{width:8px;height:8px;border-radius:50%;flex-shrink:0}.pulse-accent.svelte-h71cn6{background:var(--accent);animation:dotPulse 1.6s ease-in-out infinite}.pulse-pass.svelte-h71cn6{background:var(--pass);animation:dotPulse 1.6s ease-in-out infinite}.run-card-info.svelte-h71cn6{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:0}.run-card-label.svelte-h71cn6{font-size:.8125rem;font-weight:500;color:var(--text)}.run-card-meta.svelte-h71cn6{font-size:.72rem;font-family:JetBrains Mono,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meta-dot.svelte-h71cn6{opacity:.4;margin:0 .15rem}.run-card-arrow.svelte-h71cn6{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}a.run-card.svelte-h71cn6:hover .run-card-arrow:where(.svelte-h71cn6){transform:translate(3px);color:var(--accent)}.empty-runs.svelte-h71cn6{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 0;color:var(--text-muted);font-size:.8125rem}.empty-icon.svelte-h71cn6{opacity:.4}.run-chip.svelte-h71cn6{display:inline-flex;align-items:center;gap:.4rem;height:28px;padding:0 .5rem 0 .625rem;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-size:.78rem;white-space:nowrap;max-width:200px}.run-chip-title.svelte-h71cn6{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.run-chip-count.svelte-h71cn6{font-size:.65rem;font-weight:600;letter-spacing:.04em;opacity:.75;white-space:nowrap;flex-shrink:0}.run-chip-count.none.svelte-h71cn6{color:var(--fail);opacity:1}.run-chip-spinner.svelte-h71cn6{width:9px;height:9px;border:1.5px solid color-mix(in srgb,var(--accent) 35%,transparent);border-top-color:var(--accent);border-radius:50%;animation:svelte-h71cn6-spin .65s linear infinite;flex-shrink:0}.run-chip-clear.svelte-h71cn6{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:transparent;color:var(--accent);cursor:pointer;border-radius:2px;opacity:.7;padding:0;flex-shrink:0;transition:opacity var(--duration-fast)}.run-chip-clear.svelte-h71cn6:hover{opacity:1}.run-pick-menu.svelte-h71cn6{min-width:180px;max-height:240px;overflow-y:auto}.dropdown-divider.svelte-h71cn6{height:1px;background:var(--border);margin:.25rem 0}.dropdown-empty.svelte-h71cn6{font-size:.8125rem;color:var(--text-muted);padding:.35rem .5rem;text-align:center;opacity:.7}.boot-loading.svelte-3qbr79{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:.875rem}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .loading-state.svelte-1a8ndj3{font-size:.875rem;color:var(--text-muted);padding:3rem 0}.breadcrumb.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted);margin-bottom:1.5rem}.bc-link.svelte-1a8ndj3{color:var(--accent);text-decoration:none}.bc-link.svelte-1a8ndj3:hover{text-decoration:underline}.bc-sep.svelte-1a8ndj3{color:var(--border)}.bc-current.svelte-1a8ndj3{color:var(--text-muted)}.suite-header.svelte-1a8ndj3{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.suite-title-row.svelte-1a8ndj3{display:flex;align-items:center;gap:.625rem;margin-bottom:.5rem;flex-wrap:wrap}.suite-title.svelte-1a8ndj3{font-size:1.75rem;font-weight:600;color:var(--text)}.suite-desc.svelte-1a8ndj3{font-size:.875rem;color:var(--text-muted);margin-bottom:.5rem;line-height:1.5}.suite-meta.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted)}.meta-sep.svelte-1a8ndj3{color:var(--border)}.workspace.svelte-1a8ndj3{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}.workspace.split.svelte-1a8ndj3{grid-template-columns:320px 1fr}.panel-toolbar.svelte-1a8ndj3{display:flex;align-items:center;justify-content:space-between;margin-bottom:.875rem}.panel-title.svelte-1a8ndj3{font-size:.9375rem;font-weight:500;color:var(--text)}.case-search.svelte-1a8ndj3{position:relative;display:flex;align-items:center;margin-bottom:.625rem}.case-search-icon.svelte-1a8ndj3{position:absolute;left:.6rem;color:var(--text-muted);pointer-events:none}.case-search-input.svelte-1a8ndj3{width:100%;height:30px;padding:0 1.75rem 0 2rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.case-search-input.svelte-1a8ndj3::placeholder{color:var(--text-muted)}.case-search-input.svelte-1a8ndj3:focus{border-color:var(--accent)}.case-search-input.svelte-1a8ndj3::-webkit-search-cancel-button{display:none}.case-search-clear.svelte-1a8ndj3{position:absolute;right:.5rem;display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.case-search-clear.svelte-1a8ndj3:hover{color:var(--text)}.case-no-results.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);padding:1rem .25rem}.case-list.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.375rem}.cases-pagination.svelte-1a8ndj3{margin-top:.875rem}.case-sort-bar.svelte-1a8ndj3{display:flex;align-items:center;gap:.3rem;margin-bottom:.625rem;flex-wrap:wrap}.case-sort-chip.svelte-1a8ndj3{display:flex;align-items:center;gap:.2rem;height:24px;padding:0 .5rem;font-family:var(--font-body);font-size:.75rem;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast),background var(--duration-fast)}.case-sort-chip.svelte-1a8ndj3:hover{color:var(--text);border-color:var(--accent)}.case-sort-chip.active.svelte-1a8ndj3{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.case-sort-dir.svelte-1a8ndj3{font-size:.65rem}.case-row.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem;width:100%;text-align:left;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.75rem;cursor:pointer;transition:border-color var(--duration-fast),background var(--duration-fast)}.case-row.svelte-1a8ndj3:hover{border-color:var(--accent)}.case-row.selected.svelte-1a8ndj3{border-color:var(--accent);background:var(--accent-soft)}.case-row-top.svelte-1a8ndj3{display:flex;align-items:center;gap:.375rem}.case-row-actions.svelte-1a8ndj3{margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.case-row.svelte-1a8ndj3:hover .case-row-actions:where(.svelte-1a8ndj3){opacity:1}.case-title.svelte-1a8ndj3{font-size:.875rem;color:var(--text);line-height:1.4}.case-steps.svelte-1a8ndj3{font-size:.7rem;color:var(--text-muted)}.detail-panel.svelte-1a8ndj3{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);overflow-y:auto;position:sticky;top:calc(56px + 1.5rem);max-height:calc(100vh - 56px - 3rem);padding-bottom:1.5rem}.detail-loading.svelte-1a8ndj3{padding:2rem;font-size:.875rem;color:var(--text-muted)}.detail-header.svelte-1a8ndj3{padding:1.25rem;border-bottom:1px solid var(--border)}.detail-title-row.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}.detail-header-actions.svelte-1a8ndj3{margin-left:auto;display:flex;align-items:center;gap:.25rem}.detail-case-title.svelte-1a8ndj3{font-size:1rem;font-weight:500;color:var(--text);margin-bottom:.375rem}.detail-case-desc.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);line-height:1.5;margin-bottom:.375rem}.detail-meta.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted)}.case-history-bars.svelte-1a8ndj3{display:flex;align-items:flex-end;gap:2px;height:16px;margin-top:.5rem}.history-bar.svelte-1a8ndj3{width:4px;height:100%;border-radius:1px;background:var(--border)}.history-bar.pass.svelte-1a8ndj3{background:var(--pass)}.history-bar.fail.svelte-1a8ndj3{background:var(--fail)}.history-bar.warn.svelte-1a8ndj3{background:var(--warn)}.history-bar.muted.svelte-1a8ndj3{background:var(--text-muted)}.detail-tabs.svelte-1a8ndj3{display:flex;border-bottom:1px solid var(--border)}.detail-tab.svelte-1a8ndj3{padding:.625rem 1rem;font-family:var(--font-body);font-size:.8125rem;font-weight:400;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);margin-bottom:-1px}.detail-tab.svelte-1a8ndj3:hover{color:var(--text)}.detail-tab.active.svelte-1a8ndj3{color:var(--accent);border-bottom-color:var(--accent)}.steps-section.svelte-1a8ndj3,.history-section.svelte-1a8ndj3{padding:1rem 1.25rem}.steps-toolbar.svelte-1a8ndj3{display:flex;align-items:center;gap:.5rem;margin-bottom:.875rem}.add-step-btn.svelte-1a8ndj3{margin-left:auto;font-size:.8125rem;color:var(--accent);background:none;border:none;cursor:pointer;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background var(--duration-fast)}.add-step-btn.svelte-1a8ndj3:hover{background:var(--accent-soft)}.no-steps.svelte-1a8ndj3{font-size:.8125rem;color:var(--text-muted);padding:1rem 0}.steps-table.svelte-1a8ndj3{font-size:.8125rem;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.steps-table-head.svelte-1a8ndj3,.steps-table-row.svelte-1a8ndj3{display:grid;grid-template-columns:28px 1fr 1fr 1fr;gap:.5rem;padding:.5rem .75rem;align-items:start}.steps-table-head.svelte-1a8ndj3{background:var(--bg-subtle);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.steps-table-row.svelte-1a8ndj3{border-top:1px solid var(--border);color:var(--text);line-height:1.5}.col-num.svelte-1a8ndj3{color:var(--text-muted)}.steps-editor.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.5rem}.step-editor-row.svelte-1a8ndj3{display:flex;align-items:flex-end;gap:.5rem}.step-num.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted);min-width:20px;padding-bottom:.5rem}.step-editor-fields.svelte-1a8ndj3{flex:1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem}.step-field.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem}.step-field-label.svelte-1a8ndj3{font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.edit-case-form.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.history-list.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.5rem}.history-row.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--bg-subtle);border-radius:var(--radius-sm);border:1px solid var(--border)}.history-info.svelte-1a8ndj3{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.history-source.svelte-1a8ndj3{font-size:.8125rem;font-weight:500;color:var(--text)}.history-link.svelte-1a8ndj3{color:var(--accent);text-decoration:none}.history-link.svelte-1a8ndj3:hover{text-decoration:underline}.history-missing.svelte-1a8ndj3{font-style:italic;color:var(--text-muted)}.history-by.svelte-1a8ndj3,.history-date.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted)}.history-notes.svelte-1a8ndj3{font-size:.75rem;color:var(--text-muted);font-style:italic}.result-badge.svelte-1a8ndj3{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.15rem .5rem;border-radius:var(--radius-pill);align-self:flex-start}.result-badge.pass.svelte-1a8ndj3{background:var(--pass-soft);color:var(--pass)}.result-badge.fail.svelte-1a8ndj3{background:var(--fail-soft);color:var(--fail)}.result-badge.warn.svelte-1a8ndj3{background:var(--warn-soft);color:var(--warn)}.result-badge.muted.svelte-1a8ndj3{background:var(--bg-subtle);color:var(--text-muted)}.id-chip.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;letter-spacing:.02em}.id-chip.large.svelte-1a8ndj3{font-size:.75rem;padding:.1rem .45rem}.id-chip.small.svelte-1a8ndj3{font-size:.65rem;padding:.08rem .35rem}.priority-badge.svelte-1a8ndj3{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem}.priority-badge.small.svelte-1a8ndj3{font-size:.62rem}.priority-badge.critical.svelte-1a8ndj3{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-1a8ndj3{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-1a8ndj3{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-1a8ndj3{background:var(--bg-subtle);color:var(--text-muted)}.auto-badge.svelte-1a8ndj3{font-size:.62rem;font-weight:500;background:var(--pass-soft);color:var(--pass);border-radius:var(--radius-pill);padding:.15rem .5rem}.tag-chip.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-size:.68rem;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:4px;padding:.08rem .4rem}.icon-btn.svelte-1a8ndj3{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;color:var(--text-muted);transition:background var(--duration-fast),color var(--duration-fast)}.icon-btn.small.svelte-1a8ndj3{width:24px;height:24px}.icon-btn.svelte-1a8ndj3:hover{background:var(--bg-subtle);color:var(--text)}.icon-btn.danger.svelte-1a8ndj3:hover{background:var(--fail-soft);color:var(--fail)}.form-fields.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.875rem}.field.svelte-1a8ndj3{display:flex;flex-direction:column;gap:.375rem}.field-row.svelte-1a8ndj3{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.field-label.svelte-1a8ndj3{font-size:.8125rem;font-weight:500;color:var(--text);display:flex;align-items:baseline;gap:.5rem}.field-hint.svelte-1a8ndj3{font-size:.75rem;font-weight:400;color:var(--text-muted)}.field-textarea.svelte-1a8ndj3{height:auto;resize:vertical}.mono.svelte-1a8ndj3{font-family:JetBrains Mono,monospace;font-size:.8125rem!important}.form-error.svelte-1a8ndj3{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-1a8ndj3{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 768px){.workspace.split.svelte-1a8ndj3{grid-template-columns:1fr}}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .page-header.svelte-wkly2m{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-wkly2m{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-wkly2m{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-wkly2m{color:var(--text-muted);font-size:.875rem}.rate-display.svelte-wkly2m{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem}.rate-number.svelte-wkly2m{font-family:var(--font-display);font-size:2.75rem;line-height:1;font-weight:400}.rate-number.pass.svelte-wkly2m{color:var(--pass)}.rate-number.warn.svelte-wkly2m{color:var(--warn)}.rate-number.fail.svelte-wkly2m{color:var(--fail)}.rate-label.svelte-wkly2m{font-size:.75rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.stats-bar.svelte-wkly2m{margin-bottom:1rem}.pass-bar-track.svelte-wkly2m{height:3px;background:var(--fail-soft);border-radius:var(--radius-pill);overflow:hidden;margin-bottom:.5rem}.pass-bar-fill.svelte-wkly2m{height:100%;background:var(--pass);border-radius:var(--radius-pill);transition:width .9s var(--ease-out) .1s}.bar-legend.svelte-wkly2m{display:flex;gap:1rem}.legend-pass.svelte-wkly2m{font-size:.75rem;color:var(--pass);font-weight:500}.legend-fail.svelte-wkly2m{font-size:.75rem;color:var(--fail);font-weight:500}.trend-row.svelte-wkly2m{display:flex;align-items:center;gap:.75rem}.trend-label.svelte-wkly2m{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.trend-dots.svelte-wkly2m{display:flex;align-items:center;gap:5px}.trend-dot.svelte-wkly2m{width:9px;height:9px;border-radius:50%;transition:transform var(--duration-fast);animation:fadeUp .3s var(--ease-out) both}.trend-dot.svelte-wkly2m:hover{transform:scale(1.4)}.trend-dot.pass.svelte-wkly2m{background:var(--pass)}.trend-dot.fail.svelte-wkly2m{background:var(--fail)}.trend-hint.svelte-wkly2m{font-size:.68rem;color:var(--text-muted);opacity:.6}.list-header.svelte-wkly2m{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem .375rem}.select-all-wrap.svelte-wkly2m{display:flex;align-items:center;cursor:pointer;padding:.25rem}.btn-delete-selected.svelte-wkly2m{height:30px;padding:0 .75rem;font-size:.78rem;font-family:inherit;font-weight:500;color:var(--fail);background:var(--fail-soft, rgba(239, 68, 68, .08));border:1px solid var(--fail);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--duration-fast),opacity var(--duration-fast)}.btn-delete-selected.svelte-wkly2m:hover{background:var(--fail);color:var(--white)}.report-list.svelte-wkly2m{display:flex;flex-direction:column;gap:.5rem}.report-row.svelte-wkly2m{display:flex;align-items:center;gap:.5rem;animation:fadeUp .32s var(--ease-out) both}.row-check-wrap.svelte-wkly2m{flex-shrink:0;display:flex;align-items:center;cursor:pointer;padding:.25rem}.checkbox.svelte-wkly2m{width:15px;height:15px;accent-color:var(--accent, #7c3aed);cursor:pointer}.report-item.svelte-wkly2m{flex:1;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);text-decoration:none;color:inherit;border-left-width:3px;transition:background var(--duration-fast),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast);min-width:0}.report-item.svelte-wkly2m:hover{background:var(--bg-subtle);transform:translate(2px);box-shadow:0 2px 12px #0000000a}.report-item.is-pass.svelte-wkly2m{border-left-color:var(--pass)}.report-item.is-fail.svelte-wkly2m{border-left-color:var(--fail)}.report-row.is-selected.svelte-wkly2m .report-item:where(.svelte-wkly2m){background:var(--bg-subtle);border-color:var(--accent, #7c3aed)}.item-left.svelte-wkly2m{display:flex;align-items:center;gap:.875rem;min-width:0}.status-mark.svelte-wkly2m{font-size:.875rem;font-weight:600;flex-shrink:0;width:20px;text-align:center}.status-mark.pass.svelte-wkly2m{color:var(--pass)}.status-mark.fail.svelte-wkly2m{color:var(--fail)}.item-meta.svelte-wkly2m{display:flex;align-items:center;gap:.625rem;min-width:0}.item-tags.svelte-wkly2m{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.item-badges.svelte-wkly2m{flex-shrink:0}.item-right.svelte-wkly2m{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.item-date.svelte-wkly2m{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.item-arrow.svelte-wkly2m{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.report-item.svelte-wkly2m:hover .item-arrow:where(.svelte-wkly2m){transform:translate(3px);color:var(--text)}.row-delete-btn.svelte-wkly2m{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;opacity:0;transition:opacity var(--duration-fast),color var(--duration-fast),background var(--duration-fast)}.report-row.svelte-wkly2m:hover .row-delete-btn:where(.svelte-wkly2m){opacity:1}.row-delete-btn.svelte-wkly2m:hover{color:var(--fail);background:var(--fail-soft, rgba(239, 68, 68, .08))}.pagination-wrap.svelte-wkly2m{margin-top:1.25rem}
@@ -1,6 +0,0 @@
1
- /*
2
- * This file is part of Plum.
3
- * Licensed under the MIT License. See LICENSE file in the project root for details.
4
- */
5
-
6
- .status-dot.svelte-eg9xrn{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.pass.svelte-eg9xrn{background:var(--pass)}.fail.svelte-eg9xrn{background:var(--fail)}.skip.svelte-eg9xrn{background:var(--text-muted)}.tag-chip.svelte-foe7v9{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);white-space:nowrap}.kw.svelte-3mvi7i{font-size:.72rem;font-weight:500;letter-spacing:.04em;flex-shrink:0;padding:.05rem .4rem;border-radius:3px;font-family:JetBrains Mono,monospace}.kw-given.svelte-3mvi7i{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-3mvi7i{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-3mvi7i{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-3mvi7i{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-status-icon.svelte-9zpq1y{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;text-align:center}.icon-pass.svelte-9zpq1y{color:var(--pass)}.icon-fail.svelte-9zpq1y{color:var(--fail)}.icon-skip.svelte-9zpq1y{color:var(--text-muted)}.report-header.svelte-1cdcqpr{border-radius:var(--radius-lg);border:1px solid var(--border);border-top-width:3px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-1cdcqpr{border-top-color:var(--pass)}.report-header.fail.svelte-1cdcqpr{border-top-color:var(--fail)}.header-main.svelte-1cdcqpr{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-1cdcqpr{display:flex;align-items:center;gap:1rem}.status-icon-wrap.svelte-1cdcqpr{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.status-icon-wrap.pass-bg.svelte-1cdcqpr{background:var(--pass-soft);color:var(--pass)}.status-icon-wrap.fail-bg.svelte-1cdcqpr{background:var(--fail-soft);color:var(--fail)}.h1-row.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;margin-bottom:.2rem}.run-name-badge.svelte-1cdcqpr{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius-pill);padding:.25rem .7rem;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis;margin-top:3px}h1.svelte-1cdcqpr{font-size:2rem;margin-bottom:0}.header-meta.svelte-1cdcqpr{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;flex-wrap:wrap;gap:.35rem}.meta-sep.svelte-1cdcqpr{opacity:.4}.mono.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.78rem}.browser-pill.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.3rem;font-family:JetBrains Mono,monospace;font-size:.68rem;font-weight:500;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .45rem}.header-stats.svelte-1cdcqpr{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-1cdcqpr{display:flex;flex-direction:column;align-items:center;gap:.15rem}.stat-num.svelte-1cdcqpr{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.25rem;font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-1cdcqpr{color:var(--pass)}.fail-color.svelte-1cdcqpr{color:var(--fail)}.muted-color.svelte-1cdcqpr{color:var(--text-muted)}.feature.svelte-1cdcqpr{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-top-width:3px;border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.feature-pass.svelte-1cdcqpr{border-top-color:var(--pass)}.feature-fail.svelte-1cdcqpr{border-top-color:var(--fail)}.feature-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-subtle)}.feature-icon.svelte-1cdcqpr{flex-shrink:0;color:var(--text-muted);opacity:.7}.feature-name.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;font-size:.9375rem;font-family:var(--font-display);font-weight:400;flex:1;min-width:0}.feature-right.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.feature-file.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted)}.suite-tag.svelte-1cdcqpr{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:var(--radius-pill);font-weight:500}.scenarios.svelte-1cdcqpr{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.scenario.svelte-1cdcqpr{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario.scenario-fail.svelte-1cdcqpr{border-left-width:3px;border-left-color:var(--fail)}.scenario-row.svelte-1cdcqpr{display:flex;align-items:stretch}.scenario-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;flex:1;min-width:0;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-1cdcqpr:hover{background:var(--bg-subtle)}.replay-btn.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.3rem;padding:0 .875rem;font-family:var(--font-body);font-size:.72rem;font-weight:500;color:var(--accent);background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast);white-space:nowrap}.replay-btn.svelte-1cdcqpr:hover{background:var(--accent-soft)}.replay-btn-sm.svelte-1cdcqpr{margin-left:auto;padding:.15rem .5rem;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:var(--radius-sm);font-size:.68rem}.scenario-name.svelte-1cdcqpr{flex:1;font-size:.875rem;color:var(--text);font-weight:400;text-align:left;display:inline-flex;align-items:center;gap:.4rem;min-width:0}.scenario-count.svelte-1cdcqpr{font-size:.65rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-1cdcqpr{display:flex;gap:.25rem;flex-shrink:0}.scenario-duration.svelte-1cdcqpr{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-1cdcqpr{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-1cdcqpr{transform:rotate(90deg)}.steps.svelte-1cdcqpr{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem .25rem 1.25rem;color:var(--text-muted);font-size:.72rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.example-header.svelte-1cdcqpr:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-1cdcqpr .scenario-duration:where(.svelte-1cdcqpr){margin-left:auto}.step.svelte-1cdcqpr{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-1cdcqpr{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-1cdcqpr{opacity:.5}.step-row.svelte-1cdcqpr{display:flex;align-items:baseline;gap:.5rem}.step-name.svelte-1cdcqpr{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-1cdcqpr{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-1cdcqpr{margin:.375rem 0 .25rem 1.75rem;padding:.625rem .875rem;background:var(--fail-soft);color:var(--fail);border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;font-size:.75rem;line-height:1.6;white-space:pre-wrap;word-break:break-word;border-left:2px solid var(--fail)}.screenshot-wrap.svelte-1cdcqpr{margin:.5rem 0 .25rem 1.75rem}.screenshot-toggle.svelte-1cdcqpr{font-size:.75rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.screenshot.svelte-1cdcqpr{margin-top:.5rem;max-width:100%;border-radius:var(--radius-sm);border:1px solid var(--border)}.loading-state.svelte-1cdcqpr{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-1cdcqpr{display:flex;gap:6px;align-items:center}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-1cdcqpr-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr):nth-child(2){animation-delay:.2s}.loading-dots.svelte-1cdcqpr span:where(.svelte-1cdcqpr):nth-child(3){animation-delay:.4s}@keyframes svelte-1cdcqpr-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-1cdcqpr{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}.logs-section.svelte-1cdcqpr{margin-bottom:1.25rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;animation:fadeUp .35s var(--ease-out) both}.logs-summary.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.logs-summary.svelte-1cdcqpr::-webkit-details-marker{display:none}.logs-summary.svelte-1cdcqpr:hover{background:var(--bg-subtle)}.log-runner-count.svelte-1cdcqpr{margin-left:auto;font-size:.7rem;font-weight:500;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .5rem}.log-tabs.svelte-1cdcqpr{display:flex;gap:0;border-bottom:1px solid var(--border);background:var(--bg-subtle);overflow-x:auto}.log-tab.svelte-1cdcqpr{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.78rem;font-weight:500;font-family:var(--font-body);color:var(--text-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color var(--duration-fast)}.log-tab.svelte-1cdcqpr:hover{color:var(--text)}.log-tab-active.svelte-1cdcqpr{color:var(--text);border-bottom-color:var(--accent)}.logs-body.svelte-1cdcqpr{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.775rem;line-height:1.7;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem 1.25rem;max-height:480px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0;border-top:1px solid var(--border)}.logs-body.svelte-1cdcqpr::-webkit-scrollbar{width:4px}.logs-body.svelte-1cdcqpr::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.replay-overlay.svelte-1cdcqpr{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.replay-modal.svelte-1cdcqpr{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(920px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px #00000080}.replay-modal-header.svelte-1cdcqpr{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--border);gap:1rem;flex-shrink:0}.replay-modal-title.svelte-1cdcqpr{font-size:.875rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-close.svelte-1cdcqpr{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:.25rem;display:flex;align-items:center;border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--duration-fast)}.replay-close.svelte-1cdcqpr:hover{color:var(--text)}.replay-screenshot-area.svelte-1cdcqpr{flex:1;min-height:0;background:var(--bg-subtle);display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.replay-screenshot.svelte-1cdcqpr{max-width:100%;max-height:100%;object-fit:contain;display:block}.replay-no-screenshot.svelte-1cdcqpr{color:var(--text-muted);font-size:.8125rem;font-family:JetBrains Mono,monospace}.replay-step-info.svelte-1cdcqpr{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--border);flex-shrink:0;min-width:0}.replay-step-name.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.8125rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.replay-timeline.svelte-1cdcqpr{padding:.5rem 1.25rem;border-top:1px solid var(--border);flex-shrink:0}.replay-slider.svelte-1cdcqpr{display:block;width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border-radius:2px;cursor:pointer;outline:none}.replay-slider.svelte-1cdcqpr::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--fill, 0%),var(--border) var(--fill, 0%))}.replay-slider.svelte-1cdcqpr::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:var(--accent);cursor:pointer;transition:transform .1s}.replay-slider.svelte-1cdcqpr:hover::-webkit-slider-thumb{transform:scale(1.25)}.replay-slider.svelte-1cdcqpr::-moz-range-track{height:4px;border-radius:2px;background:var(--border)}.replay-slider.svelte-1cdcqpr::-moz-range-progress{height:4px;border-radius:2px;background:var(--accent)}.replay-slider.svelte-1cdcqpr::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.replay-nav.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 1.25rem .625rem;border-top:1px solid var(--border);flex-shrink:0}.replay-nav-btn.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;transition:background var(--duration-fast)}.replay-nav-btn.svelte-1cdcqpr:hover:not(:disabled){background:var(--bg-elevated)}.replay-nav-btn.svelte-1cdcqpr:disabled{opacity:.35;cursor:default}.replay-play-btn.svelte-1cdcqpr{display:flex;align-items:center;justify-content:center;width:38px;height:38px;background:var(--accent);border:none;border-radius:50%;color:var(--white);cursor:pointer;transition:opacity var(--duration-fast),transform var(--duration-fast)}.replay-play-btn.svelte-1cdcqpr:hover{opacity:.85;transform:scale(1.05)}.replay-counter.svelte-1cdcqpr{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text-muted);min-width:5ch;text-align:center;margin-left:.25rem}