Skip to content

ci: skip secret-backed CI deploys for fork PRs#13291

Open
huang47 wants to merge 5 commits into
mainfrom
codex/skip-website-e2e-report-deploy-forks
Open

ci: skip secret-backed CI deploys for fork PRs#13291
huang47 wants to merge 5 commits into
mainfrom
codex/skip-website-e2e-report-deploy-forks

Conversation

@huang47

@huang47 huang47 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Skip secret-backed CI deploy and dispatch work for fork PRs so missing repo secrets do not fail otherwise valid checks.

Changes

  • What: Guard Website E2E report deploy, Vercel website preview deploy, cloud build dispatch, cloud cleanup dispatch, and Storybook Chromatic deploy so PR paths only run for same-repo PRs.
  • Dependencies: None

Why

Fork pull_request runs do not receive repository secrets. Several CI jobs already separated normal validation from privileged follow-up work, but some deploy or dispatch steps could still run on fork PRs and fail only because their secret-backed integration token was empty.

The existing Website E2E fork guard only protected the PR comment job. It did not protect the earlier Cloudflare report deploy step inside website-e2e, which uses CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID.

The same failure mode existed in these CI jobs:

  • ci-vercel-website-preview.yaml: preview deploy uses Vercel and website API secrets.
  • cloud-dispatch-build.yaml: preview dispatch uses CLOUD_DISPATCH_TOKEN to call Comfy-Org/cloud.
  • cloud-dispatch-cleanup.yaml: preview cleanup dispatch uses CLOUD_DISPATCH_TOKEN.
  • ci-tests-storybook.yaml: Chromatic deploy uses CHROMATIC_PROJECT_TOKEN.

ci-website-build.yaml was left unchanged. Its Ashby and Cloud nodes integrations intentionally fall back to committed snapshots when secrets are missing for preview/local builds, so it is not the same class of fork-secret failure.

Review Focus

Confirm fork PRs still run the unprivileged validation/build paths, while same-repo PRs and non-PR events keep the existing deploy or dispatch behavior.

Validation PRs

Both validation PRs compare against main.

  • Fork PR from shihchi: #13309
  • Same-repo PR from origin: #13310
Workflow Guarded job or step Fork #13309 Same-repo #13310
CI: Website E2E Upload test report success ✅ success ✅
CI: Website E2E Deploy report to Cloudflare skipped ❌ success ✅
CI: Vercel Website Preview deploy-preview skipped ❌ success ✅
Cloud Frontend Build Dispatch dispatch skipped ❌ success ✅
CI: Tests Storybook chromatic-deployment skipped ❌ success ✅

Expected result: fork PRs still keep the useful validation artifact path, but skip secret-backed deploy and dispatch work. Same-repo PRs keep the privileged behavior.

Screenshots (if applicable)

N/A, CI-only.

Created by Codex


Note

Low Risk
Workflow if condition changes only; no application code. Same-repo PR behavior is unchanged when secrets are available.

Overview
Adds github.event.pull_request.head.repo.fork == false guards so fork PRs no longer run steps that need repo secrets or trigger external deploys.

Website E2E — the Cloudflare Playwright report deploy step now runs only on non-PR events or same-repo PRs, so fork runs can still pass tests and upload artifacts without failing on missing CLOUDFLARE_* secrets.

Vercel website preview — the preview deploy job is skipped entirely for fork PRs (Vercel tokens).

Storybook Chromatic — Chromatic deployment on version-bump-* PRs is limited to non-fork PRs (CHROMATIC_PROJECT_TOKEN).

Cloud dispatch — build and cleanup dispatches to the cloud repo for preview labels no longer run for fork PRs, aligning with the existing fork-guard comment in those workflows.

Reviewed by Cursor Bugbot for commit 027aabc. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1693 passed, 0 failed

📊 Browser Reports
  • chromium: View Report (✅ 1672 / ❌ 0 / ⚠️ 0 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 18 / ❌ 0 / ⚠️ 0 / ⏭️ 0)

📦 Bundle: 7.76 MB gzip 🟢 -42 B

Details

Summary

  • Raw size: 32.8 MB baseline 32.8 MB — ⚪ 0 B
  • Gzip: 7.76 MB baseline 7.76 MB — 🟢 -42 B
  • Brotli: 5.34 MB baseline 5.34 MB — 🟢 -10 B
  • Bundles: 298 current • 298 baseline • 133 added / 133 removed

Category Glance
Vendor & Third-Party ⚪ 0 B (15.3 MB) · Other ⚪ 0 B (11.7 MB) · Utilities & Hooks ⚪ 0 B (3.36 MB) · Graph Workspace ⚪ 0 B (1.25 MB) · Panels & Settings ⚪ 0 B (546 kB) · Data & Services ⚪ 0 B (269 kB) · + 5 more

