plum-e2e 2.9.17 → 2.12.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.
- package/.env +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +7 -7
- package/backend/app.js +1 -1
- package/backend/constants/socketEvents.js +8 -14
- package/backend/lib/csv.js +21 -0
- package/backend/lib/exportResponse.js +37 -0
- package/backend/lib/serverBootstrap.js +6 -6
- package/backend/lib/serverConfig.js +5 -3
- package/backend/mcp/server.js +47 -3
- package/backend/middleware/runnerOrAdmin.js +1 -1
- package/backend/package.json +1 -1
- package/backend/prisma/migrations/20260829000000_add_run_queue/migration.sql +29 -0
- package/backend/prisma/schema.prisma +30 -0
- package/backend/routes/active-runs.routes.js +10 -6
- package/backend/routes/node.routes.js +7 -0
- package/backend/routes/reports.routes.js +19 -0
- package/backend/routes/runners.routes.js +1 -1
- package/backend/routes/test-cases.routes.js +12 -0
- package/backend/routes/test-runs.routes.js +17 -0
- package/backend/routes/test-suites.routes.js +34 -0
- package/backend/routes/trigger.routes.js +8 -5
- package/backend/scripts/{manage-runners.mjs → manage-nodes.mjs} +67 -52
- package/backend/server.js +5 -1
- package/backend/services/cronService.js +15 -443
- package/backend/services/exportService.js +339 -0
- package/backend/services/nodeExecutionService.js +13 -1
- package/backend/services/runExecutorService.js +423 -0
- package/backend/services/runQueueService.js +276 -0
- package/backend/services/runnerService.js +22 -4
- package/backend/services/testImportService.js +87 -0
- package/backend/services/triggerService.js +13 -231
- package/backend/websockets/socketHandler.js +32 -590
- package/bin/plum.js +174 -68
- package/docker-compose.yml +1 -1
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +78 -70
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/.svelte-kit/{output/server/_app/immutable/assets/Toast.DENwYn3g.css → adapter-node/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/adapter-node/chunks/BackLink.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/adapter-node/chunks/ConfirmModal.js +2 -2
- package/frontend/.svelte-kit/adapter-node/chunks/EmptyState.js +2 -2
- package/frontend/.svelte-kit/adapter-node/chunks/Modal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/common.js +11 -4
- package/frontend/.svelte-kit/adapter-node/chunks/constants.js +6 -4
- package/frontend/.svelte-kit/adapter-node/chunks/format.js +3 -3
- package/frontend/.svelte-kit/adapter-node/chunks/index.js +4 -4
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/reports.js +1 -1
- package/frontend/.svelte-kit/adapter-node/chunks/reports2.js +38 -40
- package/frontend/.svelte-kit/adapter-node/chunks/repository.js +26 -14
- package/frontend/.svelte-kit/adapter-node/chunks/runner.js +10 -20
- package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +2 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/live/_id_/_page.svelte.js +254 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/login/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_id_/_page.svelte.js +39 -25
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +23 -19
- package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +5 -8
- package/frontend/.svelte-kit/adapter-node/entries/pages/settings/_page.svelte.js +354 -185
- package/frontend/.svelte-kit/adapter-node/entries/pages/setup/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/_page.svelte.js +55 -36
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/runs/_id_/_page.svelte.js +4 -7
- package/frontend/.svelte-kit/adapter-node/entries/pages/test-repository/suites/_id_/_page.svelte.js +66 -16
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +10 -10
- package/frontend/.svelte-kit/adapter-node/manifest.js +10 -10
- package/frontend/.svelte-kit/adapter-node/nodes/0.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/10.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/11.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/12.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/2.js +1 -1
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/4.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/6.js +3 -3
- package/frontend/.svelte-kit/adapter-node/nodes/7.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/8.js +2 -2
- package/frontend/.svelte-kit/adapter-node/nodes/9.js +1 -1
- package/frontend/.svelte-kit/ambient.d.ts +28 -28
- package/frontend/.svelte-kit/generated/client/app.js +4 -4
- package/frontend/.svelte-kit/generated/client/nodes/3.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/4.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/5.js +1 -1
- package/frontend/.svelte-kit/generated/client/nodes/6.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/app.js +4 -4
- package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +1 -1
- package/frontend/.svelte-kit/generated/client-optimized/nodes/6.js +1 -1
- package/frontend/.svelte-kit/generated/server/internal.js +1 -1
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +462 -403
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BEqlRAtD.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.DC0wD6w_.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.DdQVxyZK.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/{build/client/_app/immutable/assets/Toast.DENwYn3g.css → .svelte-kit/output/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3MBVX4Yb.js +175 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/6VDMVB5U.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B2lVGNml.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/2zMvi6fR.js → .svelte-kit/output/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIf7lHIm.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BIjh3jiU.js +8 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DMZwI8Cj.js → BWGoOYU0.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BdBJfKUi.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{t-La0hgu.js → BnXsGCy3.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BtTNggoY.js +8 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C1Vid6wz.js → CXQhSK1T.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/CKDtmZUQ.js → .svelte-kit/output/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{C8OURRSs.js → D72giPTu.js} +1 -1
- package/frontend/{build/client/_app/immutable/chunks/BmZ9upwL.js → .svelte-kit/output/client/_app/immutable/chunks/DDx3no2z.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DeiVAbyn.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DiexacSB.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{DDZw0L0T.js → Dlymnwnf.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/gCgJ3Cwu.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/htkwR9b-.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/DCgHuuvs.js → .svelte-kit/output/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/kFFd6Oo5.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/pNZogwkM.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/{w0D4Uzlq.js → prk8PJfA.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/r_d1Iu0W.js +6 -0
- package/frontend/{build/client/_app/immutable/chunks/CNdcuGR0.js → .svelte-kit/output/client/_app/immutable/chunks/tsOANt55.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/zXSLr47H.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.DgdSwPuN.js +7 -0
- package/frontend/{build/client/_app/immutable/entry/start.4qxHHAcl.js → .svelte-kit/output/client/_app/immutable/entry/start.D_lhI48n.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.D2F-i1I5.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.JIF2GfHq.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.A0AHLfOt.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.CVSPxlqY.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.CnAR0AQb.js +6 -0
- package/frontend/{build/client/_app/immutable/nodes/2.BCPSg7H4.js → .svelte-kit/output/client/_app/immutable/nodes/2.Bno00fr8.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.B6KwaCsM.js +6 -0
- package/frontend/{build/client/_app/immutable/nodes/3.8BFAJoHT.js → .svelte-kit/output/client/_app/immutable/nodes/4.BX70m3v6.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.UIFh06yr.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DZ1OV24V.js +10 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.CVHgJw-E.js +9 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.DDDQPmMj.js} +1 -1
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -1
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +78 -70
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/.svelte-kit/output/{client/_app/immutable/assets/Toast.DENwYn3g.css → server/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/.svelte-kit/output/server/chunks/BackLink.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/Badge.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/{Toast.js → Button.js} +2 -17
- package/frontend/.svelte-kit/output/server/chunks/ConfirmModal.js +2 -2
- package/frontend/.svelte-kit/output/server/chunks/EmptyState.js +2 -2
- package/frontend/.svelte-kit/output/server/chunks/Modal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/common.js +11 -4
- package/frontend/.svelte-kit/output/server/chunks/constants.js +6 -4
- package/frontend/.svelte-kit/output/server/chunks/format.js +3 -3
- package/frontend/.svelte-kit/output/server/chunks/index.js +4 -4
- package/frontend/.svelte-kit/output/server/chunks/internal.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/reports.js +1 -1
- package/frontend/.svelte-kit/output/server/chunks/reports2.js +38 -40
- package/frontend/.svelte-kit/output/server/chunks/repository.js +26 -14
- package/frontend/.svelte-kit/output/server/chunks/runner.js +10 -20
- package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +2 -0
- package/frontend/.svelte-kit/output/server/entries/pages/live/_id_/_page.svelte.js +254 -0
- package/frontend/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_id_/_page.svelte.js +39 -25
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +23 -19
- package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +5 -8
- package/frontend/.svelte-kit/output/server/entries/pages/settings/_page.svelte.js +354 -185
- package/frontend/.svelte-kit/output/server/entries/pages/setup/_page.svelte.js +1 -1
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/_page.svelte.js +55 -36
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/runs/_id_/_page.svelte.js +4 -7
- package/frontend/.svelte-kit/output/server/entries/pages/test-repository/suites/_id_/_page.svelte.js +66 -16
- package/frontend/.svelte-kit/output/server/manifest-full.js +10 -10
- package/frontend/.svelte-kit/output/server/manifest.js +10 -10
- package/frontend/.svelte-kit/output/server/nodes/0.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/1.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/10.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/11.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/12.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/2.js +1 -1
- package/frontend/.svelte-kit/output/server/nodes/3.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/4.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/5.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/6.js +3 -3
- package/frontend/.svelte-kit/output/server/nodes/7.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/8.js +2 -2
- package/frontend/.svelte-kit/output/server/nodes/9.js +1 -1
- package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css +6 -0
- package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.BEqlRAtD.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css +6 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/10.DC0wD6w_.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css +6 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Dm1nSEgE.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css +6 -0
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/3.Be5c3USL.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css +6 -0
- package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.ClS4XkkN.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css +6 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.DdQVxyZK.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css +6 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/8.DOC8fPSI.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css +6 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.DRrgBGDC.css.gz +0 -0
- package/frontend/{.svelte-kit/adapter-node/_app/immutable/assets/Toast.DENwYn3g.css → build/client/_app/immutable/assets/Button.C1zsJAUG.css} +1 -1
- package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.C1zsJAUG.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css +6 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/ExportMenu.DsJQ1Qua.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.B4TT3qNx.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.4bPj83tb.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Be5c3USL.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgtEi_a.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.ClS4XkkN.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOC8fPSI.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css +6 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Dm1nSEgE.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js +175 -0
- package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/3MBVX4Yb.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/6VDMVB5U.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B2lVGNml.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/2zMvi6fR.js → build/client/_app/immutable/chunks/BCh31ecr.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.br +6 -0
- package/frontend/build/client/_app/immutable/chunks/BCh31ecr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BDb8hZHu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIf7lHIm.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js +8 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BIjh3jiU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js +11 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BTV7EXZb.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DMZwI8Cj.js → BWGoOYU0.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BWGoOYU0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BdBJfKUi.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{t-La0hgu.js → BnXsGCy3.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BnXsGCy3.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js +8 -0
- package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BtTNggoY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C4Z3p6jE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNpD-yNH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUPWZLIN.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{C1Vid6wz.js → CXQhSK1T.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CXQhSK1T.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CKDtmZUQ.js → build/client/_app/immutable/chunks/CtgCYzu5.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CtgCYzu5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{C8OURRSs.js → D72giPTu.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/D72giPTu.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/BmZ9upwL.js → build/client/_app/immutable/chunks/DDx3no2z.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDx3no2z.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/D_thT6pZ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.br +6 -0
- package/frontend/build/client/_app/immutable/chunks/DeiVAbyn.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DiexacSB.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DiexacSB.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{DDZw0L0T.js → Dlymnwnf.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Dlymnwnf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/gCgJ3Cwu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/htkwR9b-.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/DCgHuuvs.js → build/client/_app/immutable/chunks/iL4SCrvY.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/iL4SCrvY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/kFFd6Oo5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/pNZogwkM.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/{w0D4Uzlq.js → prk8PJfA.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/prk8PJfA.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/qvxlSGpD.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/r_d1Iu0W.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/r_d1Iu0W.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/r_d1Iu0W.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/chunks/CNdcuGR0.js → build/client/_app/immutable/chunks/tsOANt55.js} +1 -1
- package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/tsOANt55.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js +6 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/zXSLr47H.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js +7 -0
- package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.DgdSwPuN.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/entry/start.4qxHHAcl.js → build/client/_app/immutable/entry/start.D_lhI48n.js} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.br → start.D_lhI48n.js.br} +1 -1
- package/frontend/build/client/_app/immutable/entry/{start.4qxHHAcl.js.gz → start.D_lhI48n.js.gz} +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.D2F-i1I5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{1.Df9sLw8b.js → 1.JIF2GfHq.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.br +5 -0
- package/frontend/build/client/_app/immutable/nodes/1.JIF2GfHq.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.A0AHLfOt.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.CVSPxlqY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.CnAR0AQb.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/2.BCPSg7H4.js → build/client/_app/immutable/nodes/2.Bno00fr8.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.Bno00fr8.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.B6KwaCsM.js.gz +0 -0
- package/frontend/{.svelte-kit/output/client/_app/immutable/nodes/3.8BFAJoHT.js → build/client/_app/immutable/nodes/4.BX70m3v6.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BX70m3v6.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.UIFh06yr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js +10 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DZ1OV24V.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js +6 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.B_XntBZ1.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js +9 -0
- package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.CVHgJw-E.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/{9.CvfGx3Hu.js → 9.DDDQPmMj.js} +1 -1
- package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.DDDQPmMj.js.gz +0 -0
- package/frontend/build/client/_app/version.json +1 -1
- package/frontend/build/client/_app/version.json.br +0 -0
- package/frontend/build/client/_app/version.json.gz +0 -0
- package/frontend/build/server/chunks/0-38cvTs44.js +22 -0
- package/frontend/build/server/chunks/0-38cvTs44.js.map +5 -0
- package/frontend/build/server/chunks/{1-Kxn9d30Z.js → 1-CcYsajvR.js} +3 -3
- package/frontend/build/server/chunks/{1-Kxn9d30Z.js.map → 1-CcYsajvR.js.map} +1 -1
- package/frontend/build/server/chunks/10-CFR2MUJt.js +14 -0
- package/frontend/build/server/chunks/10-CFR2MUJt.js.map +5 -0
- package/frontend/build/server/chunks/11-BmkiRQ9D.js +14 -0
- package/frontend/build/server/chunks/11-BmkiRQ9D.js.map +5 -0
- package/frontend/build/server/chunks/12-BphJAwnL.js +14 -0
- package/frontend/build/server/chunks/12-BphJAwnL.js.map +5 -0
- package/frontend/build/server/chunks/2-Dalgd2D4.js +14 -0
- package/frontend/build/server/chunks/{2-Dc_rKWoK.js.map → 2-Dalgd2D4.js.map} +1 -1
- package/frontend/build/server/chunks/3-BvsmdXCj.js +14 -0
- package/frontend/build/server/chunks/3-BvsmdXCj.js.map +5 -0
- package/frontend/build/server/chunks/4-CN18WCEn.js +14 -0
- package/frontend/build/server/chunks/4-CN18WCEn.js.map +5 -0
- package/frontend/build/server/chunks/5-BwLYF3xL.js +14 -0
- package/frontend/build/server/chunks/5-BwLYF3xL.js.map +5 -0
- package/frontend/build/server/chunks/6-DTM2N_k3.js +14 -0
- package/frontend/build/server/chunks/6-DTM2N_k3.js.map +5 -0
- package/frontend/build/server/chunks/7-DTNbErSe.js +14 -0
- package/frontend/build/server/chunks/7-DTNbErSe.js.map +5 -0
- package/frontend/build/server/chunks/8-BfCbb7pl.js +14 -0
- package/frontend/build/server/chunks/8-BfCbb7pl.js.map +5 -0
- package/frontend/build/server/chunks/9-CQKepnMw.js +14 -0
- package/frontend/build/server/chunks/{9-DirZG_Lu.js.map → 9-CQKepnMw.js.map} +1 -1
- package/frontend/build/server/chunks/{BackLink-BJ8NaemM.js → BackLink-CMpNTYqE.js} +2 -2
- package/frontend/build/server/chunks/BackLink-CMpNTYqE.js.map +5 -0
- package/frontend/build/server/chunks/{Badge-44ZTDx0V.js → Badge-BTWnF9pA.js} +2 -2
- package/frontend/build/server/chunks/Badge-BTWnF9pA.js.map +5 -0
- package/frontend/build/server/chunks/{Toast-v-q4ZnYq.js → Button-B9h9viZX.js} +3 -17
- package/frontend/build/server/chunks/Button-B9h9viZX.js.map +5 -0
- package/frontend/build/server/chunks/{ConfirmModal-C0EAXcq_.js → ConfirmModal-C6Cz898n.js} +4 -4
- package/frontend/build/server/chunks/ConfirmModal-C6Cz898n.js.map +5 -0
- package/frontend/build/server/chunks/{EmptyState-BA_eXaeR.js → EmptyState-CRtsJIv6.js} +3 -3
- package/frontend/build/server/chunks/EmptyState-CRtsJIv6.js.map +5 -0
- package/frontend/build/server/chunks/{Modal-DChG187n.js → Modal-BJJMnfIg.js} +2 -2
- package/frontend/build/server/chunks/Modal-BJJMnfIg.js.map +5 -0
- package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js +28 -0
- package/frontend/build/server/chunks/_layout.svelte-B8vZGefg.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-Kg69DDaM.js → _page.svelte-BrYksycU.js} +5 -5
- package/frontend/build/server/chunks/_page.svelte-BrYksycU.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.js +69 -0
- package/frontend/build/server/chunks/_page.svelte-BrnXHxJ4.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js +898 -0
- package/frontend/build/server/chunks/_page.svelte-C2WqvInJ.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js → _page.svelte-CP6jA1ex.js} +9 -9
- package/frontend/build/server/chunks/{_page.svelte-04WxjOuH.js.map → _page.svelte-CP6jA1ex.js.map} +1 -1
- package/frontend/build/server/chunks/{_page.svelte-D3E6Eojd.js → _page.svelte-Cf6bI1Y2.js} +5 -5
- package/frontend/build/server/chunks/_page.svelte-Cf6bI1Y2.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-1as75nPc.js → _page.svelte-D6b-klLK.js} +33 -29
- package/frontend/build/server/chunks/_page.svelte-D6b-klLK.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CWWeZuid.js → _page.svelte-DBjTpquQ.js} +73 -24
- package/frontend/build/server/chunks/_page.svelte-DBjTpquQ.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-CB8-QBNg.js → _page.svelte-DM1_y4Oq.js} +61 -42
- package/frontend/build/server/chunks/_page.svelte-DM1_y4Oq.js.map +5 -0
- package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js +257 -0
- package/frontend/build/server/chunks/_page.svelte-Mo-O3HJ5.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-BuFusRK1.js → _page.svelte-mZF4NrfU.js} +14 -17
- package/frontend/build/server/chunks/_page.svelte-mZF4NrfU.js.map +5 -0
- package/frontend/build/server/chunks/{_page.svelte-1jo8MapI.js → _page.svelte-nrlgIFaU.js} +13 -15
- package/frontend/build/server/chunks/_page.svelte-nrlgIFaU.js.map +5 -0
- package/frontend/build/server/chunks/{auth-Chw-wBpI.js → auth-DDPlushv.js} +2 -2
- package/frontend/build/server/chunks/{auth-Chw-wBpI.js.map → auth-DDPlushv.js.map} +1 -1
- package/frontend/build/server/chunks/{client-DEmxR_a-.js → client-CsTiGNZy.js} +2 -2
- package/frontend/build/server/chunks/{client-DEmxR_a-.js.map → client-CsTiGNZy.js.map} +1 -1
- package/frontend/build/server/chunks/{common-DYYTVHPw.js → common-DS-Z0UFe.js} +7 -2
- package/frontend/build/server/chunks/common-DS-Z0UFe.js.map +5 -0
- package/frontend/build/server/chunks/{constants-CXTaQaB6.js → constants-OmHysD51.js} +3 -2
- package/frontend/build/server/chunks/constants-OmHysD51.js.map +5 -0
- package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js → error.svelte-BXr4lXlB.js} +3 -3
- package/frontend/build/server/chunks/{error.svelte-BD3xNemk.js.map → error.svelte-BXr4lXlB.js.map} +1 -1
- package/frontend/build/server/chunks/{format-CiNRMfHu.js → format-Bqb0as15.js} +2 -2
- package/frontend/build/server/chunks/{format-CiNRMfHu.js.map → format-Bqb0as15.js.map} +1 -1
- package/frontend/build/server/chunks/{index-server-B3M9vyh2.js → index-server-53nOZg5X.js} +2 -2
- package/frontend/build/server/chunks/{index-server-B3M9vyh2.js.map → index-server-53nOZg5X.js.map} +1 -1
- package/frontend/build/server/chunks/{index2-5R1tbrep.js → index2-DGcbugKe.js} +2 -2
- package/frontend/build/server/chunks/{index2-5R1tbrep.js.map → index2-DGcbugKe.js.map} +1 -1
- package/frontend/build/server/chunks/{reports-D_ApeeNh.js → reports-chCHCDzB.js} +2 -2
- package/frontend/build/server/chunks/{reports-D_ApeeNh.js.map → reports-chCHCDzB.js.map} +1 -1
- package/frontend/build/server/chunks/{reports2-BtElN_53.js → reports2-Dr3zu9CD.js} +8 -9
- package/frontend/build/server/chunks/reports2-Dr3zu9CD.js.map +5 -0
- package/frontend/build/server/chunks/{repository-FYYV_vKE.js → repository-DSsWVKEb.js} +9 -3
- package/frontend/build/server/chunks/repository-DSsWVKEb.js.map +5 -0
- package/frontend/build/server/chunks/runner-aaUtOqck.js +27 -0
- package/frontend/build/server/chunks/runner-aaUtOqck.js.map +5 -0
- package/frontend/build/server/chunks/{stores-BLenR3c1.js → stores-C4ZkywTG.js} +3 -3
- package/frontend/build/server/chunks/{stores-BLenR3c1.js.map → stores-C4ZkywTG.js.map} +1 -1
- package/frontend/build/server/chunks/{theme-nAx-GvX_.js → theme-C81wSe5T.js} +2 -2
- package/frontend/build/server/chunks/{theme-nAx-GvX_.js.map → theme-C81wSe5T.js.map} +1 -1
- package/frontend/build/server/index.js +2 -2
- package/frontend/build/server/index.js.map +1 -1
- package/frontend/build/server/manifest.js +23 -23
- package/frontend/build/server/manifest.js.map +1 -1
- package/frontend/package-lock.json +14 -0
- package/frontend/package.json +2 -0
- package/frontend/src/lib/api/reports.js +7 -0
- package/frontend/src/lib/api/repository.js +28 -0
- package/frontend/src/lib/components/layout/RunnerPanel.svelte +187 -266
- package/frontend/src/lib/components/reports/RecordingPlayer.svelte +172 -2
- package/frontend/src/lib/components/ui/ExportMenu.svelte +154 -0
- package/frontend/src/lib/components/ui/NotificationStack.svelte +177 -0
- package/frontend/src/lib/constants.js +1 -1
- package/frontend/src/lib/copy/common.js +9 -0
- package/frontend/src/lib/copy/reports.js +29 -0
- package/frontend/src/lib/copy/repository.js +4 -0
- package/frontend/src/lib/copy/runners.js +9 -6
- package/frontend/src/lib/copy/settings.js +15 -0
- package/frontend/src/lib/socketEvents.js +3 -15
- package/frontend/src/lib/stores/notifications.js +23 -0
- package/frontend/src/lib/stores/replayVideo.js +51 -0
- package/frontend/src/lib/stores/runner.js +62 -46
- package/frontend/src/lib/utils/download.js +28 -0
- package/frontend/src/lib/utils/replayCapture.js +91 -0
- package/frontend/src/lib/utils/replayVideo.js +111 -0
- package/frontend/src/routes/+layout.svelte +2 -0
- package/frontend/src/routes/{reports/live → live/[id]}/+page.svelte +112 -183
- package/frontend/src/routes/reports/[id]/+page.svelte +38 -3
- package/frontend/src/routes/scheduled-tests/+page.svelte +11 -19
- package/frontend/src/routes/settings/+page.svelte +140 -56
- package/frontend/src/routes/test-repository/+page.svelte +44 -16
- package/frontend/src/routes/test-repository/runs/[id]/+page.svelte +14 -23
- package/frontend/src/routes/test-repository/suites/[id]/+page.svelte +38 -22
- package/package.json +1 -1
- package/backend/services/activeRunsService.js +0 -55
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/live/_page.svelte.js +0 -247
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/3InFPLvE.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAACMRH5.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKuh57WU.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CMEtqUfQ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CgnwuKKO.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CuqnZUex.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CzlPaHY9.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DHM6H-es.js +0 -7
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/TOCyHP97.js +0 -11
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/kkA1mrsH.js +0 -8
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/10.DEbnxfND.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/11.BViaDK2m.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/.svelte-kit/output/server/entries/pages/reports/live/_page.svelte.js +0 -247
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css +0 -6
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.BhSG-jZH.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css +0 -6
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/10.CdaQUS6U.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css +0 -6
- package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/12.Bj_a_5lv.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css +0 -6
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/4.0Eln51hV.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css +0 -6
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.DFV9OgAu.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css +0 -6
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/6.CFnbmY-D.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css +0 -6
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/8.BwgOqeMo.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css +0 -6
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/BackLink.CvWWuO3h.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css +0 -6
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.FOWXxvc7.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Toast.DENwYn3g.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.BuhMvMUj.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.0Eln51hV.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.5IJAEAjc.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BZfe6nWe.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.Bj_a_5lv.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BwgOqeMo.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css +0 -6
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CFnbmY-D.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/2zMvi6fR.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/3InFPLvE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAACMRH5.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BAMUGSh7.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKuh57WU.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BUwxRmHf.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BmZ9upwL.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C1Vid6wz.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/C8OURRSs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CGeZlCaI.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CKDtmZUQ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMBQQ9RZ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CMEtqUfQ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CNdcuGR0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CUC98kMZ.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CgnwuKKO.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Co3xKhEp.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.br +0 -5
- package/frontend/build/client/_app/immutable/chunks/CuqnZUex.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CzlPaHY9.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DCgHuuvs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DDZw0L0T.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js +0 -7
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DHM6H-es.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DMZwI8Cj.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DSLBMEpr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js +0 -6
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DbgD7JLa.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js +0 -11
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/TOCyHP97.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js +0 -8
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/kkA1mrsH.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/t-La0hgu.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/w0D4Uzlq.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js +0 -7
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.KrtMZ3my.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js +0 -11
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.C8DodwXs.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.Df9sLw8b.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/10.DEbnxfND.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/11.BViaDK2m.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/12.BMSCSd88.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.BCPSg7H4.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.8BFAJoHT.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.D-YT_JJe.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.DVeH2eQP.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/6.DI7-IJhN.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js +0 -6
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/7.C-pKvVZy.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js +0 -9
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/8.93Mb3ofT.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/9.CvfGx3Hu.js.gz +0 -0
- package/frontend/build/server/chunks/0-D5YWFygh.js +0 -22
- package/frontend/build/server/chunks/0-D5YWFygh.js.map +0 -5
- package/frontend/build/server/chunks/10-l6_ikL_D.js +0 -14
- package/frontend/build/server/chunks/10-l6_ikL_D.js.map +0 -5
- package/frontend/build/server/chunks/11-CNLerze_.js +0 -14
- package/frontend/build/server/chunks/11-CNLerze_.js.map +0 -5
- package/frontend/build/server/chunks/12-De6Ol6pu.js +0 -14
- package/frontend/build/server/chunks/12-De6Ol6pu.js.map +0 -5
- package/frontend/build/server/chunks/2-Dc_rKWoK.js +0 -14
- package/frontend/build/server/chunks/3-DrRqVrcX.js +0 -14
- package/frontend/build/server/chunks/3-DrRqVrcX.js.map +0 -5
- package/frontend/build/server/chunks/4-Bo04DC5Z.js +0 -14
- package/frontend/build/server/chunks/4-Bo04DC5Z.js.map +0 -5
- package/frontend/build/server/chunks/5-CFeE5dPZ.js +0 -14
- package/frontend/build/server/chunks/5-CFeE5dPZ.js.map +0 -5
- package/frontend/build/server/chunks/6-DZk37MZH.js +0 -14
- package/frontend/build/server/chunks/6-DZk37MZH.js.map +0 -5
- package/frontend/build/server/chunks/7-DiQJZEF_.js +0 -14
- package/frontend/build/server/chunks/7-DiQJZEF_.js.map +0 -5
- package/frontend/build/server/chunks/8-CKPVFOqJ.js +0 -14
- package/frontend/build/server/chunks/8-CKPVFOqJ.js.map +0 -5
- package/frontend/build/server/chunks/9-DirZG_Lu.js +0 -14
- package/frontend/build/server/chunks/BackLink-BJ8NaemM.js.map +0 -5
- package/frontend/build/server/chunks/Badge-44ZTDx0V.js.map +0 -5
- package/frontend/build/server/chunks/ConfirmModal-C0EAXcq_.js.map +0 -5
- package/frontend/build/server/chunks/EmptyState-BA_eXaeR.js.map +0 -5
- package/frontend/build/server/chunks/Modal-DChG187n.js.map +0 -5
- package/frontend/build/server/chunks/Toast-v-q4ZnYq.js.map +0 -5
- package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js +0 -29
- package/frontend/build/server/chunks/_layout.svelte-CHVI3Prt.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-1as75nPc.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-1jo8MapI.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js +0 -729
- package/frontend/build/server/chunks/_page.svelte-8gELc_B1.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-BuFusRK1.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js +0 -250
- package/frontend/build/server/chunks/_page.svelte-CAVyp70V.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CB8-QBNg.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-CWWeZuid.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-D3E6Eojd.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-Kg69DDaM.js.map +0 -5
- package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js +0 -57
- package/frontend/build/server/chunks/_page.svelte-L9fuiN_q.js.map +0 -5
- package/frontend/build/server/chunks/common-DYYTVHPw.js.map +0 -5
- package/frontend/build/server/chunks/constants-CXTaQaB6.js.map +0 -5
- package/frontend/build/server/chunks/reports2-BtElN_53.js.map +0 -5
- package/frontend/build/server/chunks/repository-FYYV_vKE.js.map +0 -5
- package/frontend/build/server/chunks/runner-DC7hXbnY.js +0 -37
- package/frontend/build/server/chunks/runner-DC7hXbnY.js.map +0 -5
- package/frontend/src/lib/components/ui/Toast.svelte +0 -24
- /package/frontend/.svelte-kit/output/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
- /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css → 4.BR3wgXcZ.css} +0 -0
- /package/frontend/build/client/_app/immutable/assets/{3.BR3wgXcZ.css.br → 4.BR3wgXcZ.css.br} +0 -0
- /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
|
-
import{h as ve,a as v,t as p,c as ot,s as E,e as bt,b as it,n as Mt}from"../chunks/CMBQQ9RZ.js";import{i as oe}from"../chunks/CKDtmZUQ.js";import{h as Ct,_ as ie,a as ce,ak as de,al as _e,Z as pe,a7 as ge,a6 as ue,a8 as fe,U as he,p as me,am as xe,an as Ee,l as S,b as ke,f as T,c as be,$ as Le,g as t,y as Pt,s as L,ao as ye,j as l,m as w,d as n,k as r,t as m,x as tt,n as ct}from"../chunks/BAACMRH5.js";import{i as k,s as Ie,a as Lt}from"../chunks/CgnwuKKO.js";import{e as Vt,t as A,a as yt,f as we,i as Te,c as Ot}from"../chunks/TOCyHP97.js";import{u as It,s as et,v as Se}from"../chunks/CUC98kMZ.js";import{b as jt}from"../chunks/2zMvi6fR.js";import{g as dt}from"../chunks/kkA1mrsH.js";import{p as Re}from"../chunks/DDZw0L0T.js";import{b as Ae,c as Be,d as Ne}from"../chunks/DHM6H-es.js";import{r as wt}from"../chunks/DbgD7JLa.js";import{e as Ce,g as Pe,h as Ve,i as Oe,V as je,j as De,k as Ue,l as Ge,w as $e,C as We,m as He,n as Me,o as Fe,q as qe,F as Ye,W as Ke,s as Ze,u as ze,v as Je,A as Qe,x as Xe,y as Dt,z as Ut,B as Gt,E as $t}from"../chunks/Co3xKhEp.js";import{t as ts}from"../chunks/DSLBMEpr.js";import{B as es}from"../chunks/CGeZlCaI.js";import{B as Wt}from"../chunks/CuqnZUex.js";function Ht(_t,pt,K){Ct&&ie();var st=_t,Z=he,B,at=ce()?de:_e;pe(()=>{at(Z,Z=pt())&&(B&&ge(B),B=ue(()=>K(st)))}),Ct&&(st=fe)}var ss=p('<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"></h2> <p class="svelte-4v9t4g"></p> <a href="/reports" class="idle-link svelte-4v9t4g"></a></div>'),as=p('<a class="cron-task-chip svelte-4v9t4g"> </a>'),rs=p('<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"> </h2> <div class="cron-task-list svelte-4v9t4g"></div> <p class="svelte-4v9t4g"></p></div>'),ns=p('<span class="live-badge svelte-4v9t4g"><span class="live-dot svelte-4v9t4g"></span> </span>'),ls=p('<span class="run-title-label svelte-4v9t4g"> </span> <span class="run-sep svelte-4v9t4g">·</span>',1),vs=p('<span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g"> </span>',1),os=p('<div class="run-info svelte-4v9t4g"><!> <span class="run-tag-label svelte-4v9t4g"> </span> <span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g"> </span> <span class="run-sep svelte-4v9t4g">·</span> <span class="run-detail svelte-4v9t4g"> </span> <!></div>'),is=p('<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> </button>'),cs=Mt('<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> ',1),ds=Mt('<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> ',1),_s=p('<div class="completion-bar svelte-4v9t4g"><div class="completion-left svelte-4v9t4g"><!></div> <div class="completion-right svelte-4v9t4g"><span class="redirect-hint svelte-4v9t4g"> </span> <button class="view-now-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"><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>'),ps=p('<span class="tab-count svelte-4v9t4g"> </span>'),gs=p('<button class="lane-tab svelte-4v9t4g"><span class="tab-dot svelte-4v9t4g"></span> <!></button>'),us=p('<div class="lane-tabs svelte-4v9t4g"></div>'),fs=p('<img class="live-shot svelte-4v9t4g">'),hs=p('<!> <div class="step-overlay svelte-4v9t4g"><span class="step-keyword svelte-4v9t4g"></span> <span class="step-name svelte-4v9t4g"> </span></div>',1),ms=p('<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"> </span></div>'),xs=p('<img class="live-shot svelte-4v9t4g">'),Es=p('<!> <div class="step-overlay svelte-4v9t4g"><span class="step-keyword svelte-4v9t4g"></span> <span class="step-name svelte-4v9t4g"> </span></div>',1),ks=p('<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"> </span></div>'),bs=p('<pre class="terminal svelte-4v9t4g"> </pre>'),Ls=p('<pre class="terminal svelte-4v9t4g"> </pre>'),ys=p('<div class="run-header svelte-4v9t4g"><div class="header-left svelte-4v9t4g"><!> <!></div> <!></div> <!> <!> <div class="run-view svelte-4v9t4g"><div class="screenshot-panel svelte-4v9t4g"><!></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"><!></span></div> <!></div></div>',1),Is=p("<!> <!>",1);function $s(_t,pt){me(pt,!1);const[K,st]=Ie(),Z=()=>Lt(Re,"$page",K),B=()=>Lt(Ae,"$backgroundRuns",K),at=()=>Lt(Be,"$runnerState",K),V=w(),s=w(),U=w(),N=w(),G=w(),Tt=w(),C=w(),Ft={output:"",running:!1,testCompleted:!1,latestReportId:null,status:"idle",lanes:[],currentRun:null,latestScreenshot:null};let $=w(),W=w(),O=w(null),z=w(It/1e3),j=w(null),P=w(null);xe(()=>{t($)&&Pt($,t($).scrollTop=t($).scrollHeight),t(W)&&Pt(W,t(W).scrollTop=t(W).scrollHeight)}),Ee(()=>{t(O)&&clearTimeout(t(O)),t(j)&&clearInterval(t(j))});function qt(){t(O)&&clearTimeout(t(O)),t(j)&&clearInterval(t(j)),dt(wt(t(s).latestReportId))}S(()=>Z(),()=>{L(V,Z().url.searchParams.get("run"))}),S(()=>(t(V),B(),at()),()=>{L(s,t(V)?B()[t(V)]??Ft:at())}),S(()=>t(s),()=>{L(U,t(s).lanes.length>0)}),S(()=>B(),()=>{L(N,Object.entries(B()).filter(([,y])=>y.running))}),S(()=>(t(V),t(s),t(N)),()=>{L(G,!t(V)&&!t(s).running&&!t(s).testCompleted&&t(N).length>0)}),S(()=>(t(s),t(G)),()=>{L(Tt,!t(s).running&&!t(s).testCompleted&&!t(G))}),S(()=>(t(G),t(N),dt),()=>{t(G)&&t(N).length===1&&dt(`/reports/live?run=${t(N)[0][0]}`)}),S(()=>(t(s),t(P)),()=>{t(s).lanes.length===0?L(P,null):t(s).lanes.find(y=>y.id===t(P))||L(P,t(s).lanes[0].id)}),S(()=>(t(s),t(P)),()=>{L(C,t(s).lanes.find(y=>y.id===t(P))??null)}),S(()=>(t(s),t(O),t(z),t(j),wt),()=>{t(s).testCompleted&&t(s).latestReportId&&!t(O)&&(L(z,It/1e3),L(j,setInterval(()=>{ye(z,-1),t(z)<=0&&clearInterval(t(j))},1e3)),L(O,setTimeout(()=>dt(wt(t(s).latestReportId)),It)))}),ke(),oe();var St=Is();ve(y=>{Le.title=Ce});var Rt=T(St);es(Rt,{href:"/reports",label:Pe});var Yt=l(Rt,2);{var Kt=y=>{var H=ss(),rt=l(n(H),2);rt.textContent=Ve;var nt=l(rt,2);nt.textContent=Oe;var gt=l(nt,2);gt.textContent=je,r(H),v(y,H)},Zt=y=>{var H=ot(),rt=T(H);{var nt=M=>{var F=rs(),R=l(n(F),2),J=n(R,!0);r(R);var q=l(R,2);Vt(q,5,()=>t(N),([D,Q])=>D,(D,Q)=>{let ft=()=>t(Q)[0],lt=()=>t(Q)[1];var Y=as(),vt=n(Y);r(Y),m(ht=>{et(Y,"href",`/reports/live?run=${ft()??""}`),E(vt,`${lt().label??""} · ${ht??""}`)},[()=>ts(lt().kind)],tt),v(D,Y)}),r(q);var ut=l(q,2);ut.textContent=De,r(F),m(D=>E(J,D),[()=>Ue(t(N).length)],tt),v(M,F)},gt=M=>{var F=ys(),R=T(F),J=n(R),q=n(J);{var ut=a=>{var e=ns(),d=l(n(e),1,!0);d.nodeValue=Ge,r(e),v(a,e)},D=a=>{var e=ot(),d=T(e);{var c=i=>{Wt(i,{variant:"pass",children:(o,g)=>{ct();var _=it();_.nodeValue=Ze,v(o,_)},$$slots:{default:!0}})},u=i=>{Wt(i,{variant:"fail",children:(o,g)=>{ct();var _=it();_.nodeValue=ze,v(o,_)},$$slots:{default:!0}})};k(d,i=>{t(s).status==="pass"?i(c):i(u,!1)},!0)}v(a,e)};k(q,a=>{t(s).running?a(ut):a(D,!1)})}var Q=l(q,2);{var ft=a=>{var e=os(),d=n(e);{var c=f=>{var h=ls(),X=T(h),kt=n(X,!0);r(X),ct(2),m(()=>E(kt,t(s).currentRun.runTitle)),v(f,h)};k(d,f=>{t(s).currentRun.runTitle&&f(c)})}var u=l(d,2),i=n(u,!0);r(u);var o=l(u,4),g=n(o,!0);r(o);var _=l(o,4),x=n(_,!0);r(_);var I=l(_,2);{var b=f=>{var h=vs(),X=l(T(h),2),kt=n(X,!0);r(X),m(le=>E(kt,le),[()=>Je(t(s).lanes.length)],tt),v(f,h)};k(I,f=>{t(s).lanes.length>1&&f(b)})}r(e),m(f=>{E(i,t(s).currentRun.tag||Se),E(g,f),E(x,t(s).currentRun.browser)},[()=>$e(t(s).currentRun.workers)],tt),v(a,e)};k(Q,a=>{t(s).currentRun&&a(ft)})}r(J);var lt=l(J,2);{var Y=a=>{var e=is(),d=l(n(e));d.nodeValue=` ${We}`,r(e),bt("click",e,function(...c){var u;(u=Ne)==null||u.apply(this,c)}),v(a,e)};k(lt,a=>{t(s).running&&!t(V)&&a(Y)})}r(R);var vt=l(R,2);{var ht=a=>{var e=_s(),d=n(e),c=n(d);{var u=b=>{var f=cs(),h=l(T(f),1,!0);h.nodeValue=Qe,v(b,f)},i=b=>{var f=ds(),h=l(T(f),1,!0);h.nodeValue=Xe,v(b,f)};k(c,b=>{t(s).status==="pass"?b(u):b(i,!1)})}r(d);var o=l(d,2),g=n(o),_=n(g,!0);r(g);var x=l(g,2),I=n(x);I.nodeValue=`${He} `,ct(),r(x),r(o),r(e),m(b=>{A(e,"pass-bar",t(s).status==="pass"),A(e,"fail-bar",t(s).status==="fail"),E(_,b)},[()=>Me(t(z))],tt),bt("click",x,qt),yt(3,e,()=>we,()=>({y:-8,duration:250})),v(a,e)};k(vt,a=>{t(s).testCompleted&&t(s).latestReportId&&a(ht)})}var At=l(vt,2);{var zt=a=>{var e=us();Vt(e,5,()=>t(s).lanes,Te,(d,c)=>{var u=gs(),i=n(u),o=l(i),g=l(o);{var _=x=>{var I=ps(),b=n(I,!0);r(I),m(()=>E(b,t(c).testCount)),v(x,I)};k(g,x=>{t(c).testCount&&x(_)})}r(u),m(()=>{A(u,"active",t(P)===t(c).id),A(i,"tab-dot-running",t(c).status==="running"),A(i,"tab-dot-done",t(c).status==="done"),A(i,"tab-dot-error",t(c).status==="error"),E(o,` ${t(c).name??""} `)}),bt("click",u,()=>L(P,t(c).id)),v(d,u)}),r(e),v(a,e)};k(At,a=>{t(U)&&a(zt)})}var mt=l(At,2),xt=n(mt),Jt=n(xt);{var Qt=a=>{var e=ot(),d=T(e);{var c=i=>{var o=hs(),g=T(o);Ht(g,()=>t(C).latestScreenshot.data,f=>{var h=fs();et(h,"alt",$t),m(()=>et(h,"src",`data:image/jpeg;base64,${t(C).latestScreenshot.data??""}`)),yt(1,h,()=>Ot,()=>({duration:120})),v(f,h)});var _=l(g,2),x=n(_);x.textContent=Dt;var I=l(x,2),b=n(I,!0);r(I),r(_),m(()=>E(b,t(C).latestScreenshot.stepName)),v(i,o)},u=i=>{var o=ms(),g=l(n(o),2),_=n(g,!0);r(g),r(o),m(()=>{var x;return E(_,((x=t(C))==null?void 0:x.status)==="running"?Ut:Gt)}),v(i,o)};k(d,i=>{var o;(o=t(C))!=null&&o.latestScreenshot?i(c):i(u,!1)})}v(a,e)},Xt=a=>{var e=ot(),d=T(e);{var c=i=>{var o=Es(),g=T(o);Ht(g,()=>t(s).latestScreenshot.data,f=>{var h=xs();et(h,"alt",$t),m(()=>et(h,"src",`data:image/jpeg;base64,${t(s).latestScreenshot.data??""}`)),yt(1,h,()=>Ot,()=>({duration:120})),v(f,h)});var _=l(g,2),x=n(_);x.textContent=Dt;var I=l(x,2),b=n(I,!0);r(I),r(_),m(()=>E(b,t(s).latestScreenshot.stepName)),v(i,o)},u=i=>{var o=ks(),g=l(n(o),2),_=n(g,!0);r(g),r(o),m(()=>E(_,t(s).running?Ut:Gt)),v(i,o)};k(d,i=>{t(s).latestScreenshot?i(c):i(u,!1)},!0)}v(a,e)};k(Jt,a=>{t(U)?a(Qt):a(Xt,!1)})}r(xt);var Bt=l(xt,2),Et=n(Bt),Nt=l(n(Et),6),te=n(Nt);{var ee=a=>{var e=it();m(()=>{var d;return E(e,((d=t(C))==null?void 0:d.name)??Fe)}),v(a,e)},se=a=>{var e=it();m(()=>E(e,t(s).running?qe:Ye)),v(a,e)};k(te,a=>{t(U)?a(ee):a(se,!1)})}r(Nt),r(Et);var ae=l(Et,2);{var re=a=>{var e=bs(),d=n(e,!0);r(e),jt(e,c=>L(W,c),()=>t(W)),m(()=>{var c;return E(d,((c=t(C))==null?void 0:c.logs)||Ke)}),v(a,e)},ne=a=>{var e=Ls(),d=n(e,!0);r(e),jt(e,c=>L($,c),()=>t($)),m(()=>E(d,t(s).output)),v(a,e)};k(ae,a=>{t(U)?a(re):a(ne,!1)})}r(Bt),r(mt),m(()=>{A(R,"header-pass",t(s).status==="pass"),A(R,"header-fail",t(s).status==="fail"),A(mt,"no-top-radius",t(U))}),v(M,F)};k(rt,M=>{t(G)?M(nt):M(gt,!1)},!0)}v(y,H)};k(Yt,y=>{t(Tt)?y(Kt):y(Zt,!1)})}v(_t,St),be(),st()}export{$s as component};
|
|
@@ -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
|
-
import{h as Dt,a as u,s as g,e as K,t as x,b as j,c as Ut}from"../chunks/CMBQQ9RZ.js";import{i as Bt}from"../chunks/CKDtmZUQ.js";import{p as Pt,o as Mt,s as o,f as qe,c as Ht,m as w,$ as Wt,t as $,x as H,g as e,y as W,d as n,j as s,k as a,v as Jt,n as Ne}from"../chunks/BAACMRH5.js";import{i as J,s as Gt,a as Ft}from"../chunks/CgnwuKKO.js";import{e as ze,i as Xe,t as xe}from"../chunks/TOCyHP97.js";import{A as Ce,s as q,x as bt,y as z,n as ht,f as Vt,B as Me,b as Kt,r as de,z as qt,F as zt,G as Xt,D as Qt}from"../chunks/CUC98kMZ.js";import{b as lt,a as Et}from"../chunks/t-La0hgu.js";import{T as Yt,B as Qe,b as Zt}from"../chunks/CzlPaHY9.js";import{p as jt}from"../chunks/Bfc47y5P.js";import{f as es,a as ts}from"../chunks/3InFPLvE.js";import{b as ss}from"../chunks/DHM6H-es.js";import{s as as}from"../chunks/DSLBMEpr.js";import{B as ns}from"../chunks/CuqnZUex.js";import{M as rs}from"../chunks/CMEtqUfQ.js";import{C as ls}from"../chunks/DMZwI8Cj.js";import{E as os}from"../chunks/BKuh57WU.js";async function ot(){const c=await fetch(`${Ce}/cron-jobs`),{cronJobs:C}=await c.json();return C??[]}async function vs({taskName:c,cronExpression:C,tags:X,workers:Q,browser:O,runnerIds:R,notifyDiscord:T,notifySlack:B,isEditing:E,editTaskName:k}){const b=X.replace(/\sOR\s/gi,P=>P.toLowerCase()),Y=E?`${Ce}/cron-jobs/${encodeURIComponent(k)}`:`${Ce}/cron-jobs`;return(await fetch(Y,{method:E?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cronExpression:C,taskName:c,tags:b,workers:Q,browser:O,runnerIds:R,notifyDiscord:T??!1,notifySlack:B??!1})})).json()}async function cs(c,C){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}/toggle`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:C})})).json()}async function is(c){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}/run`,{method:"POST"})).json()}async function ds(c){return(await fetch(`${Ce}/cron-jobs/${encodeURIComponent(c)}`,{method:"DELETE"})).json()}const us="Scheduled Tests — Plum",fs="Scheduled Tests",_s="Manage recurring test runs via cron jobs",ms="+ New Job",ps="No scheduled tests yet. Create one to get started.",bs="Task Name",hs="Use a unique, meaningful name",Es="nightly-login-suite",gs="Schedule",ks="Select a schedule",ys="Custom…",Ns="0 9 * * 1-5",xs="Invalid cron expression",Cs="Tags",Ts="Multiple: @test-1 or @test-2. Leave blank to run all tests",Ss="@suite-login (optional)",Ls="Workers",$s="Parallel workers for this job",Rs="Browser",Is="Runners",As="Select one or more nodes",ws="this server",Os="Notifications",Ds="All fields are required.",Us="Invalid cron expression.",Bs="Failed to save. Please try again.",gt="Network error.",Ps="Could not update schedule.",Ms="Could not trigger run.",Hs="Could not delete cron job.",Ws="Delete Cron Job",Js="Are you sure you want to delete",Gs="Disable schedule",Fs="Enable schedule",Vs="Running now",Ks="Name",qs="Schedule",zs="Tags",Xs="Workers",Qs="Browser",Ys="Runner",Zs="Actions",js=c=>c?"Edit Cron Job":"New Cron Job",ea=c=>c?"Save Changes":"Add Cron Job",ta=c=>c?Gs:Fs,sa=c=>`Run ${c} now`,aa=c=>`${c} nodes`,na=(c,C)=>`${c?"Updated":"Added"}: ${C}`,ra=c=>`Started: ${c}`,la=c=>`Deleted: ${c}`,oa=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function va(c){if(!c)return"";const C=c.trim().split(/\s+/);if(C.length!==5)return"";const[X,Q,O,R,T]=C,B=(D,P)=>{const Te=D>=12?"PM":"AM";return`${D%12||12}:${String(P).padStart(2,"0")} ${Te}`},E=D=>/^\d+$/.test(D),k=E(Q)?+Q:null,b=E(X)?+X:null;if(c==="* * * * *")return"Every minute";const Y=X.match(/^\*\/(\d+)$/);if(Y&&Q==="*"&&O==="*"&&R==="*"&&T==="*")return`Every ${Y[1]} minutes`;if(b!==null&&Q==="*"&&O==="*"&&R==="*"&&T==="*")return`Every hour at :${String(b).padStart(2,"0")}`;if(b!==null&&k!==null&&O==="*"&&R==="*"&&T==="1-5")return`Weekdays at ${B(k,b)}`;if(b!==null&&k!==null&&O==="*"&&R==="*"&&T==="*")return`Daily at ${B(k,b)}`;if(b!==null&&k!==null&&O==="*"&&R==="*"&&/^\d$/.test(T))return`Every ${oa[+T]} at ${B(k,b)}`;const I=E(O)?+O:null;return b!==null&&k!==null&&I!==null&&R==="*"&&T==="*"?`Monthly on the ${I}${I===1?"st":I===2?"nd":I===3?"rd":"th"} at ${B(k,b)}`:""}var ca=x('<option class="svelte-13v7bmf"> </option>'),ia=x('<p class="cron-desc svelte-13v7bmf"> </p>'),da=x('<input type="text" class="field-input cron-input svelte-13v7bmf" spellcheck="false"> <!>',1),ua=x('<button type="button" class="seg-btn svelte-13v7bmf"><span class="seg-num svelte-13v7bmf"> </span></button>'),fa=x('<label class="runner-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="runner-check-dot remote svelte-13v7bmf"></span> <span class="svelte-13v7bmf"> </span> <span class="runner-check-hint svelte-13v7bmf"> </span></label>'),_a=x('<label class="notify-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="svelte-13v7bmf"></span></label>'),ma=x('<label class="notify-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="svelte-13v7bmf"></span></label>'),pa=x('<div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <div class="notify-checks svelte-13v7bmf"><!> <!></div></div>'),ba=x('<p class="form-error svelte-13v7bmf"> </p>'),ha=x('<form class="modal-form svelte-13v7bmf"><div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <input type="text" class="field-input svelte-13v7bmf" required></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <select class="field-input svelte-13v7bmf" required><option disabled class="svelte-13v7bmf"></option><!><option class="svelte-13v7bmf"></option></select> <!></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <input type="text" class="field-input svelte-13v7bmf"></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <div class="stepper svelte-13v7bmf"><button type="button" class="step-btn svelte-13v7bmf">−</button> <span class="step-val svelte-13v7bmf"> </span> <button type="button" class="step-btn svelte-13v7bmf">+</button></div></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span></div> <div class="seg-control svelte-13v7bmf"></div></div> <div class="field svelte-13v7bmf"><div class="field-label svelte-13v7bmf"><span class="svelte-13v7bmf"></span> <span class="field-hint svelte-13v7bmf"></span></div> <div class="runner-checks svelte-13v7bmf"><label class="runner-check-option svelte-13v7bmf"><input type="checkbox" class="svelte-13v7bmf"> <span class="runner-check-dot built-in svelte-13v7bmf"></span> <span class="svelte-13v7bmf"></span> <span class="runner-check-hint svelte-13v7bmf"></span></label> <!></div></div> <!> <!> <!></form>'),Ea=x(' <strong class="svelte-13v7bmf"> </strong> ',1),ga=x('<span class="running-dot svelte-13v7bmf"></span>'),ka=x('<tr class="job-row svelte-13v7bmf"><td class="td-toggle svelte-13v7bmf"><button class="toggle-btn svelte-13v7bmf"><span class="toggle-knob svelte-13v7bmf"></span></button></td><td class="td-run svelte-13v7bmf"><button class="run-icon-btn svelte-13v7bmf"><svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="none" class="svelte-13v7bmf"><polygon points="5,3 19,12 5,21" class="svelte-13v7bmf"></polygon></svg></button></td><td class="job-name svelte-13v7bmf"><!> </td><td class="svelte-13v7bmf"><!></td><td class="svelte-13v7bmf"><span class="tag-text svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="workers-badge svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="browser-badge svelte-13v7bmf"> </span></td><td class="svelte-13v7bmf"><span class="runner-badge svelte-13v7bmf"><!></span></td><td class="actions-cell svelte-13v7bmf"><!> <!></td></tr>'),ya=x('<div class="table-wrap svelte-13v7bmf"><table class="data-table svelte-13v7bmf"><thead class="svelte-13v7bmf"><tr class="svelte-13v7bmf"><th class="th-toggle svelte-13v7bmf"></th><th class="th-run svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th><th class="svelte-13v7bmf"></th></tr></thead><tbody class="svelte-13v7bmf"></tbody></table></div>'),Na=x('<!> <!> <!> <div class="page-header svelte-13v7bmf"><div class="header-row svelte-13v7bmf"><div class="svelte-13v7bmf"><h1 class="svelte-13v7bmf"></h1> <p class="subtitle svelte-13v7bmf"></p></div> <!></div></div> <div class="card svelte-13v7bmf" style="padding: 0; overflow: hidden;"><!></div>',1);function Ha(c,C){Pt(C,!1);const[X,Q]=Gt(),O=()=>Ft(ss,"$backgroundRuns",X),R=/^(\*|([0-5]?[0-9])|\*\/[0-9]+) (\*|([01]?[0-9]|2[0-3])) (\*|([01]?[0-9]|3[01])) (\*|([1-9]|1[0-2])) (\*|[0-6](-[0-6])?)$/,T="__custom__",B=[{label:"Every minute",value:"* * * * *"},{label:"Every hour",value:"0 * * * *"},{label:"Every midnight",value:"0 0 * * *"},{label:"Every Sunday",value:"0 0 * * 0"}];let E=w([]),k=w([]),b=w({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}),Y=w(null),I=w(!1),D=w(!1),P=w(!1),Te="",Se=w(""),r=w({taskName:"",cronExpression:"",tags:"",workers:1,browser:Me[0].id,runnerIds:[z],notifyDiscord:!1,notifySlack:!1}),Le=w(""),$e=w(!1),G=w("");function ee(t,f){o(Y,{type:t,message:f}),setTimeout(()=>o(Y,null),Kt)}function kt(t){t.target.value===T?(o($e,!0),W(r,e(r).cronExpression="")):(o($e,!1),W(r,e(r).cronExpression=t.target.value))}function vt(t){const f=e(r).runnerIds;f.includes(t)&&f.length===1||W(r,e(r).runnerIds=f.includes(t)?f.filter(d=>d!==t):[...f,t])}function ct(t){W(r,e(r).workers=Math.max(1,Math.min(10,(e(r).workers||1)+t)))}function yt(){o(P,!1),Te="",o(r,{taskName:"",cronExpression:"",tags:"",workers:1,browser:Me[0].id,runnerIds:[z],notifyDiscord:!1,notifySlack:!1}),o(Le,""),o($e,!1),o(G,""),o(I,!0)}function Nt(t){o(P,!0),Te=t.taskName;const f=new Set([z,...e(k).map(y=>y.id)]),S=(t.runnerIds?t.runnerIds.split(",").map(y=>y.trim()):[z]).filter(y=>f.has(y));o(r,{taskName:t.taskName,cronExpression:t.cronExpression,tags:t.tags,workers:t.workers??1,browser:t.browser??Me[0].id,runnerIds:S.length>0?S:[z],notifyDiscord:t.notifyDiscord??!1,notifySlack:t.notifySlack??!1});const L=B.some(y=>y.value===t.cronExpression);o($e,!L),o(Le,L?t.cronExpression:T),o(G,""),o(I,!0)}async function xt(){if(!e(r).taskName||!e(r).cronExpression){o(G,Ds);return}if(!R.test(e(r).cronExpression)){o(G,Us);return}o(G,"");try{(await vs({...e(r),isEditing:e(P),editTaskName:Te})).message?(ee("success",na(e(P),e(r).taskName)),o(I,!1),o(E,await ot())):o(G,Bs)}catch{o(G,gt)}}async function Ct(t){const f=!t.enabled;o(E,e(E).map(d=>d.taskName===t.taskName?{...d,enabled:f}:d));try{await cs(t.taskName,f)}catch{o(E,e(E).map(d=>d.taskName===t.taskName?{...d,enabled:!f}:d)),ee("error",Ps)}}async function Tt(t){try{await is(t),ee("success",ra(t))}catch{ee("error",Ms)}}async function St(){try{(await ds(e(Se))).message?(ee("success",la(e(Se))),o(E,await ot())):ee("error",Hs)}catch{ee("error",gt)}o(D,!1),o(Se,"")}function Lt(t){var f;return((f=B.find(d=>d.value===t))==null?void 0:f.label)??t}Mt(async()=>{await(async t=>(o(E,t[0]),o(k,t[1]),o(b,t[2])))(await Promise.all([ot(),es().catch(()=>[]),ts().catch(()=>({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}))]))}),Bt();var it=Na();Dt(t=>{Wt.title=us});var dt=qe(it);const $t=H(()=>js(e(P)));rs(dt,{get title(){return e($t)},get open(){return e(I)},set open(t){o(I,t)},children:(t,f)=>{var d=ha(),S=n(d),L=n(S),y=n(L);y.textContent=bs;var ue=s(y,2);ue.textContent=hs,a(L);var fe=s(L,2);de(fe),q(fe,"placeholder",Es),a(S);var _e=s(S,2),me=n(_e),He=n(me);He.textContent=gs,a(me);var te=s(me,2);$(()=>{e(Le),Jt(()=>{})});var se=n(te);se.value=((se.__value="")==null,""),se.textContent=ks;var We=s(se);ze(We,1,()=>B,Xe,(v,i)=>{var l=ca(),h={},A=n(l,!0);a(l),$(()=>{h!==(h=e(i).value)&&(l.value=(l.__value=e(i).value)==null?"":e(i).value),g(A,e(i).label)}),u(v,l)});var m=s(We);m.value=(m.__value=T)==null?"":T,m.textContent=ys,a(te);var je=s(te,2);{var ae=v=>{var i=da(),l=qe(i);de(l),q(l,"placeholder",Ns);var h=s(l,2);{var A=M=>{var F=ia(),Be=n(F,!0);a(F),$((Pe,V)=>{xe(F,"cron-invalid",Pe),g(Be,V)},[()=>!R.test(e(r).cronExpression),()=>R.test(e(r).cronExpression)?va(e(r).cronExpression)||e(r).cronExpression:xs],H),u(M,F)};J(h,M=>{e(r).cronExpression&&M(A)})}lt(l,()=>e(r).cronExpression,M=>W(r,e(r).cronExpression=M)),u(v,i)};J(je,v=>{e($e)&&v(ae)})}a(_e);var U=s(_e,2),ne=n(U),Z=n(ne);Z.textContent=Cs;var Re=s(Z,2);Re.textContent=Ts,a(ne);var pe=s(ne,2);de(pe),q(pe,"placeholder",Ss),a(U);var re=s(U,2),be=n(re),Je=n(be);Je.textContent=Ls;var et=s(Je,2);et.textContent=$s,a(be);var he=s(be,2),Ie=n(he),le=s(Ie,2),Ge=n(le,!0);a(le);var Fe=s(le,2);a(he),a(re);var oe=s(re,2),ve=n(oe),tt=n(ve);tt.textContent=Rs,a(ve);var Ee=s(ve,2);ze(Ee,5,()=>Me,Xe,(v,i)=>{var l=ua(),h=n(l),A=n(h,!0);a(h),a(l),$(()=>{xe(l,"active",e(r).browser===e(i).id),g(A,e(i).label)}),K("click",l,()=>W(r,e(r).browser=e(i).id)),u(v,l)}),a(Ee),a(oe);var ge=s(oe,2),Ae=n(ge),ke=n(Ae);ke.textContent=Is;var we=s(ke,2);we.textContent=As,a(Ae);var Ve=s(Ae,2),Oe=n(Ve),ye=n(Oe);de(ye);var De=s(ye,4);De.textContent=bt;var Ke=s(De,2);Ke.textContent=ws,a(Oe);var st=s(Oe,2);ze(st,1,()=>e(k),Xe,(v,i)=>{var l=fa(),h=n(l);de(h);var A=s(h,4),M=n(A,!0);a(A);var F=s(A,2),Be=n(F,!0);a(F),a(l),$(Pe=>{ht(h,Pe),g(M,e(i).name),g(Be,e(i).url)},[()=>e(r).runnerIds.includes(e(i).id)],H),K("change",h,()=>vt(e(i).id)),u(v,l)}),a(Ve),a(ge);var _=s(ge,2);{var p=v=>{var i=pa(),l=n(i),h=n(l);h.textContent=Os,a(l);var A=s(l,2),M=n(A);{var F=V=>{var ce=_a(),ie=n(ce);de(ie);var nt=s(ie,2);nt.textContent=qt,a(ce),Et(ie,()=>e(r).notifyDiscord,rt=>W(r,e(r).notifyDiscord=rt)),u(V,ce)};J(M,V=>{e(b).discordWebhookUrl&&V(F)})}var Be=s(M,2);{var Pe=V=>{var ce=ma(),ie=n(ce);de(ie);var nt=s(ie,2);nt.textContent=zt,a(ce),Et(ie,()=>e(r).notifySlack,rt=>W(r,e(r).notifySlack=rt)),u(V,ce)};J(Be,V=>{e(b).slackWebhookUrl&&V(Pe)})}a(A),a(i),u(v,i)};J(_,v=>{(e(b).discordWebhookUrl||e(b).slackWebhookUrl)&&v(p)})}var N=s(_,2);{var Ue=v=>{var i=ba(),l=n(i,!0);a(i),$(()=>g(l,e(G))),u(v,i)};J(N,v=>{e(G)&&v(Ue)})}var at=s(N,2);Qe(at,{type:"submit",size:"md",children:(v,i)=>{Ne();var l=j();$(h=>g(l,h),[()=>ea(e(P))],H),u(v,l)},$$slots:{default:!0}}),a(d),$(v=>{Ie.disabled=e(r).workers<=1,g(Ge,e(r).workers),Fe.disabled=e(r).workers>=10,ht(ye,v)},[()=>e(r).runnerIds.includes(z)],H),lt(fe,()=>e(r).taskName,v=>W(r,e(r).taskName=v)),Zt(te,()=>e(Le),v=>o(Le,v)),K("change",te,kt),lt(pe,()=>e(r).tags,v=>W(r,e(r).tags=v)),K("click",Ie,()=>ct(-1)),K("click",Fe,()=>ct(1)),K("change",ye,()=>vt(z)),K("submit",d,jt(xt)),u(t,d)},$$slots:{default:!0},$$legacy:!0});var ut=s(dt,2);ls(ut,{title:Ws,get open(){return e(D)},set open(t){o(D,t)},$$events:{confirm:St},children:(t,f)=>{Ne();var d=Ea(),S=qe(d);S.nodeValue=`${Js} `;var L=s(S),y=n(L,!0);a(L);var ue=s(L,1,!0);ue.nodeValue=Vt,$(()=>g(y,e(Se))),u(t,d)},$$slots:{default:!0},$$legacy:!0});var ft=s(ut,2);Yt(ft,{get toast(){return e(Y)}});var Ye=s(ft,2),_t=n(Ye),Ze=n(_t),mt=n(Ze);mt.textContent=fs;var Rt=s(mt,2);Rt.textContent=_s,a(Ze);var It=s(Ze,2);Qe(It,{$$events:{click:yt},children:(t,f)=>{Ne();var d=j();d.nodeValue=ms,u(t,d)},$$slots:{default:!0}}),a(_t),a(Ye);var pt=s(Ye,2),At=n(pt);{var wt=t=>{os(t,{message:ps,size:"sm"})},Ot=t=>{var f=ya(),d=n(f),S=n(d),L=n(S),y=s(n(L),2);y.textContent=Ks;var ue=s(y);ue.textContent=qs;var fe=s(ue);fe.textContent=zs;var _e=s(fe);_e.textContent=Xs;var me=s(_e);me.textContent=Qs;var He=s(me);He.textContent=Ys;var te=s(He);te.textContent=Zs,a(L),a(S);var se=s(S);ze(se,5,()=>e(E),Xe,(We,m,je)=>{var ae=ka();const U=H(()=>e(m).runnerIds?e(m).runnerIds.split(",").map(_=>_.trim()):[z]);var ne=n(ae),Z=n(ne);a(ne);var Re=s(ne),pe=n(Re);a(Re);var re=s(Re),be=n(re);{var Je=_=>{var p=ga();q(p,"title",Vs),u(_,p)};J(be,_=>{var p;(p=O()[e(m).taskName])!=null&&p.running&&_(Je)})}var et=s(be);a(re);var he=s(re),Ie=n(he);ns(Ie,{variant:"schedule",children:(_,p)=>{Ne();var N=j();$(Ue=>g(N,Ue),[()=>Lt(e(m).cronExpression)],H),u(_,N)},$$slots:{default:!0}}),a(he);var le=s(he),Ge=n(le),Fe=n(Ge,!0);a(Ge),a(le);var oe=s(le),ve=n(oe),tt=n(ve);a(ve),a(oe);var Ee=s(oe),ge=n(Ee),Ae=n(ge,!0);a(ge),a(Ee);var ke=s(Ee),we=n(ke),Ve=n(we);{var Oe=_=>{var p=j();p.nodeValue=bt,u(_,p)},ye=_=>{var p=Ut(),N=qe(p);{var Ue=v=>{var i=j();$(l=>g(i,l),[()=>{var l;return((l=e(k).find(h=>h.id===e(U)[0]))==null?void 0:l.name)??e(U)[0]}],H),u(v,i)},at=v=>{var i=j();$(l=>g(i,l),[()=>aa(e(U).length)],H),u(v,i)};J(N,v=>{e(U).length===1?v(Ue):v(at,!1)},!0)}u(_,p)};J(Ve,_=>{e(U).length===1&&e(U)[0]===z?_(Oe):_(ye,!1)})}a(we),a(ke);var De=s(ke),Ke=n(De);Qe(Ke,{variant:"ghost",size:"sm",$$events:{click:()=>Nt(e(m))},children:(_,p)=>{Ne();var N=j();N.nodeValue=Xt,u(_,N)},$$slots:{default:!0}});var st=s(Ke,2);Qe(st,{variant:"danger",size:"sm",$$events:{click:()=>{o(Se,e(m).taskName),o(D,!0)}},children:(_,p)=>{Ne();var N=j();N.nodeValue=Qt,u(_,N)},$$slots:{default:!0}}),a(De),a(ae),$((_,p,N)=>{q(ae,"style",_),xe(ae,"disabled",!e(m).enabled),q(Z,"title",p),q(Z,"aria-label",p),q(Z,"aria-pressed",e(m).enabled),xe(Z,"on",e(m).enabled),q(pe,"title",N),g(et,` ${e(m).taskName??""}`),g(Fe,e(m).tags),xe(ve,"multi",e(m).workers>1),g(tt,`×${e(m).workers??""}`),g(Ae,e(m).browser??Me[0].id),xe(we,"multi-node",e(U).length>1)},[()=>as(je),()=>ta(e(m).enabled),()=>sa(e(m).taskName)],H),K("click",Z,()=>Ct(e(m))),K("click",pe,()=>Tt(e(m).taskName)),u(We,ae)}),a(se),a(d),a(f),u(t,f)};J(At,t=>{e(E).length===0?t(wt):t(Ot,!1)})}a(pt),u(c,it),Ht(),Q()}export{Ha as component};
|
|
@@ -1,9 +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{h as Zr,a as l,t as C,s as _,e as Je,b as te,c as De,n as ba}from"../chunks/CMBQQ9RZ.js";import{i as en}from"../chunks/CKDtmZUQ.js";import{p as tn,m as c,o as an,s as r,g as e,l as wt,b as sn,f as Re,c as rn,$ as nn,d as s,j as t,k as a,t as v,v as da,n as z,x as H,y as k}from"../chunks/BAACMRH5.js";import{i as U,s as ln,a as qa}from"../chunks/CgnwuKKO.js";import{e as Ot,i as va,t as St,a as He,f as Ve,s as on}from"../chunks/TOCyHP97.js";import{A as Ct,h as Lt,i as cn,r as B,s as m,M as dn,b as vn,B as Ts,C as Is,G as pn,w as Qa,H as un,E as ws}from"../chunks/CUC98kMZ.js";import{b as V}from"../chunks/t-La0hgu.js";import{T as _n,B as se,b as pa}from"../chunks/CzlPaHY9.js";import{b as bn}from"../chunks/2zMvi6fR.js";import{g as fn}from"../chunks/kkA1mrsH.js";import{b as Os,f as En,a as hn,c as gn,d as $s,p as Ns,s as mn,e as Ds,u as Sn,r as Cn,g as Ln,h as Rn,i as An,j as kn,k as xn,l as Pn,m as yn,t as Tn,n as In,o as wn}from"../chunks/3InFPLvE.js";import{n as On,o as $n,p as Nn}from"../chunks/BUwxRmHf.js";import{u as Dn,a as Un}from"../chunks/BmZ9upwL.js";import{a as _a}from"../chunks/C1Vid6wz.js";import{f as Za}from"../chunks/DHM6H-es.js";import{t as Us}from"../chunks/DCgHuuvs.js";import{C as Bn}from"../chunks/DMZwI8Cj.js";import{B as Fn}from"../chunks/CuqnZUex.js";function as(){return{"Content-Type":"application/json",Authorization:`Bearer ${_a.getToken()}`}}async function Kn(){const i=await fetch(`${Ct}/users`,{headers:as()});if(!i.ok)throw new Error("Failed to fetch users");return(await i.json()).users}async function Mn({name:i,email:Ue,password:ut,role:fa="user"}){const ge=await fetch(`${Ct}/users`,{method:"POST",headers:as(),body:JSON.stringify({name:i,email:Ue,password:ut,role:fa})}),$t=await ge.json();if(!ge.ok)throw new Error($t.error??"Failed to create user");return $t.user}async function Gn(i){const Ue=await fetch(`${Ct}/users/${i}`,{method:"DELETE",headers:as()});if(!Ue.ok){const ut=await Ue.json();throw new Error(ut.error??"Failed to delete user")}}const Hn="Settings — Plum",Vn="Settings",ua="Name",Bs="Network error",tr="Checking…",ar="Copied!",Fs="Project",Ks="Runners",jn="Repository",Wn="Test Repository",Ms="Integrations",Xn="MCP",Yn="MCP Integration",es="Account",Gs="Users",ts="Backup",zn="Identity information shown across the UI",Jn="Register self-hosted runner nodes to distribute tests across machines.",qn="Configure ID prefixes for test suites and cases.",Qn="Connect Discord and Slack to receive run notifications with pass/fail results and report links.",Zn="Generate an API key for any MCP-compatible AI client — Claude, Cursor, Windsurf, and others.",el="Manage your profile, credentials and session.",tl="Add and manage who can access Plum.",al="Export your test cases, schedules, users, and project settings. Automate uploads to any S3-compatible storage — Cloudflare R2, Backblaze B2, AWS S3, or MinIO.",Hs="Name, URL and token are required.",sl="Failed to add runner.",rl="Failed to remove runner.",nl="Failed to update runner.",Vs=i=>`Cannot reach this runner — ${i??"check the URL and token"}.`,ll=i=>`Runner "${i}" added.`,il=i=>`Runner "${i}" removed.`,ol=i=>`Runner "${i}" stopped.`,cl=(i,Ue)=>`Could not stop "${i}": ${Ue??"unknown error"}`,dl=i=>`Could not stop "${i}".`,vl=i=>`Runner "${i}" restarting…`,pl=(i,Ue)=>`Could not restart "${i}": ${Ue??"unknown error"}`,ul=i=>`Could not restart "${i}".`,_l=i=>`Runner "${i}" updated.`,bl="Project Name",fl="My Test Suite",El="Logo URL",hl="Direct link to an image (PNG, SVG, JPG)",gl="https://example.com/logo.png",ml="Preview",Sl="Project logo preview",Cl="Timezone",Ll="Used to schedule cron jobs and backups",Rl="Retry failed tests",Al="Automatically re-run failed scenarios up to this many times before finalizing the report. 0 disables retries.",kl="Dark mode",xl="Switch between light and dark appearance",Pl="Project settings saved.",yl="Failed to save project settings.",Tl=i=>i?Lt:"Save Project",Il="Built-in runner",wl="Use this server to run tests locally. Disable to route all runs to external nodes.",js="URL",Ws="Use",Xs="for local nodes",Ys="http://host.docker.internal:3002",zs="Token",Ol="secret-token",$l="Leave blank to keep current token",Js="Browser",qs="staging-node",Nl="unreachable",Dl="pinging…",Ul="Remove",Bl="Add runner",Fl="+ Add Runner",Kl="Restart",Ml="Restarting…",Gl="Stop",Hl="Stopping…",Vl="Add Runner",jl=i=>i?tr:cn,Wl=i=>i?tr:Vl,Xl=i=>i?Ml:Kl,Yl=i=>i?Hl:Gl,zl="Test Case prefix",Qs="TC",Jl="Test Suite prefix",Zs="TS",ql="Examples:",Ql="Prefixes saved.",Zl="Failed to save prefixes.",ei="Migrate IDs",ti="Rename all existing test IDs to use a new prefix. Cucumber tags in code are",ai="not",si="affected — you manage those separately.",ri="New case prefix",ni="New suite prefix",li="Prefix migration complete. All IDs updated.",ii="Migration failed.",oi=i=>i?Lt:"Save Prefixes",ci=i=>i?"Migrating…":"Run Migration",di="Webhooks",vi="Discord Webhook URL",pi="Leave blank to disable Discord notifications",ui="https://discord.com/api/webhooks/…",_i="Slack Webhook URL",bi="Leave blank to disable Slack notifications",fi="https://hooks.slack.com/services/…",Ei="Public URL",hi="Base URL of this Plum instance, used to link reports in notifications",gi="https://plum.yourcompany.com",mi="Integration settings saved.",Si="Failed to save integration settings.",Ci="CI / External Triggers",Li="Trigger a Plum run from GitHub Actions (e.g. on a pull request, against its preview deployment) or any other external script by calling",Ri="with an",Ai="header. Generate a key on the",ki="MCP tab",xi="and store it as a repo secret — never commit it directly. Runs triggered this way show up in Reports tagged",Pi="External",yi="Copy Workflow Step",Ti=i=>i?Lt:"Save Integrations",Ii=i=>i?ar:yi,wi="API Key",Oi="No key generated yet.",$i="Hide key",Ni="Show key",Di="Copy key",Ui="Regenerating invalidates the existing key immediately.",Bi="Config Snippet",Fi="Add this to your MCP client's config file (e.g.",Ki=", Cursor MCP settings, etc.).",Mi="MCP key generated.",Gi="Failed to generate MCP key.",Hi="Copy Config",Vi=i=>i?"Generating…":"Generate Key",ji=i=>i?"Generating…":"Regenerate Key",Wi=i=>i?ar:Hi,Xi="Profile",Yi="Change password",zi="Current password",Ji="New password",qi="Confirm new password",Qi="Sign out",Zi="Profile updated.",eo="Passwords do not match.",to="Password must be at least 8 characters.",ao="Password changed.",so=i=>i?Lt:"Save Profile",ro=i=>i?Lt:"Change Password",no="Remove User",lo="Remove",io="Remove",oo="? They will lose access immediately.",co="Add User",vo="Jane Smith",po="jane@example.com",uo="Password",_o="Role",bo="User",fo="Admin",Eo="Remove user",ho="you",go="Name, email and password are required.",mo=i=>i?"Adding…":"Add User",So=i=>`User "${i}" added.`,Co=i=>`User "${i}" removed.`,Lo="Manual Backup",Ro="Export",Ao="Downloads a",ko="file with all cron jobs, test cases, test runs, users, runners, and project settings.",xo="Import",Po="Restores all data from a previously exported backup. Existing records are overwritten. Cron jobs are re-scheduled after import.",yo="Choose file…",To="Reports are not included in backups. To back up report history, run",Io="directly on the PostgreSQL volume.",wo="S3 Storage",Oo="Works with any S3-compatible provider — Cloudflare R2, Backblaze B2, AWS S3, or MinIO. Leave",er="Endpoint URL",$o="empty for AWS S3.",No="Leave blank for AWS S3",Do="https://account.r2.cloudflarestorage.com",Uo="Region",Bo="Use",Fo="for Cloudflare R2",Ko="us-east-1",Mo="Bucket",Go="my-plum-backups",Ho="Path Prefix",Vo="Optional folder inside the bucket",jo="plum/",Wo="Access Key ID",Xo="AKIAIOSFODNN7EXAMPLE",Yo="Secret Access Key",zo="Test Connection",Jo="Save S3 Config",qo="Connection successful.",Qo="Connection failed.",Zo="Backup configuration saved.",ec="Failed to save backup configuration.",tc="Required",ac="A key is already saved — leave blank to keep it",sc="••••••••",rc="Enter secret key",nc="Testing…",lc="Scheduled Backup",ic="Configure S3 storage above to enable scheduled backups.",oc="Enable scheduled backup",cc="Cron Expression",dc="5-field cron — e.g.",vc="= daily at 2 AM.",pc="Test at crontab.guru ↗",uc="0 2 * * *",_c="Last backup:",bc="Backup downloaded.",fc="Export failed.",Ec="Import successful. Cron jobs have been re-scheduled.",hc="Import failed. Check the file format.",gc="Backup uploaded to S3 successfully.",mc="Backup failed. Check your S3 configuration.",Sc="Upload to S3 Now",Cc="Uploading…",Lc="Save Schedule",Rc=i=>`plum-backup-${i}.json`,Ac=i=>i?"Exporting…":"Export JSON",kc=i=>i?"Importing…":"Import",xc=i=>i?ac:tc,Pc=i=>i?sc:rc,yc=i=>i?nc:zo,Tc=i=>i?Lt:Jo,Ic=i=>`uploaded to ${i}`,wc=i=>i?Cc:Sc,Oc=i=>i?Lt:Lc;var $c=C('<button class="sidebar-item svelte-bpb2i4"> </button>'),Nc=C('<div class="logo-preview svelte-bpb2i4"><span class="preview-label svelte-bpb2i4"></span> <img class="logo-img svelte-bpb2i4"></div>'),Dc=C("<option> </option>"),Uc=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="project-name"></label> <input id="project-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="project-logo"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="project-logo" type="url" class="field-input"></div> <!> <div class="field"><label class="field-label svelte-bpb2i4" for="project-timezone"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <select id="project-timezone" class="field-input"></select></div> <div class="field"><label class="field-label svelte-bpb2i4" for="project-max-retries"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="project-max-retries" type="number" class="field-input" min="0"></div> <div class="toggle-row svelte-bpb2i4"><div class="toggle-info svelte-bpb2i4"><span class="toggle-label svelte-bpb2i4"></span> <span class="toggle-desc svelte-bpb2i4"></span></div> <button class="toggle-switch svelte-bpb2i4" role="switch"><span class="toggle-thumb svelte-bpb2i4"></span></button></div> <div class="card-footer svelte-bpb2i4"><!></div></div></div>'),Bc=C("<option> </option>"),Fc=C('<p class="form-error svelte-bpb2i4"> </p>'),Kc=C('<div class="runner-card editing svelte-bpb2i4"><div class="runner-form-fields svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4"></label> <input type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4"> <span class="field-hint svelte-bpb2i4"> <code>host.docker.internal</code> </span></label> <input type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4"></label> <input type="text" class="field-input" spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-bpb2i4"></label> <select class="field-input"></select></div></div> <!> <div class="runner-form-actions svelte-bpb2i4"><!> <!></div></div>'),Mc=C('<span class="ping-badge ok svelte-bpb2i4"> </span>'),Gc=C('<span class="ping-badge fail svelte-bpb2i4"></span>'),Hc=C('<span class="ping-badge pinging svelte-bpb2i4"></span>'),Vc=C('<div class="runner-card svelte-bpb2i4"><div class="runner-card-header svelte-bpb2i4"><svg class="runner-card-icon svelte-bpb2i4" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><rect x="2" y="3" width="20" height="14" rx="2"></rect><path d="M8 21h8M12 17v4"></path></svg> <span class="runner-card-name svelte-bpb2i4"> </span> <span class="runner-browser-pill svelte-bpb2i4"> </span> <!></div> <p class="runner-card-url svelte-bpb2i4"> </p> <div class="runner-card-actions svelte-bpb2i4"><!> <!> <!> <!></div></div>'),jc=C('<div class="runner-cards svelte-bpb2i4"></div>'),Wc=C("<option> </option>"),Xc=C('<p class="form-error svelte-bpb2i4"> </p>'),Yc=C('<div class="runner-form svelte-bpb2i4"><p class="runner-form-title svelte-bpb2i4"></p> <div class="runner-form-fields svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="rn-name"></label> <input id="rn-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="rn-url"> <span class="field-hint svelte-bpb2i4"> <code>host.docker.internal</code> </span></label> <input id="rn-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="rn-token"></label> <input id="rn-token" type="text" class="field-input" spellcheck="false" autocomplete="off"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="rn-browser"></label> <select id="rn-browser" class="field-input"></select></div></div> <!> <div class="runner-form-actions svelte-bpb2i4"><!> <!></div></div>'),zc=C('<div class="card-footer svelte-bpb2i4"><!></div>'),Jc=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><div class="toggle-row svelte-bpb2i4"><div class="toggle-info svelte-bpb2i4"><span class="toggle-label svelte-bpb2i4"></span> <span class="toggle-desc svelte-bpb2i4"></span></div> <button class="toggle-switch svelte-bpb2i4" role="switch"><span class="toggle-thumb svelte-bpb2i4"></span></button></div> <!> <!></div></div>'),qc=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="tc-prefix"></label> <input id="tc-prefix" type="text" class="field-input mono svelte-bpb2i4" maxlength="10"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="ts-prefix"></label> <input id="ts-prefix" type="text" class="field-input mono svelte-bpb2i4" maxlength="10"></div></div> <p class="content-desc svelte-bpb2i4"> <code class="code-sample svelte-bpb2i4"> </code>, <code class="code-sample svelte-bpb2i4"> </code></p> <div class="card-footer svelte-bpb2i4"><!></div></div> <div class="content-header svelte-bpb2i4" style="margin-top: 1rem"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"> <strong></strong> </p></div> <div class="card settings-card svelte-bpb2i4"><div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="mig-tc"></label> <input id="mig-tc" type="text" class="field-input mono svelte-bpb2i4" maxlength="10"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="mig-ts"></label> <input id="mig-ts" type="text" class="field-input mono svelte-bpb2i4" maxlength="10"></div></div> <div class="card-footer svelte-bpb2i4"><!></div></div></div>'),Qc=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <div class="field"><label class="field-label svelte-bpb2i4" for="discord-url"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="discord-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="slack-url"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="slack-url" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="public-url"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="public-url" type="url" class="field-input"></div> <!></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <p class="content-desc svelte-bpb2i4"> <code class="code-sample svelte-bpb2i4"></code> <code class="code-sample svelte-bpb2i4">Authorization: ApiKey …</code> <button class="link-btn svelte-bpb2i4"></button> <!>.</p> <pre class="mcp-snippet svelte-bpb2i4"> </pre> <div class="card-footer svelte-bpb2i4"><!></div></div></div>'),Zc=C('<p class="content-desc svelte-bpb2i4"></p> <div class="card-footer svelte-bpb2i4"><!></div>',1),ed=ba('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"></path><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>'),td=ba('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>'),ad=ba('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>'),sd=ba('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'),rd=C('<div class="mcp-key-row svelte-bpb2i4"><input class="field-input mcp-key-input svelte-bpb2i4" readonly="" spellcheck="false" autocomplete="off"> <button class="icon-btn svelte-bpb2i4"><!></button> <button class="icon-btn svelte-bpb2i4"><!></button></div> <p class="mcp-regen-note svelte-bpb2i4"></p> <div class="card-footer svelte-bpb2i4"><!></div>',1),nd=C('<div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <p class="content-desc svelte-bpb2i4"> <code class="code-sample svelte-bpb2i4">claude_desktop_config.json</code> </p> <pre class="mcp-snippet svelte-bpb2i4"> </pre> <div class="card-footer svelte-bpb2i4"><!></div></div>'),ld=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <!></div> <!></div>'),id=C('<p class="form-error svelte-bpb2i4"> </p>'),od=C('<p class="form-error svelte-bpb2i4"> </p>'),cd=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <div class="field"><label class="field-label svelte-bpb2i4" for="profile-name"></label> <input id="profile-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="profile-email"></label> <input id="profile-email" type="email" class="field-input"></div> <!> <div class="card-footer svelte-bpb2i4"><!></div></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-current"></label> <input id="pw-current" type="password" class="field-input" autocomplete="current-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-new"></label> <input id="pw-new" type="password" class="field-input" autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="pw-confirm"></label> <input id="pw-confirm" type="password" class="field-input" autocomplete="new-password"></div> <!> <div class="card-footer svelte-bpb2i4"><!></div></div> <div class="card settings-card svelte-bpb2i4"><div class="card-footer svelte-bpb2i4"><!></div></div></div>'),dd=C(" <strong> </strong> ",1),vd=C('<p class="form-error svelte-bpb2i4"> </p>'),pd=C('<button class="icon-btn danger svelte-bpb2i4"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><path d="M10 11v6M14 11v6"></path><path d="M9 6V4h6v2"></path></svg></button>'),ud=C('<span class="you-chip svelte-bpb2i4"></span>'),_d=C('<div class="user-row svelte-bpb2i4"><div class="user-info svelte-bpb2i4"><span class="user-name svelte-bpb2i4"> </span> <span class="user-email svelte-bpb2i4"> </span></div> <span> </span> <!></div>'),bd=C('<div class="users-table svelte-bpb2i4"></div>'),fd=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <!> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="u-name"></label> <input id="u-name" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="u-email"></label> <input id="u-email" type="email" class="field-input"></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="u-pw"></label> <input id="u-pw" type="password" class="field-input" autocomplete="new-password"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="u-role"></label> <select id="u-role" class="field-input"><option></option><option></option></select></div></div> <!> <div class="card-footer svelte-bpb2i4"><!></div></div> <!></div>'),Ed=C('<p class="s3-test-result svelte-bpb2i4"> </p>'),hd=C('<p class="backup-block-desc svelte-bpb2i4"></p>'),gd=C('<span class="status-success svelte-bpb2i4"> </span>'),md=C('<span class="status-error svelte-bpb2i4"> </span>'),Sd=C("<span> </span>"),Cd=C('<p class="backup-last-run svelte-bpb2i4"> <!></p>'),Ld=C('<div class="field"><label class="field-label backup-toggle-label svelte-bpb2i4" for="backup-enabled"><span></span> <button id="backup-enabled" class="toggle-btn svelte-bpb2i4" role="switch"><span class="toggle-thumb svelte-bpb2i4"></span></button></label></div> <div class="field"><label class="field-label svelte-bpb2i4" for="backup-cron"><span></span> <span class="field-hint svelte-bpb2i4"> <code>0 2 * * *</code> <a href="https://crontab.guru" target="_blank" rel="noopener noreferrer"></a></span></label> <input id="backup-cron" type="text" class="field-input field-input-mono svelte-bpb2i4"></div> <!> <div class="backup-actions svelte-bpb2i4"><!> <!></div>',1),Rd=C('<div class="content-section svelte-bpb2i4"><div class="content-header svelte-bpb2i4"><h2 class="svelte-bpb2i4"></h2> <p class="content-desc svelte-bpb2i4"></p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <div class="backup-row svelte-bpb2i4"><div class="backup-block svelte-bpb2i4"><p class="backup-block-title svelte-bpb2i4"></p> <p class="backup-block-desc svelte-bpb2i4"> <code class="svelte-bpb2i4">.json</code> </p> <!></div> <div class="backup-divider svelte-bpb2i4"></div> <div class="backup-block svelte-bpb2i4"><p class="backup-block-title svelte-bpb2i4"></p> <p class="backup-block-desc svelte-bpb2i4"></p> <div class="import-row svelte-bpb2i4"><label class="file-label svelte-bpb2i4"><input type="file" accept=".json" class="file-input-hidden svelte-bpb2i4"> <span class="file-btn svelte-bpb2i4"> </span></label> <!></div></div></div> <p class="backup-disclaimer svelte-bpb2i4"> <code>pg_dump</code> </p></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <p class="backup-block-desc svelte-bpb2i4" style="margin-bottom: 1.25rem;"> <strong></strong> </p> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-endpoint"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="s3-endpoint" type="url" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-region"><span></span> <span class="field-hint svelte-bpb2i4"> <code>auto</code> </span></label> <input id="s3-region" type="text" class="field-input"></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-bucket"><span></span></label> <input id="s3-bucket" type="text" class="field-input"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-prefix"><span></span> <span class="field-hint svelte-bpb2i4"></span></label> <input id="s3-prefix" type="text" class="field-input"></div></div> <div class="field-row svelte-bpb2i4"><div class="field"><label class="field-label svelte-bpb2i4" for="s3-access-key"><span></span></label> <input id="s3-access-key" type="text" class="field-input" autocomplete="off"></div> <div class="field"><label class="field-label svelte-bpb2i4" for="s3-secret-key"><span></span> <span class="field-hint svelte-bpb2i4"> </span></label> <input id="s3-secret-key" type="password" class="field-input" autocomplete="new-password"></div></div> <div class="backup-actions svelte-bpb2i4"><!> <!></div> <!></div> <div class="card settings-card svelte-bpb2i4"><p class="card-title"></p> <!></div></div>'),Ad=C('<!> <div class="page-header svelte-bpb2i4"><h1 class="svelte-bpb2i4"></h1></div> <div class="settings-layout svelte-bpb2i4"><aside class="settings-sidebar svelte-bpb2i4"><nav class="svelte-bpb2i4"></nav></aside> <div class="settings-content svelte-bpb2i4"><!></div></div>',1);function Vd(i,Ue){tn(Ue,!1);const[ut,fa]=ln(),ge=()=>qa(_a,"$auth",ut),$t=()=>qa(Us,"$theme",ut),ss=()=>qa(Za,"$builtInEnabled",ut),Ea=c(),ha=c(),ga=c(),rs=c();let xe=c(typeof sessionStorage<"u"&&sessionStorage.getItem("plum:settings:section")||"project");function ns(n){r(xe,n);try{sessionStorage.setItem("plum:settings:section",n)}catch{}}let be=c({name:"",logoUrl:"",timezone:"UTC",maxRetries:0}),Vt=c(!1),ma=c(null);const sr=(()=>{try{return Intl.supportedValuesOf("timeZone")}catch{return["UTC"]}})();let me=c({testCasePrefix:"TC",testSuitePrefix:"TS"}),jt=c(!1),qe=c({testCasePrefix:"",testSuitePrefix:""}),Wt=c(!1),Be=c({name:"",email:""}),Xt=c(!1),Yt=c(""),_t=c([]),fe=c({name:"",email:"",password:"",role:"user"}),zt=c(!1),Nt=c(""),Rt=c(null),Jt=c(!1),Se=c({currentPassword:"",newPassword:"",confirmPassword:""}),qt=c(!1),At=c(""),bt=c(null),Qt=c(!1),Zt=c(!1),Dt=c(),we=c({discordWebhookUrl:"",slackWebhookUrl:"",notifyPublicUrl:""}),ea=c(!1),kt=c(""),ta=c(!1),xt=c(!1),Pt=c(!1),Sa=c(!1),Ca=c(!1),La=c(!1),T=c({backupEnabled:!1,backupCron:"0 2 * * *",backupS3Endpoint:"",backupS3Region:"",backupS3Bucket:"",backupS3AccessKey:"",backupS3SecretKey:"",backupS3Prefix:""}),yt=c(!1),Tt=c(!1),aa=c(!1),sa=c(!1),ft=c(null),ra=c(""),Ut=c(null),st=c(""),Oe=c([]),ve=c({name:"",url:"",token:"",browser:"chromium"}),Et=c(""),Bt=c(!1),na=c(!1),Ae=c({}),la=c(null),ia=c(null),oa=c(null),pe=c({name:"",url:"",token:"",browser:"chromium"}),rt=c(""),Ft=c(!1);function $(n,o){r(ma,{type:n,message:o}),setTimeout(()=>r(ma,null),vn)}let Ra=c(!1);an(async()=>{var n;try{const o=localStorage.getItem("plum:builtInEnabled");o!==null&&Za.set(o!=="false")}catch{}try{r(be,await Os())}catch{}try{r(Oe,await En()),r(Ra,!0)}catch{}try{r(me,await On()),r(qe,{testCasePrefix:e(me).testCasePrefix,testSuitePrefix:e(me).testSuitePrefix})}catch{}try{r(we,await hn())}catch{}try{const o=await gn();r(ta,o.mcpKeySet),r(kt,o.mcpKey)}catch{}try{const o=await $s();r(Tt,o.backupS3SecretKeySet),r(Ut,o.backupLastRunAt),r(st,o.backupLastStatus),r(T,{backupEnabled:o.backupEnabled,backupCron:o.backupCron,backupS3Endpoint:o.backupS3Endpoint,backupS3Region:o.backupS3Region,backupS3Bucket:o.backupS3Bucket,backupS3AccessKey:o.backupS3AccessKey,backupS3SecretKey:"",backupS3Prefix:o.backupS3Prefix})}catch{}if(ge().user&&r(Be,{name:ge().user.name,email:ge().user.email}),((n=ge().user)==null?void 0:n.role)==="admin")try{r(_t,await Kn())}catch{}});async function rr(){e(Oe).length!==0&&(r(Ae,Object.fromEntries(e(Oe).map(n=>[n.id,{loading:!0}]))),await Promise.all(e(Oe).map(async n=>{try{const o=await Ns(n.id);r(Ae,{...e(Ae),[n.id]:{...o,loading:!1}})}catch{r(Ae,{...e(Ae),[n.id]:{ok:!1,error:Bs,loading:!1}})}})))}function nr(){Za.update(n=>{const o=!n;try{localStorage.setItem("plum:builtInEnabled",String(o))}catch{}return o})}function lr(){Us.update(n=>n==="light"?"dark":"light")}async function ir(){if(!e(ve).name||!e(ve).url||!e(ve).token){r(Et,Hs);return}r(Et,""),r(Bt,!0);try{const n=await Ds(e(ve).url,e(ve).token);if(!n.ok){r(Et,Vs(n.error));return}const{runner:o}=await An(e(ve));r(Oe,[...e(Oe),o]),r(Ae,{...e(Ae),[o.id]:{ok:!0,latency:n.latency,loading:!1}}),r(ve,{name:"",url:"",token:"",browser:"chromium"}),r(na,!1),$("success",ll(o.name))}catch{r(Et,sl)}finally{r(Bt,!1)}}async function or(n,o){try{await Rn(n),r(Oe,e(Oe).filter(x=>x.id!==n)),$("success",il(o))}catch{$("error",rl)}}async function ls(n){r(Ae,{...e(Ae),[n]:{loading:!0}});try{const o=await Ns(n);r(Ae,{...e(Ae),[n]:{...o,loading:!1}})}catch{r(Ae,{...e(Ae),[n]:{ok:!1,error:Bs,loading:!1}})}}async function cr(n,o){r(la,n);try{const x=await Ln(n);x.ok?$("success",ol(o)):$("error",cl(o,x.error))}catch{$("error",dl(o))}finally{r(la,null),ls(n)}}async function dr(n,o){r(ia,n);try{const x=await Cn(n);x.ok?$("success",vl(o)):$("error",pl(o,x.error))}catch{$("error",ul(o))}finally{r(ia,null),setTimeout(()=>ls(n),2e3)}}function vr(n){r(oa,n.id),r(pe,{name:n.name,url:n.url,token:"",browser:n.browser}),r(rt,"")}async function pr(n){if(!e(pe).name||!e(pe).url){r(rt,Hs);return}r(rt,""),r(Ft,!0);try{if(e(pe).token){const x=await Ds(e(pe).url,e(pe).token);if(!x.ok){r(rt,Vs(x.error));return}r(Ae,{...e(Ae),[n]:{ok:!0,latency:x.latency,loading:!1}})}const{runner:o}=await Sn(n,e(pe));r(Oe,e(Oe).map(x=>x.id===n?o:x)),r(oa,null),$("success",_l(o.name))}catch{r(rt,nl)}finally{r(Ft,!1)}}async function ur(){r(Vt,!0);try{await mn(e(be)),$("success",Pl)}catch{$("error",yl)}finally{r(Vt,!1)}}async function _r(){r(Zt,!0);try{const n=await Pn(),o=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),x=URL.createObjectURL(o),je=document.createElement("a");je.href=x,je.download=Rc(new Date().toISOString().slice(0,10)),je.click(),URL.revokeObjectURL(x),$("success",bc)}catch{$("error",fc)}finally{r(Zt,!1)}}async function br(){if(e(bt)){r(Qt,!0);try{const n=await e(bt).text(),o=JSON.parse(n),x=await yn(o);if(x.error)throw new Error(x.error);$("success",Ec),r(be,await Os()),r(bt,null),e(Dt)&&k(Dt,e(Dt).value="")}catch(n){$("error",n.message||hc)}finally{r(Qt,!1)}}}function fr(n){r(bt,n.target.files[0]??null)}async function Er(){r(jt,!0);try{r(me,await $n(e(me))),$("success",Ql)}catch{$("error",Zl)}finally{r(jt,!1)}}async function hr(){r(Wt,!0);try{await Nn(e(qe)),r(me,{...e(me),...e(qe)}),$("success",li)}catch{$("error",ii)}finally{r(Wt,!1)}}async function gr(){r(Yt,""),r(Xt,!0);try{const{user:n}=await Dn({token:ge().token,name:e(Be).name,email:e(Be).email});_a.login(ge().token,{...ge().user,...n}),$("success",Zi)}catch(n){r(Yt,n.message)}finally{r(Xt,!1)}}async function mr(){if(r(Nt,""),!e(fe).name||!e(fe).email||!e(fe).password){r(Nt,go);return}r(zt,!0);try{const n=await Mn(e(fe));r(_t,[...e(_t),n]),r(fe,{name:"",email:"",password:"",role:"user"}),$("success",So(n.name))}catch(n){r(Nt,n.message)}finally{r(zt,!1)}}async function Sr(n,o){try{await Gn(n),r(_t,e(_t).filter(x=>x.id!==n)),$("success",Co(o))}catch(x){$("error",x.message)}r(Rt,null),r(Jt,!1)}async function Cr(){if(r(At,""),e(Se).newPassword!==e(Se).confirmPassword){r(At,eo);return}if(e(Se).newPassword.length<8){r(At,to);return}r(qt,!0);try{await Un({token:ge().token,currentPassword:e(Se).currentPassword,newPassword:e(Se).newPassword}),r(Se,{currentPassword:"",newPassword:"",confirmPassword:""}),$("success",ao)}catch(n){r(At,n.message)}finally{r(qt,!1)}}function Lr(){_a.logout(),fn("/login")}async function is(){r(Pt,!0);try{const n=await xn();r(kt,n.mcpKey),r(ta,!0),r(xt,!0),$("success",Mi)}catch{$("error",Gi)}finally{r(Pt,!1)}}function Rr(){navigator.clipboard.writeText(e(kt)).then(()=>{r(Sa,!0),setTimeout(()=>r(Sa,!1),Qa)})}function Ar(){navigator.clipboard.writeText(e(ha)).then(()=>{r(Ca,!0),setTimeout(()=>r(Ca,!1),Qa)})}function kr(){navigator.clipboard.writeText(e(ga)).then(()=>{r(La,!0),setTimeout(()=>r(La,!1),Qa)})}async function xr(){r(ea,!0);try{r(we,await kn(e(we))),$("success",mi)}catch{$("error",Si)}finally{r(ea,!1)}}async function os(){r(yt,!0);try{const n={...e(T)};n.backupS3SecretKey||delete n.backupS3SecretKey;const o=await In(n);if(o.error)throw new Error(o.error);e(T).backupS3SecretKey&&r(Tt,!0),r(T,{...e(T),backupS3SecretKey:""}),$("success",Zo)}catch(n){$("error",n.message||ec)}finally{r(yt,!1)}}async function Pr(){r(aa,!0),r(ft,null),r(ra,"");try{const n=await Tn(e(T));if(n.error)throw new Error(n.error);r(ft,"success"),r(ra,qo)}catch(n){r(ft,"error"),r(ra,n.message||Qo)}finally{r(aa,!1)}}async function yr(){r(sa,!0);try{const n=await wn();if(n.error)throw new Error(n.error);r(Ut,n.lastRunAt),r(st,n.lastStatus??""),$("success",gc)}catch(n){$("error",n.message||mc);const o=await $s().catch(()=>null);o&&(r(Ut,o.backupLastRunAt),r(st,o.backupLastStatus))}finally{r(sa,!1)}}const Tr=new Set(["project","runners","repository","integrations","mcp","users","backup"]);wt(()=>(ge(),e(xe)),()=>{ge().user&&ge().user.role!=="admin"&&Tr.has(e(xe))&&r(xe,"account")}),wt(()=>(e(xe),e(Ra)),()=>{e(xe)==="runners"&&e(Ra)&&rr()}),wt(()=>(e(T),e(Tt)),()=>{r(Ea,!!(e(T).backupS3Bucket&&e(T).backupS3AccessKey&&e(Tt)))}),wt(()=>e(kt),()=>{r(ha,JSON.stringify({mcpServers:{plum:{type:"http",url:`${Ct}/mcp`,headers:{Authorization:`ApiKey ${e(kt)}`}}}},null,2))}),wt(()=>Ct,()=>{r(ga,["- name: Run Plum tests"," run: |",` curl -X POST ${Ct}/trigger \\`,' -H "Authorization: ApiKey ${{ secrets.PLUM_API_KEY }}" \\',' -H "Content-Type: application/json" \\',` -d '{"tag": "@smoke", "baseUrl": "https://your-pr-preview-url"}'`].join(`
|
|
7
|
-
`))}),wt(()=>(ge(),ts),()=>{var n;r(rs,((n=ge().user)==null?void 0:n.role)==="admin"?[{id:"project",label:Fs},{id:"runners",label:Ks},{id:"repository",label:jn},{id:"integrations",label:Ms},{id:"mcp",label:Xn},{id:"account",label:es},{id:"users",label:Gs},{id:"backup",label:ts}]:[{id:"account",label:es}])}),sn(),en();var cs=Ad();Zr(n=>{nn.title=Hn});var ds=Re(cs);_n(ds,{get toast(){return e(ma)}});var Aa=t(ds,2),Ir=s(Aa);Ir.textContent=Vn,a(Aa);var vs=t(Aa,2),ka=s(vs),ps=s(ka);Ot(ps,5,()=>e(rs),va,(n,o)=>{var x=$c(),je=s(x,!0);a(x),v(()=>{St(x,"active",e(xe)===e(o).id),_(je,e(o).label)}),Je("click",x,()=>ns(e(o).id)),l(n,x)}),a(ps),a(ka);var us=t(ka,2),wr=s(us);{var Or=n=>{var o=Uc(),x=s(o),je=s(x);je.textContent=Fs;var xa=t(je,2);xa.textContent=zn,a(x);var Qe=t(x,2),Fe=s(Qe),nt=s(Fe);nt.textContent=bl;var lt=t(nt,2);B(lt),m(lt,"placeholder",fl),a(Fe);var ht=t(Fe,2),Ie=s(ht),ye=s(Ie);ye.textContent=El;var Ke=t(ye,2);Ke.textContent=hl,a(Ie);var Me=t(Ie,2);B(Me),m(Me,"placeholder",gl),a(ht);var it=t(ht,2);{var ke=u=>{var g=Nc(),p=s(g);p.textContent=ml;var f=t(p,2);m(f,"alt",Sl),a(g),v(()=>m(f,"src",e(be).logoUrl)),Je("error",f,I=>I.target.style.display="none"),l(u,g)};U(it,u=>{e(be).logoUrl&&u(ke)})}var Ee=t(it,2),Pe=s(Ee),$e=s(Pe);$e.textContent=Cl;var Ge=t($e,2);Ge.textContent=Ll,a(Pe);var ue=t(Pe,2);v(()=>{e(be),da(()=>{})}),Ot(ue,5,()=>sr,va,(u,g)=>{var p=Dc(),f={},I=s(p,!0);a(p),v(()=>{f!==(f=e(g))&&(p.value=(p.__value=e(g))==null?"":e(g)),_(I,e(g))}),l(u,p)}),a(ue),a(Ee);var J=t(Ee,2),j=s(J),ne=s(j);ne.textContent=Rl;var h=t(ne,2);h.textContent=Al,a(j);var q=t(j,2);B(q),m(q,"max",dn),a(J);var N=t(J,2),le=s(N),oe=s(le);oe.textContent=kl;var _e=t(oe,2);_e.textContent=xl,a(le);var W=t(le,2);a(N);var P=t(N,2),L=s(P);se(L,{get disabled(){return e(Vt)},$$events:{click:ur},children:(u,g)=>{z();var p=te();v(f=>_(p,f),[()=>Tl(e(Vt))],H),l(u,p)},$$slots:{default:!0}}),a(P),a(Qe),a(o),v(()=>{m(W,"aria-checked",$t()==="dark"),St(W,"on",$t()==="dark")}),V(lt,()=>e(be).name,u=>k(be,e(be).name=u)),V(Me,()=>e(be).logoUrl,u=>k(be,e(be).logoUrl=u)),pa(ue,()=>e(be).timezone,u=>k(be,e(be).timezone=u)),V(q,()=>e(be).maxRetries,u=>k(be,e(be).maxRetries=u)),Je("click",W,lr),He(3,o,()=>Ve,()=>({y:6,duration:180})),l(n,o)},$r=n=>{var o=De(),x=Re(o);{var je=Qe=>{var Fe=Jc(),nt=s(Fe),lt=s(nt);lt.textContent=Ks;var ht=t(lt,2);ht.textContent=Jn,a(nt);var Ie=t(nt,2),ye=s(Ie),Ke=s(ye),Me=s(Ke);Me.textContent=Il;var it=t(Me,2);it.textContent=wl,a(Ke);var ke=t(Ke,2);a(ye);var Ee=t(ye,2);{var Pe=J=>{var j=jc();Ot(j,5,()=>e(Oe),ne=>ne.id,(ne,h)=>{var q=De();const N=H(()=>e(Ae)[e(h).id]);var le=Re(q);{var oe=W=>{var P=Kc(),L=s(P),u=s(L),g=s(u);g.textContent=ua;var p=t(g,2);B(p),m(p,"placeholder",qs),a(u);var f=t(u,2),I=s(f),X=s(I);X.nodeValue=`${js} `;var F=t(X),y=s(F);y.nodeValue=`${Ws} `;var ae=t(y,2);ae.nodeValue=` ${Xs}`,a(F),a(I);var Q=t(I,2);B(Q),m(Q,"placeholder",Ys),a(f);var Z=t(f,2),D=s(Z);D.textContent=zs;var K=t(D,2);B(K),m(K,"placeholder",$l),a(Z);var R=t(Z,2),d=s(R);d.textContent=Js;var E=t(d,2);v(()=>{e(pe),da(()=>{e(h)})}),Ot(E,5,()=>Ts,va,(b,ee)=>{var ie=Bc(),We={},ot=s(ie,!0);a(ie),v(()=>{We!==(We=e(ee).id)&&(ie.value=(ie.__value=e(ee).id)==null?"":e(ee).id),_(ot,e(ee).label)}),l(b,ie)}),a(E),a(R),a(L);var S=t(L,2);{var M=b=>{var ee=Fc(),ie=s(ee,!0);a(ee),v(()=>_(ie,e(rt))),l(b,ee)};U(S,b=>{e(rt)&&b(M)})}var G=t(S,2),w=s(G);se(w,{get disabled(){return e(Ft)},$$events:{click:()=>pr(e(h).id)},children:(b,ee)=>{z();var ie=te();v(We=>_(ie,We),[()=>jl(e(Ft))],H),l(b,ie)},$$slots:{default:!0}});var ce=t(w,2);se(ce,{variant:"ghost",get disabled(){return e(Ft)},$$events:{click:()=>{r(oa,null),r(rt,"")}},children:(b,ee)=>{z();var ie=te();ie.nodeValue=Is,l(b,ie)},$$slots:{default:!0}}),a(G),a(P),v(()=>{m(g,"for",`edit-name-${e(h).id??""}`),m(p,"id",`edit-name-${e(h).id??""}`),m(I,"for",`edit-url-${e(h).id??""}`),m(Q,"id",`edit-url-${e(h).id??""}`),m(D,"for",`edit-token-${e(h).id??""}`),m(K,"id",`edit-token-${e(h).id??""}`),m(d,"for",`edit-browser-${e(h).id??""}`),m(E,"id",`edit-browser-${e(h).id??""}`)}),V(p,()=>e(pe).name,b=>k(pe,e(pe).name=b)),V(Q,()=>e(pe).url,b=>k(pe,e(pe).url=b)),V(K,()=>e(pe).token,b=>k(pe,e(pe).token=b)),pa(E,()=>e(pe).browser,b=>k(pe,e(pe).browser=b)),He(3,P,()=>Ve,()=>({y:-4,duration:180})),l(W,P)},_e=W=>{var P=Vc(),L=s(P),u=t(s(L),2),g=s(u,!0);a(u);var p=t(u,2),f=s(p,!0);a(p);var I=t(p,2);{var X=S=>{var M=De(),G=Re(M);{var w=b=>{var ee=Mc(),ie=s(ee);a(ee),v(()=>_(ie,`${e(N).latency??""}ms`)),l(b,ee)},ce=b=>{var ee=Gc();ee.textContent=Nl,v(()=>m(ee,"title",e(N).error)),l(b,ee)};U(G,b=>{e(N).ok?b(w):b(ce,!1)})}l(S,M)},F=S=>{var M=De(),G=Re(M);{var w=ce=>{var b=Hc();b.textContent=Dl,l(ce,b)};U(G,ce=>{var b;(b=e(N))!=null&&b.loading&&ce(w)},!0)}l(S,M)};U(I,S=>{e(N)&&!e(N).loading?S(X):S(F,!1)})}a(L);var y=t(L,2),ae=s(y,!0);a(y);var Q=t(y,2),Z=s(Q);se(Z,{variant:"ghost",size:"sm",$$events:{click:()=>vr(e(h))},children:(S,M)=>{z();var G=te();G.nodeValue=pn,l(S,G)},$$slots:{default:!0}});var D=t(Z,2);const K=H(()=>e(ia)===e(h).id);se(D,{variant:"ghost",size:"sm",get disabled(){return e(K)},$$events:{click:()=>dr(e(h).id,e(h).name)},children:(S,M)=>{z();var G=te();v(w=>_(G,w),[()=>Xl(e(ia)===e(h).id)],H),l(S,G)},$$slots:{default:!0}});var R=t(D,2);const d=H(()=>e(la)===e(h).id);se(R,{variant:"ghost",size:"sm",get disabled(){return e(d)},$$events:{click:()=>cr(e(h).id,e(h).name)},children:(S,M)=>{z();var G=te();v(w=>_(G,w),[()=>Yl(e(la)===e(h).id)],H),l(S,G)},$$slots:{default:!0}});var E=t(R,2);se(E,{variant:"danger",size:"sm",$$events:{click:()=>or(e(h).id,e(h).name)},children:(S,M)=>{z();var G=te();G.nodeValue=Ul,l(S,G)},$$slots:{default:!0}}),a(Q),a(P),v(()=>{_(g,e(h).name),_(f,e(h).browser),_(ae,e(h).url)}),He(3,P,()=>Ve,()=>({y:-4,duration:180})),l(W,P)};U(le,W=>{e(oa)===e(h).id?W(oe):W(_e,!1)})}l(ne,q)}),a(j),l(J,j)};U(Ee,J=>{e(Oe).length>0&&J(Pe)})}var $e=t(Ee,2);{var Ge=J=>{var j=Yc(),ne=s(j);ne.textContent=Bl;var h=t(ne,2),q=s(h),N=s(q);N.textContent=ua;var le=t(N,2);B(le),m(le,"placeholder",qs),a(q);var oe=t(q,2),_e=s(oe),W=s(_e);W.nodeValue=`${js} `;var P=t(W),L=s(P);L.nodeValue=`${Ws} `;var u=t(L,2);u.nodeValue=` ${Xs}`,a(P),a(_e);var g=t(_e,2);B(g),m(g,"placeholder",Ys),a(oe);var p=t(oe,2),f=s(p);f.textContent=zs;var I=t(f,2);B(I),m(I,"placeholder",Ol),a(p);var X=t(p,2),F=s(X);F.textContent=Js;var y=t(F,2);v(()=>{e(ve),da(()=>{})}),Ot(y,5,()=>Ts,va,(R,d)=>{var E=Wc(),S={},M=s(E,!0);a(E),v(()=>{S!==(S=e(d).id)&&(E.value=(E.__value=e(d).id)==null?"":e(d).id),_(M,e(d).label)}),l(R,E)}),a(y),a(X),a(h);var ae=t(h,2);{var Q=R=>{var d=Xc(),E=s(d,!0);a(d),v(()=>_(E,e(Et))),l(R,d)};U(ae,R=>{e(Et)&&R(Q)})}var Z=t(ae,2),D=s(Z);se(D,{get disabled(){return e(Bt)},$$events:{click:ir},children:(R,d)=>{z();var E=te();v(S=>_(E,S),[()=>Wl(e(Bt))],H),l(R,E)},$$slots:{default:!0}});var K=t(D,2);se(K,{variant:"ghost",get disabled(){return e(Bt)},$$events:{click:()=>{r(na,!1),r(Et,"")}},children:(R,d)=>{z();var E=te();E.nodeValue=Is,l(R,E)},$$slots:{default:!0}}),a(Z),a(j),V(le,()=>e(ve).name,R=>k(ve,e(ve).name=R)),V(g,()=>e(ve).url,R=>k(ve,e(ve).url=R)),V(I,()=>e(ve).token,R=>k(ve,e(ve).token=R)),pa(y,()=>e(ve).browser,R=>k(ve,e(ve).browser=R)),He(3,j,()=>Ve,()=>({y:-6,duration:200})),l(J,j)},ue=J=>{var j=zc(),ne=s(j);se(ne,{variant:"ghost",$$events:{click:()=>r(na,!0)},children:(h,q)=>{z();var N=te();N.nodeValue=Fl,l(h,N)},$$slots:{default:!0}}),a(j),l(J,j)};U($e,J=>{e(na)?J(Ge):J(ue,!1)})}a(Ie),a(Fe),v(()=>{m(ke,"aria-checked",ss()),St(ke,"on",ss())}),Je("click",ke,nr),He(3,Fe,()=>Ve,()=>({y:6,duration:180})),l(Qe,Fe)},xa=Qe=>{var Fe=De(),nt=Re(Fe);{var lt=Ie=>{var ye=qc(),Ke=s(ye),Me=s(Ke);Me.textContent=Wn;var it=t(Me,2);it.textContent=qn,a(Ke);var ke=t(Ke,2),Ee=s(ke),Pe=s(Ee),$e=s(Pe);$e.textContent=zl;var Ge=t($e,2);B(Ge),m(Ge,"placeholder",Qs),a(Pe);var ue=t(Pe,2),J=s(ue);J.textContent=Jl;var j=t(J,2);B(j),m(j,"placeholder",Zs),a(ue),a(Ee);var ne=t(Ee,2),h=s(ne);h.nodeValue=`${ql} `;var q=t(h),N=s(q);a(q);var le=t(q,2),oe=s(le);a(le),a(ne);var _e=t(ne,2),W=s(_e);se(W,{get disabled(){return e(jt)},$$events:{click:Er},children:(d,E)=>{z();var S=te();v(M=>_(S,M),[()=>oi(e(jt))],H),l(d,S)},$$slots:{default:!0}}),a(_e),a(ke);var P=t(ke,2),L=s(P);L.textContent=ei;var u=t(L,2),g=s(u);g.nodeValue=`${ti} `;var p=t(g);p.textContent=ai;var f=t(p);f.nodeValue=` ${si}`,a(u),a(P);var I=t(P,2),X=s(I),F=s(X),y=s(F);y.textContent=ri;var ae=t(y,2);B(ae),a(F);var Q=t(F,2),Z=s(Q);Z.textContent=ni;var D=t(Z,2);B(D),a(Q),a(X);var K=t(X,2),R=s(K);se(R,{variant:"ghost",get disabled(){return e(Wt)},$$events:{click:hr},children:(d,E)=>{z();var S=te();v(M=>_(S,M),[()=>ci(e(Wt))],H),l(d,S)},$$slots:{default:!0}}),a(K),a(I),a(ye),v(()=>{_(N,`${(e(me).testCasePrefix||Qs)??""}-001`),_(oe,`${(e(me).testSuitePrefix||Zs)??""}-001`),m(ae,"placeholder",e(me).testCasePrefix),m(D,"placeholder",e(me).testSuitePrefix)}),V(Ge,()=>e(me).testCasePrefix,d=>k(me,e(me).testCasePrefix=d)),V(j,()=>e(me).testSuitePrefix,d=>k(me,e(me).testSuitePrefix=d)),V(ae,()=>e(qe).testCasePrefix,d=>k(qe,e(qe).testCasePrefix=d)),V(D,()=>e(qe).testSuitePrefix,d=>k(qe,e(qe).testSuitePrefix=d)),He(3,ye,()=>Ve,()=>({y:6,duration:180})),l(Ie,ye)},ht=Ie=>{var ye=De(),Ke=Re(ye);{var Me=ke=>{var Ee=Qc(),Pe=s(Ee),$e=s(Pe);$e.textContent=Ms;var Ge=t($e,2);Ge.textContent=Qn,a(Pe);var ue=t(Pe,2),J=s(ue);J.textContent=di;var j=t(J,2),ne=s(j),h=s(ne);h.textContent=vi;var q=t(h,2);q.textContent=pi,a(ne);var N=t(ne,2);B(N),m(N,"placeholder",ui),a(j);var le=t(j,2),oe=s(le),_e=s(oe);_e.textContent=_i;var W=t(_e,2);W.textContent=bi,a(oe);var P=t(oe,2);B(P),m(P,"placeholder",fi),a(le);var L=t(le,2),u=s(L),g=s(u);g.textContent=Ei;var p=t(g,2);p.textContent=hi,a(u);var f=t(u,2);B(f),m(f,"placeholder",gi),a(L);var I=t(L,2);se(I,{get disabled(){return e(ea)},$$events:{click:xr},children:(w,ce)=>{z();var b=te();v(ee=>_(b,ee),[()=>Ti(e(ea))],H),l(w,b)},$$slots:{default:!0}}),a(ue);var X=t(ue,2),F=s(X);F.textContent=Ci;var y=t(F,2),ae=s(y);ae.nodeValue=`${Li} `;var Q=t(ae);Q.textContent=`POST ${Ct}/trigger`;var Z=t(Q);Z.nodeValue=` ${Ri} `;var D=t(Z,2);D.nodeValue=` ${Ai} `;var K=t(D);K.textContent=ki;var R=t(K);R.nodeValue=` ${xi} `;var d=t(R);Fn(d,{variant:"external",children:(w,ce)=>{z();var b=te();b.nodeValue=Pi,l(w,b)},$$slots:{default:!0}}),z(),a(y);var E=t(y,2),S=s(E,!0);a(E);var M=t(E,2),G=s(M);se(G,{variant:"ghost",$$events:{click:kr},children:(w,ce)=>{z();var b=te();v(ee=>_(b,ee),[()=>Ii(e(La))],H),l(w,b)},$$slots:{default:!0}}),a(M),a(X),a(Ee),v(()=>_(S,e(ga))),V(N,()=>e(we).discordWebhookUrl,w=>k(we,e(we).discordWebhookUrl=w)),V(P,()=>e(we).slackWebhookUrl,w=>k(we,e(we).slackWebhookUrl=w)),V(f,()=>e(we).notifyPublicUrl,w=>k(we,e(we).notifyPublicUrl=w)),Je("click",K,()=>ns("mcp")),He(3,Ee,()=>Ve,()=>({y:6,duration:180})),l(ke,Ee)},it=ke=>{var Ee=De(),Pe=Re(Ee);{var $e=ue=>{var J=ld(),j=s(J),ne=s(j);ne.textContent=Yn;var h=t(ne,2);h.textContent=Zn,a(j);var q=t(j,2),N=s(q);N.textContent=wi;var le=t(N,2);{var oe=L=>{var u=Zc(),g=Re(u);g.textContent=Oi;var p=t(g,2),f=s(p);se(f,{get disabled(){return e(Pt)},$$events:{click:is},children:(I,X)=>{z();var F=te();v(y=>_(F,y),[()=>Vi(e(Pt))],H),l(I,F)},$$slots:{default:!0}}),a(p),l(L,u)},_e=L=>{var u=rd(),g=Re(u),p=s(g);B(p);var f=t(p,2),I=s(f);{var X=d=>{var E=ed();l(d,E)},F=d=>{var E=td();l(d,E)};U(I,d=>{e(xt)?d(X):d(F,!1)})}a(f);var y=t(f,2);m(y,"title",Di);var ae=s(y);{var Q=d=>{var E=ad();l(d,E)},Z=d=>{var E=sd();l(d,E)};U(ae,d=>{e(Sa)?d(Q):d(Z,!1)})}a(y),a(g);var D=t(g,2);D.textContent=Ui;var K=t(D,2),R=s(K);se(R,{variant:"ghost",get disabled(){return e(Pt)},$$events:{click:is},children:(d,E)=>{z();var S=te();v(M=>_(S,M),[()=>ji(e(Pt))],H),l(d,S)},$$slots:{default:!0}}),a(K),v(()=>{m(p,"type",e(xt)?"text":"password"),un(p,e(kt)),m(f,"title",e(xt)?$i:Ni)}),Je("click",f,()=>r(xt,!e(xt))),Je("click",y,Rr),l(L,u)};U(le,L=>{e(ta)?L(_e,!1):L(oe)})}a(q);var W=t(q,2);{var P=L=>{var u=nd(),g=s(u);g.textContent=Bi;var p=t(g,2),f=s(p);f.nodeValue=`${Fi} `;var I=t(f,2,!0);I.nodeValue=Ki,a(p);var X=t(p,2),F=s(X,!0);a(X);var y=t(X,2),ae=s(y);se(ae,{variant:"ghost",$$events:{click:Ar},children:(Q,Z)=>{z();var D=te();v(K=>_(D,K),[()=>Wi(e(Ca))],H),l(Q,D)},$$slots:{default:!0}}),a(y),a(u),v(()=>_(F,e(ha))),l(L,u)};U(W,L=>{e(ta)&&L(P)})}a(J),He(3,J,()=>Ve,()=>({y:6,duration:180})),l(ue,J)},Ge=ue=>{var J=De(),j=Re(J);{var ne=q=>{var N=cd(),le=s(N),oe=s(le);oe.textContent=es;var _e=t(oe,2);_e.textContent=el,a(le);var W=t(le,2),P=s(W);P.textContent=Xi;var L=t(P,2),u=s(L);u.textContent=ua;var g=t(u,2);B(g),a(L);var p=t(L,2),f=s(p);f.textContent=ws;var I=t(f,2);B(I),a(p);var X=t(p,2);{var F=A=>{var re=id(),de=s(re,!0);a(re),v(()=>_(de,e(Yt))),l(A,re)};U(X,A=>{e(Yt)&&A(F)})}var y=t(X,2),ae=s(y);const Q=H(()=>e(Xt)||!e(Be).name||!e(Be).email);se(ae,{get disabled(){return e(Q)},$$events:{click:gr},children:(A,re)=>{z();var de=te();v(Te=>_(de,Te),[()=>so(e(Xt))],H),l(A,de)},$$slots:{default:!0}}),a(y),a(W);var Z=t(W,2),D=s(Z);D.textContent=Yi;var K=t(D,2),R=s(K);R.textContent=zi;var d=t(R,2);B(d),a(K);var E=t(K,2),S=s(E);S.textContent=Ji;var M=t(S,2);B(M),a(E);var G=t(E,2),w=s(G);w.textContent=qi;var ce=t(w,2);B(ce),a(G);var b=t(G,2);{var ee=A=>{var re=od(),de=s(re,!0);a(re),v(()=>_(de,e(At))),l(A,re)};U(b,A=>{e(At)&&A(ee)})}var ie=t(b,2),We=s(ie);const ot=H(()=>e(qt)||!e(Se).currentPassword||!e(Se).newPassword);se(We,{get disabled(){return e(ot)},$$events:{click:Cr},children:(A,re)=>{z();var de=te();v(Te=>_(de,Te),[()=>ro(e(qt))],H),l(A,de)},$$slots:{default:!0}}),a(ie),a(Z);var gt=t(Z,2),Y=s(gt),he=s(Y);se(he,{variant:"danger",size:"sm",$$events:{click:Lr},children:(A,re)=>{z();var de=te();de.nodeValue=Qi,l(A,de)},$$slots:{default:!0}}),a(Y),a(gt),a(N),V(g,()=>e(Be).name,A=>k(Be,e(Be).name=A)),V(I,()=>e(Be).email,A=>k(Be,e(Be).email=A)),V(d,()=>e(Se).currentPassword,A=>k(Se,e(Se).currentPassword=A)),V(M,()=>e(Se).newPassword,A=>k(Se,e(Se).newPassword=A)),V(ce,()=>e(Se).confirmPassword,A=>k(Se,e(Se).confirmPassword=A)),He(3,N,()=>Ve,()=>({y:6,duration:180})),l(q,N)},h=q=>{var N=De(),le=Re(N);{var oe=W=>{var P=fd(),L=s(P),u=s(L);u.textContent=Gs;var g=t(u,2);g.textContent=tl,a(L);var p=t(L,2);Bn(p,{title:no,confirmLabel:lo,get open(){return e(Jt)},set open(Y){r(Jt,Y)},$$events:{confirm:()=>{var Y,he;return Sr((Y=e(Rt))==null?void 0:Y.id,(he=e(Rt))==null?void 0:he.name)}},children:(Y,he)=>{var A=De(),re=Re(A);{var de=Te=>{var ct=dd(),dt=Re(ct);dt.nodeValue=`${io} `;var Xe=t(dt),mt=s(Xe,!0);a(Xe);var Ze=t(Xe,1,!0);Ze.nodeValue=oo,v(()=>_(mt,e(Rt).name)),l(Te,ct)};U(re,Te=>{e(Rt)&&Te(de)})}l(Y,A)},$$slots:{default:!0},$$legacy:!0});var f=t(p,2),I=s(f);I.textContent=co;var X=t(I,2),F=s(X),y=s(F);y.textContent=ua;var ae=t(y,2);B(ae),m(ae,"placeholder",vo),a(F);var Q=t(F,2),Z=s(Q);Z.textContent=ws;var D=t(Z,2);B(D),m(D,"placeholder",po),a(Q),a(X);var K=t(X,2),R=s(K),d=s(R);d.textContent=uo;var E=t(d,2);B(E),a(R);var S=t(R,2),M=s(S);M.textContent=_o;var G=t(M,2);v(()=>{e(fe),da(()=>{})});var w=s(G);w.value=(w.__value="user")==null?"":"user",w.textContent=bo;var ce=t(w);ce.value=(ce.__value="admin")==null?"":"admin",ce.textContent=fo,a(G),a(S),a(K);var b=t(K,2);{var ee=Y=>{var he=vd(),A=s(he,!0);a(he),v(()=>_(A,e(Nt))),l(Y,he)};U(b,Y=>{e(Nt)&&Y(ee)})}var ie=t(b,2),We=s(ie);se(We,{get disabled(){return e(zt)},$$events:{click:mr},children:(Y,he)=>{z();var A=te();v(re=>_(A,re),[()=>mo(e(zt))],H),l(Y,A)},$$slots:{default:!0}}),a(ie),a(f);var ot=t(f,2);{var gt=Y=>{var he=bd();Ot(he,5,()=>e(_t),A=>A.id,(A,re)=>{var de=_d(),Te=s(de),ct=s(Te),dt=s(ct,!0);a(ct);var Xe=t(ct,2),mt=s(Xe,!0);a(Xe),a(Te);var Ze=t(Te,2),Pa=s(Ze,!0);a(Ze);var Kt=t(Ze,2);{var ca=et=>{var Ne=pd();m(Ne,"title",Eo),Je("click",Ne,()=>{r(Rt,{id:e(re).id,name:e(re).name}),r(Jt,!0)}),l(et,Ne)},Mt=et=>{var Ne=ud();Ne.textContent=ho,l(et,Ne)};U(Kt,et=>{var Ne;e(re).id!==((Ne=ge().user)==null?void 0:Ne.id)?et(ca):et(Mt,!1)})}a(de),v(()=>{_(dt,e(re).name),_(mt,e(re).email),on(Ze,`role-chip ${e(re).role??""} svelte-bpb2i4`),_(Pa,e(re).role)}),l(A,de)}),a(he),l(Y,he)};U(ot,Y=>{e(_t).length>0&&Y(gt)})}a(P),V(ae,()=>e(fe).name,Y=>k(fe,e(fe).name=Y)),V(D,()=>e(fe).email,Y=>k(fe,e(fe).email=Y)),V(E,()=>e(fe).password,Y=>k(fe,e(fe).password=Y)),pa(G,()=>e(fe).role,Y=>k(fe,e(fe).role=Y)),He(3,P,()=>Ve,()=>({y:6,duration:180})),l(W,P)},_e=W=>{var P=De(),L=Re(P);{var u=g=>{var p=Rd(),f=s(p),I=s(f);I.textContent=ts;var X=t(I,2);X.textContent=al,a(f);var F=t(f,2),y=s(F);y.textContent=Lo;var ae=t(y,2),Q=s(ae),Z=s(Q);Z.textContent=Ro;var D=t(Z,2),K=s(D);K.nodeValue=`${Ao} `;var R=t(K,2);R.nodeValue=` ${ko}`,a(D);var d=t(D,2);se(d,{get disabled(){return e(Zt)},$$events:{click:_r},children:(O,Ce)=>{z();var Le=te();v(Ye=>_(Le,Ye),[()=>Ac(e(Zt))],H),l(O,Le)},$$slots:{default:!0}}),a(Q);var E=t(Q,4),S=s(E);S.textContent=xo;var M=t(S,2);M.textContent=Po;var G=t(M,2),w=s(G),ce=s(w);bn(ce,O=>r(Dt,O),()=>e(Dt));var b=t(ce,2),ee=s(b,!0);a(b),a(w);var ie=t(w,2);const We=H(()=>!e(bt)||e(Qt));se(ie,{get disabled(){return e(We)},$$events:{click:br},children:(O,Ce)=>{z();var Le=te();v(Ye=>_(Le,Ye),[()=>kc(e(Qt))],H),l(O,Le)},$$slots:{default:!0}}),a(G),a(E),a(ae);var ot=t(ae,2),gt=s(ot);gt.nodeValue=`${To} `;var Y=t(gt,2);Y.nodeValue=` ${Io}`,a(ot),a(F);var he=t(F,2),A=s(he);A.textContent=wo;var re=t(A,2),de=s(re);de.nodeValue=`${Oo} `;var Te=t(de);Te.textContent=er;var ct=t(Te);ct.nodeValue=` ${$o}`,a(re);var dt=t(re,2),Xe=s(dt),mt=s(Xe),Ze=s(mt);Ze.textContent=er;var Pa=t(Ze,2);Pa.textContent=No,a(mt);var Kt=t(mt,2);B(Kt),m(Kt,"placeholder",Do),a(Xe);var ca=t(Xe,2),Mt=s(ca),et=s(Mt);et.textContent=Uo;var Ne=t(et,2),_s=s(Ne);_s.nodeValue=`${Bo} `;var Nr=t(_s,2);Nr.nodeValue=` ${Fo}`,a(Ne),a(Mt);var ya=t(Mt,2);B(ya),m(ya,"placeholder",Ko),a(ca),a(dt);var Ta=t(dt,2),Ia=s(Ta),wa=s(Ia),Dr=s(wa);Dr.textContent=Mo,a(wa);var Oa=t(wa,2);B(Oa),m(Oa,"placeholder",Go),a(Ia);var bs=t(Ia,2),$a=s(bs),fs=s($a);fs.textContent=Ho;var Ur=t(fs,2);Ur.textContent=Vo,a($a);var Na=t($a,2);B(Na),m(Na,"placeholder",jo),a(bs),a(Ta);var Da=t(Ta,2),Ua=s(Da),Ba=s(Ua),Br=s(Ba);Br.textContent=Wo,a(Ba);var Fa=t(Ba,2);B(Fa),m(Fa,"placeholder",Xo),a(Ua);var Es=t(Ua,2),Ka=s(Es),hs=s(Ka);hs.textContent=Yo;var gs=t(hs,2),Fr=s(gs,!0);a(gs),a(Ka);var Ma=t(Ka,2);B(Ma),a(Es),a(Da);var Ga=t(Da,2),ms=s(Ga);se(ms,{variant:"ghost",get disabled(){return e(aa)},$$events:{click:Pr},children:(O,Ce)=>{z();var Le=te();v(Ye=>_(Le,Ye),[()=>yc(e(aa))],H),l(O,Le)},$$slots:{default:!0}});var Kr=t(ms,2);se(Kr,{get disabled(){return e(yt)},$$events:{click:os},children:(O,Ce)=>{z();var Le=te();v(Ye=>_(Le,Ye),[()=>Tc(e(yt))],H),l(O,Le)},$$slots:{default:!0}}),a(Ga);var Mr=t(Ga,2);{var Gr=O=>{var Ce=Ed(),Le=s(Ce);a(Ce),v(()=>{St(Ce,"s3-test-success",e(ft)==="success"),St(Ce,"s3-test-error",e(ft)==="error"),_(Le,`${(e(ft)==="success"?"✓":"✗")??""}
|
|
8
|
-
${e(ra)??""}`)}),l(O,Ce)};U(Mr,O=>{e(ft)&&O(Gr)})}a(he);var Ha=t(he,2),Ss=s(Ha);Ss.textContent=lc;var Hr=t(Ss,2);{var Vr=O=>{var Ce=hd();Ce.textContent=ic,l(O,Ce)},jr=O=>{var Ce=Ld(),Le=Re(Ce),Ye=s(Le),Cs=s(Ye);Cs.textContent=oc;var Va=t(Cs,2);a(Ye),a(Le);var ja=t(Le,2),Wa=s(ja),Ls=s(Wa);Ls.textContent=cc;var Rs=t(Ls,2),As=s(Rs);As.nodeValue=`${dc} `;var ks=t(As,2);ks.nodeValue=` ${vc} `;var Wr=t(ks);Wr.textContent=pc,a(Rs),a(Wa);var Xa=t(Wa,2);B(Xa),m(Xa,"placeholder",uc),a(ja);var xs=t(ja,2);{var Xr=tt=>{var Gt=Cd(),vt=s(Gt),Ht=t(vt);{var zr=pt=>{var at=gd(),Ya=s(at,!0);a(at),v(za=>_(Ya,za),[()=>Ic(e(st).replace("success:",""))],H),l(pt,at)},Jr=pt=>{var at=De(),Ya=Re(at);{var za=It=>{var ze=md(),Ja=s(ze,!0);a(ze),v(Qr=>_(Ja,Qr),[()=>e(st).replace("error:","")],H),l(It,ze)},qr=It=>{var ze=Sd(),Ja=s(ze,!0);a(ze),v(()=>_(Ja,e(st))),l(It,ze)};U(Ya,It=>{var ze;(ze=e(st))!=null&&ze.startsWith("error:")?It(za):It(qr,!1)},!0)}l(pt,at)};U(Ht,pt=>{var at;(at=e(st))!=null&&at.startsWith("success:")?pt(zr):pt(Jr,!1)})}a(Gt),v(pt=>_(vt,`${_c}
|
|
9
|
-
${pt??""} — `),[()=>new Date(e(Ut)).toLocaleString()],H),l(tt,Gt)};U(xs,tt=>{e(Ut)&&tt(Xr)})}var Ps=t(xs,2),ys=s(Ps);se(ys,{variant:"ghost",get disabled(){return e(sa)},$$events:{click:yr},children:(tt,Gt)=>{z();var vt=te();v(Ht=>_(vt,Ht),[()=>wc(e(sa))],H),l(tt,vt)},$$slots:{default:!0}});var Yr=t(ys,2);se(Yr,{get disabled(){return e(yt)},$$events:{click:os},children:(tt,Gt)=>{z();var vt=te();v(Ht=>_(vt,Ht),[()=>Oc(e(yt))],H),l(tt,vt)},$$slots:{default:!0}}),a(Ps),v(()=>{m(Va,"aria-checked",e(T).backupEnabled),St(Va,"active",e(T).backupEnabled)}),Je("click",Va,()=>k(T,e(T).backupEnabled=!e(T).backupEnabled)),V(Xa,()=>e(T).backupCron,tt=>k(T,e(T).backupCron=tt)),l(O,Ce)};U(Hr,O=>{e(Ea)?O(jr,!1):O(Vr)})}a(Ha),a(p),v((O,Ce)=>{_(ee,e(bt)?e(bt).name:yo),_(Fr,O),m(Ma,"placeholder",Ce),St(Ha,"card-disabled",!e(Ea))},[()=>xc(e(Tt)),()=>Pc(e(Tt))],H),Je("change",ce,fr),V(Kt,()=>e(T).backupS3Endpoint,O=>k(T,e(T).backupS3Endpoint=O)),V(ya,()=>e(T).backupS3Region,O=>k(T,e(T).backupS3Region=O)),V(Oa,()=>e(T).backupS3Bucket,O=>k(T,e(T).backupS3Bucket=O)),V(Na,()=>e(T).backupS3Prefix,O=>k(T,e(T).backupS3Prefix=O)),V(Fa,()=>e(T).backupS3AccessKey,O=>k(T,e(T).backupS3AccessKey=O)),V(Ma,()=>e(T).backupS3SecretKey,O=>k(T,e(T).backupS3SecretKey=O)),He(3,p,()=>Ve,()=>({y:6,duration:180})),l(g,p)};U(L,g=>{e(xe)==="backup"&&g(u)},!0)}l(W,P)};U(le,W=>{e(xe)==="users"?W(oe):W(_e,!1)},!0)}l(q,N)};U(j,q=>{e(xe)==="account"?q(ne):q(h,!1)},!0)}l(ue,J)};U(Pe,ue=>{e(xe)==="mcp"?ue($e):ue(Ge,!1)},!0)}l(ke,Ee)};U(Ke,ke=>{e(xe)==="integrations"?ke(Me):ke(it,!1)},!0)}l(Ie,ye)};U(nt,Ie=>{e(xe)==="repository"?Ie(lt):Ie(ht,!1)},!0)}l(Qe,Fe)};U(x,Qe=>{e(xe)==="runners"?Qe(je):Qe(xa,!1)},!0)}l(n,o)};U(wr,n=>{e(xe)==="project"?n(Or):n($r,!1)})}a(us),a(vs),l(i,cs),rn(),fa()}export{Vd as component};
|
|
@@ -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
|
-
.back-row.svelte-1qfuc04{margin-bottom:1.5rem}.back-link.svelte-1qfuc04{display:inline-flex;align-items:center;gap:.35rem;font-size:.8125rem;color:var(--text-muted);text-decoration:none;transition:color var(--duration-fast)}.back-link.svelte-1qfuc04:hover{color:var(--text)}
|
|
@@ -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
|
-
.page-header.svelte-9ix8dg{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-text.svelte-9ix8dg h1:where(.svelte-9ix8dg){font-size:2.5rem;margin-bottom:.25rem}.header-desc.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted)}.header-actions.svelte-9ix8dg{flex-shrink:0;padding-top:.25rem}.tabs.svelte-9ix8dg{display:flex;gap:.125rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border)}.tab.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem .625rem;font-family:var(--font-body);font-size:.875rem;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}.tab.svelte-9ix8dg:hover{color:var(--text)}.tab.active.svelte-9ix8dg{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.tab-count.svelte-9ix8dg{font-size:.7rem;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.05rem .4rem;color:var(--text-muted)}.loading-row.svelte-9ix8dg{font-size:.875rem;color:var(--text-muted);padding:2rem 0}.pagination-row.svelte-9ix8dg{margin-top:1.5rem}.search-bar.svelte-9ix8dg{position:relative;display:flex;align-items:center;margin-bottom:1.25rem}.search-icon.svelte-9ix8dg{position:absolute;left:.75rem;color:var(--text-muted);pointer-events:none;flex-shrink:0}.search-input.svelte-9ix8dg{width:100%;max-width:360px;height:34px;padding:0 2rem 0 2.25rem;font-family:var(--font-body);font-size:.875rem;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color var(--duration-fast)}.search-input.svelte-9ix8dg::placeholder{color:var(--text-muted)}.search-input.svelte-9ix8dg:focus{border-color:var(--accent)}.search-input.svelte-9ix8dg::-webkit-search-cancel-button{display:none}.search-clear.svelte-9ix8dg{position:absolute;left:calc(360px - 1.75rem);display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:none;border:none;cursor:pointer;color:var(--text-muted);padding:0}.search-clear.svelte-9ix8dg:hover{color:var(--text)}.sort-bar.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;margin-bottom:1.25rem;flex-wrap:wrap}.sort-label.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);margin-right:.25rem}.sort-chip.svelte-9ix8dg{display:flex;align-items:center;gap:.25rem;height:28px;padding:0 .625rem;font-family:var(--font-body);font-size:.8125rem;color:var(--text-muted);background:var(--bg-elevated);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)}.sort-chip.svelte-9ix8dg:hover{color:var(--text);border-color:var(--accent)}.sort-chip.active.svelte-9ix8dg{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.sort-dir.svelte-9ix8dg{font-size:.7rem;opacity:.8}.search-section.svelte-9ix8dg{margin-bottom:2rem}.search-section-title.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.75rem}.case-results.svelte-9ix8dg{display:flex;flex-direction:column;gap:.25rem}.case-result-row.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;padding:.6rem .875rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:inherit;transition:border-color var(--duration-fast)}.case-result-row.svelte-9ix8dg:hover{border-color:var(--accent)}.case-result-title.svelte-9ix8dg{font-size:.875rem;font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-result-suite.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0;white-space:nowrap}.suite-grid.svelte-9ix8dg{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.875rem}.card-link.svelte-9ix8dg{position:absolute;inset:0;border-radius:inherit;z-index:0}.suite-card.svelte-9ix8dg{position:relative;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-elevated);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-md);padding:1rem;color:inherit;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.suite-card.svelte-9ix8dg:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000f}.suite-card-header.svelte-9ix8dg{display:flex;align-items:center;gap:.5rem}.suite-card-actions.svelte-9ix8dg{position:relative;z-index:1;margin-left:auto;opacity:0;transition:opacity var(--duration-fast)}.suite-card.svelte-9ix8dg:hover .suite-card-actions:where(.svelte-9ix8dg){opacity:1}.suite-name.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text)}.suite-desc.svelte-9ix8dg{font-size:.8125rem;color:var(--text-muted);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.suite-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.meta-item.svelte-9ix8dg{display:flex;align-items:center;gap:.3rem;font-size:.75rem;color:var(--text-muted)}.id-chip.svelte-9ix8dg{font-family:JetBrains Mono,monospace;font-size:.7rem;font-weight:600;color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:.1rem .4rem;letter-spacing:.02em;flex-shrink:0}.id-chip.small.svelte-9ix8dg{font-size:.65rem}.auto-badge.svelte-9ix8dg{font-size:.62rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pass);background:var(--pass-soft);border-radius:var(--radius-pill);padding:.1rem .4rem;flex-shrink:0}.priority-badge.svelte-9ix8dg{font-size:.68rem;font-weight:500;border-radius:var(--radius-pill);padding:.15rem .5rem;flex-shrink:0}.priority-badge.small.svelte-9ix8dg{font-size:.62rem;padding:.1rem .4rem}.priority-badge.critical.svelte-9ix8dg{background:var(--fail-soft);color:var(--fail)}.priority-badge.high.svelte-9ix8dg{background:var(--warn-soft);color:var(--warn)}.priority-badge.medium.svelte-9ix8dg{background:var(--node-soft);color:var(--node)}.priority-badge.low.svelte-9ix8dg{background:var(--bg-subtle);color:var(--text-muted)}.icon-btn.svelte-9ix8dg{display:flex;align-items:center;justify-content:center;width:26px;height:26px;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.danger.svelte-9ix8dg:hover{background:var(--fail-soft);color:var(--fail)}.runs-list.svelte-9ix8dg{display:flex;flex-direction:column;gap:.5rem}.run-row.svelte-9ix8dg{position:relative;display:flex;align-items:center;gap:1rem;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.875rem 1rem;color:inherit;transition:border-color var(--duration-fast)}.run-row.svelte-9ix8dg:hover{border-color:var(--accent)}.run-row-main.svelte-9ix8dg{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.run-status-dot.svelte-9ix8dg{width:8px;height:8px;border-radius:50%;flex-shrink:0}.run-status-dot.pass.svelte-9ix8dg{background:var(--pass)}.run-status-dot.warn.svelte-9ix8dg{background:var(--warn)}.run-status-dot.muted.svelte-9ix8dg{background:var(--border)}.run-title.svelte-9ix8dg{font-size:.9375rem;font-weight:500;color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.run-count.svelte-9ix8dg{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-meta.svelte-9ix8dg{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-status-label.svelte-9ix8dg{font-size:.7rem;font-weight:500;text-transform:capitalize;color:var(--text-muted);background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-pill);padding:.1rem .4rem}.meta-sep.svelte-9ix8dg{color:var(--border)}.run-row-actions.svelte-9ix8dg{position:relative;z-index:1;opacity:0;transition:opacity var(--duration-fast)}.run-row.svelte-9ix8dg:hover .run-row-actions:where(.svelte-9ix8dg){opacity:1}.form-fields.svelte-9ix8dg{display:flex;flex-direction:column;gap:1rem}.field-textarea.svelte-9ix8dg{height:auto;resize:vertical}.form-error.svelte-9ix8dg{font-size:.8125rem;color:var(--fail)}.modal-actions.svelte-9ix8dg{display:flex;gap:.5rem;padding-top:.25rem}@media (max-width: 640px){.page-header.svelte-9ix8dg{flex-direction:column;gap:.75rem}.suite-grid.svelte-9ix8dg{grid-template-columns:1fr}.run-meta.svelte-9ix8dg{display:none}}
|
|
@@ -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}
|