Skip to content

Use TypeScript 7 for direct tsc checks#13523

Draft
huang47 wants to merge 6 commits into
mainfrom
agent/upgrade-typescript-7
Draft

Use TypeScript 7 for direct tsc checks#13523
huang47 wants to merge 6 commits into
mainfrom
agent/upgrade-typescript-7

Conversation

@huang47

@huang47 huang47 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a typescript-7 catalog alias for packages that run direct tsc, while keeping typescript on 6.0.3 for API-based tooling like vue-tsc.
  • Wire design-system, shared-frontend-utils, object-info-parser, and tailwind-utils direct tsc checks to TypeScript 7.0.2.
  • Fix stricter type errors in desktop tests, PII util tests, and the TypeGPU/WebGPU boundary.

Direct tsc Performance

Local median wall time over 5 runs per package. Scope is only the four package tsc --noEmit checks; Vue/Astro typechecks still use TS6 API tooling.

Package Before: TS6.0.3 After: TS7.0.2 Gain
@comfyorg/design-system 0.31s 0.12s 2.6x faster, 61% less wall time
@comfyorg/shared-frontend-utils 0.40s 0.12s 3.3x faster, 70% less wall time
@comfyorg/tailwind-utils 0.28s 0.10s 2.8x faster, 64% less wall time
@comfyorg/object-info-parser 0.47s 0.16s 2.9x faster, 66% less wall time
Total of package medians 1.46s 0.50s 2.9x faster, 66% less wall time

Validation

  • pnpm install --frozen-lockfile
  • pnpm lint:unstaged
  • pnpm typecheck
  • pnpm typecheck:browser
  • pnpm typecheck:desktop
  • pnpm typecheck:website - passes with existing Astro/Vite/TS warning output
  • pnpm --filter @comfyorg/desktop-ui run test:unit
  • pnpm --filter @comfyorg/design-system run typecheck
  • pnpm --filter @comfyorg/shared-frontend-utils run typecheck
  • pnpm --filter @comfyorg/tailwind-utils run typecheck
  • pnpm --filter @comfyorg/object-info-parser run typecheck
  • pnpm knip --cache
  • Pre-commit hook: oxfmt, oxlint, eslint, pnpm typecheck
  • Pre-push hook: knip --cache

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

🌐 Website E2E

Tip

All tests passed.

Status ✅ Passed
Report View Report

🔗 Website Preview

Website Preview: https://comfy-website-preview-pr-13523.vercel.app

This commit: https://website-frontend-o5bs4xwe2-comfyui.vercel.app

Last updated: 2026-07-08T23:41:44Z for 1b0d458

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds typescript-7 catalog entries across the workspace and selected packages, updates desktop UI type settings, and adjusts several tests and runtime typings for Electron, terminal buffering, GPU device casting, and shared frontend event shapes.

Changes

TypeScript 7 Dependency Rollout

Layer / File(s) Summary
Workspace catalog and exclusion config
pnpm-workspace.yaml
Bumps typescript catalog version to ^6.0.3, adds typescript-7 alias pointing to typescript@^7.0.2, and adds minimumReleaseAgeExclude entries for 7.0.2 variants.
Add typescript-7 devDependency across packages
packages/design-system/package.json, packages/object-info-parser/package.json, packages/shared-frontend-utils/package.json, packages/tailwind-utils/package.json
Adds typescript-7 (catalog:) alongside the existing typescript devDependency in each package.
Desktop UI tsconfig global types
apps/desktop-ui/tsconfig.json
Adds compilerOptions.types listing vite/client, vitest/globals, @webgpu/types, and @testing-library/jest-dom/vitest.

Type Signature and Casting Cleanups

Layer / File(s) Summary
Typed ElectronWindow interface
apps/desktop-ui/src/utils/envUtil.ts
Adds exported ElectronWindow type and casts window to it in electronAPI() instead of any.
GPU device cast in initTypeGPU
src/composables/maskeditor/useGPUResources.ts
Casts device references to GPUDevice with explanatory comments in both the early-return and post-tgpu.init() paths.
Terminal and terminal buffer typing and copyTo contract
apps/desktop-ui/src/composables/bottomPanelTabs/useTerminal.test.ts, apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.test.ts, apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.ts
Simplifies xterm mocks, updates vi.fn generic signatures, narrows copyTo's parameter to Pick<Terminal, 'write'>, and updates related test call style and assertions.
Desktop dialog and maintenance task test updates
apps/desktop-ui/src/constants/desktopDialogs.test.ts, apps/desktop-ui/src/constants/desktopMaintenanceTasks.test.ts, apps/desktop-ui/src/utils/electronMirrorCheck.test.ts
Reworks deep-clone immutability test using array push/length check, updates mock typings, and converts URL-opening tests to async/await with resolved-value assertions.
piiUtil test event typing
packages/shared-frontend-utils/src/piiUtil.test.ts
Introduces BeforeSendEvent typing from createPostHogBeforeSend and applies it to test event objects.
Storybook theme toolbar option removal
apps/desktop-ui/.storybook/preview.ts
Removes showName: true from the theme toolbar globalTypes configuration.

Estimated code review effort: 2 (Simple) | ~15 minutes

Suggested labels: size:XL

Suggested reviewers: DrJKL, AustinMroz


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
End-To-End Regression Coverage For Fixes ❓ Inconclusive Commit subjects aren’t available in the provided review context, so the bug-fix signal can’t be verified from metadata alone. Provide the PR commit subjects (or confirm none use fix/bugfix/hotfix language) so the end-to-end regression coverage check can be decided.
✅ Passed checks (5 passed)
Check name Status Explanation
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.
Adr Compliance For Entity/Litegraph Changes ✅ Passed No changed files touch src/lib/litegraph/, src/ecs/, or graph-entity paths, so ADR 0003/0008 checks are not applicable.
Title check ✅ Passed The title clearly matches the main change: using TypeScript 7 for direct tsc checks.
Description check ✅ Passed The description is mostly complete, covering summary, dependency split, performance, and validation despite missing some optional template sections.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/upgrade-typescript-7

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.

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 07/08/2026, 11:42:09 PM UTC

Links

🎭 Playwright: ✅ 1692 passed, 0 failed · 2 flaky

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

📦 Bundle: 7.78 MB gzip 🟢 -224 B

Details

Summary

  • Raw size: 32.8 MB baseline 32.8 MB — ⚪ 0 B
  • Gzip: 7.78 MB baseline 7.78 MB — 🟢 -224 B
  • Brotli: 5.35 MB baseline 5.35 MB — 🟢 -210 B
  • Bundles: 300 current • 300 baseline • 207 added / 207 removed