App Entry Points — 47.3 kB (baseline 47.3 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-D9qdvFTU.js (removed) 47.3 kB 🟢 -47.3 kB 🟢 -13.9 kB 🟢 -12 kB
assets/index-DheD5FzA.js (new) 47.3 kB 🔴 +47.3 kB 🔴 +13.9 kB 🔴 +12 kB

Status: 1 added / 1 removed

Graph Workspace — 1.25 MB (baseline 1.25 MB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-C0GI5Kbd.js (new) 1.25 MB 🔴 +1.25 MB 🔴 +268 kB 🔴 +202 kB
assets/GraphView-C4ZL8ttO.js (removed) 1.25 MB 🟢 -1.25 MB 🟢 -268 kB 🟢 -202 kB

Status: 1 added / 1 removed

Views & Navigation — 97.7 kB (baseline 97.7 kB) • ⚪ 0 B

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-Bq8wHoXl.js (new) 19.4 kB 🔴 +19.4 kB 🔴 +5.03 kB 🔴 +4.46 kB
assets/CloudSurveyView-EGqZ2XMH.js (removed) 19.4 kB 🟢 -19.4 kB 🟢 -5.03 kB 🟢 -4.47 kB
assets/CloudLoginView-B9c70Hvj.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.07 kB 🟢 -2.69 kB
assets/CloudLoginView-DNKpgFwQ.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.07 kB 🔴 +2.68 kB
assets/CloudSignupView-By5yxiLZ.js (new) 9.79 kB 🔴 +9.79 kB 🔴 +2.74 kB 🔴 +2.41 kB
assets/CloudSignupView-CpFkXgvJ.js (removed) 9.79 kB 🟢 -9.79 kB 🟢 -2.74 kB 🟢 -2.41 kB
assets/CloudLayoutView-D33QABb6.js (removed) 9.36 kB 🟢 -9.36 kB 🟢 -2.34 kB 🟢 -2.03 kB
assets/CloudLayoutView-xFylo0ax.js (new) 9.36 kB 🔴 +9.36 kB 🔴 +2.34 kB 🔴 +2.02 kB
assets/UserCheckView-BFllEH76.js (new) 8.8 kB 🔴 +8.8 kB 🔴 +2.22 kB 🔴 +1.93 kB
assets/UserCheckView-CQBAi4k4.js (removed) 8.8 kB 🟢 -8.8 kB 🟢 -2.22 kB 🟢 -1.93 kB
assets/CloudSubscriptionRedirectView-CP1R_4DA.js (removed) 6.63 kB 🟢 -6.63 kB 🟢 -2.46 kB 🟢 -2.16 kB
assets/CloudSubscriptionRedirectView-DDgDwqP3.js (new) 6.63 kB 🔴 +6.63 kB 🔴 +2.46 kB 🔴 +2.16 kB
assets/UserSelectView-CmEP58H6.js (new) 6 kB 🔴 +6 kB 🔴 +2.15 kB 🔴 +1.89 kB
assets/UserSelectView-DC-ehT3d.js (removed) 6 kB 🟢 -6 kB 🟢 -2.15 kB 🟢 -1.88 kB
assets/CloudForgotPasswordView-Cgw1b7Z0.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +1.76 kB 🔴 +1.53 kB
assets/CloudForgotPasswordView-D5XTQdxi.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -1.76 kB 🟢 -1.53 kB
assets/CloudAuthTimeoutView-hq5tlsJU.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.58 kB 🟢 -1.37 kB
assets/CloudAuthTimeoutView-oOyPpZRN.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.58 kB 🔴 +1.37 kB

Status: 9 added / 9 removed / 3 unchanged

Panels & Settings — 546 kB (baseline 546 kB) • ⚪ 0 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel--cvFGaCx.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.97 kB 🔴 +8.83 kB
assets/KeybindingPanel-BveCiJGC.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.96 kB 🟢 -8.82 kB
assets/SecretsPanel-Bc8K-pGP.js (removed) 24.2 kB 🟢 -24.2 kB 🟢 -5.77 kB 🟢 -5.06 kB
assets/SecretsPanel-CR3IHXZv.js (new) 24.2 kB 🔴 +24.2 kB 🔴 +5.77 kB 🔴 +5.07 kB
assets/CreditsPanel-BQtr4Lq_.js (removed) 15.6 kB 🟢 -15.6 kB 🟢 -4.61 kB 🟢 -4.04 kB
assets/CreditsPanel-Y2tnLQNw.js (new) 15.6 kB 🔴 +15.6 kB 🔴 +4.61 kB 🔴 +4.04 kB
assets/AboutPanel-B-TwQiM_.js (removed) 12 kB 🟢 -12 kB 🟢 -3.29 kB 🟢 -2.94 kB
assets/AboutPanel-DIdcswEu.js (new) 12 kB 🔴 +12 kB 🔴 +3.29 kB 🔴 +2.94 kB
assets/SubscriptionPanel-B-pqG9c7.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.51 kB 🟢 -3.09 kB
assets/SubscriptionPanel-napiwtiT.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.51 kB 🔴 +3.09 kB
assets/ExtensionPanel-cesTw6zP.js (new) 9.03 kB 🔴 +9.03 kB 🔴 +2.49 kB 🔴 +2.19 kB
assets/ExtensionPanel-Dp0GwSew.js (removed) 9.03 kB 🟢 -9.03 kB 🟢 -2.49 kB 🟢 -2.2 kB
assets/ServerConfigPanel-3x2JrziT.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -1.98 kB 🟢 -1.75 kB
assets/ServerConfigPanel-CoI8WX2l.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +1.97 kB 🔴 +1.76 kB
assets/UserPanel-DftTzyZr.js (removed) 5.78 kB 🟢 -5.78 kB 🟢 -1.82 kB 🟢 -1.57 kB
assets/UserPanel-DHdmSx5d.js (new) 5.78 kB 🔴 +5.78 kB 🔴 +1.82 kB 🔴 +1.57 kB
assets/refreshRemoteConfig-BdJvXsI-.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.06 kB 🟢 -942 B
assets/refreshRemoteConfig-CazbKZqm.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.06 kB 🔴 +944 B
assets/cloudRemoteConfig-C11gqoRZ.js (removed) 990 B 🟢 -990 B 🟢 -542 B 🟢 -470 B
assets/cloudRemoteConfig-IjB9pRIZ.js (new) 990 B 🔴 +990 B 🔴 +543 B 🔴 +472 B
assets/refreshRemoteConfig-CPeSdPqq.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -84 B
assets/refreshRemoteConfig-DIyo871U.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +85 B

Status: 11 added / 11 removed / 16 unchanged

User & Accounts — 26.9 kB (baseline 26.9 kB) • ⚪ 0 B

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SignUpForm-DsoSefCc.js (removed) 10 kB 🟢 -10 kB 🟢 -3.46 kB 🟢 -3.03 kB
assets/SignUpForm-WlEAzv0y.js (new) 10 kB 🔴 +10 kB 🔴 +3.46 kB 🔴 +3.03 kB
assets/auth-BF6OT5lN.js (removed) 3.69 kB 🟢 -3.69 kB 🟢 -1.3 kB 🟢 -1.14 kB
assets/auth-BRxgtETD.js (new) 3.69 kB 🔴 +3.69 kB 🔴 +1.3 kB 🔴 +1.13 kB
assets/usePostAuthRedirect-DFj43gxR.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.27 kB 🔴 +1.1 kB
assets/usePostAuthRedirect-l-AHrF3s.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.27 kB 🟢 -1.11 kB
assets/UpdatePasswordContent-B49Xd-0a.js (removed) 1.92 kB 🟢 -1.92 kB 🟢 -876 B 🟢 -765 B
assets/UpdatePasswordContent-DN6WSwpb.js (new) 1.92 kB 🔴 +1.92 kB 🔴 +875 B 🔴 +767 B
assets/authStore-CpxSRgrv.js (removed) 130 B 🟢 -130 B 🟢 -112 B 🟢 -106 B
assets/authStore-D5lw4zih.js (new) 130 B 🔴 +130 B 🔴 +112 B 🔴 +114 B
assets/workspaceAuthStore-DvRsefh6.js (removed) 110 B 🟢 -110 B 🟢 -104 B 🟢 -109 B
assets/workspaceAuthStore-w1-IsUeN.js (new) 110 B 🔴 +110 B 🔴 +104 B 🔴 +114 B
assets/auth-BTYFfnrb.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -89 B
assets/auth-DxyZ7Y5R.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +96 B

Status: 7 added / 7 removed / 3 unchanged

Editors & Dialogs — 117 kB (baseline 117 kB) • ⚪ 0 B

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-CFTimQUZ.js (removed) 90.5 kB 🟢 -90.5 kB 🟢 -19.3 kB 🟢 -16.5 kB
assets/ComfyHubPublishDialog-DjTkO629.js (new) 90.5 kB 🔴 +90.5 kB 🔴 +19.3 kB 🔴 +16.5 kB
assets/useShareDialog-BeYl9nZN.js (removed) 23.7 kB 🟢 -23.7 kB 🟢 -5.58 kB 🟢 -4.96 kB
assets/useShareDialog-mPwqOuHm.js (new) 23.7 kB 🔴 +23.7 kB 🔴 +5.58 kB 🔴 +4.96 kB
assets/ComfyHubPublishDialog-CGtaejLH.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +91 B
assets/ComfyHubPublishDialog-irxEU5Db.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -92 B
assets/useSubscriptionDialog-B4GwBFFa.js (removed) 110 B 🟢 -110 B 🟢 -102 B 🟢 -89 B
assets/useSubscriptionDialog-mbvZ9pHF.js (new) 110 B 🔴 +110 B 🔴 +102 B 🔴 +99 B

Status: 4 added / 4 removed / 1 unchanged

UI Components — 57.2 kB (baseline 57.2 kB) • ⚪ 0 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-D0ewX8hj.js (removed) 13.6 kB 🟢 -13.6 kB 🟢 -3.82 kB 🟢 -3.41 kB
assets/ComfyQueueButton-lyoqzIaE.js (new) 13.6 kB 🔴 +13.6 kB 🔴 +3.82 kB 🔴 +3.41 kB
assets/useTerminalTabs-B3yIDD06.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -3.83 kB 🟢 -3.38 kB
assets/useTerminalTabs-Q8Lo9Jow.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +3.83 kB 🔴 +3.38 kB
assets/SubscribeButton-3mhpGm0m.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +1.04 kB 🔴 +905 B
assets/SubscribeButton-Bpk9-el9.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -1.04 kB 🟢 -907 B
assets/cloudFeedbackTopbarButton-DiGlCPQM.js (new) 829 B 🔴 +829 B 🔴 +499 B 🔴 +425 B
assets/cloudFeedbackTopbarButton-DZa8PE-2.js (removed) 829 B 🟢 -829 B 🟢 -497 B 🟢 -445 B
assets/ComfyQueueButton-_h_WXNgJ.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +92 B
assets/ComfyQueueButton-DfLOHq_B.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -90 B

Status: 5 added / 5 removed / 8 unchanged

Data & Services — 269 kB (baseline 269 kB) • ⚪ 0 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/load3dService-BRJJKMxO.js (removed) 126 kB 🟢 -126 kB 🟢 -27.8 kB 🟢 -23.5 kB
assets/load3dService-CArJG-v6.js (new) 126 kB 🔴 +126 kB 🔴 +27.8 kB 🔴 +23.5 kB
assets/api-7C86t0-f.js (removed) 91.9 kB 🟢 -91.9 kB 🟢 -25.3 kB 🟢 -21.6 kB
assets/api-CtLJvGmE.js (new) 91.9 kB 🔴 +91.9 kB 🔴 +25.3 kB 🔴 +21.7 kB
assets/workflowShareService-BlARJuAv.js (new) 17 kB 🔴 +17 kB 🔴 +5.01 kB 🔴 +4.43 kB
assets/workflowShareService-BScdBcAX.js (removed) 17 kB 🟢 -17 kB 🟢 -5.01 kB 🟢 -4.44 kB
assets/releaseStore-A_uGA3tm.js (removed) 8.29 kB 🟢 -8.29 kB 🟢 -2.33 kB 🟢 -2.04 kB
assets/releaseStore-eNwnXgLq.js (new) 8.29 kB 🔴 +8.29 kB 🔴 +2.33 kB 🔴 +2.04 kB
assets/keybindingService-CIrlGmSc.js (removed) 7.12 kB 🟢 -7.12 kB 🟢 -1.77 kB 🟢 -1.53 kB
assets/keybindingService-DnNQ3zNc.js (new) 7.12 kB 🔴 +7.12 kB 🔴 +1.77 kB 🔴 +1.52 kB
assets/extensionStore-7J79Bwtx.js (removed) 5.29 kB 🟢 -5.29 kB 🟢 -1.86 kB 🟢 -1.57 kB
assets/extensionStore-CQyiqIeV.js (new) 5.29 kB 🔴 +5.29 kB 🔴 +1.86 kB 🔴 +1.57 kB
assets/userStore-DFDQx45z.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +932 B 🔴 +815 B
assets/userStore-ZhAJXOn1.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -933 B 🟢 -823 B
assets/audioService-BBol61Ki.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +860 B 🔴 +751 B
assets/audioService-Bom6Ktb0.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -859 B 🟢 -747 B
assets/dialogService-B9bA4qJc.js (new) 100 B 🔴 +100 B 🔴 +99 B 🔴 +96 B
assets/dialogService-J0JABEdY.js (removed) 100 B 🟢 -100 B 🟢 -99 B 🟢 -96 B
assets/settingStore-BYei0O7X.js (removed) 98 B 🟢 -98 B 🟢 -98 B 🟢 -95 B
assets/settingStore-DYNnpLRj.js (new) 98 B 🔴 +98 B 🔴 +98 B 🔴 +102 B
assets/assetsStore-BCW69cni.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +100 B
assets/assetsStore-CZlCC69A.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -85 B
assets/releaseStore-BDc9tIch.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -83 B
assets/releaseStore-CeKB7jQW.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +90 B
assets/api-62VZszez.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -66 B
assets/api-Bj5a3O-B.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B

Status: 13 added / 13 removed / 3 unchanged

Utilities & Hooks — 3.36 MB (baseline 3.36 MB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/promotionUtils-D0R4BUT9.js (removed) 3.01 MB 🟢 -3.01 MB 🟢 -695 kB 🟢 -524 kB
assets/promotionUtils-X6Hu-B-_.js (new) 3.01 MB 🔴 +3.01 MB 🔴 +695 kB 🔴 +524 kB
assets/useConflictDetection-Che7p0c6.js (removed) 234 kB 🟢 -234 kB 🟢 -52.3 kB 🟢 -42.6 kB
assets/useConflictDetection-Ck29KNqC.js (new) 234 kB 🔴 +234 kB 🔴 +52.3 kB 🔴 +42.6 kB
assets/useLoad3d-C_vo_Y9D.js (removed) 25.5 kB 🟢 -25.5 kB 🟢 -5.76 kB 🟢 -5.09 kB
assets/useLoad3d-DlxryVar.js (new) 25.5 kB 🔴 +25.5 kB 🔴 +5.75 kB 🔴 +5.09 kB
assets/useLoad3dViewer-D4zmaMQf.js (removed) 21.1 kB 🟢 -21.1 kB 🟢 -4.98 kB 🟢 -4.37 kB
assets/useLoad3dViewer-Dib9n0qC.js (new) 21.1 kB 🔴 +21.1 kB 🔴 +4.98 kB 🔴 +4.35 kB
assets/useFeatureFlags-B7oI_NSw.js (removed) 5.55 kB 🟢 -5.55 kB 🟢 -1.7 kB 🟢 -1.46 kB
assets/useFeatureFlags-TIepb-Sz.js (new) 5.55 kB 🔴 +5.55 kB 🔴 +1.7 kB 🔴 +1.45 kB
assets/subscriptionCheckoutUtil-BR8zHsH7.js (removed) 3.52 kB 🟢 -3.52 kB 🟢 -1.45 kB 🟢 -1.25 kB
assets/subscriptionCheckoutUtil-DH6_jjOf.js (new) 3.52 kB 🔴 +3.52 kB 🔴 +1.45 kB 🔴 +1.26 kB
assets/useSessionCookie-CFmJeV2i.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.15 kB 🟢 -980 B
assets/useSessionCookie-Dz9vs8Im.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.15 kB 🔴 +977 B
assets/useDowngradeToPersonal-B1RDbBdP.js (new) 3 kB 🔴 +3 kB 🔴 +1.19 kB 🔴 +1.05 kB
assets/useDowngradeToPersonal-D8naYnYl.js (removed) 3 kB 🟢 -3 kB 🟢 -1.19 kB 🟢 -1.03 kB
assets/assetPreviewUtil-C5j2BSlH.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +1.01 kB 🔴 +877 B
assets/assetPreviewUtil-m68vzVOW.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -1.01 kB 🟢 -879 B
assets/useUpstreamValue--onNMGtE.js (removed) 2.04 kB 🟢 -2.04 kB 🟢 -793 B 🟢 -709 B
assets/useUpstreamValue-DuBD2DmK.js (new) 2.04 kB 🔴 +2.04 kB 🔴 +794 B 🔴 +712 B
assets/useWorkspaceTierLabel-BCWOhk12.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +853 B 🔴 +732 B
assets/useWorkspaceTierLabel-GE3EfPrt.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -852 B 🟢 -728 B
assets/useLoad3d-DQybbCVB.js (new) 311 B 🔴 +311 B 🔴 +162 B 🔴 +147 B
assets/useLoad3d-uIe0gy0d.js (removed) 311 B 🟢 -311 B 🟢 -164 B 🟢 -150 B
assets/useSessionCookie-B7rK3Azt.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -83 B
assets/useSessionCookie-DsEzrqLQ.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +77 B
assets/useFeatureFlags-BUc7-h8K.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -90 B
assets/useFeatureFlags-C7TBa7xO.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +86 B
assets/useLoad3dViewer-CMVuUybY.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +82 B
assets/useLoad3dViewer-CtSE7bjw.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -92 B
assets/useCurrentUser-CSwf5-CW.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -96 B
assets/useCurrentUser-hRNtpy2j.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +89 B

Status: 16 added / 16 removed / 16 unchanged

Vendor & Third-Party — 15.3 MB (baseline 15.3 MB) • ⚪ 0 B

External libraries and shared vendor chunks

Status: 16 unchanged

Other — 11.7 MB (baseline 11.7 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-CbNspxmY.js (new) 119 kB 🔴 +119 kB 🔴 +30.7 kB 🔴 +25.9 kB
assets/core-sBpQdziC.js (removed) 119 kB 🟢 -119 kB 🟢 -30.7 kB 🟢 -25.9 kB
assets/WidgetSelect-4FHseE44.js (removed) 83.9 kB 🟢 -83.9 kB 🟢 -18.3 kB 🟢 -15.9 kB
assets/WidgetSelect-fuCl9hbS.js (new) 83.9 kB 🔴 +83.9 kB 🔴 +18.3 kB 🔴 +15.9 kB
assets/Load3DControls-D_nXZfus.js (removed) 46.8 kB 🟢 -46.8 kB 🟢 -7.56 kB 🟢 -6.61 kB
assets/Load3DControls-HoPGc_Se.js (new) 46.8 kB 🔴 +46.8 kB 🔴 +7.56 kB 🔴 +6.61 kB
assets/SubscriptionTransitionPreviewWorkspace-CO_XRiL9.js (new) 45.7 kB 🔴 +45.7 kB 🔴 +9.48 kB 🔴 +8.39 kB
assets/SubscriptionTransitionPreviewWorkspace-sgAU5rO_.js (removed) 45.7 kB 🟢 -45.7 kB 🟢 -9.48 kB 🟢 -8.37 kB
assets/SubscriptionRequiredDialogContentUnified-Co_41c6E.js (removed) 41.2 kB 🟢 -41.2 kB 🟢 -9.15 kB 🟢 -7.97 kB
assets/SubscriptionRequiredDialogContentUnified-CttWp3cJ.js (new) 41.2 kB 🔴 +41.2 kB 🔴 +9.15 kB 🔴 +7.96 kB
assets/WorkspacePanelContent-D__aqUHu.js (removed) 34.5 kB 🟢 -34.5 kB 🟢 -7.48 kB 🟢 -6.59 kB
assets/WorkspacePanelContent-KZQik_1Z.js (new) 34.5 kB 🔴 +34.5 kB 🔴 +7.48 kB 🔴 +6.59 kB
assets/WidgetPainter-BTi6q_QM.js (removed) 32.7 kB 🟢 -32.7 kB 🟢 -7.9 kB 🟢 -7 kB
assets/WidgetPainter-C-frQzR2.js (new) 32.7 kB 🔴 +32.7 kB 🔴 +7.9 kB 🔴 +7 kB
assets/Load3dViewerContent-DtLBXquZ.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -6.3 kB 🟢 -5.46 kB
assets/Load3dViewerContent-S4UkUfVU.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +6.3 kB 🔴 +5.46 kB
assets/WidgetBoundingBoxes-CPvGkH5n.js (removed) 28.6 kB 🟢 -28.6 kB 🟢 -7.9 kB 🟢 -7 kB
assets/WidgetBoundingBoxes-DGR3cl6x.js (new) 28.6 kB 🔴 +28.6 kB 🔴 +7.9 kB 🔴 +7.01 kB
assets/SubscriptionRequiredDialogContent-BYkR3RrY.js (new) 26.8 kB 🔴 +26.8 kB 🔴 +6.63 kB 🔴 +5.84 kB
assets/SubscriptionRequiredDialogContent-MOPY8BDJ.js (removed) 26.8 kB 🟢 -26.8 kB 🟢 -6.63 kB 🟢 -5.85 kB
assets/SubscriptionPanelContentWorkspace-CBoyr1dV.js (removed) 24.8 kB 🟢 -24.8 kB 🟢 -5.77 kB 🟢 -5.06 kB
assets/SubscriptionPanelContentWorkspace-CCFEM0m7.js (new) 24.8 kB 🔴 +24.8 kB 🔴 +5.77 kB 🔴 +5.07 kB
assets/SubscriptionRequiredDialogContentWorkspace-4iR85IFq.js (removed) 24.6 kB 🟢 -24.6 kB 🟢 -5.65 kB 🟢 -4.98 kB
assets/SubscriptionRequiredDialogContentWorkspace-Cg4P93d1.js (new) 24.6 kB 🔴 +24.6 kB 🔴 +5.65 kB 🔴 +4.97 kB
assets/WidgetImageCrop-D7klFgto.js (removed) 23.3 kB 🟢 -23.3 kB 🟢 -5.75 kB 🟢 -5.04 kB
assets/WidgetImageCrop-U6LgGOrt.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +5.75 kB 🔴 +5.04 kB
assets/load3d-BwQ9fKKe.js (removed) 21.3 kB 🟢 -21.3 kB 🟢 -5.19 kB 🟢 -4.5 kB
assets/load3d-sg95qLEj.js (new) 21.3 kB 🔴 +21.3 kB 🔴 +5.19 kB 🔴 +4.5 kB
assets/CurrentUserPopoverWorkspace-23tsnIdh.js (new) 20.5 kB 🔴 +20.5 kB 🔴 +4.7 kB 🔴 +4.19 kB
assets/CurrentUserPopoverWorkspace-Cb7qutBz.js (removed) 20.5 kB 🟢 -20.5 kB 🟢 -4.7 kB 🟢 -4.19 kB
assets/SignInContent-D_uHnTrh.js (removed) 20.1 kB 🟢 -20.1 kB 🟢 -5.06 kB 🟢 -4.43 kB
assets/SignInContent-DnRBgpx6.js (new) 20.1 kB 🔴 +20.1 kB 🔴 +5.07 kB 🔴 +4.42 kB
assets/Load3D-DrBrwLlb.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.51 kB 🔴 +3.93 kB
assets/Load3D-DuMf6HGd.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.52 kB 🟢 -3.93 kB
assets/WidgetInputNumber-2OjUZNyW.js (removed) 19 kB 🟢 -19 kB 🟢 -4.79 kB 🟢 -4.25 kB
assets/WidgetInputNumber-BwTzj-r1.js (new) 19 kB 🔴 +19 kB 🔴 +4.79 kB 🔴 +4.25 kB
assets/CreditsTile-BktXOqb-.js (new) 17 kB 🔴 +17 kB 🔴 +4.52 kB 🔴 +3.98 kB
assets/CreditsTile-EIO4wK0K.js (removed) 17 kB 🟢 -17 kB 🟢 -4.52 kB 🟢 -3.98 kB
assets/WidgetRecordAudio-CtvUZVQh.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.63 kB 🟢 -4.14 kB
assets/WidgetRecordAudio-DB4S5Y5g.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.63 kB 🔴 +4.13 kB
assets/WidgetRange-BDxILl89.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.17 kB 🔴 +3.73 kB
assets/WidgetRange-iiGX2R0Z.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.17 kB 🟢 -3.73 kB
assets/WaveAudioPlayer-D6Gm4lk4.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.48 kB 🟢 -3.07 kB
assets/WaveAudioPlayer-sRa6IQUr.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.48 kB 🔴 +3.05 kB
assets/WidgetCurve-BmaQseVR.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.5 kB 🟢 -3.17 kB
assets/WidgetCurve-Ch1XrveL.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.5 kB 🔴 +3.16 kB
assets/TeamWorkspacesDialogContent-DUPzG0oe.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +3 kB 🔴 +2.66 kB
assets/TeamWorkspacesDialogContent-pWlbtsMX.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -3 kB 🟢 -2.66 kB
assets/Load3DConfiguration-BtlhlSOU.js (removed) 9.02 kB 🟢 -9.02 kB 🟢 -2.66 kB 🟢 -2.35 kB
assets/Load3DConfiguration-fXqgOR76.js (new) 9.02 kB 🔴 +9.02 kB 🔴 +2.66 kB 🔴 +2.35 kB
assets/nodeTemplates-BFVZj3_p.js (new) 8.33 kB 🔴 +8.33 kB 🔴 +2.88 kB 🔴 +2.54 kB
assets/nodeTemplates-HQ9HQDg_.js (removed) 8.33 kB 🟢 -8.33 kB 🟢 -2.88 kB 🟢 -2.54 kB
assets/onboardingCloudRoutes-DuK2uT7G.js (new) 8.28 kB 🔴 +8.28 kB 🔴 +2.59 kB 🔴 +2.23 kB
assets/onboardingCloudRoutes-HBWlJXaz.js (removed) 8.28 kB 🟢 -8.28 kB 🟢 -2.59 kB 🟢 -2.23 kB
assets/NightlySurveyController-BboHquCo.js (new) 7.95 kB 🔴 +7.95 kB 🔴 +2.7 kB 🔴 +2.39 kB
assets/NightlySurveyController-CX9qu2k9.js (removed) 7.95 kB 🟢 -7.95 kB 🟢 -2.7 kB 🟢 -2.39 kB
assets/InviteMemberDialogContent-BGmg3l3A.js (removed) 6.76 kB 🟢 -6.76 kB 🟢 -2.22 kB 🟢 -1.95 kB
assets/InviteMemberDialogContent-DViolbG1.js (new) 6.76 kB 🔴 +6.76 kB 🔴 +2.22 kB 🔴 +1.95 kB
assets/WidgetWithControl-DLq2W-8O.js (new) 6.3 kB 🔴 +6.3 kB 🔴 +2.54 kB 🔴 +2.25 kB
assets/WidgetWithControl-Do0YxyIK.js (removed) 6.3 kB 🟢 -6.3 kB 🟢 -2.54 kB 🟢 -2.23 kB
assets/tierBenefits-B1bB0I8C.js (new) 5.94 kB 🔴 +5.94 kB 🔴 +1.91 kB 🔴 +1.65 kB
assets/tierBenefits-CERqVb0p.js (removed) 5.94 kB 🟢 -5.94 kB 🟢 -1.91 kB 🟢 -1.65 kB
assets/load3dPreviewExtensions-B2VctY58.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.75 kB 🟢 -1.54 kB
assets/load3dPreviewExtensions-C9TMUBwi.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.75 kB 🔴 +1.54 kB
assets/FreeTierDialogContent-B0PRlrUf.js (removed) 5.23 kB 🟢 -5.23 kB 🟢 -1.77 kB 🟢 -1.56 kB
assets/FreeTierDialogContent-DgX_I7CM.js (new) 5.23 kB 🔴 +5.23 kB 🔴 +1.77 kB 🔴 +1.55 kB
assets/CreateWorkspaceDialogContent-BNM9tMr3.js (new) 5.19 kB 🔴 +5.19 kB 🔴 +1.83 kB 🔴 +1.58 kB
assets/CreateWorkspaceDialogContent-K96UIUK8.js (removed) 5.19 kB 🟢 -5.19 kB 🟢 -1.83 kB 🟢 -1.58 kB
assets/missingModelDownload-9HWpf11H.js (removed) 5.07 kB 🟢 -5.07 kB 🟢 -1.98 kB 🟢 -1.72 kB
assets/missingModelDownload-C96f1-MK.js (new) 5.07 kB 🔴 +5.07 kB 🔴 +1.98 kB 🔴 +1.72 kB
assets/ChangeMemberRoleDialogContent-C0IiR_jf.js (new) 5.04 kB 🔴 +5.04 kB 🔴 +1.67 kB 🔴 +1.45 kB
assets/ChangeMemberRoleDialogContent-Czu7hgMn.js (removed) 5.04 kB 🟢 -5.04 kB 🟢 -1.67 kB 🟢 -1.45 kB
assets/EditWorkspaceDialogContent-D30Utr-v.js (new) 5 kB 🔴 +5 kB 🔴 +1.79 kB 🔴 +1.56 kB
assets/EditWorkspaceDialogContent-DHUpOh0O.js (removed) 5 kB 🟢 -5 kB 🟢 -1.79 kB 🟢 -1.56 kB
assets/WidgetTextarea-BeM1f3mQ.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.9 kB 🔴 +1.66 kB
assets/WidgetTextarea-BV-UW76c.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.9 kB 🟢 -1.66 kB
assets/saveMesh-B86ZCS9G.js (new) 4.81 kB 🔴 +4.81 kB 🔴 +1.55 kB 🔴 +1.37 kB
assets/saveMesh-Cb8r7LHC.js (removed) 4.81 kB 🟢 -4.81 kB 🟢 -1.56 kB 🟢 -1.37 kB
assets/Preview3d-BjahLVe-.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.43 kB 🟢 -1.25 kB
assets/Preview3d-DmA-ZZ8J.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.43 kB 🔴 +1.23 kB
assets/ValueControlPopover-C-v4R3PY.js (new) 4.55 kB 🔴 +4.55 kB 🔴 +1.59 kB 🔴 +1.42 kB
assets/ValueControlPopover-C1aQS727.js (removed) 4.55 kB 🟢 -4.55 kB 🟢 -1.59 kB 🟢 -1.42 kB
assets/CancelSubscriptionDialogContent-CnA7TNHg.js (new) 4.54 kB 🔴 +4.54 kB 🔴 +1.65 kB 🔴 +1.44 kB
assets/CancelSubscriptionDialogContent-FFbqx53j.js (removed) 4.54 kB 🟢 -4.54 kB 🟢 -1.66 kB 🟢 -1.44 kB
assets/DeleteWorkspaceDialogContent-DLJkd5sA.js (new) 3.91 kB 🔴 +3.91 kB 🔴 +1.47 kB 🔴 +1.27 kB
assets/DeleteWorkspaceDialogContent-Y1J9IR14.js (removed) 3.91 kB 🟢 -3.91 kB 🟢 -1.47 kB 🟢 -1.27 kB
assets/LeaveWorkspaceDialogContent-BLCw1Lre.js (new) 3.73 kB 🔴 +3.73 kB 🔴 +1.42 kB 🔴 +1.22 kB
assets/LeaveWorkspaceDialogContent-DufohUlO.js (removed) 3.73 kB 🟢 -3.73 kB 🟢 -1.42 kB 🟢 -1.22 kB
assets/RemoveMemberDialogContent-BRTW465d.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.37 kB 🔴 +1.18 kB
assets/RemoveMemberDialogContent-DLySJsUp.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.37 kB 🟢 -1.19 kB
assets/RevokeInviteDialogContent-B7EVorGT.js (removed) 3.63 kB 🟢 -3.63 kB 🟢 -1.38 kB 🟢 -1.21 kB
assets/RevokeInviteDialogContent-Dkknu-9f.js (new) 3.63 kB 🔴 +3.63 kB 🔴 +1.38 kB 🔴 +1.21 kB
assets/InviteMemberUpsellDialogContent-70I66guv.js (removed) 3.47 kB 🟢 -3.47 kB 🟢 -1.25 kB 🟢 -1.09 kB
assets/InviteMemberUpsellDialogContent-DPTK3W8C.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.25 kB 🔴 +1.1 kB
assets/Media3DTop-CAZkwFsA.js (removed) 3.26 kB 🟢 -3.26 kB 🟢 -1.3 kB 🟢 -1.14 kB
assets/Media3DTop-CZq-Xssd.js (new) 3.26 kB 🔴 +3.26 kB 🔴 +1.3 kB 🔴 +1.13 kB
assets/GlobalToast-_pDg7dWU.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/GlobalToast-C-YJQPIt.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.26 kB 🟢 -1.08 kB
assets/load3dAdvanced-6H-HAfVv.js (new) 2.87 kB 🔴 +2.87 kB 🔴 +1.13 kB 🔴 +980 B
assets/load3dAdvanced-BLR6Fbf5.js (removed) 2.87 kB 🟢 -2.87 kB 🟢 -1.13 kB 🟢 -981 B
assets/SubscribeToRun-CRt6O3Bg.js (new) 2.53 kB 🔴 +2.53 kB 🔴 +1.1 kB 🔴 +971 B
assets/SubscribeToRun-Dsu3MdrS.js (removed) 2.53 kB 🟢 -2.53 kB 🟢 -1.1 kB 🟢 -984 B
assets/graphHasMissingNodes-42evPk_0.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +907 B 🔴 +808 B
assets/graphHasMissingNodes-pxYZje1W.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -909 B 🟢 -805 B
assets/MediaAudioTop-B_mx7dvI.js (removed) 1.67 kB 🟢 -1.67 kB 🟢 -837 B 🟢 -699 B
assets/MediaAudioTop-R3Ld6hZk.js (new) 1.67 kB 🔴 +1.67 kB 🔴 +837 B 🔴 +697 B
assets/CloudRunButtonWrapper-72N0Xbnm.js (removed) 1.13 kB 🟢 -1.13 kB 🟢 -549 B 🟢 -481 B
assets/CloudRunButtonWrapper-C9vj5mkp.js (new) 1.13 kB 🔴 +1.13 kB 🔴 +550 B 🔴 +513 B
assets/cloudSessionCookie-BidfbDGp.js (removed) 991 B 🟢 -991 B 🟢 -469 B 🟢 -401 B
assets/cloudSessionCookie-BK_LOMno.js (new) 991 B 🔴 +991 B 🔴 +467 B 🔴 +411 B
assets/cloudBadges-DdZPvePI.js (removed) 973 B 🟢 -973 B 🟢 -552 B 🟢 -499 B
assets/cloudBadges-G0apEWza.js (new) 973 B 🔴 +973 B 🔴 +552 B 🔴 +507 B
assets/Load3DAdvanced-Brh8JGhS.js (removed) 813 B 🟢 -813 B 🟢 -455 B 🟢 -407 B
assets/Load3DAdvanced-DkkZqiuE.js (new) 813 B 🔴 +813 B 🔴 +452 B 🔴 +403 B
assets/nightlyBadges-BN612uH-.js (new) 464 B 🔴 +464 B 🔴 +307 B 🔴 +254 B
assets/nightlyBadges-TIpjre-3.js (removed) 464 B 🟢 -464 B 🟢 -306 B 🟢 -255 B
assets/missingModelDownload-BYM82KsP.js (removed) 228 B 🟢 -228 B 🟢 -149 B 🟢 -129 B
assets/missingModelDownload-smT5PYWT.js (new) 228 B 🔴 +228 B 🔴 +150 B 🔴 +130 B
assets/SubscriptionPanelContentWorkspace-CYFxi78H.js (new) 179 B 🔴 +179 B 🔴 +117 B 🔴 +89 B
assets/SubscriptionPanelContentWorkspace-DJzyBxaz.js (removed) 179 B 🟢 -179 B 🟢 -117 B 🟢 -89 B
assets/Load3dViewerContent-Bg_PSxXq.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +107 B
assets/Load3dViewerContent-D-KyujnT.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -92 B
assets/Load3DAdvanced-DcKVwg9q.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +88 B
assets/Load3DAdvanced-pCLC9mxt.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -89 B
assets/WidgetLegacy-CEhdEq9T.js (new) 119 B 🔴 +119 B 🔴 +108 B 🔴 +99 B
assets/WidgetLegacy-sp2-osCm.js (removed) 119 B 🟢 -119 B 🟢 -108 B 🟢 -93 B
assets/workflowDraftStoreV2-CWLR4mtn.js (new) 113 B 🔴 +113 B 🔴 +105 B 🔴 +109 B
assets/workflowDraftStoreV2-DDR4OboH.js (removed) 113 B 🟢 -113 B 🟢 -105 B 🟢 -117 B
assets/Load3D-BUyxO7u8.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -91 B
assets/Load3D-DwBkxxZj.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +78 B
assets/changeTracker-BSuTDPVz.js (new) 93 B 🔴 +93 B 🔴 +95 B 🔴 +87 B
assets/changeTracker-BtQYdw6T.js (removed) 93 B 🟢 -93 B 🟢 -95 B 🟢 -82 B

Status: 66 added / 66 removed / 99 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.2 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 49.4 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.0 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.7 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 59.3 MB heap
large-graph-pan: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 78.6 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.0 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.2 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.7 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 54.2 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 46.3 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 68ms TBT · 77.2 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.7 MB heap
vue-large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 164.8 MB heap
vue-large-graph-pan: · 59.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 169.9 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.2 MB heap

⚠️ 2 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-zoom-sweep: layout duration 1ms 1ms +25% ⚠️ z=3.7
large-graph-pan: style recalc duration 20ms 19ms -4% ⚠️ z=2.2
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms +0% z=-0.1
canvas-idle: p95 frame time 17ms 17ms +1%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 9ms 7ms -21% z=-4.3
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 9 11 +22% z=-0.3
canvas-idle: task duration 415ms 281ms -32% z=-3.7
canvas-idle: script duration 22ms 15ms -30% z=-4.4
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 53.8 MB 56.2 MB +4%
canvas-idle: DOM nodes 18 -142 -886% z=-128.7
canvas-idle: event listeners 4 -95 -2463% z=-22.4
canvas-mouse-sweep: avg frame time 17ms 17ms +0% z=-0.4
canvas-mouse-sweep: p95 frame time 17ms 17ms +1%
canvas-mouse-sweep: layout duration 4ms 3ms -11% z=-2.2
canvas-mouse-sweep: style recalc duration 39ms 28ms -28% z=-4.7
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 74 73 -1% z=-2.4
canvas-mouse-sweep: task duration 804ms 482ms -40% z=-6.6
canvas-mouse-sweep: script duration 130ms 81ms -38% z=-8.5
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 49.5 MB 49.4 MB -0%
canvas-mouse-sweep: DOM nodes 57 55 -4% z=-2.8
canvas-mouse-sweep: event listeners 4 4 +0% z=-1.1
canvas-zoom-sweep: avg frame time 17ms 17ms -0% z=-0.3
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +25% ⚠️ z=3.7
canvas-zoom-sweep: style recalc duration 18ms 12ms -32% z=-4.4
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 31 -2% z=-1.7
canvas-zoom-sweep: task duration 350ms 196ms -44% z=-5.7
canvas-zoom-sweep: script duration 26ms 13ms -50% z=-4.7
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 58.0 MB 58.0 MB -0%
canvas-zoom-sweep: DOM nodes 77 79 +3% z=-0.3
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
dom-widget-clipping: avg frame time 17ms 17ms -0% z=-0.2
dom-widget-clipping: p95 frame time 17ms 17ms -0%
dom-widget-clipping: layout duration 0ms 0ms +0%
dom-widget-clipping: style recalc duration 8ms 8ms +2% z=-2.5
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 14 +27% z=1.8
dom-widget-clipping: task duration 351ms 217ms -38% z=-9.0
dom-widget-clipping: script duration 60ms 36ms -40% z=-9.8
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 62.8 MB 62.7 MB -0%
dom-widget-clipping: DOM nodes 18 24 +33% z=1.3
dom-widget-clipping: event listeners 0 0 +0% variance too high
large-graph-idle: avg frame time 17ms 17ms +0% z=-0.2
large-graph-idle: p95 frame time 17ms 17ms +0%
large-graph-idle: layout duration 0ms 0ms +0%
large-graph-idle: style recalc duration 11ms 6ms -40% z=-5.6
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 9 11 +22% z=-1.9
large-graph-idle: task duration 592ms 275ms -54% z=-4.9
large-graph-idle: script duration 114ms 42ms -64% z=-5.8
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 59.4 MB 59.3 MB -0%
large-graph-idle: DOM nodes 18 22 +22% z=-3.0
large-graph-idle: event listeners 6 6 +0% z=-3.3
large-graph-pan: avg frame time 17ms 17ms -0% z=-0.2
large-graph-pan: p95 frame time 17ms 17ms -1%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 20ms 19ms -4% ⚠️ z=2.2
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 70 69 -1% z=-0.9
large-graph-pan: task duration 1119ms 676ms -40% z=-9.4
large-graph-pan: script duration 400ms 254ms -37% z=-7.8
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 79.3 MB 78.6 MB -1%
large-graph-pan: DOM nodes 18 20 +11% z=0.6
large-graph-pan: event listeners 6 6 +0% z=1.3
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms +1%
large-graph-zoom: layout duration 8ms 8ms +2%
large-graph-zoom: style recalc duration 21ms 22ms +3%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 66 67 +1%
large-graph-zoom: task duration 1439ms 896ms -38%
large-graph-zoom: script duration 552ms 324ms -41%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 67.0 MB 65.0 MB -3%
large-graph-zoom: DOM nodes 14 18 +29%
large-graph-zoom: event listeners 8 7 -13%
minimap-idle: avg frame time 17ms 17ms +0% z=0.1
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 10ms 8ms -22% z=-2.5
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 9 11 +22% z=2.1
minimap-idle: task duration 584ms 320ms -45% z=-4.4
minimap-idle: script duration 113ms 54ms -52% z=-4.5
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 61.0 MB 61.2 MB +0%
minimap-idle: DOM nodes 18 22 +22% z=2.1
minimap-idle: event listeners 6 6 +0% z=2.2
subgraph-dom-widget-clipping: avg frame time 17ms 17ms -0% z=-0.4
subgraph-dom-widget-clipping: p95 frame time 17ms 17ms +0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms +0%
subgraph-dom-widget-clipping: style recalc duration 11ms 10ms -12% z=-3.1
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 49 +3% z=0.9
subgraph-dom-widget-clipping: task duration 365ms 224ms -39% z=-8.4
subgraph-dom-widget-clipping: script duration 122ms 73ms -40% z=-8.7
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 64.1 MB 63.7 MB -1%
subgraph-dom-widget-clipping: DOM nodes 20 23 +15% z=0.7
subgraph-dom-widget-clipping: event listeners 6 7 +17% z=-1.6
subgraph-idle: avg frame time 17ms 17ms -0% z=0.4
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 10ms 6ms -34% z=-5.3
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 11 12 +5% z=0.9
subgraph-idle: task duration 421ms 207ms -51% z=-5.2
subgraph-idle: script duration 21ms 9ms -56% z=-4.2
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 54.0 MB 54.2 MB +0%
subgraph-idle: DOM nodes 22 23 +5% z=0.8
subgraph-idle: event listeners 4 4 +0% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.1
subgraph-mouse-sweep: p95 frame time 17ms 17ms +0%
subgraph-mouse-sweep: layout duration 5ms 4ms -20% z=-3.2
subgraph-mouse-sweep: style recalc duration 38ms 28ms -28% z=-4.5
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 77 +1% z=-1.6
subgraph-mouse-sweep: task duration 713ms 450ms -37% z=-4.6
subgraph-mouse-sweep: script duration 97ms 70ms -28% z=-4.7
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 46.3 MB 46.3 MB +0%
subgraph-mouse-sweep: DOM nodes 62 65 +5% z=-0.9
subgraph-mouse-sweep: event listeners 4 4 +0% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms -0%
subgraph-transition-enter: p95 frame time 17ms 17ms +0%
subgraph-transition-enter: layout duration 15ms 8ms -44%
subgraph-transition-enter: style recalc duration 29ms 20ms -33%
subgraph-transition-enter: layout count 4 9 +125%
subgraph-transition-enter: style recalc count 17 17 +0%
subgraph-transition-enter: task duration 812ms 438ms -46%
subgraph-transition-enter: script duration 37ms 15ms -59%
subgraph-transition-enter: TBT 168ms 68ms -60%
subgraph-transition-enter: heap used 77.4 MB 77.2 MB -0%
subgraph-transition-enter: DOM nodes 13833 13833 +0%
subgraph-transition-enter: event listeners 2531 2531 +0%
viewport-pan-sweep: avg frame time 17ms 17ms +0%
viewport-pan-sweep: p95 frame time 17ms 17ms -0%
viewport-pan-sweep: layout duration 0ms 0ms +0%
viewport-pan-sweep: style recalc duration 57ms 60ms +4%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 250 +0%
viewport-pan-sweep: task duration 4002ms 2379ms -41%
viewport-pan-sweep: script duration 1319ms 822ms -38%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 65.4 MB 64.7 MB -1%
viewport-pan-sweep: DOM nodes 18 22 +22%
viewport-pan-sweep: event listeners 20 20 +0%
vue-large-graph-idle: avg frame time 17ms 17ms -3%
vue-large-graph-idle: p95 frame time 17ms 17ms -0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 13212ms 8256ms -38%
vue-large-graph-idle: script duration 561ms 292ms -48%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 162.6 MB 164.8 MB +1%
vue-large-graph-idle: DOM nodes -3302 -3316 +0%
vue-large-graph-idle: event listeners -16374 -16373 -0%
vue-large-graph-pan: avg frame time 17ms 17ms -2%
vue-large-graph-pan: p95 frame time 17ms 17ms -0%
vue-large-graph-pan: layout duration 0ms 0ms +0%
vue-large-graph-pan: style recalc duration 19ms 18ms -9%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 73 64 -12%
vue-large-graph-pan: task duration 15149ms 10451ms -31%
vue-large-graph-pan: script duration 861ms 529ms -39%
vue-large-graph-pan: TBT 0ms 0ms +0%
vue-large-graph-pan: heap used 170.8 MB 169.9 MB -1%
vue-large-graph-pan: DOM nodes -3302 -3317 +0%
vue-large-graph-pan: event listeners -16374 -16376 +0%
workflow-execution: avg frame time 17ms 17ms -0% z=0.1
workflow-execution: p95 frame time 17ms 17ms +0%
workflow-execution: layout duration 1ms 1ms -11% z=-2.4
workflow-execution: style recalc duration 23ms 17ms -25% z=-3.1
workflow-execution: layout count 4 5 +25% z=0.1
workflow-execution: style recalc count 18 18 +0% z=0.1
workflow-execution: task duration 117ms 83ms -29% z=-3.7
workflow-execution: script duration 18ms 12ms -33% z=-5.7
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 62.3 MB 62.2 MB -0%
workflow-execution: DOM nodes 157 165 +5% z=0.5
workflow-execution: event listeners 71 70 -1% z=4.2
Historical variance (last 15 runs)
Metric μ σ CV
canvas-idle: avg frame time 17ms 0ms 0.0%
canvas-idle: layout duration 0ms 0ms 0.0%
canvas-idle: style recalc duration 11ms 1ms 8.2%
canvas-idle: layout count 0 0 0.0%
canvas-idle: style recalc count 11 1 5.0%
canvas-idle: task duration 395ms 31ms 7.9%
canvas-idle: script duration 25ms 2ms 8.8%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: DOM nodes 23 1 5.6%
canvas-idle: event listeners 12 5 40.9%
canvas-mouse-sweep: avg frame time 17ms 0ms 0.0%
canvas-mouse-sweep: layout duration 4ms 0ms 5.4%
canvas-mouse-sweep: style recalc duration 43ms 3ms 7.4%
canvas-mouse-sweep: layout count 12 0 0.0%
canvas-mouse-sweep: style recalc count 79 2 3.0%
canvas-mouse-sweep: task duration 865ms 58ms 6.7%
canvas-mouse-sweep: script duration 136ms 6ms 4.8%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: DOM nodes 62 3 4.2%
canvas-mouse-sweep: event listeners 8 4 49.4%
canvas-zoom-sweep: avg frame time 17ms 0ms 0.0%
canvas-zoom-sweep: layout duration 1ms 0ms 7.0%
canvas-zoom-sweep: style recalc duration 19ms 2ms 8.0%
canvas-zoom-sweep: layout count 6 0 0.0%
canvas-zoom-sweep: style recalc count 31 0 1.5%
canvas-zoom-sweep: task duration 327ms 23ms 7.1%
canvas-zoom-sweep: script duration 27ms 3ms 11.1%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: DOM nodes 79 1 1.0%
canvas-zoom-sweep: event listeners 24 5 21.8%
dom-widget-clipping: avg frame time 17ms 0ms 0.0%
dom-widget-clipping: layout duration 0ms 0ms 0.0%
dom-widget-clipping: style recalc duration 10ms 1ms 8.0%
dom-widget-clipping: layout count 0 0 0.0%
dom-widget-clipping: style recalc count 13 0 3.8%
dom-widget-clipping: task duration 365ms 16ms 4.5%
dom-widget-clipping: script duration 68ms 3ms 4.8%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: DOM nodes 22 1 6.4%
dom-widget-clipping: event listeners 8 6 81.2%
large-graph-idle: avg frame time 17ms 0ms 0.0%
large-graph-idle: layout duration 0ms 0ms 0.0%
large-graph-idle: style recalc duration 12ms 1ms 8.6%
large-graph-idle: layout count 0 0 0.0%
large-graph-idle: style recalc count 12 0 2.7%
large-graph-idle: task duration 542ms 54ms 10.0%
large-graph-idle: script duration 102ms 11ms 10.3%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: DOM nodes 25 1 3.7%
large-graph-idle: event listeners 26 6 23.2%
large-graph-pan: avg frame time 17ms 0ms 0.0%
large-graph-pan: layout duration 0ms 0ms 0.0%
large-graph-pan: style recalc duration 17ms 1ms 4.6%
large-graph-pan: layout count 0 0 0.0%
large-graph-pan: style recalc count 70 1 0.9%
large-graph-pan: task duration 1082ms 43ms 4.0%
large-graph-pan: script duration 408ms 20ms 4.8%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: DOM nodes 19 2 8.7%
large-graph-pan: event listeners 5 1 16.8%
minimap-idle: avg frame time 17ms 0ms 0.0%
minimap-idle: layout duration 0ms 0ms 0.0%
minimap-idle: style recalc duration 10ms 1ms 8.6%
minimap-idle: layout count 0 0 0.0%
minimap-idle: style recalc count 10 1 7.1%
minimap-idle: task duration 527ms 47ms 9.0%
minimap-idle: script duration 98ms 10ms 10.1%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: DOM nodes 19 1 7.1%
minimap-idle: event listeners 5 1 14.4%
subgraph-dom-widget-clipping: avg frame time 17ms 0ms 0.0%
subgraph-dom-widget-clipping: layout duration 0ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalc duration 13ms 1ms 7.4%
subgraph-dom-widget-clipping: layout count 0 0 0.0%
subgraph-dom-widget-clipping: style recalc count 48 1 1.2%
subgraph-dom-widget-clipping: task duration 378ms 18ms 4.9%
subgraph-dom-widget-clipping: script duration 128ms 6ms 4.9%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.0%
subgraph-dom-widget-clipping: event listeners 16 6 36.0%
subgraph-idle: avg frame time 17ms 0ms 0.0%
subgraph-idle: layout duration 0ms 0ms 0.0%
subgraph-idle: style recalc duration 10ms 1ms 7.5%
subgraph-idle: layout count 0 0 0.0%
subgraph-idle: style recalc count 11 1 6.0%
subgraph-idle: task duration 370ms 31ms 8.5%
subgraph-idle: script duration 20ms 3ms 13.2%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: DOM nodes 22 1 6.9%
subgraph-idle: event listeners 10 7 64.5%
subgraph-mouse-sweep: avg frame time 17ms 0ms 0.0%
subgraph-mouse-sweep: layout duration 5ms 0ms 6.8%
subgraph-mouse-sweep: style recalc duration 42ms 3ms 7.8%
subgraph-mouse-sweep: layout count 16 0 0.0%
subgraph-mouse-sweep: style recalc count 80 2 2.4%
subgraph-mouse-sweep: task duration 766ms 69ms 9.0%
subgraph-mouse-sweep: script duration 101ms 7ms 6.5%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.3%
subgraph-mouse-sweep: event listeners 8 4 52.6%
workflow-execution: avg frame time 17ms 0ms 0.0%
workflow-execution: layout duration 2ms 0ms 9.4%
workflow-execution: style recalc duration 24ms 2ms 9.1%
workflow-execution: layout count 5 1 11.0%
workflow-execution: style recalc count 18 2 11.5%
workflow-execution: task duration 123ms 11ms 8.8%
workflow-execution: script duration 29ms 3ms 10.2%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: DOM nodes 161 7 4.4%
workflow-execution: event listeners 52 4 8.4%
Trend (last 15 commits on main)
Metric Trend Dir Latest
canvas-idle: avg frame time ▆▃▆▁▆▃▆█▆▆▄▃▃▄▃ ➡️ 17ms
canvas-idle: p95 frame time ➡️ NaNms
canvas-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: style recalc duration ▇▇▆▆▃█▄▃▄▃▇▄▁▆▇ ➡️ 11ms
canvas-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: style recalc count █▃▅▂▅▆▃▁▂▁▂▅▆▅▆ ➡️ 12
canvas-idle: task duration ▃▃▃▆▂▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: script duration ▄▃▅▇▂▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: heap used ➡️ NaN MB
canvas-idle: DOM nodes █▇▆▅▃▇▃▁▂▂▅▆▆▆▇ ➡️ 24
canvas-idle: event listeners ▅█▅▄▁▅▁▁▁▄▅▅▁▅▄ 📉 11
canvas-mouse-sweep: avg frame time ▆█▆▃▁▃▁▆▆▁▃▆▆▃▃ ➡️ 17ms
canvas-mouse-sweep: p95 frame time ➡️ NaNms
canvas-mouse-sweep: layout duration ▁▃▂▄▁▂▁▃▆▂█▇▆▄▃ ➡️ 4ms
canvas-mouse-sweep: style recalc duration ▄▄▂▄▁▂▃▃▅▄█▆▂▄▄ ➡️ 43ms
canvas-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: style recalc count █▅▄▃▂▂▁▄▄▅▆▅▂▇▄ ➡️ 79
canvas-mouse-sweep: task duration █▆▄▂▂▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: script duration ▄▅▄▆▄▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: heap used ➡️ NaN MB
canvas-mouse-sweep: DOM nodes █▅▃▃▁▂▂▃▂▄▆▅▃▅▅ ➡️ 64
canvas-mouse-sweep: event listeners █▁▁▁▁▁▇▁▁▁██▇▁█ 📈 13
canvas-zoom-sweep: avg frame time ▅▅█▄▅▁▁▁▅▁▁▅▄▅▁ ➡️ 17ms
canvas-zoom-sweep: p95 frame time ➡️ NaNms
canvas-zoom-sweep: layout duration ▆▅▅▄▁▁█▅▃▅▇▆▁▂▆ ➡️ 1ms
canvas-zoom-sweep: style recalc duration ▆▅▄▆▅▃█▆▇▅▇▄▁▃▅ ➡️ 20ms
canvas-zoom-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: style recalc count ▁▁▃▄▆▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: task duration ▄▂▁▇▂▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: script duration ▃▃▂▇▂▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: heap used ➡️ NaN MB
canvas-zoom-sweep: DOM nodes ▄▃▁▅█▁▃▆▄▅▅▃▃▄▃ ➡️ 79
canvas-zoom-sweep: event listeners ▁▁▂▅█▂▁▅▁▅▅▄▁▅▁ ➡️ 19
dom-widget-clipping: avg frame time ▂▄▅▅▂▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
dom-widget-clipping: p95 frame time ➡️ NaNms
dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: style recalc duration ▆▆▂▆▄▃██▄▁▆▇▆▃▅ ➡️ 10ms
dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: style recalc count ▇█▅█▅▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: task duration ▃▃▁▅▄▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: script duration ▅▄▄▆▆▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: heap used ➡️ NaN MB
dom-widget-clipping: DOM nodes ▇▇▄▇▅▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: event listeners ▅▅▅▅▁▅██▁▁▁▁█▁▁ 📉 2
large-graph-idle: avg frame time ▅▅▅▅▅▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-idle: p95 frame time ➡️ NaNms
large-graph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: style recalc duration ▅▅▅▆▄▅▃▄▅▅▆█▁▄▆ ➡️ 13ms
large-graph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: style recalc count █▆█▃▃▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: task duration ▂▃▂▆▂▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: script duration ▄▅▄▆▄▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: heap used ➡️ NaN MB
large-graph-idle: DOM nodes ▆█▅▂▅▃▁▂▃▅▅▆▂▆▅ ➡️ 25
large-graph-idle: event listeners ███▇██▄▁▄▇▇█▂█▇ ➡️ 29
large-graph-pan: avg frame time ▆▃▃▆█▃▁█▆▆▆▆█▁▆ ➡️ 17ms
large-graph-pan: p95 frame time ➡️ NaNms
large-graph-pan: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: style recalc duration ▃▂▄▄▁▅▂▂▁▄▄█▃▁▂ ➡️ 17ms
large-graph-pan: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: style recalc count ▆▃█▂▃▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: task duration ▄▃▄▆▄▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: script duration ▅▄▅▆▆▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: heap used ➡️ NaN MB
large-graph-pan: DOM nodes ▅▃▆▂▄▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: event listeners █▆█▁▁▆▁▁▃▆▁▃██▃ ➡️ 5
minimap-idle: avg frame time ▃▆▆▃█▁█▆▆▃▃▆█▆█ ➡️ 17ms
minimap-idle: p95 frame time ➡️ NaNms
minimap-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: style recalc duration ▄█▁█▅▅█▅▅▃▅▁▁▄▆ ➡️ 10ms
minimap-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: style recalc count ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 9
minimap-idle: task duration ▃▄▁▅▁▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: script duration ▄▆▃▇▃▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: heap used ➡️ NaN MB
minimap-idle: DOM nodes ▃▅▂▄█▃▆▁▂▅▂▁▅▆▃ ➡️ 19
minimap-idle: event listeners ▃▃▆▁▁▁▃▁▁▆▁▃█▆▁ ➡️ 4
subgraph-dom-widget-clipping: avg frame time ▅▄▄▄▄▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-dom-widget-clipping: p95 frame time ➡️ NaNms
subgraph-dom-widget-clipping: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: style recalc duration ▂▄▃▅▅▃▂▅▇▃▄█▁▄▆ ➡️ 14ms
subgraph-dom-widget-clipping: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: style recalc count ▇█▆▃▆▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: task duration ▂▃▃▆▅▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: script duration ▃▃▃▄▅▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: heap used ➡️ NaN MB
subgraph-dom-widget-clipping: DOM nodes ▅▇▅▂▅▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: event listeners ▅▅▅▂▅▁▅██▁▁█▅█▅ 📈 16
subgraph-idle: avg frame time ▆▆█▁▆▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-idle: p95 frame time ➡️ NaNms
subgraph-idle: layout duration ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: style recalc duration ▁▇▃▆▂▄▂▃▃▆▆▄▃▇█ ➡️ 12ms
subgraph-idle: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: style recalc count ▃▆▃▃▂▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: task duration ▁▃▁▇▁▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: script duration ▁▃▂▇▁▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: heap used ➡️ NaN MB
subgraph-idle: DOM nodes ▃▅▃▂▁▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: event listeners ▁▅▁▁▁▁▁▁▁▅▄▁███ 📈 21
subgraph-mouse-sweep: avg frame time ▅▄▁▃▃▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
subgraph-mouse-sweep: p95 frame time ➡️ NaNms
subgraph-mouse-sweep: layout duration ▁▄▄▄▃▃▅▅▅▂█▇▂▃▆ ➡️ 5ms
subgraph-mouse-sweep: style recalc duration ▃▂▄▅▂▃▄▅█▃█▆▁▂▅ ➡️ 43ms
subgraph-mouse-sweep: layout count ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: style recalc count ▅▂▅▅▁▄▃▅█▅▆▄▂▄▅ ➡️ 81
subgraph-mouse-sweep: task duration ▃▂▄▅▂▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: script duration ▄▅▄▇▅▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: heap used ➡️ NaN MB
subgraph-mouse-sweep: DOM nodes ▅▁▄▅▁▄▃▃█▅▅▄▂▅▃ ➡️ 66
subgraph-mouse-sweep: event listeners ▇▁▂▇▁▂▂▂█▇▂▂▇▇▂ 📈 5
workflow-execution: avg frame time ▆▆▆▄▆▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
workflow-execution: p95 frame time ➡️ NaNms
workflow-execution: layout duration ▁▆▁▃▂▄▃▂▃▃▅█▄▂▅ ➡️ 2ms
workflow-execution: style recalc duration ▃▇▅▇▁▅▆▇█▁██▂▄▆ ➡️ 25ms
workflow-execution: layout count ▁█▂▃▂▃▃▁▃▃▄▃▂▃▂ ➡️ 5
workflow-execution: style recalc count ▃█▅▇▁▄▅▆▅▅▅▅▄▄▂ ➡️ 15
workflow-execution: task duration ▂▅▄▅▁▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: script duration ▄▃▄▄▃▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: heap used ➡️ NaN MB
workflow-execution: DOM nodes ▂█▃▆▁▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: event listeners ▅███▁▅███▁██▅█▅ ➡️ 49
Raw data
{
  "timestamp": "2026-06-30T02:27:25.130Z",
  "gitSha": "051850ca50de43577e8dac202ff67b1c1bb6fdc1",
  "branch": "codex/skip-website-e2e-report-deploy-forks",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2119.58199999998,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.921000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 349.25600000000003,
      "heapDeltaBytes": -8911552,
      "heapUsedBytes": 60870824,
      "domNodes": -305,
      "jsHeapTotalBytes": 19824640,
      "scriptDurationMs": 20.755999999999997,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2002.3319999999671,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.13,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 212.067,
      "heapDeltaBytes": -1953280,
      "heapUsedBytes": 56889536,
      "domNodes": 22,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 10.241000000000001,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1674.3900000000167,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 27.761,
      "layouts": 12,
      "layoutDurationMs": 3.2330000000000005,
      "taskDurationMs": 470.22200000000004,
      "heapDeltaBytes": -6932924,
      "heapUsedBytes": 51754360,
      "domNodes": 55,
      "jsHeapTotalBytes": 27262976,
      "scriptDurationMs": 77.70400000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1673.69199999996,
      "styleRecalcs": 73,
      "styleRecalcDurationMs": 27.960999999999995,
      "layouts": 12,
      "layoutDurationMs": 3.134,
      "taskDurationMs": 493.75699999999995,
      "heapDeltaBytes": -6965656,
      "heapUsedBytes": 51915240,
      "domNodes": 55,
      "jsHeapTotalBytes": 26738688,
      "scriptDurationMs": 83.314,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1705.7149999999979,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 10.576,
      "layouts": 6,
      "layoutDurationMs": 0.5519999999999999,
      "taskDurationMs": 185.38700000000003,
      "heapDeltaBytes": 1995572,
      "heapUsedBytes": 60697664,
      "domNodes": 78,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 12.310999999999998,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1720.8540000000312,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 14.262,
      "layouts": 6,
      "layoutDurationMs": 1.0679999999999998,
      "taskDurationMs": 206.68000000000004,
      "heapDeltaBytes": 2008120,
      "heapUsedBytes": 60894160,
      "domNodes": 80,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 13.542,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66666666666665,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 357.38500000002205,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 7.768,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 205.542,
      "heapDeltaBytes": 6871776,
      "heapUsedBytes": 65701920,
      "domNodes": 24,
      "jsHeapTotalBytes": 17039360,
      "scriptDurationMs": 33.641000000000005,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 409.7239999999829,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 8.06,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 228.83200000000002,
      "heapDeltaBytes": 7027964,
      "heapUsedBytes": 65688416,
      "domNodes": 24,
      "jsHeapTotalBytes": 18874368,
      "scriptDurationMs": 38.079,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2002.2779999999898,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.594000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 277.816,
      "heapDeltaBytes": -9360332,
      "heapUsedBytes": 61978284,
      "domNodes": 22,
      "jsHeapTotalBytes": 9842688,
      "scriptDurationMs": 42.24999999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 1999.6780000000172,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 6.042000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 272.16799999999995,
      "heapDeltaBytes": -9682404,
      "heapUsedBytes": 62406060,
      "domNodes": 22,
      "jsHeapTotalBytes": 10104832,
      "scriptDurationMs": 41.245999999999995,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2050.2579999999853,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 19.217,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 696.195,
      "heapDeltaBytes": 9697468,
      "heapUsedBytes": 82333948,
      "domNodes": 20,
      "jsHeapTotalBytes": 11591680,
      "scriptDurationMs": 259.05699999999996,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2036.7600000000152,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 18.826000000000004,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 656.4179999999999,
      "heapDeltaBytes": 9664648,
      "heapUsedBytes": 82473012,
      "domNodes": 20,
      "jsHeapTotalBytes": 10543104,
      "scriptDurationMs": 248.911,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3103.5019999999918,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 24.217999999999996,
      "layouts": 60,
      "layoutDurationMs": 8.593,
      "taskDurationMs": 955.939,
      "heapDeltaBytes": -4952324,
      "heapUsedBytes": 69219012,
      "domNodes": 18,
      "jsHeapTotalBytes": 9842688,
      "scriptDurationMs": 338.648,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3004.4640000000413,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 19.142,
      "layouts": 60,
      "layoutDurationMs": 7.904,
      "taskDurationMs": 835.943,
      "heapDeltaBytes": -7053860,
      "heapUsedBytes": 67048012,
      "domNodes": 18,
      "jsHeapTotalBytes": 14299136,
      "scriptDurationMs": 309.349,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "minimap-idle",
      "durationMs": 1989.6589999999605,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.15,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 306.55899999999997,
      "heapDeltaBytes": -9295316,
      "heapUsedBytes": 64037232,
      "domNodes": 22,
      "jsHeapTotalBytes": 8007680,
      "scriptDurationMs": 47.163,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2009.7109999999816,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 7.933000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 332.65899999999993,
      "heapDeltaBytes": -8895700,
      "heapUsedBytes": 64353500,
      "domNodes": 22,
      "jsHeapTotalBytes": 8269824,
      "scriptDurationMs": 60.115,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 359.05300000001716,
      "styleRecalcs": 49,
      "styleRecalcDurationMs": 9.896000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 220.46300000000002,
      "heapDeltaBytes": 7766524,
      "heapUsedBytes": 66742604,
      "domNodes": 24,
      "jsHeapTotalBytes": 19398656,
      "scriptDurationMs": 71.23599999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 392.91299999996454,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 9.655999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 227.08700000000005,
      "heapDeltaBytes": 7854120,
      "heapUsedBytes": 66819292,
      "domNodes": 22,
      "jsHeapTotalBytes": 19660800,
      "scriptDurationMs": 74.60399999999998,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1988.8329999999996,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 5.558999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 201.59199999999998,
      "heapDeltaBytes": -2168456,
      "heapUsedBytes": 56948996,
      "domNodes": 22,
      "jsHeapTotalBytes": 26738688,
      "scriptDurationMs": 8.961,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2003.218000000004,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 6.997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 212.732,
      "heapDeltaBytes": -2172812,
      "heapUsedBytes": 56812792,
      "domNodes": 24,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 9.366000000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1690.1550000000043,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 27.186999999999998,
      "layouts": 16,
      "layoutDurationMs": 3.6510000000000007,
      "taskDurationMs": 448.78100000000006,
      "heapDeltaBytes": -10455480,
      "heapUsedBytes": 48641092,
      "domNodes": 65,
      "jsHeapTotalBytes": 26214400,
      "scriptDurationMs": 69.74900000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1690.9880000000044,
      "styleRecalcs": 77,
      "styleRecalcDurationMs": 28.012999999999995,
      "layouts": 16,
      "layoutDurationMs": 3.6719999999999993,
      "taskDurationMs": 450.64099999999996,
      "heapDeltaBytes": -10486024,
      "heapUsedBytes": 48500616,
      "domNodes": 65,
      "jsHeapTotalBytes": 26476544,
      "scriptDurationMs": 70.729,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 749.0509999999517,
      "styleRecalcs": 17,
      "styleRecalcDurationMs": 19.719,
      "layouts": 9,
      "layoutDurationMs": 8.168,
      "taskDurationMs": 437.585,
      "heapDeltaBytes": 4515248,
      "heapUsedBytes": 80933620,
      "domNodes": 13833,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 15.384999999999996,
      "eventListeners": 2531,
      "totalBlockingTimeMs": 68,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8052.111000000024,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 60.440000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2385.6259999999997,
      "heapDeltaBytes": -4128728,
      "heapUsedBytes": 67937272,
      "domNodes": 22,
      "jsHeapTotalBytes": 17096704,
      "scriptDurationMs": 831.974,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8048.31200000001,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 58.693000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2371.8140000000003,
      "heapDeltaBytes": -3770432,
      "heapUsedBytes": 67742496,
      "domNodes": 22,
      "jsHeapTotalBytes": 17620992,
      "scriptDurationMs": 811.473,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 8105.958000000044,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 8052.046,
      "heapDeltaBytes": -13060344,
      "heapUsedBytes": 172600152,
      "domNodes": -3300,
      "jsHeapTotalBytes": 19922944,
      "scriptDurationMs": 286.88399999999996,
      "eventListeners": -16368,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 8492.743000000019,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 8460.658000000001,
      "heapDeltaBytes": -39541176,
      "heapUsedBytes": 172930224,
      "domNodes": -3331,
      "jsHeapTotalBytes": 24350720,
      "scriptDurationMs": 297.41499999999996,
      "eventListeners": -16378,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 10555.798000000039,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 17.284999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 10521.108,
      "heapDeltaBytes": -16674564,
      "heapUsedBytes": 193363560,
      "domNodes": -3332,
      "jsHeapTotalBytes": 26361856,
      "scriptDurationMs": 543.2869999999999,
      "eventListeners": -16376,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 10398.949000000015,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 18.087999999999994,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 10381.297,
      "heapDeltaBytes": -48188028,
      "heapUsedBytes": 162881648,
      "domNodes": -3302,
      "jsHeapTotalBytes": 25399296,
      "scriptDurationMs": 514.527,
      "eventListeners": -16376,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 417.6540000000273,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 16.644,
      "layouts": 5,
      "layoutDurationMs": 1.1960000000000002,
      "taskDurationMs": 81.996,
      "heapDeltaBytes": 5385000,
      "heapUsedBytes": 65457140,
      "domNodes": 170,
      "jsHeapTotalBytes": 3145728,
      "scriptDurationMs": 11.908000000000001,
      "eventListeners": 71,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "workflow-execution",
      "durationMs": 424.35599999998885,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 18.319000000000003,
      "layouts": 5,
      "layoutDurationMs": 1.192,
      "taskDurationMs": 84.357,
      "heapDeltaBytes": 5143504,
      "heapUsedBytes": 65018776,
      "domNodes": 159,
      "jsHeapTotalBytes": 2883584,
      "scriptDurationMs": 12.297999999999998,
      "eventListeners": 69,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Several CI workflow jobs now add pull_request fork checks so deployments and dispatches only run for non-fork PRs, while existing non-PR behavior remains unchanged.

Changes

CI fork guards

Layer / File(s) Summary
Deployment and preview guards
.github/workflows/ci-website-e2e.yaml, .github/workflows/ci-vercel-website-preview.yaml, .github/workflows/ci-tests-storybook.yaml
Deployment and preview jobs add github.event.pull_request.head.repo.fork == false to their existing job or step conditions.
Dispatch guards
.github/workflows/cloud-dispatch-build.yaml, .github/workflows/cloud-dispatch-cleanup.yaml
Repository dispatch jobs now require non-fork pull requests before triggering preview build or cleanup dispatches.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

A bunny peeks at CI with care,
and checks for forks out in the air.
Non-fork hops may still proceed,
while forked PRs now pause indeed. 🐇

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: skipping secret-backed CI deploys for fork PRs.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
End-To-End Regression Coverage For Fixes ✅ Passed Only CI workflow files changed; the check explicitly exempts CI-only PRs, so no browser_tests regression test is required here.
Adr Compliance For Entity/Litegraph Changes ✅ Passed No files under src/lib/litegraph/, src/ecs/, or graph-entity paths were changed; this PR is CI/workflow-only, so ADR 0003/0008 checks don’t apply.
Description check ✅ Passed The PR description follows the required template and includes summary, changes, review focus, and screenshots notes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/skip-website-e2e-report-deploy-forks

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jun 29, 2026
@codecov

codecov Bot commented Jun 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #13291      +/-   ##
==========================================
- Coverage   77.57%   77.54%   -0.04%     
==========================================
  Files        1632     1632              
  Lines       91375    91411      +36     
  Branches    30895    30269     -626     
==========================================
- Hits        70885    70884       -1     
- Misses      19820    19860      +40     
+ Partials      670      667       -3     
Flag Coverage Δ
unit 65.28% <ø> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 12 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@huang47 huang47 marked this pull request as ready for review June 29, 2026 22:38
@huang47 huang47 requested a review from a team June 29, 2026 22:38
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Jun 29, 2026
@huang47 huang47 changed the title ci: skip website e2e report deploy for fork PRs ci: skip secret-backed CI deploys for fork PRs Jun 30, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 027aabc. Configure here.

Comment thread .github/workflows/ci-vercel-website-preview.yaml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants