plum-e2e 1.1.1 → 1.2.1
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/README.md +142 -70
- package/backend/Dockerfile +4 -2
- package/backend/_scaffold/utils/browser.ts +1 -0
- package/backend/app.js +4 -2
- package/backend/config/scripts/generate-report.js +38 -30
- package/{.prettierignore → backend/entrypoint.sh} +7 -6
- package/backend/package-lock.json +453 -10
- package/backend/package.json +5 -2
- package/backend/prisma/migrations/20260614000000_init/migration.sql +35 -0
- package/backend/prisma/migrations/20260614000001_add_project/migration.sql +8 -0
- package/backend/prisma/migrations/migration_lock.toml +3 -0
- package/backend/prisma/schema.prisma +53 -0
- package/backend/routes/backup.routes.js +50 -0
- package/backend/routes/cron.routes.js +9 -60
- package/backend/routes/reports.routes.js +39 -6
- package/backend/routes/settings.routes.js +43 -0
- package/backend/server.js +52 -1
- package/backend/services/backupService.js +88 -0
- package/backend/services/cronService.js +68 -78
- package/backend/{routes/schedules.routes.js → services/prisma.js} +3 -13
- package/backend/services/reportService.js +48 -20
- package/backend/services/settingsService.js +36 -0
- package/bin/plum.js +216 -34
- package/docker-compose.yml +24 -0
- package/frontend/.svelte-kit/adapter-node/.vite/manifest.json +190 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/adapter-node/chunks/Badge.js +30 -0
- package/frontend/.svelte-kit/adapter-node/chunks/Button.js +32 -0
- package/frontend/.svelte-kit/adapter-node/chunks/attributes.js +34 -0
- package/frontend/.svelte-kit/adapter-node/chunks/client.js +59 -0
- package/{backend/services/scheduleService.js → frontend/.svelte-kit/adapter-node/chunks/equality.js} +13 -16
- package/frontend/.svelte-kit/adapter-node/chunks/escaping.js +36 -0
- package/frontend/.svelte-kit/adapter-node/chunks/exports.js +247 -0
- package/frontend/.svelte-kit/adapter-node/chunks/index.js +1135 -0
- package/frontend/.svelte-kit/adapter-node/chunks/internal.js +695 -0
- package/frontend/.svelte-kit/adapter-node/chunks/reports.js +57 -0
- package/frontend/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +44 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +181 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +164 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_page.svelte.js +141 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/reports/_slug_/_page.svelte.js +42 -0
- package/frontend/.svelte-kit/adapter-node/entries/pages/scheduled-tests/_page.svelte.js +179 -0
- package/frontend/.svelte-kit/adapter-node/index.js +3144 -0
- package/frontend/.svelte-kit/adapter-node/internal.js +30 -0
- package/frontend/.svelte-kit/adapter-node/manifest-full.js +77 -0
- package/frontend/.svelte-kit/adapter-node/manifest.js +81 -0
- package/frontend/.svelte-kit/adapter-node/nodes/0.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/1.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/2.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/3.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/4.js +25 -0
- package/frontend/.svelte-kit/adapter-node/nodes/5.js +25 -0
- package/frontend/.svelte-kit/ambient.d.ts +240 -0
- package/frontend/.svelte-kit/generated/client/app.js +51 -0
- package/frontend/.svelte-kit/generated/client/matchers.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/0.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/1.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/2.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/3.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/4.js +18 -0
- package/frontend/.svelte-kit/generated/client/nodes/5.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/app.js +51 -0
- package/frontend/.svelte-kit/generated/client-optimized/matchers.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/0.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/1.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/2.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/3.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/4.js +18 -0
- package/frontend/.svelte-kit/generated/client-optimized/nodes/5.js +18 -0
- package/frontend/.svelte-kit/generated/root.js +20 -0
- package/frontend/.svelte-kit/generated/root.svelte +83 -0
- package/frontend/.svelte-kit/generated/server/internal.js +65 -0
- package/frontend/.svelte-kit/non-ambient.d.ts +42 -0
- package/frontend/.svelte-kit/output/client/.vite/manifest.json +289 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/0.CnXRuPt4.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/2.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/3.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/4.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/5.D93VAB-w.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B0bn91RF.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/B1kE5jmt.js +23 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BKz6FZdB.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Be4iUAB0.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/BpaMqo9O.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Bt3-Z7H1.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CHV2KnPr.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CJ8q7g9Y.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/Cit9MuSg.js +20 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/CwBTqcbj.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DBk3zeq4.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DFJLQFic.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/DTUE7kkY.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/IYPwzKs_.js +20 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/oc0we5Us.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/chunks/rVEKg0Ak.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/app.C2MbX06K.js +19 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/entry/start.GiBry-lw.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.BsCYK-Tn.js +21 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.N4gjrCnX.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.D9yQNzK8.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.CBC5WvNb.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/4.BU6UZHSE.js +19 -0
- package/frontend/.svelte-kit/output/client/_app/immutable/nodes/5.Dzzfrntl.js +18 -0
- package/frontend/.svelte-kit/output/client/_app/version.json +1 -0
- package/frontend/.svelte-kit/output/client/favicon.png +0 -0
- package/frontend/.svelte-kit/output/server/.vite/manifest.json +190 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/.svelte-kit/output/server/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/.svelte-kit/output/server/chunks/Badge.js +30 -0
- package/frontend/.svelte-kit/output/server/chunks/Button.js +32 -0
- package/frontend/.svelte-kit/output/server/chunks/attributes.js +34 -0
- package/frontend/.svelte-kit/output/server/chunks/client.js +59 -0
- package/frontend/.svelte-kit/output/server/chunks/equality.js +31 -0
- package/frontend/.svelte-kit/output/server/chunks/escaping.js +36 -0
- package/frontend/.svelte-kit/output/server/chunks/exports.js +247 -0
- package/frontend/.svelte-kit/output/server/chunks/index.js +1135 -0
- package/frontend/.svelte-kit/output/server/chunks/internal.js +695 -0
- package/frontend/.svelte-kit/output/server/chunks/reports.js +57 -0
- package/frontend/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +44 -0
- package/frontend/.svelte-kit/output/server/entries/pages/_layout.svelte.js +181 -0
- package/frontend/.svelte-kit/output/server/entries/pages/_page.svelte.js +164 -0
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_page.svelte.js +141 -0
- package/frontend/.svelte-kit/output/server/entries/pages/reports/_slug_/_page.svelte.js +42 -0
- package/frontend/.svelte-kit/output/server/entries/pages/scheduled-tests/_page.svelte.js +179 -0
- package/frontend/.svelte-kit/output/server/index.js +3144 -0
- package/frontend/.svelte-kit/output/server/internal.js +30 -0
- package/frontend/.svelte-kit/output/server/manifest-full.js +77 -0
- package/frontend/.svelte-kit/output/server/manifest.js +77 -0
- package/frontend/.svelte-kit/output/server/nodes/0.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/1.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/2.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/3.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/4.js +25 -0
- package/frontend/.svelte-kit/output/server/nodes/5.js +25 -0
- package/frontend/.svelte-kit/tsconfig.json +49 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css +17 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/0.CnXRuPt4.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css +17 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/2.CGnCsn5q.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css +17 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/3.BVnUajEa.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css +17 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/4.DBhBrHFz.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css +17 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/5.D93VAB-w.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css +17 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Badge.DLLowvEA.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css +17 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/Button.cBruH0aD.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_layout.D7eM-6MV.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.BVnUajEa.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.CGnCsn5q.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DBhBrHFz.css.gz +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css +17 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css.br +0 -0
- package/frontend/build/client/_app/immutable/assets/_page.DOqo0UR4.css.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B0bn91RF.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js +23 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/B1kE5jmt.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BKz6FZdB.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Be4iUAB0.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/BpaMqo9O.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Bt3-Z7H1.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js.br +18 -0
- package/frontend/build/client/_app/immutable/chunks/CHV2KnPr.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js +18 -0
- package/{resources/comments-format.text → frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js.br} +0 -0
- package/frontend/build/client/_app/immutable/chunks/CJ8q7g9Y.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js +20 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/Cit9MuSg.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/CwBTqcbj.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DBk3zeq4.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DFJLQFic.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/DTUE7kkY.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js +20 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/IYPwzKs_.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/oc0we5Us.js.gz +0 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js +18 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js.br +0 -0
- package/frontend/build/client/_app/immutable/chunks/rVEKg0Ak.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js +19 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js.br +0 -0
- package/frontend/build/client/_app/immutable/entry/app.C2MbX06K.js.gz +0 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js +18 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js.br +18 -0
- package/frontend/build/client/_app/immutable/entry/start.GiBry-lw.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js +21 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/0.BsCYK-Tn.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/1.N4gjrCnX.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/2.D9yQNzK8.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/3.CBC5WvNb.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js +19 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/4.BU6UZHSE.js.gz +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js +18 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js.br +0 -0
- package/frontend/build/client/_app/immutable/nodes/5.Dzzfrntl.js.gz +0 -0
- package/frontend/build/client/_app/version.json +1 -0
- package/frontend/build/client/_app/version.json.br +0 -0
- package/frontend/build/client/_app/version.json.gz +0 -0
- package/frontend/build/client/favicon.png +0 -0
- package/frontend/build/env.js +111 -0
- package/frontend/build/handler.js +1511 -0
- package/frontend/build/index.js +362 -0
- package/frontend/build/server/chunks/0-BFfqmlsS.js +26 -0
- package/frontend/build/server/chunks/0-BFfqmlsS.js.map +17 -0
- package/frontend/build/server/chunks/1-hso3H4Ax.js +26 -0
- package/frontend/build/server/chunks/1-hso3H4Ax.js.map +17 -0
- package/frontend/build/server/chunks/2-BSZWXCWp.js +26 -0
- package/frontend/build/server/chunks/2-BSZWXCWp.js.map +17 -0
- package/frontend/build/server/chunks/3-BYumY9dv.js +26 -0
- package/frontend/build/server/chunks/3-BYumY9dv.js.map +17 -0
- package/frontend/build/server/chunks/4-2UUrCVtM.js +26 -0
- package/frontend/build/server/chunks/4-2UUrCVtM.js.map +17 -0
- package/frontend/build/server/chunks/5-C2_y_fwT.js +26 -0
- package/frontend/build/server/chunks/5-C2_y_fwT.js.map +17 -0
- package/frontend/build/server/chunks/Badge-CC4U7C0c.js +30 -0
- package/frontend/build/server/chunks/Badge-CC4U7C0c.js.map +17 -0
- package/frontend/build/server/chunks/Button-BLkPicwS.js +33 -0
- package/frontend/build/server/chunks/Button-BLkPicwS.js.map +17 -0
- package/frontend/build/server/chunks/_layout.svelte-Bfxcj9C6.js +183 -0
- package/frontend/build/server/chunks/_layout.svelte-Bfxcj9C6.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-DEK6UvaI.js +45 -0
- package/frontend/build/server/chunks/_page.svelte-DEK6UvaI.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-DScVdHOq.js +142 -0
- package/frontend/build/server/chunks/_page.svelte-DScVdHOq.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-Ns7w2sZt.js +180 -0
- package/frontend/build/server/chunks/_page.svelte-Ns7w2sZt.js.map +17 -0
- package/frontend/build/server/chunks/_page.svelte-s6ZIOitT.js +165 -0
- package/frontend/build/server/chunks/_page.svelte-s6ZIOitT.js.map +17 -0
- package/frontend/build/server/chunks/attributes-BeaNKpgU.js +34 -0
- package/frontend/build/server/chunks/attributes-BeaNKpgU.js.map +17 -0
- package/frontend/build/server/chunks/client-C9IaEwNo.js +52 -0
- package/frontend/build/server/chunks/client-C9IaEwNo.js.map +17 -0
- package/frontend/build/server/chunks/error.svelte-HKBv5sQT.js +45 -0
- package/frontend/build/server/chunks/error.svelte-HKBv5sQT.js.map +17 -0
- package/frontend/build/server/chunks/escaping-CqgfEcN3.js +36 -0
- package/frontend/build/server/chunks/escaping-CqgfEcN3.js.map +17 -0
- package/frontend/build/server/chunks/exports-OxlCJ8yE.js +192 -0
- package/frontend/build/server/chunks/exports-OxlCJ8yE.js.map +17 -0
- package/frontend/build/server/chunks/index-CjHlq1kt.js +1076 -0
- package/frontend/build/server/chunks/index-CjHlq1kt.js.map +17 -0
- package/frontend/build/server/chunks/reports-D3ZeYSmi.js +56 -0
- package/frontend/build/server/chunks/reports-D3ZeYSmi.js.map +17 -0
- package/frontend/build/server/index.js +5015 -0
- package/frontend/build/server/index.js.map +17 -0
- package/frontend/build/server/manifest.js +84 -0
- package/frontend/build/server/manifest.js.map +17 -0
- package/frontend/build/shims.js +49 -0
- package/frontend/package-lock.json +2 -2
- package/frontend/package.json +1 -1
- package/frontend/src/lib/api/reports.js +38 -27
- package/frontend/src/lib/api/schedules.js +9 -25
- package/frontend/src/lib/api/settings.js +48 -0
- package/frontend/src/lib/components/layout/Nav.svelte +2 -1
- package/frontend/src/lib/components/layout/RunnerPanel.svelte +160 -21
- package/frontend/src/lib/components/ui/Terminal.svelte +2 -2
- package/frontend/src/lib/stores/runner.js +9 -0
- package/frontend/src/routes/+page.svelte +10 -3
- package/frontend/src/routes/reports/+page.svelte +342 -51
- package/frontend/src/routes/reports/[slug]/+page.svelte +2 -0
- package/frontend/src/routes/scheduled-tests/+page.svelte +247 -11
- package/frontend/src/routes/settings/+page.svelte +410 -0
- package/package.json +6 -2
- package/.claude/settings.local.json +0 -27
- package/.husky/pre-commit +0 -2
- package/.prettierrc +0 -15
- package/.vscode/settings.json +0 -10
- package/backend/config/scripts/create-settings.js +0 -53
- package/license-config.json +0 -37
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { i, e, l, m, n, q, f, h, k, j } from "./chunks/internal.js";
|
|
19
|
+
export {
|
|
20
|
+
i as get_hooks,
|
|
21
|
+
e as options,
|
|
22
|
+
l as set_assets,
|
|
23
|
+
m as set_building,
|
|
24
|
+
n as set_manifest,
|
|
25
|
+
q as set_prerendering,
|
|
26
|
+
f as set_private_env,
|
|
27
|
+
h as set_public_env,
|
|
28
|
+
k as set_read_implementation,
|
|
29
|
+
j as set_safe_public_env
|
|
30
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export const manifest = (() => {
|
|
19
|
+
function __memo(fn) {
|
|
20
|
+
let value;
|
|
21
|
+
return () => value ??= (value = fn());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
appDir: "_app",
|
|
26
|
+
appPath: "_app",
|
|
27
|
+
assets: new Set(["favicon.png"]),
|
|
28
|
+
mimeTypes: {".png":"image/png"},
|
|
29
|
+
_: {
|
|
30
|
+
client: {start:"_app/immutable/entry/start.GiBry-lw.js",app:"_app/immutable/entry/app.C2MbX06K.js",imports:["_app/immutable/entry/start.GiBry-lw.js","_app/immutable/chunks/Cit9MuSg.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/entry/app.C2MbX06K.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Be4iUAB0.js","_app/immutable/chunks/CHV2KnPr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
31
|
+
nodes: [
|
|
32
|
+
__memo(() => import('./nodes/0.js')),
|
|
33
|
+
__memo(() => import('./nodes/1.js')),
|
|
34
|
+
__memo(() => import('./nodes/2.js')),
|
|
35
|
+
__memo(() => import('./nodes/3.js')),
|
|
36
|
+
__memo(() => import('./nodes/4.js')),
|
|
37
|
+
__memo(() => import('./nodes/5.js'))
|
|
38
|
+
],
|
|
39
|
+
routes: [
|
|
40
|
+
{
|
|
41
|
+
id: "/",
|
|
42
|
+
pattern: /^\/$/,
|
|
43
|
+
params: [],
|
|
44
|
+
page: { layouts: [0,], errors: [1,], leaf: 2 },
|
|
45
|
+
endpoint: null
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "/reports",
|
|
49
|
+
pattern: /^\/reports\/?$/,
|
|
50
|
+
params: [],
|
|
51
|
+
page: { layouts: [0,], errors: [1,], leaf: 3 },
|
|
52
|
+
endpoint: null
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "/reports/[slug]",
|
|
56
|
+
pattern: /^\/reports\/([^/]+?)\/?$/,
|
|
57
|
+
params: [{"name":"slug","optional":false,"rest":false,"chained":false}],
|
|
58
|
+
page: { layouts: [0,], errors: [1,], leaf: 4 },
|
|
59
|
+
endpoint: null
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "/scheduled-tests",
|
|
63
|
+
pattern: /^\/scheduled-tests\/?$/,
|
|
64
|
+
params: [],
|
|
65
|
+
page: { layouts: [0,], errors: [1,], leaf: 5 },
|
|
66
|
+
endpoint: null
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
prerendered_routes: new Set([]),
|
|
70
|
+
matchers: async () => {
|
|
71
|
+
|
|
72
|
+
return { };
|
|
73
|
+
},
|
|
74
|
+
server_assets: {}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export const manifest = (() => {
|
|
19
|
+
function __memo(fn) {
|
|
20
|
+
let value;
|
|
21
|
+
return () => value ??= (value = fn());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
appDir: "_app",
|
|
26
|
+
appPath: "_app",
|
|
27
|
+
assets: new Set(["favicon.png"]),
|
|
28
|
+
mimeTypes: {".png":"image/png"},
|
|
29
|
+
_: {
|
|
30
|
+
client: {start:"_app/immutable/entry/start.GiBry-lw.js",app:"_app/immutable/entry/app.C2MbX06K.js",imports:["_app/immutable/entry/start.GiBry-lw.js","_app/immutable/chunks/Cit9MuSg.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/entry/app.C2MbX06K.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Be4iUAB0.js","_app/immutable/chunks/CHV2KnPr.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
31
|
+
nodes: [
|
|
32
|
+
__memo(() => import('./nodes/0.js')),
|
|
33
|
+
__memo(() => import('./nodes/1.js')),
|
|
34
|
+
__memo(() => import('./nodes/2.js')),
|
|
35
|
+
__memo(() => import('./nodes/3.js')),
|
|
36
|
+
__memo(() => import('./nodes/4.js')),
|
|
37
|
+
__memo(() => import('./nodes/5.js'))
|
|
38
|
+
],
|
|
39
|
+
routes: [
|
|
40
|
+
{
|
|
41
|
+
id: "/",
|
|
42
|
+
pattern: /^\/$/,
|
|
43
|
+
params: [],
|
|
44
|
+
page: { layouts: [0,], errors: [1,], leaf: 2 },
|
|
45
|
+
endpoint: null
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "/reports",
|
|
49
|
+
pattern: /^\/reports\/?$/,
|
|
50
|
+
params: [],
|
|
51
|
+
page: { layouts: [0,], errors: [1,], leaf: 3 },
|
|
52
|
+
endpoint: null
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "/reports/[slug]",
|
|
56
|
+
pattern: /^\/reports\/([^/]+?)\/?$/,
|
|
57
|
+
params: [{"name":"slug","optional":false,"rest":false,"chained":false}],
|
|
58
|
+
page: { layouts: [0,], errors: [1,], leaf: 4 },
|
|
59
|
+
endpoint: null
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "/scheduled-tests",
|
|
63
|
+
pattern: /^\/scheduled-tests\/?$/,
|
|
64
|
+
params: [],
|
|
65
|
+
page: { layouts: [0,], errors: [1,], leaf: 5 },
|
|
66
|
+
endpoint: null
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
prerendered_routes: new Set([]),
|
|
70
|
+
matchers: async () => {
|
|
71
|
+
|
|
72
|
+
return { };
|
|
73
|
+
},
|
|
74
|
+
server_assets: {}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 0;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/0.BsCYK-Tn.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/rVEKg0Ak.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Bt3-Z7H1.js","_app/immutable/chunks/B1kE5jmt.js","_app/immutable/chunks/Be4iUAB0.js","_app/immutable/chunks/CJ8q7g9Y.js","_app/immutable/chunks/Cit9MuSg.js","_app/immutable/chunks/BKz6FZdB.js","_app/immutable/chunks/IYPwzKs_.js","_app/immutable/chunks/BpaMqo9O.js","_app/immutable/chunks/CHV2KnPr.js","_app/immutable/chunks/DBk3zeq4.js"];
|
|
24
|
+
export const stylesheets = ["_app/immutable/assets/0.CnXRuPt4.css","_app/immutable/assets/Button.cBruH0aD.css"];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 1;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/1.N4gjrCnX.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/Cit9MuSg.js"];
|
|
24
|
+
export const stylesheets = [];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 2;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/2.D9yQNzK8.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Bt3-Z7H1.js","_app/immutable/chunks/B1kE5jmt.js","_app/immutable/chunks/BKz6FZdB.js","_app/immutable/chunks/IYPwzKs_.js"];
|
|
24
|
+
export const stylesheets = ["_app/immutable/assets/2.CGnCsn5q.css"];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 3;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/pages/reports/_page.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/3.CBC5WvNb.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Bt3-Z7H1.js","_app/immutable/chunks/BpaMqo9O.js","_app/immutable/chunks/oc0we5Us.js","_app/immutable/chunks/rVEKg0Ak.js","_app/immutable/chunks/Be4iUAB0.js"];
|
|
24
|
+
export const stylesheets = ["_app/immutable/assets/3.BVnUajEa.css","_app/immutable/assets/Badge.DLLowvEA.css"];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 4;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/pages/reports/_slug_/_page.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/4.BU6UZHSE.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Bt3-Z7H1.js","_app/immutable/chunks/B1kE5jmt.js","_app/immutable/chunks/Be4iUAB0.js","_app/immutable/chunks/CJ8q7g9Y.js","_app/immutable/chunks/Cit9MuSg.js","_app/immutable/chunks/BpaMqo9O.js","_app/immutable/chunks/oc0we5Us.js","_app/immutable/chunks/rVEKg0Ak.js"];
|
|
24
|
+
export const stylesheets = ["_app/immutable/assets/4.DBhBrHFz.css","_app/immutable/assets/Badge.DLLowvEA.css"];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of Plum.
|
|
3
|
+
*
|
|
4
|
+
* Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
* it under the terms of the GNU General Public License as published by
|
|
6
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
* (at your option) any later version.
|
|
8
|
+
*
|
|
9
|
+
* Plum is distributed in the hope that it will be useful,
|
|
10
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
* GNU General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU General Public License
|
|
15
|
+
* along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export const index = 5;
|
|
21
|
+
let component_cache;
|
|
22
|
+
export const component = async () => component_cache ??= (await import('../entries/pages/scheduled-tests/_page.svelte.js')).default;
|
|
23
|
+
export const imports = ["_app/immutable/nodes/5.Dzzfrntl.js","_app/immutable/chunks/DFJLQFic.js","_app/immutable/chunks/B0bn91RF.js","_app/immutable/chunks/DTUE7kkY.js","_app/immutable/chunks/CwBTqcbj.js","_app/immutable/chunks/Bt3-Z7H1.js","_app/immutable/chunks/B1kE5jmt.js","_app/immutable/chunks/BKz6FZdB.js","_app/immutable/chunks/Be4iUAB0.js","_app/immutable/chunks/DBk3zeq4.js","_app/immutable/chunks/rVEKg0Ak.js","_app/immutable/chunks/oc0we5Us.js"];
|
|
24
|
+
export const stylesheets = ["_app/immutable/assets/5.D93VAB-w.css","_app/immutable/assets/Button.cBruH0aD.css","_app/immutable/assets/Badge.DLLowvEA.css"];
|
|
25
|
+
export const fonts = [];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"paths": {
|
|
4
|
+
"$lib": [
|
|
5
|
+
"../src/lib"
|
|
6
|
+
],
|
|
7
|
+
"$lib/*": [
|
|
8
|
+
"../src/lib/*"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"rootDirs": [
|
|
12
|
+
"..",
|
|
13
|
+
"./types"
|
|
14
|
+
],
|
|
15
|
+
"verbatimModuleSyntax": true,
|
|
16
|
+
"isolatedModules": true,
|
|
17
|
+
"lib": [
|
|
18
|
+
"esnext",
|
|
19
|
+
"DOM",
|
|
20
|
+
"DOM.Iterable"
|
|
21
|
+
],
|
|
22
|
+
"moduleResolution": "bundler",
|
|
23
|
+
"module": "esnext",
|
|
24
|
+
"noEmit": true,
|
|
25
|
+
"target": "esnext"
|
|
26
|
+
},
|
|
27
|
+
"include": [
|
|
28
|
+
"ambient.d.ts",
|
|
29
|
+
"non-ambient.d.ts",
|
|
30
|
+
"./types/**/$types.d.ts",
|
|
31
|
+
"../vite.config.js",
|
|
32
|
+
"../vite.config.ts",
|
|
33
|
+
"../src/**/*.js",
|
|
34
|
+
"../src/**/*.ts",
|
|
35
|
+
"../src/**/*.svelte",
|
|
36
|
+
"../tests/**/*.js",
|
|
37
|
+
"../tests/**/*.ts",
|
|
38
|
+
"../tests/**/*.svelte"
|
|
39
|
+
],
|
|
40
|
+
"exclude": [
|
|
41
|
+
"../node_modules/**",
|
|
42
|
+
"../src/service-worker.js",
|
|
43
|
+
"../src/service-worker/**/*.js",
|
|
44
|
+
"../src/service-worker.ts",
|
|
45
|
+
"../src/service-worker/**/*.ts",
|
|
46
|
+
"../src/service-worker.d.ts",
|
|
47
|
+
"../src/service-worker/**/*.d.ts"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.block{display:block}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.flex-wrap{flex-wrap:wrap}.border{border-width:1px}.uppercase{text-transform:uppercase}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}: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;--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}[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;--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);transition:background-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out);-webkit-font-smoothing:antialiased}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;transition:border-color var(--duration-fast),box-shadow var(--duration-fast);-webkit-appearance:none;-moz-appearance:none;appearance:none}.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::-moz-placeholder{color:var(--text-muted)}.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-6bgush{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-6bgush{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.brand.svelte-6bgush{font-size:1.2rem;letter-spacing:-.02em;flex-shrink:0;text-decoration:none}.brand-serif.svelte-6bgush{font-family:var(--font-display);font-weight:400;color:var(--accent)}.brand-sans.svelte-6bgush{font-family:var(--font-body);font-weight:400;color:var(--text)}.links.svelte-6bgush{display:flex;gap:.125rem;flex:1}.link.svelte-6bgush{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-6bgush:hover{color:var(--text);background:var(--bg-subtle)}.link.active.svelte-6bgush{color:var(--accent);background:var(--accent-soft)}.actions.svelte-6bgush{display:flex;align-items:center;gap:.5rem;margin-left:auto}.theme-btn.svelte-6bgush{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);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.theme-btn.svelte-6bgush:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--text-muted)}.hamburger.svelte-6bgush{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-6bgush span:where(.svelte-6bgush){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-6bgush span.rotated:where(.svelte-6bgush){transform:translateY(5.5px) rotate(45deg)}.hamburger.svelte-6bgush span.hidden:where(.svelte-6bgush){opacity:0}.hamburger.svelte-6bgush span.rotated-reverse:where(.svelte-6bgush){transform:translateY(-5.5px) rotate(-45deg)}.mobile-menu.svelte-6bgush{border-top:1px solid var(--border);padding:.75rem 1.5rem 1rem;display:flex;flex-direction:column;gap:.125rem}.mobile-link.svelte-6bgush{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-6bgush:hover,.mobile-link.active.svelte-6bgush{background:var(--bg-subtle);color:var(--text)}.mobile-link.active.svelte-6bgush{color:var(--accent);background:var(--accent-soft)}@media (max-width: 640px){.links.svelte-6bgush{display:none}.hamburger.svelte-6bgush{display:flex}}.shell.svelte-28zx1m{max-width:1200px;margin:0 auto;padding:2.5rem 1.5rem 5rem}.terminal-wrap.svelte-olniy1{border-radius:var(--radius-md);overflow:hidden;border:1px solid rgba(255,255,255,.06)}.terminal-bar.svelte-olniy1{display:flex;align-items:center;gap:6px;padding:.6rem .875rem;background:#0000004d}.dot.svelte-olniy1{display:block;width:10px;height:10px;border-radius:50%}.red.svelte-olniy1{background:#ff5f57}.yellow.svelte-olniy1{background:#febc2e}.green.svelte-olniy1{background:#28c840}.terminal.svelte-olniy1{font-family:JetBrains Mono,Fira Code,Cascadia Code,Courier New,monospace;font-size:.78rem;line-height:1.75;background:var(--terminal-bg);color:var(--terminal-text);padding:1rem;min-height:220px;max-height:280px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;margin:0}.terminal.svelte-olniy1::-webkit-scrollbar{width:4px}.terminal.svelte-olniy1::-webkit-scrollbar-track{background:transparent}.terminal.svelte-olniy1::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.panel.svelte-ynu3lh{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 24px #0000000f;transition:box-shadow var(--duration-base) var(--ease-out)}.panel.expanded.svelte-ynu3lh{box-shadow:0 -8px 40px #0000001a}.bar.svelte-ynu3lh{display:flex;align-items:center;gap:.75rem;padding:0 1.5rem;height:48px;cursor:default}.bar-left.svelte-ynu3lh{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.status-dot.svelte-ynu3lh{flex-shrink:0;width:8px;height:8px;border-radius:50%;transition:background var(--duration-base)}.status-dot.pulse.svelte-ynu3lh{animation:svelte-ynu3lh-statusPulse 1.6s ease-in-out infinite}@keyframes svelte-ynu3lh-statusPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.status-label.svelte-ynu3lh{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.run-id.svelte-ynu3lh{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-dots.svelte-ynu3lh{display:flex;align-items:center;gap:4px;flex-shrink:0}.dot.svelte-ynu3lh{width:7px;height:7px;border-radius:50%;background:var(--border);transition:background var(--duration-base),transform var(--duration-fast)}.dot.running.svelte-ynu3lh{background:var(--pass);animation:svelte-ynu3lh-dotBeat 1.4s ease-in-out infinite}.dot.pass.svelte-ynu3lh{background:var(--pass)}.dot.fail.svelte-ynu3lh{background:var(--fail)}@keyframes svelte-ynu3lh-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.expand-btn.svelte-ynu3lh{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.expand-btn.svelte-ynu3lh:hover{background:var(--bg-subtle);color:var(--text)}.expand-btn.svelte-ynu3lh svg:where(.svelte-ynu3lh){transition:transform var(--duration-base) var(--ease-out)}.expand-btn.svelte-ynu3lh svg.rotated:where(.svelte-ynu3lh){transform:rotate(180deg)}.body.svelte-ynu3lh{padding:.875rem 1.5rem 1.125rem;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.75rem}.controls.svelte-ynu3lh{display:flex;align-items:center;gap:.625rem}.run-input.svelte-ynu3lh{flex:1}.workers-control.svelte-ynu3lh{display:flex;gap:2px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;flex-shrink:0}.worker-btn.svelte-ynu3lh{font-family:var(--font-body);font-size:.75rem;font-weight:400;min-width:2rem;padding:.2rem .5rem;border:none;border-radius:4px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.worker-btn.svelte-ynu3lh:hover:not(.active){background:var(--bg-elevated);color:var(--text)}.worker-btn.active.svelte-ynu3lh{background:var(--bg-elevated);color:var(--accent);font-weight:500;box-shadow:0 1px 3px #00000014}.report-row.svelte-ynu3lh{display:flex}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.page-header.svelte-10529e9{margin-bottom:1.75rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-10529e9{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-10529e9{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-10529e9{color:var(--text-muted);font-size:.875rem}.search-row.svelte-10529e9{display:flex;gap:.75rem}.search-wrap.svelte-10529e9{position:relative;flex:1;max-width:480px}.search-icon.svelte-10529e9{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.search-input.svelte-10529e9{width:100%;padding:.55rem .875rem .55rem 2.25rem;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;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.search-input.svelte-10529e9:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-elevated)}.search-input.svelte-10529e9::-moz-placeholder{color:var(--text-muted)}.search-input.svelte-10529e9::placeholder{color:var(--text-muted)}.search-clear.svelte-10529e9{position:absolute;right:.625rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:none;background:var(--border);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.search-clear.svelte-10529e9:hover{background:var(--text-muted);color:var(--bg)}.suites.svelte-10529e9{display:flex;flex-direction:column;gap:1rem}.suite.svelte-10529e9{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:visible;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.suite-header.svelte-10529e9{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1.25rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.suite-meta.svelte-10529e9{display:flex;align-items:center;gap:.625rem;flex:1;min-width:0}.suite-badges.svelte-10529e9{display:flex;gap:.25rem;flex-shrink:0}.suite-name.svelte-10529e9{font-size:.9rem;font-weight:400;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suite-count.svelte-10529e9{font-size:.75rem;color:var(--text-muted);flex-shrink:0}.run-btn.svelte-10529e9{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-body);font-size:.75rem;font-weight:400;padding:.3rem .75rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-muted);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-btn.svelte-10529e9:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.tests.svelte-10529e9{display:flex;flex-direction:column}.test-row.svelte-10529e9{border-bottom:1px solid var(--border);animation:fadeUp .3s var(--ease-out) both}.test-row.svelte-10529e9:last-child{border-bottom:none}.test-main.svelte-10529e9{display:flex;align-items:center;gap:.625rem;padding:.75rem 1.25rem}.run-icon-btn.svelte-10529e9{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}.run-icon-btn.svelte-10529e9:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.test-ids.svelte-10529e9{display:flex;gap:.25rem;flex-shrink:0}.id-pill.svelte-10529e9{position:relative;font-size:.68rem;font-weight:500;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border:none;border-radius:100px;padding:.15rem .55rem;cursor:pointer;font-family:JetBrains Mono,monospace;transition:background var(--duration-fast),color var(--duration-fast),filter var(--duration-fast)}.id-pill.svelte-10529e9:hover{filter:brightness(.92)}.id-pill.copied.svelte-10529e9{color:var(--pass);background:var(--pass-soft)}.id-pill.copied.svelte-10529e9:after{content:"Copied";position:absolute;left:50%;bottom:calc(100% + 6px);z-index:50;transform:translate(-50%);padding:.16rem .42rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--pass);box-shadow:0 4px 14px #00000014;font-family:var(--font-body);font-size:.65rem;font-weight:500;letter-spacing:0;pointer-events:none;animation:svelte-10529e9-copiedPop 1.4s var(--ease-out) both}.test-name.svelte-10529e9{flex:1;font-size:.875rem;color:var(--text);min-width:0}.outline-badge.svelte-10529e9{display:inline-block;font-size:.62rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--warn-soft);color:var(--warn);padding:.1rem .4rem;border-radius:100px;margin-left:.4rem;vertical-align:middle}.steps-toggle.svelte-10529e9{display:inline-flex;align-items:center;gap:.2rem;font-family:var(--font-body);font-size:.72rem;font-weight:400;color:var(--text-muted);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem .5rem;cursor:pointer;flex-shrink:0;transition:background var(--duration-fast),color var(--duration-fast)}.steps-toggle.svelte-10529e9:hover{background:var(--bg-subtle);color:var(--text)}.steps-toggle.svelte-10529e9 svg:where(.svelte-10529e9){transition:transform var(--duration-fast) var(--ease-out)}.steps-toggle.svelte-10529e9 svg.rotated:where(.svelte-10529e9){transform:rotate(90deg)}.steps.svelte-10529e9{padding:.75rem 1.25rem .875rem 3.75rem;background:var(--bg-subtle);border-top:1px solid var(--border)}.step-list.svelte-10529e9{list-style:none;display:flex;flex-direction:column;gap:.3rem}.step.svelte-10529e9{font-size:.8125rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;line-height:1.5;padding-left:1rem;position:relative}.step.svelte-10529e9:before{content:"›";position:absolute;left:0;color:var(--accent);font-family:var(--font-body)}.examples.svelte-10529e9{margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.examples-label.svelte-10529e9{display:block;font-size:.68rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.examples-table-wrap.svelte-10529e9{overflow-x:auto}.examples-table.svelte-10529e9{border-collapse:collapse;font-size:.78rem;font-family:JetBrains Mono,monospace;width:auto}.examples-table.svelte-10529e9 th:where(.svelte-10529e9){text-align:left;padding:.3rem .75rem;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);font-family:var(--font-body);font-weight:500}.examples-table.svelte-10529e9 td:where(.svelte-10529e9){padding:.3rem .75rem;color:var(--text-muted);border-bottom:1px solid var(--border)}.examples-table.svelte-10529e9 tbody:where(.svelte-10529e9) tr:where(.svelte-10529e9):last-child td:where(.svelte-10529e9){border-bottom:none}.empty.svelte-10529e9{color:var(--text-muted);font-size:.9375rem;padding:3rem 0;text-align:center}@keyframes svelte-10529e9-copiedPop{0%{opacity:0;transform:translate(-50%,4px) scale(.96)}12%,78%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-2px) scale(.98)}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.pagination.svelte-tsubiy{display:flex;align-items:center;justify-content:center;gap:.25rem}button.svelte-tsubiy{min-width:2rem;height:2rem;padding:0 .25rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-muted);font-family:var(--font-body);font-size:.8125rem;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast),border-color var(--duration-fast)}button.svelte-tsubiy:disabled{opacity:.3;cursor:not-allowed}button.active.svelte-tsubiy{background:var(--accent);color:#fff;border-color:var(--accent)}button.svelte-tsubiy:hover:not(:disabled):not(.active){background:var(--bg-subtle);color:var(--text)}.page-header.svelte-wxbf05{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-top.svelte-wxbf05{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}h1.svelte-wxbf05{font-size:2.5rem;margin-bottom:.25rem}.subtitle.svelte-wxbf05{color:var(--text-muted);font-size:.875rem}.rate-display.svelte-wxbf05{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem}.rate-number.svelte-wxbf05{font-family:var(--font-display);font-size:2.75rem;line-height:1;font-weight:400}.rate-number.pass.svelte-wxbf05{color:var(--pass)}.rate-number.warn.svelte-wxbf05{color:var(--warn)}.rate-number.fail.svelte-wxbf05{color:var(--fail)}.rate-label.svelte-wxbf05{font-size:.75rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.stats-bar.svelte-wxbf05{margin-bottom:1rem}.pass-bar-track.svelte-wxbf05{height:3px;background:var(--fail-soft);border-radius:100px;overflow:hidden;margin-bottom:.5rem}.pass-bar-fill.svelte-wxbf05{height:100%;background:var(--pass);border-radius:100px;transition:width .9s var(--ease-out) .1s}.bar-legend.svelte-wxbf05{display:flex;gap:1rem}.legend-pass.svelte-wxbf05{font-size:.75rem;color:var(--pass);font-weight:500}.legend-fail.svelte-wxbf05{font-size:.75rem;color:var(--fail);font-weight:500}.trend-row.svelte-wxbf05{display:flex;align-items:center;gap:.75rem}.trend-label.svelte-wxbf05{font-size:.7rem;font-weight:500;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);flex-shrink:0}.trend-dots.svelte-wxbf05{display:flex;align-items:center;gap:5px}.trend-dot.svelte-wxbf05{width:9px;height:9px;border-radius:50%;transition:transform var(--duration-fast);animation:fadeUp .3s var(--ease-out) both}.trend-dot.svelte-wxbf05:hover{transform:scale(1.4)}.trend-dot.pass.svelte-wxbf05{background:var(--pass)}.trend-dot.fail.svelte-wxbf05{background:var(--fail)}.trend-hint.svelte-wxbf05{font-size:.68rem;color:var(--text-muted);opacity:.6}.report-list.svelte-wxbf05{display:flex;flex-direction:column;gap:.5rem}.report-item.svelte-wxbf05{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);animation:fadeUp .32s var(--ease-out) both}.report-item.svelte-wxbf05:hover{background:var(--bg-subtle);transform:translate(2px);box-shadow:0 2px 12px #0000000a}.report-item.is-pass.svelte-wxbf05{border-left-color:var(--pass)}.report-item.is-fail.svelte-wxbf05{border-left-color:var(--fail)}.item-left.svelte-wxbf05{display:flex;align-items:center;gap:.875rem;min-width:0}.status-mark.svelte-wxbf05{font-size:.875rem;font-weight:600;flex-shrink:0;width:20px;text-align:center}.status-mark.pass.svelte-wxbf05{color:var(--pass)}.status-mark.fail.svelte-wxbf05{color:var(--fail)}.item-meta.svelte-wxbf05{display:flex;align-items:center;gap:.625rem;min-width:0}.item-tags.svelte-wxbf05{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--text);white-space:nowrap}.item-badges.svelte-wxbf05{flex-shrink:0}.item-right.svelte-wxbf05{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.item-date.svelte-wxbf05{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.item-arrow.svelte-wxbf05{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast)}.report-item.svelte-wxbf05:hover .item-arrow:where(.svelte-wxbf05){transform:translate(3px);color:var(--text)}.pagination-wrap.svelte-wxbf05{margin-top:1.25rem}.empty.svelte-wxbf05{color:var(--text-muted);font-size:.9375rem;padding:3rem 0;text-align:center}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.back-row.svelte-pys2u{margin-bottom:1.5rem}.back-link.svelte-pys2u{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-pys2u:hover{color:var(--text)}.report-header.svelte-pys2u{border-radius:var(--radius-lg);border:1px solid var(--border);border-left-width:4px;padding:1.5rem;margin-bottom:2rem;background:var(--bg-elevated);animation:fadeUp .35s var(--ease-out) both}.report-header.pass.svelte-pys2u{border-left-color:var(--pass)}.report-header.fail.svelte-pys2u{border-left-color:var(--fail)}.header-main.svelte-pys2u{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.header-status.svelte-pys2u{display:flex;align-items:center;gap:1rem}.status-icon.svelte-pys2u{font-size:2rem;line-height:1;font-weight:600}.report-header.pass.svelte-pys2u .status-icon:where(.svelte-pys2u){color:var(--pass)}.report-header.fail.svelte-pys2u .status-icon:where(.svelte-pys2u){color:var(--fail)}h1.svelte-pys2u{font-size:2rem;margin-bottom:.2rem}.header-meta.svelte-pys2u{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;gap:.5rem}.mono.svelte-pys2u{font-family:JetBrains Mono,monospace;font-size:.78rem}.header-stats.svelte-pys2u{display:flex;gap:1.5rem;align-items:flex-start;flex-shrink:0}.stat.svelte-pys2u{display:flex;flex-direction:column;align-items:center;gap:.1rem}.stat-num.svelte-pys2u{font-family:var(--font-display);font-size:1.75rem;line-height:1;font-weight:400;color:var(--text)}.stat-label.svelte-pys2u{font-size:.68rem;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.pass-color.svelte-pys2u{color:var(--pass)}.fail-color.svelte-pys2u{color:var(--fail)}.muted-color.svelte-pys2u{color:var(--text-muted)}.feature.svelte-pys2u{margin-bottom:1.5rem;animation:fadeUp .35s var(--ease-out) both}.feature-header.svelte-pys2u{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.feature-name.svelte-pys2u{font-size:1.1rem;font-family:var(--font-display);font-weight:400}.feature-file.svelte-pys2u{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--text-muted);margin-left:auto}.scenarios.svelte-pys2u{display:flex;flex-direction:column;gap:.375rem}.scenario.svelte-pys2u{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-elevated);overflow:hidden;animation:fadeUp .3s var(--ease-out) both}.scenario-header.svelte-pys2u{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;width:100%;background:transparent;border:none;cursor:pointer;text-align:left;font-family:var(--font-body);transition:background var(--duration-fast)}.scenario-header.svelte-pys2u:hover{background:var(--bg-subtle)}.scenario-status-dot.svelte-pys2u{width:8px;height:8px;border-radius:50%;flex-shrink:0}.scenario-status-dot.pass.svelte-pys2u{background:var(--pass)}.scenario-status-dot.fail.svelte-pys2u{background:var(--fail)}.scenario-status-dot.skip.svelte-pys2u{background:var(--text-muted)}.scenario-name.svelte-pys2u{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-pys2u{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:100px;padding:.05rem .4rem;white-space:nowrap}.scenario-tags.svelte-pys2u{display:flex;gap:.25rem;flex-shrink:0}.tag-chip.svelte-pys2u{font-size:.65rem;font-family:JetBrains Mono,monospace;background:var(--accent-soft);color:var(--accent);padding:.1rem .4rem;border-radius:100px}.scenario-duration.svelte-pys2u{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.chevron.svelte-pys2u{color:var(--text-muted);flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.chevron.rotated.svelte-pys2u{transform:rotate(90deg)}.steps.svelte-pys2u{border-top:1px solid var(--border);background:var(--bg-subtle);padding:.5rem 0}.example-header.svelte-pys2u{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-pys2u:not(:first-child){margin-top:.375rem;border-top:1px dashed var(--border)}.example-header.svelte-pys2u .scenario-duration:where(.svelte-pys2u){margin-left:auto}.step.svelte-pys2u{padding:.375rem 1rem .375rem 1.25rem}.step-fail.svelte-pys2u{background:color-mix(in srgb,var(--fail-soft) 40%,transparent)}.step-skip.svelte-pys2u{opacity:.5}.step-row.svelte-pys2u{display:flex;align-items:baseline;gap:.5rem}.step-status-icon.svelte-pys2u{font-size:.75rem;font-weight:600;width:14px;flex-shrink:0;color:var(--text-muted)}.step-fail.svelte-pys2u .step-status-icon:where(.svelte-pys2u){color:var(--fail)}.step.svelte-pys2u:not(.step-fail):not(.step-skip) .step-status-icon:where(.svelte-pys2u){color:var(--pass)}.kw.svelte-pys2u{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-pys2u{background:var(--accent-soft);color:var(--accent)}.kw-when.svelte-pys2u{background:var(--warn-soft);color:var(--warn)}.kw-then.svelte-pys2u{background:var(--pass-soft);color:var(--pass)}.kw-and.svelte-pys2u{background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.step-name.svelte-pys2u{flex:1;font-size:.8125rem;color:var(--text);font-family:JetBrains Mono,monospace}.step-duration.svelte-pys2u{font-size:.7rem;color:var(--text-muted);font-family:JetBrains Mono,monospace;flex-shrink:0}.step-error.svelte-pys2u{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-pys2u{margin:.5rem 0 .25rem 1.75rem}.screenshot-toggle.svelte-pys2u{font-size:.75rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.screenshot.svelte-pys2u{margin-top:.5rem;max-width:100%;border-radius:var(--radius-sm);border:1px solid var(--border)}.loading-state.svelte-pys2u{display:flex;justify-content:center;padding:4rem 0}.loading-dots.svelte-pys2u{display:flex;gap:6px;align-items:center}.loading-dots.svelte-pys2u span:where(.svelte-pys2u){width:8px;height:8px;border-radius:50%;background:var(--accent);animation:svelte-pys2u-dotBeat 1.2s ease-in-out infinite}.loading-dots.svelte-pys2u span:where(.svelte-pys2u):nth-child(2){animation-delay:.2s}.loading-dots.svelte-pys2u span:where(.svelte-pys2u):nth-child(3){animation-delay:.4s}@keyframes svelte-pys2u-dotBeat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}.error-state.svelte-pys2u{padding:3rem 0;color:var(--fail);text-align:center;font-size:.9375rem}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.backdrop.svelte-aus6t7{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:50;padding:1rem;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.panel.svelte-aus6t7{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.75rem;width:100%;max-width:480px;box-shadow:0 4px 6px #0000000a,0 24px 64px #00000024}.header.svelte-aus6t7{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.title.svelte-aus6t7{font-family:var(--font-display);font-size:1.2rem;font-weight:400;color:var(--text)}.close-btn.svelte-aus6t7{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.close-btn.svelte-aus6t7:hover{background:var(--bg-subtle);color:var(--text)}.body.svelte-aus6t7{display:flex;flex-direction:column;gap:1rem}.page-header.svelte-1ugkbyh{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.header-row.svelte-1ugkbyh{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.page-header.svelte-1ugkbyh h1:where(.svelte-1ugkbyh){font-size:2.5rem;margin-bottom:.375rem}.subtitle.svelte-1ugkbyh{color:var(--text-muted);font-size:.9375rem}.job-row.svelte-1ugkbyh{animation:fadeUp .32s var(--ease-out) both}.toast.svelte-1ugkbyh{margin-bottom:1.25rem;border-radius:var(--radius-md)}.table-wrap.svelte-1ugkbyh{overflow-x:auto}.job-name.svelte-1ugkbyh{font-weight:400;font-size:.875rem}.tag-text.svelte-1ugkbyh{font-family:JetBrains Mono,monospace;font-size:.78rem;color:var(--text-muted)}.actions-cell.svelte-1ugkbyh{display:flex;gap:.375rem}.empty.svelte-1ugkbyh{padding:3rem 1.5rem;color:var(--text-muted);font-size:.9375rem;text-align:center}.modal-form.svelte-1ugkbyh{display:flex;flex-direction:column;gap:1rem}.form-error.svelte-1ugkbyh{font-size:.8125rem;color:var(--fail)}.confirm-text.svelte-1ugkbyh{font-size:.9375rem;color:var(--text-muted);line-height:1.6}.confirm-text.svelte-1ugkbyh strong:where(.svelte-1ugkbyh){color:var(--text);font-weight:500}.confirm-actions.svelte-1ugkbyh{display:flex;gap:.625rem;padding-top:.25rem}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This file is part of Plum.
|
|
3
|
+
|
|
4
|
+
Plum is free software: you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the GNU General Public License as published by
|
|
6
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
(at your option) any later version.
|
|
8
|
+
|
|
9
|
+
Plum is distributed in the hope that it will be useful,
|
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
GNU General Public License for more details.
|
|
13
|
+
|
|
14
|
+
You should have received a copy of the GNU General Public License
|
|
15
|
+
along with Plum. If not, see https://www.gnu.org/licenses/.
|
|
16
|
+
*/
|
|
17
|
+
.badge.svelte-imjoo5{display:inline-flex;align-items:center;font-size:.68rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;padding:.2rem .6rem;border-radius:100px;white-space:nowrap}.pass.svelte-imjoo5{background:var(--pass-soft);color:var(--pass)}.fail.svelte-imjoo5{background:var(--fail-soft);color:var(--fail)}.tag.svelte-imjoo5{background:var(--accent-soft);color:var(--accent)}.schedule.svelte-imjoo5{background:var(--warn-soft);color:var(--warn)}.neutral.svelte-imjoo5{background:var(--bg-subtle);color:var(--text-muted);border:1px solid var(--border)}
|