Category Glance
Vendor & Third-Party ⚪ 0 B (15.3 MB) · Other ⚪ 0 B (11.7 MB) · Utilities & Hooks ⚪ 0 B (3.38 MB) · Graph Workspace ⚪ 0 B (1.27 MB) · Panels & Settings ⚪ 0 B (547 kB) · Data & Services ⚪ 0 B (270 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-CjkA3uD8.js (removed) 47.8 kB 🟢 -47.8 kB 🟢 -14 kB 🟢 -12.2 kB
assets/index-CyX03x-A.js (new) 47.8 kB 🔴 +47.8 kB 🔴 +14.1 kB 🔴 +12.2 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-BaislRbT.js (removed) 1.27 MB 🟢 -1.27 MB 🟢 -271 kB 🟢 -203 kB
assets/GraphView-qMw-qjDA.js (new) 1.27 MB 🔴 +1.27 MB 🔴 +271 kB 🔴 +203 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-BglNsygW.js (removed) 19.4 kB 🟢 -19.4 kB 🟢 -5.04 kB 🟢 -4.47 kB
assets/CloudSurveyView-Dx77wG7I.js (new) 19.4 kB 🔴 +19.4 kB 🔴 +5.04 kB 🔴 +4.46 kB
assets/OAuthConsentView-C_q11eNm.js (new) 15 kB 🔴 +15 kB 🔴 +4.09 kB 🔴 +3.57 kB
assets/OAuthConsentView-DnSYzGb6.js (removed) 15 kB 🟢 -15 kB 🟢 -4.1 kB 🟢 -3.56 kB
assets/CloudLoginView-BIGVQ6IG.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.07 kB 🟢 -2.69 kB
assets/CloudLoginView-CnRgrKYs.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.06 kB 🔴 +2.69 kB
assets/CloudSignupView-DwuDZTyR.js (new) 9.79 kB 🔴 +9.79 kB 🔴 +2.74 kB 🔴 +2.4 kB
assets/CloudSignupView-r_rCVGk4.js (removed) 9.79 kB 🟢 -9.79 kB 🟢 -2.74 kB 🟢 -2.4 kB
assets/CloudLayoutView-B2MYuvtX.js (removed) 9.36 kB 🟢 -9.36 kB 🟢 -2.34 kB 🟢 -2.03 kB
assets/CloudLayoutView-RhQFCg7X.js (new) 9.36 kB 🔴 +9.36 kB 🔴 +2.34 kB 🔴 +2.03 kB
assets/UserCheckView-BNY1MV1A.js (new) 8.8 kB 🔴 +8.8 kB 🔴 +2.22 kB 🔴 +1.93 kB
assets/UserCheckView-rcGxMidt.js (removed) 8.8 kB 🟢 -8.8 kB 🟢 -2.22 kB 🟢 -1.93 kB
assets/CloudSubscriptionRedirectView-1_tUc7hU.js (new) 6.98 kB 🔴 +6.98 kB 🔴 +2.58 kB 🔴 +2.27 kB
assets/CloudSubscriptionRedirectView-LfPjX3b5.js (removed) 6.98 kB 🟢 -6.98 kB 🟢 -2.58 kB 🟢 -2.26 kB
assets/UserSelectView-Bi_oWNeO.js (new) 6 kB 🔴 +6 kB 🔴 +2.15 kB 🔴 +1.88 kB
assets/UserSelectView-C5_pOE0H.js (removed) 6 kB 🟢 -6 kB 🟢 -2.15 kB 🟢 -1.89 kB
assets/CloudForgotPasswordView-BXi5iyIK.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -1.76 kB 🟢 -1.54 kB
assets/CloudForgotPasswordView-CrFzDtp_.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +1.75 kB 🔴 +1.53 kB
assets/CloudAuthTimeoutView-BBTZNKkp.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.57 kB 🟢 -1.37 kB
assets/CloudAuthTimeoutView-Cb6TLit0.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.57 kB 🔴 +1.37 kB
assets/CloudSorryContactSupportView-CeBYsRwV.js (new) 1.21 kB 🔴 +1.21 kB 🔴 +603 B 🔴 +529 B
assets/CloudSorryContactSupportView-YEWjXvP4.js (removed) 1.21 kB 🟢 -1.21 kB 🟢 -608 B 🟢 -527 B
assets/layout-BqEAXJgV.js (removed) 447 B 🟢 -447 B 🟢 -285 B 🟢 -229 B
assets/layout-CS1c8esy.js (new) 447 B 🔴 +447 B 🔴 +285 B 🔴 +231 B

Status: 12 added / 12 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-BNJ-E0jC.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.97 kB 🟢 -8.83 kB
assets/KeybindingPanel-CxPVICiR.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.97 kB 🔴 +8.83 kB
assets/SecretsPanel-Cq6DDQyo.js (removed) 25.1 kB 🟢 -25.1 kB 🟢 -5.93 kB 🟢 -5.22 kB
assets/SecretsPanel-vdlMtKwQ.js (new) 25.1 kB 🔴 +25.1 kB 🔴 +5.92 kB 🔴 +5.21 kB
assets/CreditsPanel-CkVwupF0.js (new) 15.9 kB 🔴 +15.9 kB 🔴 +4.66 kB 🔴 +4.08 kB
assets/CreditsPanel-CuWUajZJ.js (removed) 15.9 kB 🟢 -15.9 kB 🟢 -4.66 kB 🟢 -4.09 kB
assets/AboutPanel-BP6ABMGq.js (removed) 12 kB 🟢 -12 kB 🟢 -3.29 kB 🟢 -2.94 kB
assets/AboutPanel-D-r-Okx0.js (new) 12 kB 🔴 +12 kB 🔴 +3.28 kB 🔴 +2.94 kB
assets/SubscriptionPanel-D6G3GCOh.js (new) 11.4 kB 🔴 +11.4 kB 🔴 +3.63 kB 🔴 +3.19 kB
assets/SubscriptionPanel-i4H1G2Je.js (removed) 11.4 kB 🟢 -11.4 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/ExtensionPanel-BBtBdL-6.js (removed) 9.03 kB 🟢 -9.03 kB 🟢 -2.49 kB 🟢 -2.2 kB
assets/ExtensionPanel-Qt-eJKDI.js (new) 9.03 kB 🔴 +9.03 kB 🔴 +2.49 kB 🔴 +2.19 kB
assets/ServerConfigPanel-BuWsTqB-.js (removed) 6.15 kB 🟢 -6.15 kB 🟢 -1.97 kB 🟢 -1.75 kB
assets/ServerConfigPanel-DAa5ij-F.js (new) 6.15 kB 🔴 +6.15 kB 🔴 +1.97 kB 🔴 +1.75 kB
assets/UserPanel-Cv2Mt1B0.js (removed) 5.78 kB 🟢 -5.78 kB 🟢 -1.82 kB 🟢 -1.58 kB
assets/UserPanel-DSSbNnYR.js (new) 5.78 kB 🔴 +5.78 kB 🔴 +1.82 kB 🔴 +1.57 kB
assets/refreshRemoteConfig-Bja2JTE2.js (new) 2.88 kB 🔴 +2.88 kB 🔴 +1.26 kB 🔴 +1.11 kB
assets/refreshRemoteConfig-DM_qEwKI.js (removed) 2.88 kB 🟢 -2.88 kB 🟢 -1.26 kB 🟢 -1.11 kB
assets/remoteConfig-DIYYzHMK.js (new) 1.51 kB 🔴 +1.51 kB 🔴 +721 B 🔴 +600 B
assets/remoteConfig-DjUkM6Dg.js (removed) 1.51 kB 🟢 -1.51 kB 🟢 -725 B 🟢 -599 B
assets/cloudRemoteConfig-BO5kC-if.js (new) 990 B 🔴 +990 B 🔴 +543 B 🔴 +474 B
assets/cloudRemoteConfig-DPm9WsOd.js (removed) 990 B 🟢 -990 B 🟢 -542 B 🟢 -474 B
assets/refreshRemoteConfig-C1FsLdH0.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -84 B
assets/refreshRemoteConfig-CQHY_jHs.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +83 B

Status: 12 added / 12 removed / 15 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SignUpForm-BnhTlDJO.js (new) 12.3 kB 🔴 +12.3 kB 🔴 +4.19 kB 🔴 +3.65 kB
assets/SignUpForm-BX8QhqVF.js (removed) 12.3 kB 🟢 -12.3 kB 🟢 -4.19 kB 🟢 -3.66 kB
assets/PasswordFields-BTAZ3cEe.js (removed) 4.68 kB 🟢 -4.68 kB 🟢 -1.42 kB 🟢 -1.26 kB
assets/PasswordFields-DnR77VEX.js (new) 4.68 kB 🔴 +4.68 kB 🔴 +1.42 kB 🔴 +1.26 kB
assets/auth-B_VB-UtG.js (new) 3.69 kB 🔴 +3.69 kB 🔴 +1.3 kB 🔴 +1.14 kB
assets/auth-CECGTTNL.js (removed) 3.69 kB 🟢 -3.69 kB 🟢 -1.3 kB 🟢 -1.13 kB
assets/usePostAuthRedirect-Bolf4zyK.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.27 kB 🟢 -1.11 kB
assets/usePostAuthRedirect-DM0YIUCd.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.27 kB 🔴 +1.11 kB
assets/UpdatePasswordContent-COOvk1Rr.js (new) 1.92 kB 🔴 +1.92 kB 🔴 +877 B 🔴 +763 B
assets/UpdatePasswordContent-WikZQQDh.js (removed) 1.92 kB 🟢 -1.92 kB 🟢 -877 B 🟢 -766 B
assets/WorkspaceProfilePic-BI1sb2wN.js (new) 1.66 kB 🔴 +1.66 kB 🔴 +859 B 🔴 +779 B
assets/WorkspaceProfilePic-DA3oYgmE.js (removed) 1.66 kB 🟢 -1.66 kB 🟢 -860 B 🟢 -777 B
assets/authStore-BVUdkh9y.js (removed) 130 B 🟢 -130 B 🟢 -109 B 🟢 -110 B
assets/authStore-DTfbpnny.js (new) 130 B 🔴 +130 B 🔴 +109 B 🔴 +123 B
assets/workspaceAuthStore-BESoNjiK.js (removed) 110 B 🟢 -110 B 🟢 -104 B 🟢 -113 B
assets/workspaceAuthStore-K4vUukTA.js (new) 110 B 🔴 +110 B 🔴 +104 B 🔴 +114 B
assets/auth-BGNWJz1-.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +91 B
assets/auth-D5Cngjpa.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -83 B

Status: 9 added / 9 removed / 1 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-BMfLbxIz.js (removed) 90.5 kB 🟢 -90.5 kB 🟢 -19.3 kB 🟢 -16.5 kB
assets/ComfyHubPublishDialog-C95Kv2BW.js (new) 90.5 kB 🔴 +90.5 kB 🔴 +19.3 kB 🔴 +16.5 kB
assets/useShareDialog-4GB3HmFG.js (removed) 23.7 kB 🟢 -23.7 kB 🟢 -5.59 kB 🟢 -4.97 kB
assets/useShareDialog-BICvAV11.js (new) 23.7 kB 🔴 +23.7 kB 🔴 +5.59 kB 🔴 +4.96 kB
assets/SubscriptionInactiveMemberDialog-Cx_1nRJz.js (removed) 2.55 kB 🟢 -2.55 kB 🟢 -1.03 kB 🟢 -883 B
assets/SubscriptionInactiveMemberDialog-DQmOTqg1.js (new) 2.55 kB 🔴 +2.55 kB 🔴 +1.03 kB 🔴 +886 B
assets/ComfyHubPublishDialog-BRC7aUf4.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +89 B
assets/ComfyHubPublishDialog-CnjXmQa4.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -91 B
assets/useSubscriptionDialog-4RM1-GoG.js (new) 110 B 🔴 +110 B 🔴 +102 B 🔴 +88 B
assets/useSubscriptionDialog-CyubXJ__.js (removed) 110 B 🟢 -110 B 🟢 -102 B 🟢 -91 B

Status: 5 added / 5 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-0yolh6dp.js (removed) 13.6 kB 🟢 -13.6 kB 🟢 -3.82 kB 🟢 -3.41 kB
assets/ComfyQueueButton-B7kcSWI_.js (new) 13.6 kB 🔴 +13.6 kB 🔴 +3.82 kB 🔴 +3.41 kB
assets/useTerminalTabs-BaDLfGIS.js (new) 12.1 kB 🔴 +12.1 kB 🔴 +3.83 kB 🔴 +3.39 kB
assets/useTerminalTabs-CImBYG1j.js (removed) 12.1 kB 🟢 -12.1 kB 🟢 -3.83 kB 🟢 -3.39 kB
assets/TopbarBadge-CsJ9b4aw.js (new) 7.7 kB 🔴 +7.7 kB 🔴 +1.86 kB 🔴 +1.64 kB
assets/TopbarBadge-K3OBXOuv.js (removed) 7.7 kB 🟢 -7.7 kB 🟢 -1.87 kB 🟢 -1.65 kB
assets/ScrubableNumberInput-CkqUAlel.js (new) 6.55 kB 🔴 +6.55 kB 🔴 +2.19 kB 🔴 +1.94 kB
assets/ScrubableNumberInput-l6kdE50m.js (removed) 6.55 kB 🟢 -6.55 kB 🟢 -2.19 kB 🟢 -1.94 kB
assets/toggle-group-CanqAtIb.js (removed) 4.16 kB 🟢 -4.16 kB 🟢 -1.45 kB 🟢 -1.28 kB
assets/toggle-group-DaNgyq78.js (new) 4.16 kB 🔴 +4.16 kB 🔴 +1.45 kB 🔴 +1.28 kB
assets/Button-BDFBPNkK.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.41 kB 🟢 -1.23 kB
assets/Button-BnkiTYYu.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.41 kB 🔴 +1.24 kB
assets/SubscribeButton-B18wrTMN.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +1.05 kB 🔴 +913 B
assets/SubscribeButton-CQmWeJzM.js (removed) 2.38 kB 🟢 -2.38 kB 🟢 -1.05 kB 🟢 -924 B
assets/WidgetButton-DXFU3EDB.js (removed) 1.98 kB 🟢 -1.98 kB 🟢 -920 B 🟢 -817 B
assets/WidgetButton-QRz9LZhf.js (new) 1.98 kB 🔴 +1.98 kB 🔴 +921 B 🔴 +807 B
assets/Input-DH6Bhvfp.js (removed) 1.81 kB 🟢 -1.81 kB 🟢 -901 B 🟢 -792 B
assets/Input-DKL6JdZ0.js (new) 1.81 kB 🔴 +1.81 kB 🔴 +901 B 🔴 +811 B
assets/UserAvatar-BOezyDnr.js (new) 1.29 kB 🔴 +1.29 kB 🔴 +670 B 🔴 +574 B
assets/UserAvatar-CTTivE3x.js (removed) 1.29 kB 🟢 -1.29 kB 🟢 -672 B 🟢 -574 B
assets/CloudBadge-CdweN2BG.js (removed) 1.18 kB 🟢 -1.18 kB 🟢 -594 B 🟢 -521 B
assets/CloudBadge-ZUHrxbax.js (new) 1.18 kB 🔴 +1.18 kB 🔴 +592 B 🔴 +519 B
assets/cloudFeedbackTopbarButton-Bbm8KaXn.js (new) 829 B 🔴 +829 B 🔴 +499 B 🔴 +454 B
assets/cloudFeedbackTopbarButton-dXC1zaDr.js (removed) 829 B 🟢 -829 B 🟢 -497 B 🟢 -419 B
assets/ComfyQueueButton-Dfj8yTQ1.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +90 B
assets/ComfyQueueButton-DKUvUhv-.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -90 B

Status: 13 added / 13 removed

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/load3dService-B0QQueEq.js (removed) 126 kB 🟢 -126 kB 🟢 -27.8 kB 🟢 -23.5 kB
assets/load3dService-DaHFXOSR.js (new) 126 kB 🔴 +126 kB 🔴 +27.8 kB 🔴 +23.5 kB
assets/api-CIaB1nQx.js (new) 91.9 kB 🔴 +91.9 kB 🔴 +25.4 kB 🔴 +21.7 kB
assets/api-nn6Owpsv.js (removed) 91.9 kB 🟢 -91.9 kB 🟢 -25.3 kB 🟢 -21.7 kB
assets/workflowShareService-BkvUBqDz.js (new) 17 kB 🔴 +17 kB 🔴 +5.01 kB 🔴 +4.44 kB
assets/workflowShareService-ez-soo_t.js (removed) 17 kB 🟢 -17 kB 🟢 -5.01 kB 🟢 -4.44 kB
assets/releaseStore-BJrzy1ig.js (new) 8.29 kB 🔴 +8.29 kB 🔴 +2.33 kB 🔴 +2.04 kB
assets/releaseStore-CVpIp17z.js (removed) 8.29 kB 🟢 -8.29 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/keybindingService-B510_P0z.js (removed) 7.46 kB 🟢 -7.46 kB 🟢 -1.92 kB 🟢 -1.65 kB
assets/keybindingService-Dm2jQqKL.js (new) 7.46 kB 🔴 +7.46 kB 🔴 +1.92 kB 🔴 +1.65 kB
assets/dialogStore-Bp6Lz0GK.js (new) 5.36 kB 🔴 +5.36 kB 🔴 +1.66 kB 🔴 +1.43 kB
assets/dialogStore-DD1yBh6P.js (removed) 5.36 kB 🟢 -5.36 kB 🟢 -1.66 kB 🟢 -1.44 kB
assets/extensionStore-BhNeYJoh.js (removed) 5.29 kB 🟢 -5.29 kB 🟢 -1.86 kB 🟢 -1.57 kB
assets/extensionStore-CsaV14Br.js (new) 5.29 kB 🔴 +5.29 kB 🔴 +1.86 kB 🔴 +1.57 kB
assets/userStore-B0Tgc4WI.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +930 B 🔴 +818 B
assets/userStore-V_CDXswU.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -931 B 🟢 -820 B
assets/serverConfigStore-CN4Xkrt5.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -811 B 🟢 -707 B
assets/serverConfigStore-DXIxH2hZ.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +810 B 🔴 +705 B
assets/audioService-B7IIN8jv.js (new) 1.76 kB 🔴 +1.76 kB 🔴 +860 B 🔴 +748 B
assets/audioService-XcHy906A.js (removed) 1.76 kB 🟢 -1.76 kB 🟢 -860 B 🟢 -753 B
assets/toastStore-BIphcVgz.js (removed) 889 B 🟢 -889 B 🟢 -433 B 🟢 -375 B
assets/toastStore-MiInvSnp.js (new) 889 B 🔴 +889 B 🔴 +426 B 🔴 +371 B
assets/dialogService-ByTzbUiC.js (removed) 100 B 🟢 -100 B 🟢 -99 B 🟢 -98 B
assets/dialogService-DCcbf3OK.js (new) 100 B 🔴 +100 B 🔴 +99 B 🔴 +98 B
assets/settingStore-BdAhoL_A.js (removed) 98 B 🟢 -98 B 🟢 -98 B 🟢 -92 B
assets/settingStore-CXpIyUIT.js (new) 98 B 🔴 +98 B 🔴 +98 B 🔴 +89 B
assets/assetsStore-B5m_-Uee.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -88 B
assets/assetsStore-C0V8yi5j.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +100 B
assets/releaseStore-CK2rpBZG.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -87 B
assets/releaseStore-EHtjRb08.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +83 B
assets/api-BDjKlP0p.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -66 B
assets/api-DWAz4UyS.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B

Status: 16 added / 16 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/promotionUtils-DE3cw-CP.js (new) 3.02 MB 🔴 +3.02 MB 🔴 +698 kB 🔴 +526 kB
assets/promotionUtils-rCBlWguC.js (removed) 3.02 MB 🟢 -3.02 MB 🟢 -698 kB 🟢 -526 kB
assets/useConflictDetection-Dz6-UGjQ.js (new) 234 kB 🔴 +234 kB 🔴 +52.3 kB 🔴 +42.6 kB
assets/useConflictDetection-om2eBtf_.js (removed) 234 kB 🟢 -234 kB 🟢 -52.3 kB 🟢 -42.6 kB
assets/useLoad3d-DyzlqlJw.js (removed) 25.5 kB 🟢 -25.5 kB 🟢 -5.75 kB 🟢 -5.1 kB
assets/useLoad3d-Zkwx-HEN.js (new) 25.5 kB 🔴 +25.5 kB 🔴 +5.75 kB 🔴 +5.09 kB
assets/useLoad3dViewer-CciCd3XB.js (new) 21.1 kB 🔴 +21.1 kB 🔴 +4.98 kB 🔴 +4.35 kB
assets/useLoad3dViewer-W_cbqQjf.js (removed) 21.1 kB 🟢 -21.1 kB 🟢 -4.97 kB 🟢 -4.37 kB
assets/useImageQuiet-4hVd0qXR.js (new) 10.4 kB 🔴 +10.4 kB 🔴 +3.5 kB 🔴 +3.01 kB
assets/useImageQuiet-Cr1HOQ5t.js (removed) 10.4 kB 🟢 -10.4 kB 🟢 -3.5 kB 🟢 -3 kB
assets/useFeatureFlags-DMk2PZSM.js (new) 6.51 kB 🔴 +6.51 kB 🔴 +2.02 kB 🔴 +1.71 kB
assets/useFeatureFlags-htFhZcSf.js (removed) 6.51 kB 🟢 -6.51 kB 🟢 -2.02 kB 🟢 -1.7 kB
assets/useTypeformEmbed-9tnadXWC.js (removed) 4.92 kB 🟢 -4.92 kB 🟢 -1.95 kB 🟢 -1.64 kB
assets/useTypeformEmbed-d-xPO73f.js (new) 4.92 kB 🔴 +4.92 kB 🔴 +1.95 kB 🔴 +1.64 kB
assets/downloadUtil-Dcp5TwbN.js (removed) 4.68 kB 🟢 -4.68 kB 🟢 -1.85 kB 🟢 -1.54 kB
assets/downloadUtil-DH_DIi4U.js (new) 4.68 kB 🔴 +4.68 kB 🔴 +1.85 kB 🔴 +1.53 kB
assets/subscriptionCheckoutUtil-B9h-tZ4Y.js (new) 3.85 kB 🔴 +3.85 kB 🔴 +1.54 kB 🔴 +1.35 kB
assets/subscriptionCheckoutUtil-DLHTxb7s.js (removed) 3.85 kB 🟢 -3.85 kB 🟢 -1.54 kB 🟢 -1.35 kB
assets/useTransformState-B97cH_dL.js (removed) 3.58 kB 🟢 -3.58 kB 🟢 -1.58 kB 🟢 -1.31 kB
assets/useTransformState-CorvP_f-.js (new) 3.58 kB 🔴 +3.58 kB 🔴 +1.57 kB 🔴 +1.3 kB
assets/useSessionCookie-BGDqLe6S.js (removed) 3.33 kB 🟢 -3.33 kB 🟢 -1.15 kB 🟢 -982 B
assets/useSessionCookie-DYmKhiMC.js (new) 3.33 kB 🔴 +3.33 kB 🔴 +1.15 kB 🔴 +984 B
assets/useExternalLink-C1r4-8cE.js (new) 3.03 kB 🔴 +3.03 kB 🔴 +1.15 kB 🔴 +1.02 kB
assets/useExternalLink-DvxK6BLD.js (removed) 3.03 kB 🟢 -3.03 kB 🟢 -1.16 kB 🟢 -1.02 kB
assets/useDowngradeToPersonal-C1VjxtDC.js (removed) 3 kB 🟢 -3 kB 🟢 -1.18 kB 🟢 -1.05 kB
assets/useDowngradeToPersonal-Qqwd8vMF.js (new) 3 kB 🔴 +3 kB 🔴 +1.18 kB 🔴 +1.05 kB
assets/assetPreviewUtil-CxQSUSUa.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +1.01 kB 🔴 +879 B
assets/assetPreviewUtil-F0QWteOq.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -1 kB 🟢 -871 B
assets/useFeatureUsageTracker-BUBwvE1x.js (new) 2.13 kB 🔴 +2.13 kB 🔴 +941 B 🔴 +795 B
assets/useFeatureUsageTracker-Dmo_jNxY.js (removed) 2.13 kB 🟢 -2.13 kB 🟢 -945 B 🟢 -800 B
assets/useUpstreamValue-Bf4HdE4Z.js (new) 2.04 kB 🔴 +2.04 kB 🔴 +792 B 🔴 +706 B
assets/useUpstreamValue-DedDpCN4.js (removed) 2.04 kB 🟢 -2.04 kB 🟢 -791 B 🟢 -706 B
assets/useWorkspaceTierLabel-BXXTEL_w.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +850 B 🔴 +735 B
assets/useWorkspaceTierLabel-CzCDRsJE.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -852 B 🟢 -732 B
assets/useErrorHandling-Pr8UX4XO.js (removed) 1.54 kB 🟢 -1.54 kB 🟢 -647 B 🟢 -555 B
assets/useErrorHandling-ZNiO2Doz.js (new) 1.54 kB 🔴 +1.54 kB 🔴 +648 B 🔴 +551 B
assets/useModalLiftedZIndex-CHOpgGKh.js (removed) 966 B 🟢 -966 B 🟢 -585 B 🟢 -490 B
assets/useModalLiftedZIndex-DYWt7Sue.js (new) 966 B 🔴 +966 B 🔴 +583 B 🔴 +491 B
assets/useLoad3d-9fKGcEIZ.js (removed) 311 B 🟢 -311 B 🟢 -163 B 🟢 -147 B
assets/useLoad3d-DlsvSlZq.js (new) 311 B 🔴 +311 B 🔴 +164 B 🔴 +148 B
assets/useSessionCookie-BJSHCjmJ.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +78 B
assets/useSessionCookie-Cti1k3bX.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -81 B
assets/useFeatureFlags-BUzcLycj.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +81 B
assets/useFeatureFlags-D99fhWmF.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -81 B
assets/useLoad3dViewer-BD881KFk.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -84 B
assets/useLoad3dViewer-ygF7jjMw.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +83 B
assets/useCurrentUser-BQNRF01H.js (new) 96 B 🔴 +96 B 🔴 +97 B 🔴 +92 B
assets/useCurrentUser-C7Zu9CF8.js (removed) 96 B 🟢 -96 B 🟢 -97 B 🟢 -85 B

Status: 24 added / 24 removed / 10 unchanged

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-CcVI76zn.js (removed) 1.87 MB 🟢 -1.87 MB 🟢 -404 kB 🟢 -326 kB
assets/vendor-other-EE29RuMZ.js (new) 1.87 MB 🔴 +1.87 MB 🔴 +404 kB 🔴 +326 kB
assets/vendor-primevue-BTpeFbH5.js (new) 1.69 MB 🔴 +1.69 MB 🔴 +303 kB 🔴 +185 kB
assets/vendor-primevue-rx7tKw03.js (removed) 1.69 MB 🟢 -1.69 MB 🟢 -303 kB 🟢 -185 kB
assets/vendor-reka-ui-3rzHRTLU.js (removed) 491 kB 🟢 -491 kB 🟢 -89.4 kB 🟢 -68.9 kB
assets/vendor-reka-ui-C7XNkRpC.js (new) 491 kB 🔴 +491 kB 🔴 +89.4 kB 🔴 +68.9 kB
assets/vendor-vue-core-D-r6ioKA.js (new) 343 kB 🔴 +343 kB 🔴 +86 kB 🔴 +72.5 kB
assets/vendor-vue-core-D3WB7mNE.js (removed) 343 kB 🟢 -343 kB 🟢 -86 kB 🟢 -72.5 kB
assets/vendor-sentry-CJqm_Nmo.js (removed) 268 kB 🟢 -268 kB 🟢 -69.2 kB 🟢 -57 kB
assets/vendor-sentry-CODXjlem.js (new) 268 kB 🔴 +268 kB 🔴 +69.2 kB 🔴 +57 kB
assets/vendor-vueuse-BA2QXdyV.js (removed) 155 kB 🟢 -155 kB 🟢 -38.8 kB 🟢 -33.1 kB
assets/vendor-vueuse-BfxRkOZq.js (new) 155 kB 🔴 +155 kB 🔴 +38.8 kB 🔴 +33.1 kB
assets/vendor-i18n-BI8idhXi.js (new) 140 kB 🔴 +140 kB 🔴 +30.7 kB 🔴 +25.8 kB
assets/vendor-i18n-BVGbvPvq.js (removed) 140 kB 🟢 -140 kB 🟢 -30.7 kB 🟢 -25.8 kB

Status: 7 added / 7 removed / 9 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-CBoy0Kw1.js (removed) 119 kB 🟢 -119 kB 🟢 -30.7 kB 🟢 -26 kB
assets/core-D-vLLwba.js (new) 119 kB 🔴 +119 kB 🔴 +30.7 kB 🔴 +25.9 kB
assets/WidgetSelect-C4mQEfRD.js (new) 89.3 kB 🔴 +89.3 kB 🔴 +20.1 kB 🔴 +17.2 kB
assets/WidgetSelect-XBqNmbSR.js (removed) 89.3 kB 🟢 -89.3 kB 🟢 -20.1 kB 🟢 -17.2 kB
assets/Load3DControls-C-hPrBJq.js (new) 46.8 kB 🔴 +46.8 kB 🔴 +7.56 kB 🔴 +6.6 kB
assets/Load3DControls-DXKyfMrb.js (removed) 46.8 kB 🟢 -46.8 kB 🟢 -7.56 kB 🟢 -6.61 kB
assets/SubscriptionTransitionPreviewWorkspace-COSGH5AK.js (new) 46.8 kB 🔴 +46.8 kB 🔴 +9.65 kB 🔴 +8.53 kB
assets/SubscriptionTransitionPreviewWorkspace-Cv3Mx5ai.js (removed) 46.8 kB 🟢 -46.8 kB 🟢 -9.65 kB 🟢 -8.54 kB
assets/SubscriptionRequiredDialogContentUnified-BBNutECt.js (new) 41.2 kB 🔴 +41.2 kB 🔴 +9.16 kB 🔴 +7.97 kB
assets/SubscriptionRequiredDialogContentUnified-DM54UR8Q.js (removed) 41.2 kB 🟢 -41.2 kB 🟢 -9.16 kB 🟢 -7.97 kB
assets/WorkspacePanelContent-BR7t8EYZ.js (new) 34.5 kB 🔴 +34.5 kB 🔴 +7.49 kB 🔴 +6.6 kB
assets/WorkspacePanelContent-CuFfSeKm.js (removed) 34.5 kB 🟢 -34.5 kB 🟢 -7.49 kB 🟢 -6.61 kB
assets/WidgetPainter-4Qy9gh5E.js (removed) 32.7 kB 🟢 -32.7 kB 🟢 -7.9 kB 🟢 -7.01 kB
assets/WidgetPainter-Z0toa6v4.js (new) 32.7 kB 🔴 +32.7 kB 🔴 +7.9 kB 🔴 +6.99 kB
assets/Load3dViewerContent-C7ticXJ1.js (removed) 30.9 kB 🟢 -30.9 kB 🟢 -6.3 kB 🟢 -5.47 kB
assets/Load3dViewerContent-DLpZF1j1.js (new) 30.9 kB 🔴 +30.9 kB 🔴 +6.3 kB 🔴 +5.46 kB
assets/HdrViewerContent-80qX2Emk.js (removed) 29.2 kB 🟢 -29.2 kB 🟢 -8.09 kB 🟢 -7.14 kB
assets/HdrViewerContent-BMJO1esz.js (new) 29.2 kB 🔴 +29.2 kB 🔴 +8.09 kB 🔴 +7.14 kB
assets/WidgetBoundingBoxes-D9FO1QLV.js (new) 28.6 kB 🔴 +28.6 kB 🔴 +7.9 kB 🔴 +7 kB
assets/WidgetBoundingBoxes-DGJ56GT4.js (removed) 28.6 kB 🟢 -28.6 kB 🟢 -7.9 kB 🟢 -7.03 kB
assets/SubscriptionRequiredDialogContent-BlMwQScx.js (removed) 27.4 kB 🟢 -27.4 kB 🟢 -6.75 kB 🟢 -5.97 kB
assets/SubscriptionRequiredDialogContent-DVEvxnvH.js (new) 27.4 kB 🔴 +27.4 kB 🔴 +6.74 kB 🔴 +5.99 kB
assets/initHostTelemetry-B5KQBQja.js (removed) 26.3 kB 🟢 -26.3 kB 🟢 -6.4 kB 🟢 -5.34 kB
assets/initHostTelemetry-BpdadMGH.js (new) 26.3 kB 🔴 +26.3 kB 🔴 +6.4 kB 🔴 +5.34 kB
assets/SubscriptionPanelContentWorkspace-B0gaj3aN.js (removed) 25 kB 🟢 -25 kB 🟢 -5.84 kB 🟢 -5.13 kB
assets/SubscriptionPanelContentWorkspace-DplZjFma.js (new) 25 kB 🔴 +25 kB 🔴 +5.83 kB 🔴 +5.12 kB
assets/SubscriptionRequiredDialogContentWorkspace-BDh0EPbs.js (removed) 24.6 kB 🟢 -24.6 kB 🟢 -5.66 kB 🟢 -4.97 kB
assets/SubscriptionRequiredDialogContentWorkspace-CahWdiBR.js (new) 24.6 kB 🔴 +24.6 kB 🔴 +5.65 kB 🔴 +4.98 kB
assets/ColorPicker-5LK1R_ns.js (new) 24.5 kB 🔴 +24.5 kB 🔴 +6.4 kB 🔴 +5.64 kB
assets/ColorPicker-CzfjYyaP.js (removed) 24.5 kB 🟢 -24.5 kB 🟢 -6.4 kB 🟢 -5.66 kB
assets/WidgetImageCrop-DgN2bys_.js (new) 23.3 kB 🔴 +23.3 kB 🔴 +5.75 kB 🔴 +5.05 kB
assets/WidgetImageCrop-pyI7vznj.js (removed) 23.3 kB 🟢 -23.3 kB 🟢 -5.75 kB 🟢 -5.04 kB
assets/load3d-Bp5NTkvc.js (new) 21.3 kB 🔴 +21.3 kB 🔴 +5.19 kB 🔴 +4.5 kB
assets/load3d-jFlDyYij.js (removed) 21.3 kB 🟢 -21.3 kB 🟢 -5.19 kB 🟢 -4.5 kB
assets/CurrentUserPopoverWorkspace-Blellx3c.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -4.75 kB 🟢 -4.24 kB
assets/CurrentUserPopoverWorkspace-DDULDm2-.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +4.74 kB 🔴 +4.23 kB
assets/SignInContent-ByxzcmDT.js (removed) 20.1 kB 🟢 -20.1 kB 🟢 -5.07 kB 🟢 -4.43 kB
assets/SignInContent-CWn5PnT8.js (new) 20.1 kB 🔴 +20.1 kB 🔴 +5.07 kB 🔴 +4.43 kB
assets/WidgetInputNumber-ChNOF5Kb.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.82 kB 🔴 +4.28 kB
assets/WidgetInputNumber-CQ8HqbiG.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.82 kB 🟢 -4.28 kB
assets/Load3D-CYrn-piE.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.52 kB 🔴 +3.93 kB
assets/Load3D-h4n9MZIu.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.52 kB 🟢 -3.94 kB
assets/CreditsTile-By6TjdZp.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.54 kB 🔴 +4.01 kB
assets/CreditsTile-BYD-qjo-.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.54 kB 🟢 -4.01 kB
assets/WidgetRecordAudio-8pIJQflt.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.63 kB 🔴 +4.14 kB
assets/WidgetRecordAudio-Bz9fbxgN.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.63 kB 🟢 -4.14 kB
assets/WidgetRange-CO1bxhB_.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -4.16 kB 🟢 -3.72 kB
assets/WidgetRange-CrtL5boC.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +4.17 kB 🔴 +3.73 kB
assets/DialogHeader-DkWnDCOh.js (removed) 14.7 kB 🟢 -14.7 kB 🟢 -4 kB 🟢 -3.55 kB
assets/DialogHeader-DWc2S69n.js (new) 14.7 kB 🔴 +14.7 kB 🔴 +3.99 kB 🔴 +3.55 kB
assets/WaveAudioPlayer-BbP9USrS.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.48 kB 🔴 +3.06 kB
assets/WaveAudioPlayer-CjH63BoT.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.48 kB 🟢 -3.07 kB
assets/i18n--TBL02Ne.js (removed) 12.2 kB 🟢 -12.2 kB 🟢 -3.24 kB 🟢 -2.73 kB
assets/i18n-C4Kmzjz-.js (new) 12.2 kB 🔴 +12.2 kB 🔴 +3.24 kB 🔴 +2.72 kB
assets/WidgetCurve-CiUscEsI.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.5 kB 🔴 +3.16 kB
assets/WidgetCurve-DSqP8lsp.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.5 kB 🟢 -3.16 kB
assets/AudioPreviewPlayer-D2SAi_Vt.js (removed) 10.6 kB 🟢 -10.6 kB 🟢 -3.06 kB 🟢 -2.73 kB
assets/AudioPreviewPlayer-DPVaOt8R.js (new) 10.6 kB 🔴 +10.6 kB 🔴 +3.06 kB 🔴 +2.73 kB
assets/TeamWorkspacesDialogContent-ahchOjYD.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -3 kB 🟢 -2.66 kB
assets/TeamWorkspacesDialogContent-BLxWu_Pd.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +3 kB 🔴 +2.66 kB
assets/SelectValue-CPka5Qbt.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.48 kB 🔴 +2.19 kB
assets/SelectValue-DqyfA2Es.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.48 kB 🟢 -2.19 kB
assets/Load3DConfiguration-BKK9onKh.js (removed) 9.02 kB 🟢 -9.02 kB 🟢 -2.66 kB 🟢 -2.35 kB
assets/Load3DConfiguration-BPQD5HYp.js (new) 9.02 kB 🔴 +9.02 kB 🔴 +2.67 kB 🔴 +2.35 kB
assets/onboardingCloudRoutes-COvqv4BW.js (new) 8.35 kB 🔴 +8.35 kB 🔴 +2.6 kB 🔴 +2.23 kB
assets/onboardingCloudRoutes-DbzgDe1V.js (removed) 8.35 kB 🟢 -8.35 kB 🟢 -2.61 kB 🟢 -2.23 kB
assets/nodeTemplates-Cl_GPa2S.js (new) 8.33 kB 🔴 +8.33 kB 🔴 +2.88 kB 🔴 +2.54 kB
assets/nodeTemplates-DNGTIWGi.js (removed) 8.33 kB 🟢 -8.33 kB 🟢 -2.87 kB 🟢 -2.54 kB
assets/WidgetImageCompare-BKOFJcIf.js (new) 8.19 kB 🔴 +8.19 kB 🔴 +2.33 kB 🔴 +2.04 kB
assets/WidgetImageCompare-sZCNxbSW.js (removed) 8.19 kB 🟢 -8.19 kB 🟢 -2.33 kB 🟢 -2.04 kB
assets/NightlySurveyController-8aP3ZfLM.js (removed) 7.95 kB 🟢 -7.95 kB 🟢 -2.7 kB 🟢 -2.37 kB
assets/NightlySurveyController-Ce0S4Cvy.js (new) 7.95 kB 🔴 +7.95 kB 🔴 +2.7 kB 🔴 +2.37 kB
assets/Popover-CZfXPPLp.js (removed) 7.52 kB 🟢 -7.52 kB 🟢 -2.72 kB 🟢 -2.39 kB
assets/Popover-FPS_qu8K.js (new) 7.52 kB 🔴 +7.52 kB 🔴 +2.72 kB 🔴 +2.39 kB
assets/InviteMemberDialogContent-B0n5dcQy.js (removed) 6.76 kB 🟢 -6.76 kB 🟢 -2.22 kB 🟢 -1.96 kB
assets/InviteMemberDialogContent-CuywS6Xc.js (new) 6.76 kB 🔴 +6.76 kB 🔴 +2.22 kB 🔴 +1.96 kB
assets/WidgetWithControl-BcIYwgNs.js (new) 6.34 kB 🔴 +6.34 kB 🔴 +2.56 kB 🔴 +2.29 kB
assets/WidgetWithControl-wcE5uJmZ.js (removed) 6.34 kB 🟢 -6.34 kB 🟢 -2.57 kB 🟢 -2.28 kB
assets/AnimationControls-BovE9OSH.js (new) 6.16 kB 🔴 +6.16 kB 🔴 +1.88 kB 🔴 +1.67 kB
assets/AnimationControls-DusZsuQK.js (removed) 6.16 kB 🟢 -6.16 kB 🟢 -1.88 kB 🟢 -1.67 kB
assets/tierBenefits-B-NO-B45.js (new) 6.02 kB 🔴 +6.02 kB 🔴 +1.93 kB 🔴 +1.67 kB
assets/tierBenefits-BlUSbU9a.js (removed) 6.02 kB 🟢 -6.02 kB 🟢 -1.93 kB 🟢 -1.67 kB
assets/CancelSubscriptionDialogContent-BQ4XTole.js (removed) 5.76 kB 🟢 -5.76 kB 🟢 -1.97 kB 🟢 -1.73 kB
assets/CancelSubscriptionDialogContent-Cw5raav2.js (new) 5.76 kB 🔴 +5.76 kB 🔴 +1.97 kB 🔴 +1.73 kB
assets/load3dPreviewExtensions-D14wSkBm.js (removed) 5.38 kB 🟢 -5.38 kB 🟢 -1.75 kB 🟢 -1.55 kB
assets/load3dPreviewExtensions-pmZCm5fm.js (new) 5.38 kB 🔴 +5.38 kB 🔴 +1.75 kB 🔴 +1.55 kB
assets/PaletteSwatchRow-Ch0U8WTV.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.99 kB 🟢 -1.75 kB
assets/PaletteSwatchRow-CQ9hbpZY.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.98 kB 🔴 +1.75 kB
assets/FreeTierDialogContent-CFcgpN27.js (removed) 5.25 kB 🟢 -5.25 kB 🟢 -1.76 kB 🟢 -1.55 kB
assets/FreeTierDialogContent-sS_gWNsY.js (new) 5.25 kB 🔴 +5.25 kB 🔴 +1.76 kB 🔴 +1.55 kB
assets/CreateWorkspaceDialogContent-C6uo-0LH.js (new) 5.19 kB 🔴 +5.19 kB 🔴 +1.82 kB 🔴 +1.58 kB
assets/CreateWorkspaceDialogContent-CmmNBWfd.js (removed) 5.19 kB 🟢 -5.19 kB 🟢 -1.82 kB 🟢 -1.58 kB
assets/CloudNotificationContent-CyeSUt5f.js (removed) 5.11 kB 🟢 -5.11 kB 🟢 -1.79 kB 🟢 -1.54 kB
assets/CloudNotificationContent-D4gxDr1s.js (new) 5.11 kB 🔴 +5.11 kB 🔴 +1.79 kB 🔴 +1.54 kB
assets/missingModelDownload-CU6AC8EN.js (removed) 5.07 kB 🟢 -5.07 kB 🟢 -1.98 kB 🟢 -1.72 kB
assets/missingModelDownload-DIZaZFKo.js (new) 5.07 kB 🔴 +5.07 kB 🔴 +1.98 kB 🔴 +1.72 kB
assets/ChangeMemberRoleDialogContent-5U4bZ-0x.js (removed) 5.04 kB 🟢 -5.04 kB 🟢 -1.67 kB 🟢 -1.46 kB
assets/ChangeMemberRoleDialogContent-D-Hxzmr2.js (new) 5.04 kB 🔴 +5.04 kB 🔴 +1.66 kB 🔴 +1.46 kB
assets/EditWorkspaceDialogContent-DBXntjfC.js (new) 5 kB 🔴 +5 kB 🔴 +1.79 kB 🔴 +1.55 kB
assets/EditWorkspaceDialogContent-eLABMtpe.js (removed) 5 kB 🟢 -5 kB 🟢 -1.79 kB 🟢 -1.55 kB
assets/WidgetTextarea-KP0QL5oT.js (removed) 4.86 kB 🟢 -4.86 kB 🟢 -1.9 kB 🟢 -1.68 kB
assets/WidgetTextarea-lO4-Kl13.js (new) 4.86 kB 🔴 +4.86 kB 🔴 +1.89 kB 🔴 +1.65 kB
assets/DowngradeRemoveMembersDialogContent-D_znOVvY.js (new) 4.83 kB 🔴 +4.83 kB 🔴 +1.7 kB 🔴 +1.47 kB
assets/DowngradeRemoveMembersDialogContent-DHSZCZ3p.js (removed) 4.83 kB 🟢 -4.83 kB 🟢 -1.71 kB 🟢 -1.47 kB
assets/saveMesh-BLSk76r1.js (removed) 4.81 kB 🟢 -4.81 kB 🟢 -1.56 kB 🟢 -1.38 kB
assets/saveMesh-SsEkJUSl.js (new) 4.81 kB 🔴 +4.81 kB 🔴 +1.55 kB 🔴 +1.38 kB
assets/Preview3d-2grWxyK0.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.43 kB 🔴 +1.23 kB
assets/Preview3d-CXZ4hSia.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.43 kB 🟢 -1.23 kB
assets/ValueControlPopover-D7dxL-S7.js (new) 4.55 kB 🔴 +4.55 kB 🔴 +1.59 kB 🔴 +1.42 kB
assets/ValueControlPopover-DfrQmrp1.js (removed) 4.55 kB 🟢 -4.55 kB 🟢 -1.59 kB 🟢 -1.42 kB
assets/ApiNodesSignInContent-B2kg9CJT.js (new) 4.14 kB 🔴 +4.14 kB 🔴 +1.34 kB 🔴 +1.21 kB
assets/ApiNodesSignInContent-DfkGN7EU.js (removed) 4.14 kB 🟢 -4.14 kB 🟢 -1.35 kB 🟢 -1.18 kB
assets/Slider-BzUQYMSs.js (new) 3.92 kB 🔴 +3.92 kB 🔴 +1.45 kB 🔴 +1.26 kB
assets/Slider-C_rx-g3O.js (removed) 3.92 kB 🟢 -3.92 kB 🟢 -1.45 kB 🟢 -1.26 kB
assets/DeleteWorkspaceDialogContent-BLBdnrzv.js (removed) 3.91 kB 🟢 -3.91 kB 🟢 -1.47 kB 🟢 -1.27 kB
assets/DeleteWorkspaceDialogContent-C_RauuT3.js (new) 3.91 kB 🔴 +3.91 kB 🔴 +1.47 kB 🔴 +1.27 kB
assets/WidgetBoundingBox-DhQqeBJz.js (new) 3.82 kB 🔴 +3.82 kB 🔴 +1.06 kB 🔴 +923 B
assets/WidgetBoundingBox-mjuWEE7r.js (removed) 3.82 kB 🟢 -3.82 kB 🟢 -1.06 kB 🟢 -923 B
assets/WidgetGalleria-Cka_TYO6.js (removed) 3.8 kB 🟢 -3.8 kB 🟢 -1.48 kB 🟢 -1.32 kB
assets/WidgetGalleria-N9uCbfpu.js (new) 3.8 kB 🔴 +3.8 kB 🔴 +1.47 kB 🔴 +1.32 kB
assets/LeaveWorkspaceDialogContent-DtNhKgkw.js (removed) 3.73 kB 🟢 -3.73 kB 🟢 -1.41 kB 🟢 -1.22 kB
assets/LeaveWorkspaceDialogContent-NoYmoXC1.js (new) 3.73 kB 🔴 +3.73 kB 🔴 +1.41 kB 🔴 +1.22 kB
assets/RemoveMemberDialogContent-BTlWyuOW.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.37 kB 🟢 -1.19 kB
assets/RemoveMemberDialogContent-D4gnRYuq.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.37 kB 🔴 +1.18 kB
assets/WidgetToggleSwitch-FPyiarMd.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.4 kB 🔴 +1.23 kB
assets/WidgetToggleSwitch-oZUQ-69s.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.4 kB 🟢 -1.24 kB
assets/RevokeInviteDialogContent-Dzg_q3-9.js (new) 3.63 kB 🔴 +3.63 kB 🔴 +1.38 kB 🔴 +1.21 kB
assets/RevokeInviteDialogContent-YCSCOH3m.js (removed) 3.63 kB 🟢 -3.63 kB 🟢 -1.38 kB 🟢 -1.21 kB
assets/InviteMemberUpsellDialogContent-Co680CZw.js (removed) 3.52 kB 🟢 -3.52 kB 🟢 -1.27 kB 🟢 -1.1 kB
assets/InviteMemberUpsellDialogContent-DAUxLMxu.js (new) 3.52 kB 🔴 +3.52 kB 🔴 +1.26 kB 🔴 +1.11 kB
assets/workspaceCheckoutTelemetry-BKEyYQAV.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.56 kB 🔴 +1.36 kB
assets/workspaceCheckoutTelemetry-DUccs2w6.js (removed) 3.47 kB 🟢 -3.47 kB 🟢 -1.56 kB 🟢 -1.36 kB
assets/Media3DTop-BJQVEJki.js (removed) 3.26 kB 🟢 -3.26 kB 🟢 -1.3 kB 🟢 -1.13 kB
assets/Media3DTop-BOEo0O0y.js (new) 3.26 kB 🔴 +3.26 kB 🔴 +1.3 kB 🔴 +1.13 kB
assets/WidgetMarkdown-DOQvwO01.js (new) 3.13 kB 🔴 +3.13 kB 🔴 +1.28 kB 🔴 +1.11 kB
assets/WidgetMarkdown-DwOpvYPS.js (removed) 3.13 kB 🟢 -3.13 kB 🟢 -1.29 kB 🟢 -1.14 kB
assets/WidgetInputText-B9-8gSlD.js (new) 3.07 kB 🔴 +3.07 kB 🔴 +1.29 kB 🔴 +1.16 kB
assets/WidgetInputText-DQDJ2Ijp.js (removed) 3.07 kB 🟢 -3.07 kB 🟢 -1.29 kB 🟢 -1.16 kB
assets/GlobalToast-BCZ14pEz.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/GlobalToast-u-lj2Rur.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.26 kB 🟢 -1.08 kB
assets/MediaVideoTop-CWpI38V0.js (removed) 2.91 kB 🟢 -2.91 kB 🟢 -1.18 kB 🟢 -1.03 kB
assets/MediaVideoTop-X4rq7V4k.js (new) 2.91 kB 🔴 +2.91 kB 🔴 +1.18 kB 🔴 +1.03 kB
assets/load3dAdvanced-BsmNXR_Q.js (new) 2.87 kB 🔴 +2.87 kB 🔴 +1.13 kB 🔴 +982 B
assets/load3dAdvanced-DZtK_T-6.js (removed) 2.87 kB 🟢 -2.87 kB 🟢 -1.13 kB 🟢 -988 B
assets/ErrorPanelSurveyCta-CbQY4tes.js (removed) 2.64 kB 🟢 -2.64 kB 🟢 -1.16 kB 🟢 -1.03 kB
assets/ErrorPanelSurveyCta-Dtk737Sq.js (new) 2.64 kB 🔴 +2.64 kB 🔴 +1.16 kB 🔴 +1.03 kB
assets/SubscribeToRun-B5voPwTl.js (new) 2.56 kB 🔴 +2.56 kB 🔴 +1.11 kB 🔴 +973 B
assets/SubscribeToRun-BDYGeR78.js (removed) 2.56 kB 🟢 -2.56 kB 🟢 -1.11 kB 🟢 -975 B
assets/WidgetLayoutField-B5cgXgvM.js (new) 2.43 kB 🔴 +2.43 kB 🔴 +1.06 kB 🔴 +969 B
assets/WidgetLayoutField-gTt7CVyz.js (removed) 2.43 kB 🟢 -2.43 kB 🟢 -1.06 kB 🟢 -973 B
assets/WidgetChart-Ce5vBs3K.js (new) 2.41 kB 🔴 +2.41 kB 🔴 +1.02 kB 🔴 +890 B
assets/WidgetChart-CxAJycz8.js (removed) 2.41 kB 🟢 -2.41 kB 🟢 -1.03 kB 🟢 -887 B
assets/SubscriptionBenefits-Bk0EbzpD.js (removed) 2.07 kB 🟢 -2.07 kB 🟢 -710 B 🟢 -606 B
assets/SubscriptionBenefits-BP325Ovn.js (new) 2.07 kB 🔴 +2.07 kB 🔴 +709 B 🔴 +603 B
assets/MediaImageTop-C1PbJoYy.js (new) 2.06 kB 🔴 +2.06 kB 🔴 +994 B 🔴 +880 B
assets/MediaImageTop-CcoEfqO1.js (removed) 2.06 kB 🟢 -2.06 kB 🟢 -993 B 🟢 -878 B
assets/graphHasMissingNodes-BeXqeVSm.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +904 B 🔴 +788 B
assets/graphHasMissingNodes-CWiSuGDl.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -906 B 🟢 -788 B
assets/WidgetColorPicker-I6RMuden.js (removed) 1.74 kB 🟢 -1.74 kB 🟢 -786 B 🟢 -695 B
assets/WidgetColorPicker-kHMsXJNd.js (new) 1.74 kB 🔴 +1.74 kB 🔴 +782 B 🔴 +701 B
assets/Loader-BDNSi0qc.js (removed) 1.69 kB 🟢 -1.69 kB 🟢 -815 B 🟢 -721 B
assets/Loader-DTwJFAir.js (new) 1.69 kB 🔴 +1.69 kB 🔴 +812 B 🔴 +749 B
assets/WidgetColors-CHYBQ1sd.js (removed) 1.68 kB 🟢 -1.68 kB 🟢 -834 B 🟢 -737 B
assets/WidgetColors-DgHC_k84.js (new) 1.68 kB 🔴 +1.68 kB 🔴 +834 B 🔴 +737 B
assets/MediaAudioTop-Bs7hjfa8.js (new) 1.67 kB 🔴 +1.67 kB 🔴 +836 B 🔴 +698 B
assets/MediaAudioTop-DIKr2G18.js (removed) 1.67 kB 🟢 -1.67 kB 🟢 -838 B 🟢 -700 B
assets/Textarea-BHSJeXXM.js (removed) 1.61 kB 🟢 -1.61 kB 🟢 -843 B 🟢 -741 B
assets/Textarea-HAsnH-0O.js (new) 1.61 kB 🔴 +1.61 kB 🔴 +840 B 🔴 +751 B
assets/signInSchema-CLwAjx-L.js (removed) 1.6 kB 🟢 -1.6 kB 🟢 -585 B 🟢 -511 B
assets/signInSchema-DqfF2pp4.js (new) 1.6 kB 🔴 +1.6 kB 🔴 +585 B 🔴 +540 B
assets/VideoPlayOverlay-BHVjultu.js (removed) 1.52 kB 🟢 -1.52 kB 🟢 -761 B 🟢 -676 B
assets/VideoPlayOverlay-BpcqBPlU.js (new) 1.52 kB 🔴 +1.52 kB 🔴 +759 B 🔴 +675 B
assets/CloudRunButtonWrapper-BgBvHfzb.js (removed) 1.13 kB 🟢 -1.13 kB 🟢 -548 B 🟢 -490 B
assets/CloudRunButtonWrapper-CYx6KSY7.js (new) 1.13 kB 🔴 +1.13 kB 🔴 +550 B 🔴 +517 B
assets/MediaOtherTop-CU872k2O.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +607 B 🔴 +503 B
assets/MediaOtherTop-ejrLHe36.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -607 B 🟢 -504 B
assets/MediaTextTop-BmYmtyBm.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -600 B 🟢 -501 B
assets/MediaTextTop-c3GbBVq_.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +601 B 🔴 +501 B
assets/cloudSessionCookie-BIhoLAsk.js (new) 991 B 🔴 +991 B 🔴 +465 B 🔴 +410 B
assets/cloudSessionCookie-CB98buvf.js (removed) 991 B 🟢 -991 B 🟢 -466 B 🟢 -398 B
assets/cloudBadges-BRxegoND.js (removed) 973 B 🟢 -973 B 🟢 -548 B 🟢 -493 B
assets/cloudBadges-Cr9XTV9s.js (new) 973 B 🔴 +973 B 🔴 +551 B 🔴 +467 B
assets/ComfyOrgHeader-D6DG7qLs.js (removed) 960 B 🟢 -960 B 🟢 -530 B 🟢 -453 B
assets/ComfyOrgHeader-DK99ePjX.js (new) 960 B 🔴 +960 B 🔴 +528 B 🔴 +466 B
assets/Load3DAdvanced-CdmvKkXm.js (removed) 813 B 🟢 -813 B 🟢 -455 B 🟢 -385 B
assets/Load3DAdvanced-DLz-rjux.js (new) 813 B 🔴 +813 B 🔴 +451 B 🔴 +406 B
assets/widgetTypes-CcttRCmE.js (new) 563 B 🔴 +563 B 🔴 +310 B 🔴 +259 B
assets/widgetTypes-oIdIlxxV.js (removed) 563 B 🟢 -563 B 🟢 -313 B 🟢 -260 B
assets/nightlyBadges-C8B_VPLc.js (new) 464 B 🔴 +464 B 🔴 +306 B 🔴 +255 B
assets/nightlyBadges-DwD3-s73.js (removed) 464 B 🟢 -464 B 🟢 -304 B 🟢 -255 B
assets/src-CDgHMYTj.js (removed) 446 B 🟢 -446 B 🟢 -318 B 🟢 -270 B
assets/src-DC7FGKub.js (new) 446 B 🔴 +446 B 🔴 +319 B 🔴 +268 B
assets/vRekaZIndex-C6RPDF_x.js (removed) 360 B 🟢 -360 B 🟢 -263 B 🟢 -217 B
assets/vRekaZIndex-C7oRI4dt.js (new) 360 B 🔴 +360 B 🔴 +261 B 🔴 +216 B
assets/missingModelDownload-DvxtZOMS.js (removed) 228 B 🟢 -228 B 🟢 -150 B 🟢 -129 B
assets/missingModelDownload-JE_y6Hfn.js (new) 228 B 🔴 +228 B 🔴 +150 B 🔴 +129 B
assets/SubscriptionPanelContentWorkspace-CCl9Bqh7.js (new) 179 B 🔴 +179 B 🔴 +117 B 🔴 +92 B
assets/SubscriptionPanelContentWorkspace-nfjybx1j.js (removed) 179 B 🟢 -179 B 🟢 -117 B 🟢 -93 B
assets/Load3dViewerContent-BNsdJdDW.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -92 B
assets/Load3dViewerContent-Jrkyjpoz.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +92 B
assets/WidgetBoundingBox-C2GKax4a.js (removed) 131 B 🟢 -131 B 🟢 -100 B 🟢 -93 B
assets/WidgetBoundingBox-lFjK23Sb.js (new) 131 B 🔴 +131 B 🔴 +100 B 🔴 +102 B
assets/Load3DAdvanced-jAxGbyVm.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +90 B
assets/Load3DAdvanced-PbgDONL6.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -91 B
assets/WidgetLegacy-CGAD5ic3.js (new) 119 B 🔴 +119 B 🔴 +108 B 🔴 +94 B
assets/WidgetLegacy-CshzQHNe.js (removed) 119 B 🟢 -119 B 🟢 -108 B 🟢 -95 B
assets/workflowDraftStoreV2-Bf1Qg5qx.js (removed) 113 B 🟢 -113 B 🟢 -105 B 🟢 -111 B
assets/workflowDraftStoreV2-DuV_h0k8.js (new) 113 B 🔴 +113 B 🔴 +105 B 🔴 +117 B
assets/Load3D-DfSccL9f.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +80 B
assets/Load3D-EqpFH9E_.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -96 B
assets/i18n-CxzA60od.js (new) 97 B 🔴 +97 B 🔴 +92 B 🔴 +85 B
assets/i18n-D4-TIhRo.js (removed) 97 B 🟢 -97 B 🟢 -92 B 🟢 -89 B
assets/changeTracker-Ca21y5xV.js (removed) 93 B 🟢 -93 B 🟢 -95 B 🟢 -83 B
assets/changeTracker-CYKYHU6X.js (new) 93 B 🔴 +93 B 🔴 +95 B 🔴 +81 B

Status: 107 added / 107 removed / 58 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 62.0 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.0 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.1 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 53.7 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.8 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 78.8 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.6 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.3 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 46.1 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.6 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 58.3 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 165ms TBT · 75.5 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.3 MB heap
vue-large-graph-idle: · 59.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 160.5 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 43ms TBT · 165.1 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 56.3 MB heap

⚠️ 4 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-mouse-sweep: style recalc duration 42ms 49ms +18% ⚠️ z=2.1
subgraph-idle: style recalc duration 10ms 14ms +43% ⚠️ z=4.6
workflow-execution: style recalc duration 23ms 29ms +29% ⚠️ z=2.3
workflow-execution: task duration 225ms 181ms -20% ⚠️ z=5.4
All metrics
Metric Baseline PR (median) Δ Sig
canvas-idle: avg frame time 17ms 17ms -0% z=-0.5
canvas-idle: p95 frame time 17ms 17ms +0%
canvas-idle: layout duration 0ms 0ms +0%
canvas-idle: style recalc duration 10ms 10ms +0% z=-1.3
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 8 10 +19% z=-2.9
canvas-idle: task duration 408ms 414ms +1% z=0.6
canvas-idle: script duration 19ms 19ms -1% z=-2.9
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 59.2 MB 62.0 MB +5%
canvas-idle: DOM nodes -274 -131 -52% z=-120.4
canvas-idle: event listeners -197 -98 -51% z=-23.0
canvas-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.9
canvas-mouse-sweep: p95 frame time 17ms 17ms -0%
canvas-mouse-sweep: layout duration 4ms 4ms -7% z=0.7
canvas-mouse-sweep: style recalc duration 42ms 49ms +18% ⚠️ z=2.1
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 73 78 +7% z=-0.3
canvas-mouse-sweep: task duration 902ms 871ms -3% z=0.1
canvas-mouse-sweep: script duration 131ms 134ms +2% z=-0.2
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 46.5 MB 57.0 MB +23%
canvas-mouse-sweep: DOM nodes -268 -90 -66% z=-58.9
canvas-mouse-sweep: event listeners -199 -98 -51% z=-25.4
canvas-zoom-sweep: avg frame time 17ms 17ms -0% z=-1.1
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms -14% z=-0.1
canvas-zoom-sweep: style recalc duration 17ms 17ms -2% z=-1.5
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 31 31 +0% z=-0.6
canvas-zoom-sweep: task duration 344ms 317ms -8% z=-0.4
canvas-zoom-sweep: script duration 20ms 18ms -9% z=-2.9
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 62.7 MB 56.1 MB -11%
canvas-zoom-sweep: DOM nodes -226 -82 -64% z=-203.1
canvas-zoom-sweep: event listeners -184 -84 -55% z=-20.7
dom-widget-clipping: avg frame time 17ms 17ms +0% z=0.1
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.1
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 11 11 +0% z=-4.2
dom-widget-clipping: task duration 389ms 371ms -5% z=0.4
dom-widget-clipping: script duration 60ms 61ms +1% z=-2.1
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 60.7 MB 53.7 MB -11%
dom-widget-clipping: DOM nodes -291 -131 -55% z=-107.6
dom-widget-clipping: event listeners -203 -101 -50% 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 10ms 9ms -5% z=-3.0
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 8 9 +13% z=-8.3
large-graph-idle: task duration 563ms 531ms -6% z=-0.2
large-graph-idle: script duration 96ms 95ms -1% z=-0.7
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 56.4 MB 57.8 MB +2%
large-graph-idle: DOM nodes -271 -128 -53% z=-168.4
large-graph-idle: event listeners -197 -96 -52% z=-20.0
large-graph-pan: avg frame time 17ms 17ms -0% z=-0.2
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 19ms 16ms -13% z=-1.1
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 68 68 -1% z=-3.2
large-graph-pan: task duration 1049ms 1086ms +3% z=0.1
large-graph-pan: script duration 368ms 410ms +12% z=0.1
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 78.5 MB 78.8 MB +0%
large-graph-pan: DOM nodes -275 -132 -52% z=-91.5
large-graph-pan: event listeners -197 -96 -52% z=-121.3
large-graph-zoom: avg frame time 17ms 17ms +0%
large-graph-zoom: p95 frame time 17ms 17ms +1%
large-graph-zoom: layout duration 9ms 8ms -14%
large-graph-zoom: style recalc duration 18ms 16ms -9%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 62 63 +2%
large-graph-zoom: task duration 1312ms 1318ms +0%
large-graph-zoom: script duration 498ms 493ms -1%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 66.0 MB 70.6 MB +7%
large-graph-zoom: DOM nodes 6 -135 -2342%
large-graph-zoom: event listeners 8 -60 -850%
minimap-idle: avg frame time 17ms 17ms +0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms -1%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 6ms 9ms +50% z=-1.0
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 7 9 +29% z=-0.8
minimap-idle: task duration 597ms 504ms -16% z=-0.5
minimap-idle: script duration 101ms 89ms -12% z=-0.9
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 56.9 MB 58.3 MB +2%
minimap-idle: DOM nodes -276 -124 -55% z=-104.3
minimap-idle: event listeners -197 -61 -69% z=-99.3
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 13ms 12ms -9% z=-1.1
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 47 47 -1% z=-2.5
subgraph-dom-widget-clipping: task duration 444ms 386ms -13% z=0.4
subgraph-dom-widget-clipping: script duration 130ms 126ms -3% z=-0.4
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 43.8 MB 46.1 MB +5%
subgraph-dom-widget-clipping: DOM nodes -280 -129 -54% z=-134.7
subgraph-dom-widget-clipping: event listeners -195 -96 -51% z=-19.2
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 14ms +43% ⚠️ z=4.6
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 10 +0% z=-1.4
subgraph-idle: task duration 470ms 392ms -17% z=0.7
subgraph-idle: script duration 19ms 17ms -12% z=-1.2
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 54.4 MB 61.6 MB +13%
subgraph-idle: DOM nodes 20 -131 -755% z=-102.2
subgraph-idle: event listeners 4 -98 -2538% variance too high
subgraph-mouse-sweep: avg frame time 17ms 17ms +0% z=0.4
subgraph-mouse-sweep: p95 frame time 17ms 17ms +0%
subgraph-mouse-sweep: layout duration 5ms 4ms -18% z=-0.9
subgraph-mouse-sweep: style recalc duration 42ms 39ms -8% z=-1.1
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 78 76 -3% z=-2.4
subgraph-mouse-sweep: task duration 775ms 713ms -8% z=-0.8
subgraph-mouse-sweep: script duration 100ms 95ms -5% z=-0.9
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 50.5 MB 58.3 MB +15%
subgraph-mouse-sweep: DOM nodes -235 -99 -58% z=-74.3
subgraph-mouse-sweep: event listeners -199 -98 -51% 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 16ms +6%
subgraph-transition-enter: style recalc duration 34ms 33ms -1%
subgraph-transition-enter: layout count 15 15 +0%
subgraph-transition-enter: style recalc count 19 19 +0%
subgraph-transition-enter: task duration 853ms 762ms -11%
subgraph-transition-enter: script duration 35ms 29ms -16%
subgraph-transition-enter: TBT 156ms 165ms +6%
subgraph-transition-enter: heap used 97.4 MB 75.5 MB -22%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2533 2533 +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 64ms 56ms -12%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 250 252 +1%
viewport-pan-sweep: task duration 3877ms 3713ms -4%
viewport-pan-sweep: script duration 1267ms 1246ms -2%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 66.9 MB 67.3 MB +1%
viewport-pan-sweep: DOM nodes -272 -122 -55%
viewport-pan-sweep: event listeners -183 -82 -55%
vue-large-graph-idle: avg frame time 18ms 17ms -5%
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 14438ms 12224ms -15%
vue-large-graph-idle: script duration 624ms 561ms -10%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 151.5 MB 160.5 MB +6%
vue-large-graph-idle: DOM nodes -3301 -3301 -0%
vue-large-graph-idle: event listeners -16374 -16383 +0%
vue-large-graph-pan: avg frame time 18ms 17ms -3%
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 26ms 18ms -31%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 122 75 -39%
vue-large-graph-pan: task duration 17175ms 15107ms -12%
vue-large-graph-pan: script duration 851ms 822ms -3%
vue-large-graph-pan: TBT 84ms 43ms -49%
vue-large-graph-pan: heap used 163.3 MB 165.1 MB +1%
vue-large-graph-pan: DOM nodes -3300 -3300 +0%
vue-large-graph-pan: event listeners -16376 -16370 -0%
workflow-execution: avg frame time 17ms 17ms +0% z=1.1
workflow-execution: p95 frame time 17ms 17ms +0%
workflow-execution: layout duration 2ms 1ms -6% z=-0.8
workflow-execution: style recalc duration 23ms 29ms +29% ⚠️ z=2.3
workflow-execution: layout count 5 5 +0% z=0.1
workflow-execution: style recalc count 15 19 +27% z=0.6
workflow-execution: task duration 225ms 181ms -20% ⚠️ z=5.4
workflow-execution: script duration 17ms 19ms +8% z=-3.5
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 46.5 MB 56.3 MB +21%
workflow-execution: DOM nodes -173 -6 -97% z=-23.5
workflow-execution: event listeners -132 -32 -76% z=-19.1
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-07-08T23:51:50.770Z",
  "gitSha": "d52d9ff9487a1ac763b8f2fe6047bf79f1ee06bc",
  "branch": "agent/upgrade-typescript-7",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2022.232000000031,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.581,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 366.952,
      "heapDeltaBytes": 2753408,
      "heapUsedBytes": 67980112,
      "domNodes": 20,
      "jsHeapTotalBytes": 20471808,
      "scriptDurationMs": 16.977999999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2071.9369999999913,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.699000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 460.11,
      "heapDeltaBytes": -7511400,
      "heapUsedBytes": 62060624,
      "domNodes": -282,
      "jsHeapTotalBytes": 18501632,
      "scriptDurationMs": 20.609999999999996,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1976.3269999999693,
      "styleRecalcs": 80,
      "styleRecalcDurationMs": 56.291,
      "layouts": 12,
      "layoutDurationMs": 3.6490000000000005,
      "taskDurationMs": 944.8710000000001,
      "heapDeltaBytes": -12571384,
      "heapUsedBytes": 56880692,
      "domNodes": -238,
      "jsHeapTotalBytes": 18763776,
      "scriptDurationMs": 138.424,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1829.8810000000003,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 42.13999999999999,
      "layouts": 12,
      "layoutDurationMs": 3.8369999999999993,
      "taskDurationMs": 797.457,
      "heapDeltaBytes": -2543756,
      "heapUsedBytes": 62751332,
      "domNodes": 58,
      "jsHeapTotalBytes": 20996096,
      "scriptDurationMs": 129.43099999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1744.4810000000075,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 17.63,
      "layouts": 6,
      "layoutDurationMs": 0.6199999999999999,
      "taskDurationMs": 324.61600000000004,
      "heapDeltaBytes": 4892768,
      "heapUsedBytes": 56595120,
      "domNodes": -241,
      "jsHeapTotalBytes": 1175552,
      "scriptDurationMs": 18.536000000000005,
      "eventListeners": -186,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1721.5400000000045,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 15.981000000000002,
      "layouts": 6,
      "layoutDurationMs": 0.655,
      "taskDurationMs": 309.115,
      "heapDeltaBytes": 2286920,
      "heapUsedBytes": 61101516,
      "domNodes": 78,
      "jsHeapTotalBytes": 24379392,
      "scriptDurationMs": 18.033,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 586.2280000000055,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.768000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 346.138,
      "heapDeltaBytes": 7155592,
      "heapUsedBytes": 65989868,
      "domNodes": 16,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 60.804,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 592.960000000005,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 9.633999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 395.20300000000003,
      "heapDeltaBytes": -22835020,
      "heapUsedBytes": 46690216,
      "domNodes": -277,
      "jsHeapTotalBytes": 4870144,
      "scriptDurationMs": 60.919000000000004,
      "eventListeners": -203,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2033.7710000000015,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 6.9110000000000005,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 516.068,
      "heapDeltaBytes": -981932,
      "heapUsedBytes": 59041636,
      "domNodes": -275,
      "jsHeapTotalBytes": -1089536,
      "scriptDurationMs": 86.26700000000001,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2007.2450000000117,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 11.248999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 546.5210000000001,
      "heapDeltaBytes": -9706248,
      "heapUsedBytes": 62096732,
      "domNodes": 20,
      "jsHeapTotalBytes": 10366976,
      "scriptDurationMs": 103.583,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2115.201000000013,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 16.793999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1102.7089999999998,
      "heapDeltaBytes": 14258100,
      "heapUsedBytes": 82763572,
      "domNodes": -274,
      "jsHeapTotalBytes": -1638400,
      "scriptDurationMs": 423.665,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2083.184000000074,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 15.975000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1069.517,
      "heapDeltaBytes": 27599344,
      "heapUsedBytes": 82490320,
      "domNodes": 10,
      "jsHeapTotalBytes": 1777664,
      "scriptDurationMs": 397.135,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3103.464000000031,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 15.39,
      "layouts": 60,
      "layoutDurationMs": 7.200000000000001,
      "taskDurationMs": 1265.118,
      "heapDeltaBytes": 14010536,
      "heapUsedBytes": 68274572,
      "domNodes": 6,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 476.7710000000001,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3146.571999999992,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 17.206000000000003,
      "layouts": 60,
      "layoutDurationMs": 7.812000000000001,
      "taskDurationMs": 1371.1689999999999,
      "heapDeltaBytes": 16604144,
      "heapUsedBytes": 79848884,
      "domNodes": -275,
      "jsHeapTotalBytes": 4997120,
      "scriptDurationMs": 508.29099999999994,
      "eventListeners": -128,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "minimap-idle",
      "durationMs": 2013.8479999999959,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.194999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 494.75699999999995,
      "heapDeltaBytes": -9745892,
      "heapUsedBytes": 64288280,
      "domNodes": 18,
      "jsHeapTotalBytes": 8007680,
      "scriptDurationMs": 92.97999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2008.2119999999577,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.347,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 512.648,
      "heapDeltaBytes": -3275708,
      "heapUsedBytes": 57903292,
      "domNodes": -265,
      "jsHeapTotalBytes": 3948544,
      "scriptDurationMs": 84.956,
      "eventListeners": -126,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 594.4610000000239,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 12.614000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 406.485,
      "heapDeltaBytes": -4083860,
      "heapUsedBytes": 48772084,
      "domNodes": -277,
      "jsHeapTotalBytes": 126976,
      "scriptDurationMs": 125.677,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 579.6410000000378,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.812000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 366.05,
      "heapDeltaBytes": -16384568,
      "heapUsedBytes": 47960340,
      "domNodes": 20,
      "jsHeapTotalBytes": 23879680,
      "scriptDurationMs": 125.88,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2087.3700000000213,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 17.431,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 411.2710000000001,
      "heapDeltaBytes": -8257156,
      "heapUsedBytes": 61278644,
      "domNodes": -282,
      "jsHeapTotalBytes": 19025920,
      "scriptDurationMs": 18.252000000000006,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2024.6510000000058,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 10.575,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 372.339,
      "heapDeltaBytes": 2260708,
      "heapUsedBytes": 67957112,
      "domNodes": 20,
      "jsHeapTotalBytes": 20209664,
      "scriptDurationMs": 15.861,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1726.5810000000101,
      "styleRecalcs": 75,
      "styleRecalcDurationMs": 38.86,
      "layouts": 16,
      "layoutDurationMs": 4.418,
      "taskDurationMs": 680.6809999999999,
      "heapDeltaBytes": 19088120,
      "heapUsedBytes": 76921368,
      "domNodes": 62,
      "jsHeapTotalBytes": 19398656,
      "scriptDurationMs": 93.304,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1740.2460000000701,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.928000000000004,
      "layouts": 16,
      "layoutDurationMs": 4.388,
      "taskDurationMs": 745.899,
      "heapDeltaBytes": -7067724,
      "heapUsedBytes": 45342316,
      "domNodes": -260,
      "jsHeapTotalBytes": 17428480,
      "scriptDurationMs": 97.074,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 999.0840000000389,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 33.294000000000004,
      "layouts": 15,
      "layoutDurationMs": 16.09,
      "taskDurationMs": 761.9419999999997,
      "heapDeltaBytes": 2628508,
      "heapUsedBytes": 79138080,
      "domNodes": 13673,
      "jsHeapTotalBytes": 16515072,
      "scriptDurationMs": 29.21699999999999,
      "eventListeners": 2533,
      "totalBlockingTimeMs": 165,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8188.572999999962,
      "styleRecalcs": 251,
      "styleRecalcDurationMs": 51.913000000000004,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3713.566,
      "heapDeltaBytes": 2509904,
      "heapUsedBytes": 69721852,
      "domNodes": -264,
      "jsHeapTotalBytes": 983040,
      "scriptDurationMs": 1228.277,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8215.8290000001,
      "styleRecalcs": 252,
      "styleRecalcDurationMs": 60.857000000000006,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3713.1310000000003,
      "heapDeltaBytes": -391560,
      "heapUsedBytes": 71468304,
      "domNodes": 20,
      "jsHeapTotalBytes": 18145280,
      "scriptDurationMs": 1263.331,
      "eventListeners": 20,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12534.474000000046,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12503.144000000002,
      "heapDeltaBytes": -46266468,
      "heapUsedBytes": 166244140,
      "domNodes": -3300,
      "jsHeapTotalBytes": -1863680,
      "scriptDurationMs": 601.9460000000001,
      "eventListeners": -16380,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 11963.735000000042,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11945.161,
      "heapDeltaBytes": -45161092,
      "heapUsedBytes": 170258392,
      "domNodes": -3301,
      "jsHeapTotalBytes": 15962112,
      "scriptDurationMs": 519.4499999999999,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.216666666666665,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 15353.548000000046,
      "styleRecalcs": 81,
      "styleRecalcDurationMs": 19.518000000000036,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 15305.298,
      "heapDeltaBytes": -41566980,
      "heapUsedBytes": 164421512,
      "domNodes": -3300,
      "jsHeapTotalBytes": 1019904,
      "scriptDurationMs": 852.428,
      "eventListeners": -16376,
      "totalBlockingTimeMs": 24,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14932.877000000077,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 16.771000000000036,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14908.943,
      "heapDeltaBytes": -9872192,
      "heapUsedBytes": 181864492,
      "domNodes": -3300,
      "jsHeapTotalBytes": 21671936,
      "scriptDurationMs": 792.0480000000001,
      "eventListeners": -16364,
      "totalBlockingTimeMs": 62,
      "frameDurationMs": 17.223333333333358,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 479.48800000000347,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 31.771,
      "layouts": 5,
      "layoutDurationMs": 1.433,
      "taskDurationMs": 240.94199999999998,
      "heapDeltaBytes": -22122824,
      "heapUsedBytes": 48694492,
      "domNodes": -169,
      "jsHeapTotalBytes": 4345856,
      "scriptDurationMs": 19.439999999999998,
      "eventListeners": -134,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 453.63499999996293,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 27.073,
      "layouts": 5,
      "layoutDurationMs": 1.4230000000000003,
      "taskDurationMs": 120.938,
      "heapDeltaBytes": 4958776,
      "heapUsedBytes": 69433428,
      "domNodes": 157,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 18.034000000000002,
      "eventListeners": 71,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@socket-security

socket-security Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​typescript@​7.0.2991008996100
Addednpm/​typescript@​6.0.3100100909690

View full report

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/design-system/package.json`:
- Around line 22-23: The typecheck script is still using the default tsc binary,
so it may not run with the intended TypeScript 7 toolchain. Update the
package.json typecheck entry in packages/design-system to invoke the TypeScript
7 executable directly, using the existing typescript-7 dependency reference so
the script is pinned to that version instead of the default compiler.

In `@pnpm-workspace.yaml`:
- Around line 178-200: The TypeScript age-exclude entries are pinned to an
outdated catalog version, so keep the `minimumReleaseAgeExclude` list in
`pnpm-workspace.yaml` synchronized with the current `typescript-7` version.
Update the `@typescript/*` package entries and the `typescript` entry together
whenever the catalog version changes, so the exclusions continue to match the
exact published artifacts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 327dd794-ff19-44e6-9f5a-ecd7f74156c3

📥 Commits

Reviewing files that changed from the base of the PR and between 1efe8d9 and c034796.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (16)
  • apps/desktop-ui/.storybook/preview.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminal.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.test.ts
  • apps/desktop-ui/src/constants/desktopDialogs.test.ts
  • apps/desktop-ui/src/constants/desktopMaintenanceTasks.test.ts
  • apps/desktop-ui/src/utils/electronMirrorCheck.test.ts
  • apps/desktop-ui/src/utils/envUtil.ts
  • apps/desktop-ui/tsconfig.json
  • packages/design-system/package.json
  • packages/object-info-parser/package.json
  • packages/shared-frontend-utils/package.json
  • packages/shared-frontend-utils/src/piiUtil.test.ts
  • packages/shared-frontend-utils/src/piiUtil.ts
  • packages/tailwind-utils/package.json
  • pnpm-workspace.yaml
  • src/composables/maskeditor/useGPUResources.ts
💤 Files with no reviewable changes (1)
  • apps/desktop-ui/.storybook/preview.ts

Comment thread packages/design-system/package.json
Comment thread pnpm-workspace.yaml
@codecov

codecov Bot commented Jul 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #13523      +/-   ##
==========================================
+ Coverage   77.50%   77.52%   +0.01%     
==========================================
  Files        1650     1651       +1     
  Lines       92928    92979      +51     
  Branches    32116    32788     +672     
==========================================
+ Hits        72021    72078      +57     
+ Misses      20236    20228       -8     
- Partials      671      673       +2     
Flag Coverage Δ
unit 65.72% <ø> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/composables/maskeditor/useGPUResources.ts 80.00% <ø> (ø)

... and 17 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 force-pushed the agent/upgrade-typescript-7 branch 2 times, most recently from 77edc2c to 90ab044 Compare July 8, 2026 21:07

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/desktop-ui/tsconfig.json`:
- Around line 10-15: The TypeScript config in tsconfig.json is missing Node
ambient types, which breaks imports and process usage in the Vite/Vitest config
files. Update the types whitelist to include node alongside the existing entries
so vite.config.mts and vitest.config.mts can use node:path, node:url, and
process.env; the key symbols to check are the types array in tsconfig.json and
the config files that rely on Node globals.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ec546d1d-62f6-43a6-be18-44a3d35a2ae0

📥 Commits

Reviewing files that changed from the base of the PR and between 77edc2c and 90ab044.

📒 Files selected for processing (11)
  • apps/desktop-ui/.storybook/preview.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminal.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.test.ts
  • apps/desktop-ui/src/constants/desktopDialogs.test.ts
  • apps/desktop-ui/src/constants/desktopMaintenanceTasks.test.ts
  • apps/desktop-ui/src/utils/electronMirrorCheck.test.ts
  • apps/desktop-ui/src/utils/envUtil.ts
  • apps/desktop-ui/tsconfig.json
  • packages/shared-frontend-utils/src/piiUtil.test.ts
  • packages/shared-frontend-utils/src/piiUtil.ts
  • src/composables/maskeditor/useGPUResources.ts
💤 Files with no reviewable changes (1)
  • apps/desktop-ui/.storybook/preview.ts

Comment thread apps/desktop-ui/tsconfig.json
@huang47 huang47 force-pushed the agent/upgrade-typescript-7 branch from 90ab044 to b690add Compare July 8, 2026 21:34

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/desktop-ui/src/utils/envUtil.ts`:
- Around line 3-7: The ElectronWindow alias is too loosely typed because
electronAPI is using Record<string, unknown>, so it won’t validate mocks or
downstream usage. Update ElectronWindow in envUtil.ts to reference the shared
ElectronAPI contract (or a narrow explicit interface that matches it) instead of
a generic record, and keep Config typed from that same shape so the cast
provides real compile-time safety.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 641bea5b-33b5-4402-983b-c31c6ed1f9f9

📥 Commits

Reviewing files that changed from the base of the PR and between 90ab044 and b690add.

📒 Files selected for processing (11)
  • apps/desktop-ui/.storybook/preview.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminal.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.ts
  • apps/desktop-ui/src/constants/desktopDialogs.test.ts
  • apps/desktop-ui/src/constants/desktopMaintenanceTasks.test.ts
  • apps/desktop-ui/src/utils/electronMirrorCheck.test.ts
  • apps/desktop-ui/src/utils/envUtil.ts
  • apps/desktop-ui/tsconfig.json
  • packages/shared-frontend-utils/src/piiUtil.test.ts
  • src/composables/maskeditor/useGPUResources.ts
💤 Files with no reviewable changes (1)
  • apps/desktop-ui/.storybook/preview.ts

Comment thread apps/desktop-ui/src/utils/envUtil.ts Outdated
@huang47

huang47 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

♻️ Duplicate comments (1)
apps/desktop-ui/src/utils/envUtil.ts (1)

3-7: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

ElectronWindow still loosely typed — previously flagged.

The electronAPI property remains Record<string, unknown>, so the cast on line 14 carries all the type safety. Wiring ElectronAPI directly into ElectronWindow would give compile-time validation at mock sites (e.g., InstallView.stories.ts) and eliminate the redundant as ElectronAPI assertion.

This was raised in a prior review and remains unaddressed.

♻️ Proposed fix
 export type ElectronWindow = typeof window & {
-  electronAPI: Record<string, unknown> & {
-    Config: Record<string, unknown>
-  }
+  electronAPI: ElectronAPI
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/desktop-ui/src/utils/envUtil.ts` around lines 3 - 7, The ElectronWindow
type is still too loose because electronAPI is defined with Record<string,
unknown>, so the later cast to ElectronAPI remains necessary. Update
ElectronWindow in envUtil to use the concrete ElectronAPI type for electronAPI
(while keeping Config typed), and then remove the redundant as ElectronAPI
assertion at the usage site so mock callers like InstallView.stories.ts get
compile-time validation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/desktop-ui/tsconfig.json`:
- Around line 9-15: The apps/desktop-ui tsconfig.json types array is overriding
the parent config and dropping Node ambient declarations, which breaks
typechecking for vite.config.mts and vitest.config.mts usages like node:path,
node:url, and process.env. Update the types array in this config to include node
alongside the existing entries so the Node globals and module typings are
restored without affecting the other referenced type packages.

In `@packages/object-info-parser/package.json`:
- Line 22: The typecheck scripts are still invoking the generic tsc binary,
which can resolve to TypeScript 6.x instead of the intended 7.x when both
toolchains are present. Update the typecheck commands in the affected package
manifests to explicitly use the TypeScript 7 entrypoint, and keep the existing
typescript-7 dependency wiring in place so the scripts in
packages/object-info-parser, packages/design-system,
packages/shared-frontend-utils, and packages/tailwind-utils consistently run
against 7.x.

In `@packages/shared-frontend-utils/package.json`:
- Around line 21-22: The typecheck script is using the plain tsc binary, so make
sure it resolves to the TypeScript 7 toolchain instead of the older TypeScript
package. Update the package setup around the typecheck entry in package.json and
verify the tsc resolution logic used by object-info-parser so this workspace
consistently runs tsc from typescript-7. Keep the fix aligned with the existing
package manager/catalog dependency names and the typecheck script behavior.

In `@packages/tailwind-utils/package.json`:
- Around line 19-20: The package’s typecheck flow may be picking up the wrong
tsc binary, so verify that `tsc --noEmit` resolves to the TypeScript 7 package
rather than the TypeScript package. Update the package.json setup around the
typecheck script and dependency aliases so the `typescript-7` entry is the one
actually used, following the same verification approach as `object-info-parser`.
Use the `typecheck` script and the `typescript` / `typescript-7` package entries
as the key symbols to check and adjust.

---

Duplicate comments:
In `@apps/desktop-ui/src/utils/envUtil.ts`:
- Around line 3-7: The ElectronWindow type is still too loose because
electronAPI is defined with Record<string, unknown>, so the later cast to
ElectronAPI remains necessary. Update ElectronWindow in envUtil to use the
concrete ElectronAPI type for electronAPI (while keeping Config typed), and then
remove the redundant as ElectronAPI assertion at the usage site so mock callers
like InstallView.stories.ts get compile-time validation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e851012d-8e07-4c96-be37-791d6afc8a01

📥 Commits

Reviewing files that changed from the base of the PR and between e11f98b and b690add.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (16)
  • apps/desktop-ui/.storybook/preview.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminal.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.test.ts
  • apps/desktop-ui/src/composables/bottomPanelTabs/useTerminalBuffer.ts
  • apps/desktop-ui/src/constants/desktopDialogs.test.ts
  • apps/desktop-ui/src/constants/desktopMaintenanceTasks.test.ts
  • apps/desktop-ui/src/utils/electronMirrorCheck.test.ts
  • apps/desktop-ui/src/utils/envUtil.ts
  • apps/desktop-ui/tsconfig.json
  • packages/design-system/package.json
  • packages/object-info-parser/package.json
  • packages/shared-frontend-utils/package.json
  • packages/shared-frontend-utils/src/piiUtil.test.ts
  • packages/tailwind-utils/package.json
  • pnpm-workspace.yaml
  • src/composables/maskeditor/useGPUResources.ts
💤 Files with no reviewable changes (1)
  • apps/desktop-ui/.storybook/preview.ts

Comment thread apps/desktop-ui/tsconfig.json
},
"devDependencies": {
"typescript": "catalog:",
"typescript-7": "catalog:",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Check what binaries each typescript package exposes in the lockfile
echo "== typescript and typescript-7 in lockfile =="
rg -n -A10 'typescript-7:' pnpm-lock.yaml | head -30
echo "---"
rg -n -A10 "^\s+typescript:" pnpm-lock.yaml | head -30

# Check if TS 6.x provides a differently-named bin (e.g. tsc6) or standard tsc
echo
echo "== Check bin field in installed typescript packages =="
for pkg in typescript typescript-7; do
  if [ -f "node_modules/$pkg/package.json" ]; then
    echo "--- $pkg bin ---"
    jq '.bin' "node_modules/$pkg/package.json" 2>/dev/null || echo "no package.json"
  fi
done

# Check .bin directory for tsc symlinks
echo
echo "== .bin/tsc resolution =="
ls -la node_modules/.bin/tsc* 2>/dev/null || echo "no .bin/tsc found"
readlink -f node_modules/.bin/tsc 2>/dev/null || true

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2377


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== relevant package manifests =="
for f in \
  packages/object-info-parser/package.json \
  packages/design-system/package.json \
  packages/shared-frontend-utils/package.json \
  packages/tailwind-utils/package.json \
  package.json
do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    cat -n "$f" | sed -n '1,220p'
    echo
  fi
done

echo "== workspace references to tsc/typecheck =="
rg -n '"typecheck"|\\btsc --noEmit\\b|typescript-7|typescript": "catalog:|typescript-7": "catalog:' packages package.json pnpm-workspace.yaml pnpm-lock.yaml -g '!**/dist/**' -g '!**/build/**'

echo
echo "== installed package bin metadata, if present =="
for pkg in typescript typescript-7; do
  if [ -f "node_modules/$pkg/package.json" ]; then
    echo "--- node_modules/$pkg/package.json ---"
    jq '{name, version, bin}' "node_modules/$pkg/package.json"
  fi
done

echo
echo "== .bin entries related to tsc, if present =="
ls -la node_modules/.bin/tsc* 2>/dev/null || true
readlink -f node_modules/.bin/tsc 2>/dev/null || true

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 15684


🌐 Web query:

pnpm alias package binary conflict two dependencies expose same bin name .bin resolution order tsc typescript alias

💡 Result:

When two dependencies expose a binary with the same name, pnpm may encounter a conflict in the node_modules/.bin directory [1][2]. Because pnpm does not currently enforce strict conflict prevention for non-global installs, one of the binaries will generally overwrite or take precedence over the other, often depending on the order of operations or package name [1][2]. For scenarios involving TypeScript (tsc) or other tools where bin conflicts arise (e.g., when using multiple versions of a package via aliases), you can manage these conflicts using the following strategies: 1. Use pnpm exec: Instead of relying on the binaries linked in node_modules/.bin, use pnpm exec . This command automatically resolves the binary to the correct package based on your project's dependency graph, effectively bypassing path-based resolution conflicts [3]. 2. Avoid reliance on.bin resolution: If you are encountering issues where tools like tsc call the wrong binary, ensure your scripts are explicitly running via pnpm run or pnpm exec, which set up the environment to correctly prioritize the locally installed versions of your direct dependencies. 3. Monitor Issue Tracker: pnpm development is ongoing regarding bin conflict resolution, with efforts to improve consistency, particularly by applying bin ownership overrides [4]. If you are using package aliases (e.g., installing a package under a different name to avoid version conflicts), note that pnpm treats these as separate packages [5]. If those separate packages still expose the same bin name, the conflict will persist because the binary filename remains the same [1]. There is currently no native feature to automatically rename binaries via package aliases in the dependencies section of package.json [1]. You may need to use tools or scripts to manually manage or symlink the desired binary if pnpm's default conflict resolution does not select the one you require [2]. Top results: [1][4][2][3][5]

Citations:


Invoke TypeScript 7 explicitly in these typecheck scripts. tsc --noEmit is ambiguous when both typescript and typescript-7 expose tsc, so these packages can still run against 6.x instead of 7.x: packages/object-info-parser/package.json, packages/design-system/package.json, packages/shared-frontend-utils/package.json, and packages/tailwind-utils/package.json.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/object-info-parser/package.json` at line 22, The typecheck scripts
are still invoking the generic tsc binary, which can resolve to TypeScript 6.x
instead of the intended 7.x when both toolchains are present. Update the
typecheck commands in the affected package manifests to explicitly use the
TypeScript 7 entrypoint, and keep the existing typescript-7 dependency wiring in
place so the scripts in packages/object-info-parser, packages/design-system,
packages/shared-frontend-utils, and packages/tailwind-utils consistently run
against 7.x.

Comment thread packages/shared-frontend-utils/package.json
Comment thread packages/tailwind-utils/package.json
@huang47 huang47 force-pushed the agent/upgrade-typescript-7 branch from b690add to 1b0d458 Compare July 8, 2026 23:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant