Skip to content

fix: support progressive fallback for deeply nested model directories#10196

Open
deepme987 wants to merge 3 commits intomainfrom
fix/model-to-node-nested-directory-fallback
Open

fix: support progressive fallback for deeply nested model directories#10196
deepme987 wants to merge 3 commits intomainfrom
fix/model-to-node-nested-directory-fallback

Conversation

@deepme987
Copy link
Contributor

@deepme987 deepme987 commented Mar 17, 2026

Summary

  • Fix findProvidersWithFallback to try all parent paths progressively instead of jumping from exact match to top-level segment only. Previously "a/b/c" would try "a/b/c" then "a", now correctly tries "a/b/c""a/b""a"
  • Use empty key '' for DownloadAndLoadCogVideoControlNet and DownloadAndLoadCogVideoModel registrations so shouldUseAssetBrowser returns false — these nodes use HuggingFace repo names, not file-based assets, so the asset browser finds nothing and shows an empty dropdown

Test plan

  • All 46 existing modelToNodeStore tests pass
  • Verify CogVideo ControlNet and HF model dropdowns show options (after backend deploy)
  • Verify "Use" button on CogVideo/ControlNet/* models creates the correct node
  • Verify GGUF asset browser still works

Previously, modelToNode fallback only tried exact match then top-level
segment (e.g., "a/b/c" → "a"), skipping intermediate paths. Now tries
all parent paths progressively ("a/b/c" → "a/b" → "a"), fixing custom
nodes with longer nested directory structures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@deepme987 deepme987 added the verified bug Something isn't working (confirmed by the team) label Mar 17, 2026
@github-actions
Copy link

github-actions bot commented Mar 17, 2026

🎭 Playwright: ✅ 636 passed, 0 failed · 3 flaky

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

@github-actions
Copy link

github-actions bot commented Mar 17, 2026

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 03/18/2026, 06:10:26 AM UTC

Links

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 17, 2026

📝 Walkthrough

Walkthrough

The pull request changes provider resolution in modelToNodeStore to iteratively search progressively shorter ancestor paths when an exact model path match is missing (e.g., "a/b/c" → "a/b" → "a"). It also alters some model registration keys from 'model' to '' and adds explanatory comments for those empty-key registrations.

Changes

Cohort / File(s) Summary
Provider Fallback Logic & Registrations
src/stores/modelToNodeStore.ts
Replaces one-level fallback with a loop that traverses parent paths until a provider match is found or none remain; updates comments/docs. Changes some quickRegister calls to use an empty-string registration key ('') for specific CogVideo/ControlNet mappings and adds an explanatory comment above those calls.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hop from leaf to parent, nimble and keen,
From "a/b/c" to "a/b" then "a" I glean,
Empty keys whisper, the browser stays mute,
I trace each path in a careful pursuit,
Crunching carrots while mapping the route 🥕✨


Caution

Pre-merge checks failed

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

  • Ignore (reviewers only)

❌ Failed checks (1 error, 1 warning, 1 inconclusive)

Check name Status Explanation Resolution
End-To-End Regression Coverage For Fixes ❌ Error PR uses bug-fix language ('fix:') triggering regression test requirement, but no browser_tests files were added and no explanation for absence provided. Add a Playwright regression test under browser_tests/ covering the progressive fallback logic, or add a concrete explanation in PR description for why E2E testing is not practical.
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description covers the summary and test plan but is missing the 'What', 'Review Focus', and other structured sections from the template. Restructure the description to follow the template format: add a 'Changes' section with 'What' subsection detailing core functionality, include a 'Review Focus' section highlighting critical design decisions, and ensure all required sections are present and well-organized.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change—implementing progressive fallback for nested model directories—which is the primary focus of the pull request modifications.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/model-to-node-nested-directory-fallback
📝 Coding Plan
  • Generate coding plan for human review comments

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

@github-actions
Copy link

github-actions bot commented Mar 17, 2026

📦 Bundle: 5 MB gzip 🔴 +137 B

Details

Summary

  • Raw size: 23.1 MB baseline 23.1 MB — 🟢 -7 B
  • Gzip: 5 MB baseline 5 MB — 🔴 +137 B
  • Brotli: 3.87 MB baseline 3.87 MB — 🟢 -13 B
  • Bundles: 244 current • 244 baseline • 114 added / 114 removed

Category Glance
Data & Services 🟢 -754 B (2.91 MB) · Utilities & Hooks 🔴 +747 B (322 kB) · Vendor & Third-Party ⚪ 0 B (9.78 MB) · Other ⚪ 0 B (8.24 MB) · Graph Workspace ⚪ 0 B (1.1 MB) · Panels & Settings ⚪ 0 B (461 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-BVofLNyO.js (new) 22.7 kB 🔴 +22.7 kB 🔴 +8.03 kB 🔴 +6.9 kB
assets/index-Dlrv1i6y.js (removed) 22.7 kB 🟢 -22.7 kB 🟢 -8.03 kB 🟢 -6.89 kB

Status: 1 added / 1 removed

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

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Cl1XhWbB.js (new) 1.1 MB 🔴 +1.1 MB 🔴 +234 kB 🔴 +177 kB
assets/GraphView-DyiKz5FQ.js (removed) 1.1 MB 🟢 -1.1 MB 🟢 -234 kB 🟢 -177 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-DihXY67h.js (removed) 15.6 kB 🟢 -15.6 kB 🟢 -3.38 kB 🟢 -2.88 kB
assets/CloudSurveyView-DqwLQZvl.js (new) 15.6 kB 🔴 +15.6 kB 🔴 +3.38 kB 🔴 +2.88 kB
assets/CloudLoginView-BTGF4zv0.js (new) 11.9 kB 🔴 +11.9 kB 🔴 +3.31 kB 🔴 +2.94 kB
assets/CloudLoginView-CDnLzCvo.js (removed) 11.9 kB 🟢 -11.9 kB 🟢 -3.31 kB 🟢 -2.92 kB
assets/CloudSignupView--nYDgnzj.js (new) 9.64 kB 🔴 +9.64 kB 🔴 +2.8 kB 🔴 +2.46 kB
assets/CloudSignupView-BX6Wp6sE.js (removed) 9.64 kB 🟢 -9.64 kB 🟢 -2.8 kB 🟢 -2.44 kB
assets/UserCheckView-BA4V6E_x.js (new) 9.01 kB 🔴 +9.01 kB 🔴 +2.31 kB 🔴 +2.01 kB
assets/UserCheckView-CJI2x8cK.js (removed) 9.01 kB 🟢 -9.01 kB 🟢 -2.31 kB 🟢 -2 kB
assets/CloudLayoutView-C1rJpXnX.js (new) 7.42 kB 🔴 +7.42 kB 🔴 +2.31 kB 🔴 +2.01 kB
assets/CloudLayoutView-DjDLbQvy.js (removed) 7.42 kB 🟢 -7.42 kB 🟢 -2.3 kB 🟢 -2.01 kB
assets/CloudForgotPasswordView-Bn7J4qa8.js (removed) 5.85 kB 🟢 -5.85 kB 🟢 -2.04 kB 🟢 -1.79 kB
assets/CloudForgotPasswordView-Dbrt1Ttl.js (new) 5.85 kB 🔴 +5.85 kB 🔴 +2.04 kB 🔴 +1.79 kB
assets/CloudAuthTimeoutView-czwO6Sot.js (new) 5.21 kB 🔴 +5.21 kB 🔴 +1.88 kB 🔴 +1.65 kB
assets/CloudAuthTimeoutView-F0ceJ9eo.js (removed) 5.21 kB 🟢 -5.21 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/CloudSubscriptionRedirectView-CVwabfyT.js (removed) 4.98 kB 🟢 -4.98 kB 🟢 -1.86 kB 🟢 -1.64 kB
assets/CloudSubscriptionRedirectView-e-6oIkN3.js (new) 4.98 kB 🔴 +4.98 kB 🔴 +1.86 kB 🔴 +1.64 kB
assets/UserSelectView-DBH3dNP5.js (removed) 4.67 kB 🟢 -4.67 kB 🟢 -1.72 kB 🟢 -1.53 kB
assets/UserSelectView-Dt5QWrJV.js (new) 4.67 kB 🔴 +4.67 kB 🔴 +1.72 kB 🔴 +1.52 kB

Status: 9 added / 9 removed / 2 unchanged

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-BvKT2KkS.js (new) 28.9 kB 🔴 +28.9 kB 🔴 +6.19 kB 🔴 +5.5 kB
assets/KeybindingPanel-zUA-40wN.js (removed) 28.9 kB 🟢 -28.9 kB 🟢 -6.19 kB 🟢 -5.49 kB
assets/SecretsPanel-D4275viC.js (new) 22.3 kB 🔴 +22.3 kB 🔴 +5.41 kB 🔴 +4.75 kB
assets/SecretsPanel-DRAsbsxN.js (removed) 22.3 kB 🟢 -22.3 kB 🟢 -5.41 kB 🟢 -4.75 kB
assets/LegacyCreditsPanel-C0PRUy1z.js (removed) 21.4 kB 🟢 -21.4 kB 🟢 -5.71 kB 🟢 -5.03 kB
assets/LegacyCreditsPanel-CQNppgAL.js (new) 21.4 kB 🔴 +21.4 kB 🔴 +5.72 kB 🔴 +5.03 kB
assets/SubscriptionPanel-BffEqxgt.js (removed) 19.3 kB 🟢 -19.3 kB 🟢 -4.89 kB 🟢 -4.3 kB
assets/SubscriptionPanel-Cyg9YqRY.js (new) 19.3 kB 🔴 +19.3 kB 🔴 +4.89 kB 🔴 +4.3 kB
assets/AboutPanel-B2WHExN_.js (new) 12 kB 🔴 +12 kB 🔴 +3.31 kB 🔴 +2.97 kB
assets/AboutPanel-CXEs554F.js (removed) 12 kB 🟢 -12 kB 🟢 -3.31 kB 🟢 -2.97 kB
assets/ExtensionPanel-D4u_i4mL.js (removed) 9.66 kB 🟢 -9.66 kB 🟢 -2.76 kB 🟢 -2.44 kB
assets/ExtensionPanel-DA0PqPD1.js (new) 9.66 kB 🔴 +9.66 kB 🔴 +2.77 kB 🔴 +2.46 kB
assets/ServerConfigPanel-C_7tC2b8.js (new) 6.74 kB 🔴 +6.74 kB 🔴 +2.24 kB 🔴 +2 kB
assets/ServerConfigPanel-CEMLsR4F.js (removed) 6.74 kB 🟢 -6.74 kB 🟢 -2.23 kB 🟢 -2.04 kB
assets/UserPanel-7jqgGPwW.js (new) 6.44 kB 🔴 +6.44 kB 🔴 +2.1 kB 🔴 +1.84 kB
assets/UserPanel-Dza4sQHu.js (removed) 6.44 kB 🟢 -6.44 kB 🟢 -2.1 kB 🟢 -1.83 kB
assets/cloudRemoteConfig-BlLc15wb.js (removed) 1.74 kB 🟢 -1.74 kB 🟢 -850 B 🟢 -740 B
assets/cloudRemoteConfig-CWrhx7vr.js (new) 1.74 kB 🔴 +1.74 kB 🔴 +853 B 🔴 +740 B
assets/refreshRemoteConfig-D1Xp_e2V.js (removed) 1.45 kB 🟢 -1.45 kB 🟢 -647 B 🟢 -554 B
assets/refreshRemoteConfig-DXxUD3O6.js (new) 1.45 kB 🔴 +1.45 kB 🔴 +649 B 🔴 +554 B

Status: 10 added / 10 removed / 12 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-ClrC5oNQ.js (removed) 3.57 kB 🟢 -3.57 kB 🟢 -1.26 kB 🟢 -1.07 kB
assets/auth-CnaZs9UD.js (new) 3.57 kB 🔴 +3.57 kB 🔴 +1.26 kB 🔴 +1.07 kB
assets/SignUpForm-BnIr_Khg.js (new) 3.18 kB 🔴 +3.18 kB 🔴 +1.29 kB 🔴 +1.15 kB
assets/SignUpForm-kReYsg8j.js (removed) 3.18 kB 🟢 -3.18 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/UpdatePasswordContent-CQpuurWU.js (new) 2.56 kB 🔴 +2.56 kB 🔴 +1.14 kB 🔴 +1.01 kB
assets/UpdatePasswordContent-Hm5sAykx.js (removed) 2.56 kB 🟢 -2.56 kB 🟢 -1.14 kB 🟢 -1.01 kB
assets/firebaseAuthStore-C-I-HWtj.js (removed) 907 B 🟢 -907 B 🟢 -435 B 🟢 -385 B
assets/firebaseAuthStore-CszAsHm3.js (new) 907 B 🔴 +907 B 🔴 +436 B 🔴 +386 B
assets/auth-Buz7GrRk.js (removed) 313 B 🟢 -313 B 🟢 -196 B 🟢 -183 B
assets/auth-NIFQJJKe.js (new) 313 B 🔴 +313 B 🔴 +197 B 🔴 +191 B

Status: 5 added / 5 removed / 2 unchanged

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useShareDialog-gSzXjwsO.js (removed) 81.2 kB 🟢 -81.2 kB 🟢 -16.9 kB 🟢 -14.5 kB
assets/useShareDialog-Mnas10dj.js (new) 81.2 kB 🔴 +81.2 kB 🔴 +16.9 kB 🔴 +14.5 kB
assets/useSubscriptionDialog-CxzLY4OB.js (new) 855 B 🔴 +855 B 🔴 +426 B 🔴 +368 B
assets/useSubscriptionDialog-Dju8SSRu.js (removed) 855 B 🟢 -855 B 🟢 -425 B 🟢 -368 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-BoJ1tuJq.js (new) 14.3 kB 🔴 +14.3 kB 🔴 +4 kB 🔴 +3.58 kB
assets/ComfyQueueButton-wLL5AP1V.js (removed) 14.3 kB 🟢 -14.3 kB 🟢 -4 kB 🟢 -3.58 kB
assets/useTerminalTabs-2aBYpErN.js (removed) 10.6 kB 🟢 -10.6 kB 🟢 -3.55 kB 🟢 -3.11 kB
assets/useTerminalTabs-Demtp_aD.js (new) 10.6 kB 🔴 +10.6 kB 🔴 +3.54 kB 🔴 +3.11 kB
assets/SubscribeButton-BxY5F9bs.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -913 B
assets/SubscribeButton-Krs0XVns.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +920 B
assets/cloudFeedbackTopbarButton-CIs_Gu0_.js (new) 1.55 kB 🔴 +1.55 kB 🔴 +790 B 🔴 +709 B
assets/cloudFeedbackTopbarButton-oLB8bHgk.js (removed) 1.55 kB 🟢 -1.55 kB 🟢 -791 B 🟢 -703 B
assets/ComfyQueueButton-BULmM6Wt.js (removed) 912 B 🟢 -912 B 🟢 -439 B 🟢 -389 B
assets/ComfyQueueButton-YPxCSvqV.js (new) 912 B 🔴 +912 B 🔴 +438 B 🔴 +388 B

Status: 5 added / 5 removed / 8 unchanged

Data & Services — 2.91 MB (baseline 2.91 MB) • 🟢 -754 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-DXJKFi0J.js (removed) 1.91 MB 🟢 -1.91 MB 🟢 -439 kB 🟢 -333 kB
assets/dialogService-oOjY890z.js (new) 1.91 MB 🔴 +1.91 MB 🔴 +439 kB 🔴 +333 kB
assets/api-BSogQe2Z.js (new) 864 kB 🔴 +864 kB 🔴 +206 kB 🔴 +163 kB
assets/api-Cnv1pcmI.js (removed) 864 kB 🟢 -864 kB 🟢 -206 kB 🟢 -163 kB
assets/load3dService-BwHGwJUN.js (new) 92.3 kB 🔴 +92.3 kB 🔴 +19.6 kB 🔴 +16.9 kB
assets/load3dService-Cfb_fiiw.js (removed) 92.3 kB 🟢 -92.3 kB 🟢 -19.6 kB 🟢 -16.9 kB
assets/workflowShareService-7SLtaXJ7.js (new) 14.1 kB 🔴 +14.1 kB 🔴 +4.32 kB 🔴 +3.8 kB
assets/workflowShareService-CzU5MGBG.js (removed) 14.1 kB 🟢 -14.1 kB 🟢 -4.32 kB 🟢 -3.8 kB
assets/releaseStore-DRXjaH6X.js (new) 8.12 kB 🔴 +8.12 kB 🔴 +2.27 kB 🔴 +1.99 kB
assets/releaseStore-Dy5zNAvY.js (removed) 8.12 kB 🟢 -8.12 kB 🟢 -2.27 kB 🟢 -1.99 kB
assets/keybindingService-Bk3KeCZr.js (removed) 7.03 kB 🟢 -7.03 kB 🟢 -1.75 kB 🟢 -1.5 kB
assets/keybindingService-CcFacqOA.js (new) 7.03 kB 🔴 +7.03 kB 🔴 +1.75 kB 🔴 +1.5 kB
assets/systemStatsStore-Bx_WbbCw.js (removed) 4.92 kB 🟢 -4.92 kB 🟢 -1.67 kB 🟢 -1.44 kB
assets/systemStatsStore-Ld-gtHYy.js (new) 4.92 kB 🔴 +4.92 kB 🔴 +1.67 kB 🔴 +1.45 kB
assets/userStore-DbJR_wO5.js (removed) 2.24 kB 🟢 -2.24 kB 🟢 -869 B 🟢 -761 B
assets/userStore-ZHbnpBRH.js (new) 2.24 kB 🔴 +2.24 kB 🔴 +867 B 🔴 +767 B
assets/audioService-C1R2w1qK.js (new) 1.75 kB 🔴 +1.75 kB 🔴 +864 B 🔴 +747 B
assets/audioService-Ci9yTdGO.js (removed) 1.75 kB 🟢 -1.75 kB 🟢 -864 B 🟢 -745 B
assets/releaseStore--bfc2H5Y.js (removed) 879 B 🟢 -879 B 🟢 -430 B 🟢 -370 B
assets/releaseStore-DxJYXCjN.js (new) 879 B 🔴 +879 B 🔴 +431 B 🔴 +375 B
assets/workflowDraftStore-B_LByILF.js (new) 855 B 🔴 +855 B 🔴 +427 B 🔴 +373 B
assets/workflowDraftStore-DLiluusN.js (removed) 855 B 🟢 -855 B 🟢 -426 B 🟢 -372 B
assets/dialogService-CwBydaYS2.js (removed) 844 B 🟢 -844 B 🟢 -418 B 🟢 -365 B
assets/dialogService-D1sIAyb-2.js (new) 844 B 🔴 +844 B 🔴 +418 B 🔴 +366 B
assets/settingStore-BTEn6qdF.js (removed) 842 B 🟢 -842 B 🟢 -421 B 🟢 -365 B
assets/settingStore-CudLRjrF.js (new) 842 B 🔴 +842 B 🔴 +421 B 🔴 +366 B
assets/assetsStore-CHH583-q.js (removed) 841 B 🟢 -841 B 🟢 -421 B 🟢 -366 B
assets/assetsStore-OiO-MejJ.js (new) 841 B 🔴 +841 B 🔴 +421 B 🔴 +367 B
assets/useWorkspaceSwitch-2E6VApi-.js (removed) 747 B 🟢 -747 B 🟢 -386 B 🟢 -331 B

Status: 14 added / 15 removed / 3 unchanged

Utilities & Hooks — 322 kB (baseline 321 kB) • 🔴 +747 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-D7V6uPKa.js (removed) 231 kB 🟢 -231 kB 🟢 -51.2 kB 🟢 -41.7 kB
assets/useConflictDetection-WakWdayb.js (new) 231 kB 🔴 +231 kB 🔴 +51.2 kB 🔴 +41.8 kB
assets/useLoad3dViewer-Cb9g8y9H.js (new) 18.6 kB 🔴 +18.6 kB 🔴 +4.42 kB 🔴 +3.86 kB
assets/useLoad3dViewer-Dp50TDs9.js (removed) 18.6 kB 🟢 -18.6 kB 🟢 -4.42 kB 🟢 -3.88 kB
assets/useLoad3d-D8dqmQXf.js (new) 15 kB 🔴 +15 kB 🔴 +3.78 kB 🔴 +3.36 kB
assets/useLoad3d-DNt4v_IE.js (removed) 15 kB 🟢 -15 kB 🟢 -3.78 kB 🟢 -3.37 kB
assets/useFeatureFlags-b3-4OYNf.js (new) 5.78 kB 🔴 +5.78 kB 🔴 +1.75 kB 🔴 +1.48 kB
assets/useFeatureFlags-DrslGP1G.js (removed) 5.78 kB 🟢 -5.78 kB 🟢 -1.75 kB 🟢 -1.48 kB
assets/useWorkspaceUI-gkDpesGk.js (removed) 3.34 kB 🟢 -3.34 kB 🟢 -980 B 🟢 -808 B
assets/useWorkspaceUI-q7JFnszB.js (new) 3.34 kB 🔴 +3.34 kB 🔴 +983 B 🔴 +814 B
assets/subscriptionCheckoutUtil-DwBlMMgP.js (removed) 3.04 kB 🟢 -3.04 kB 🟢 -1.31 kB 🟢 -1.15 kB
assets/subscriptionCheckoutUtil-ekexRnE6.js (new) 3.04 kB 🔴 +3.04 kB 🔴 +1.31 kB 🔴 +1.15 kB
assets/assetPreviewUtil-DJbNgLcn.js (removed) 2.27 kB 🟢 -2.27 kB 🟢 -958 B 🟢 -833 B
assets/assetPreviewUtil-DL5ZUdkS.js (new) 2.27 kB 🔴 +2.27 kB 🔴 +958 B 🔴 +833 B
assets/useUpstreamValue-Cb6amBJ5.js (removed) 2.08 kB 🟢 -2.08 kB 🟢 -805 B 🟢 -721 B
assets/useUpstreamValue-CmFsa4Rm.js (new) 2.08 kB 🔴 +2.08 kB 🔴 +804 B 🔴 +713 B
assets/useErrorHandling-DPXIzzdD.js (new) 1.54 kB 🔴 +1.54 kB 🔴 +649 B 🔴 +555 B
assets/useErrorHandling-TOD06dSN.js (removed) 1.54 kB 🟢 -1.54 kB 🟢 -650 B 🟢 -553 B
assets/useLoad3d-B7r8jE5o.js (new) 1.02 kB 🔴 +1.02 kB 🔴 +490 B 🔴 +438 B
assets/useLoad3d-XYs9EbC_.js (removed) 1.02 kB 🟢 -1.02 kB 🟢 -487 B 🟢 -435 B
assets/audioUtils-BJejcyru.js (removed) 958 B 🟢 -958 B 🟢 -563 B 🟢 -465 B
assets/audioUtils-CeE8lTgY.js (new) 958 B 🔴 +958 B 🔴 +564 B 🔴 +461 B
assets/useLoad3dViewer-DA8YVehF.js (new) 957 B 🔴 +957 B 🔴 +454 B 🔴 +405 B
assets/useLoad3dViewer-H3LjBmoI.js (removed) 957 B 🟢 -957 B 🟢 -453 B 🟢 -402 B
assets/useCurrentUser-BWoZkxR-.js (new) 841 B 🔴 +841 B 🔴 +421 B 🔴 +368 B
assets/useCurrentUser-UUMikLzx.js (removed) 841 B 🟢 -841 B 🟢 -422 B 🟢 -365 B
assets/useWorkspaceSwitch-DLVhhL2L.js (new) 747 B 🔴 +747 B 🔴 +387 B 🔴 +327 B

Status: 14 added / 13 removed / 8 unchanged

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

External libraries and shared vendor chunks

Status: 16 unchanged

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

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-B7m_6av0.js (new) 76.2 kB 🔴 +76.2 kB 🔴 +19.7 kB 🔴 +16.8 kB
assets/core-DdmwJMgx.js (removed) 76.2 kB 🟢 -76.2 kB 🟢 -19.7 kB 🟢 -16.8 kB
assets/groupNode-9XkUMNa3.js (removed) 73.9 kB 🟢 -73.9 kB 🟢 -18.5 kB 🟢 -16.3 kB
assets/groupNode-DfncIY-2.js (new) 73.9 kB 🔴 +73.9 kB 🔴 +18.5 kB 🔴 +16.3 kB
assets/WidgetSelect-BAGK9U_d.js (removed) 63.3 kB 🟢 -63.3 kB 🟢 -13.8 kB 🟢 -11.9 kB
assets/WidgetSelect-sRcoXNl1.js (new) 63.3 kB 🔴 +63.3 kB 🔴 +13.8 kB 🔴 +11.9 kB
assets/SubscriptionRequiredDialogContentWorkspace-BRKkSjgu.js (removed) 47.2 kB 🟢 -47.2 kB 🟢 -8.8 kB 🟢 -7.63 kB
assets/SubscriptionRequiredDialogContentWorkspace-DfmqY-E4.js (new) 47.2 kB 🔴 +47.2 kB 🔴 +8.8 kB 🔴 +7.61 kB
assets/WidgetPainter-BGnoOXmS.js (removed) 33.2 kB 🟢 -33.2 kB 🟢 -8.05 kB 🟢 -7.15 kB
assets/WidgetPainter-MvwlGS56.js (new) 33.2 kB 🔴 +33.2 kB 🔴 +8.06 kB 🔴 +7.15 kB
assets/Load3DControls-C6waeA1h.js (removed) 32.1 kB 🟢 -32.1 kB 🟢 -5.47 kB 🟢 -4.75 kB
assets/Load3DControls-uRiSQEFd.js (new) 32.1 kB 🔴 +32.1 kB 🔴 +5.47 kB 🔴 +4.75 kB
assets/WorkspacePanelContent-ChTmZ8Cb.js (removed) 29.8 kB 🟢 -29.8 kB 🟢 -6.27 kB 🟢 -5.51 kB
assets/WorkspacePanelContent-CvpUC4HO.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +6.28 kB 🔴 +5.53 kB
assets/SubscriptionRequiredDialogContent-ncRBEdRL.js (new) 26.2 kB 🔴 +26.2 kB 🔴 +6.67 kB 🔴 +5.88 kB
assets/SubscriptionRequiredDialogContent-ZiE73RED.js (removed) 26.2 kB 🟢 -26.2 kB 🟢 -6.68 kB 🟢 -5.9 kB
assets/Load3dViewerContent-B6w3ay0i.js (new) 24.3 kB 🔴 +24.3 kB 🔴 +5.32 kB 🔴 +4.64 kB
assets/Load3dViewerContent-BqDUZM8W.js (removed) 24.3 kB 🟢 -24.3 kB 🟢 -5.32 kB 🟢 -4.63 kB
assets/WidgetImageCrop-BjXuubRx.js (new) 23.2 kB 🔴 +23.2 kB 🔴 +5.77 kB 🔴 +5.09 kB
assets/WidgetImageCrop-Cw_DyTF7.js (removed) 23.2 kB 🟢 -23.2 kB 🟢 -5.77 kB 🟢 -5.08 kB
assets/SubscriptionPanelContentWorkspace-B87Lek4h.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.17 kB 🔴 +4.55 kB
assets/SubscriptionPanelContentWorkspace-D4-kDvTq.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -5.17 kB 🟢 -4.57 kB
assets/CurrentUserPopoverWorkspace-Bl-ZOnIO.js (removed) 20.9 kB 🟢 -20.9 kB 🟢 -5.04 kB 🟢 -4.5 kB
assets/CurrentUserPopoverWorkspace-CgFMqC_-.js (new) 20.9 kB 🔴 +20.9 kB 🔴 +5.04 kB 🔴 +4.5 kB
assets/SignInContent-BKmBnjXH.js (new) 20.2 kB 🔴 +20.2 kB 🔴 +5.21 kB 🔴 +4.54 kB
assets/SignInContent-eFCTbOuw.js (removed) 20.2 kB 🟢 -20.2 kB 🟢 -5.21 kB 🟢 -4.54 kB
assets/WidgetInputNumber-D2fIo1hr.js (new) 19.1 kB 🔴 +19.1 kB 🔴 +4.83 kB 🔴 +4.29 kB
assets/WidgetInputNumber-DD_Qksqg.js (removed) 19.1 kB 🟢 -19.1 kB 🟢 -4.84 kB 🟢 -4.3 kB
assets/WidgetRecordAudio-C58BH-63.js (new) 18.1 kB 🔴 +18.1 kB 🔴 +5.15 kB 🔴 +4.62 kB
assets/WidgetRecordAudio-COcM0rEu.js (removed) 18.1 kB 🟢 -18.1 kB 🟢 -5.15 kB 🟢 -4.61 kB
assets/Load3D-Ciaxn-qI.js (new) 16.9 kB 🔴 +16.9 kB 🔴 +4.11 kB 🔴 +3.59 kB
assets/Load3D-D_Sfxfhc.js (removed) 16.9 kB 🟢 -16.9 kB 🟢 -4.11 kB 🟢 -3.58 kB
assets/WidgetCurve-Cjm3EDt7.js (new) 15.1 kB 🔴 +15.1 kB 🔴 +4.67 kB 🔴 +4.2 kB
assets/WidgetCurve-QKdrP7Sv.js (removed) 15.1 kB 🟢 -15.1 kB 🟢 -4.67 kB 🟢 -4.19 kB
assets/load3d-BNZxa3gs.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +4.28 kB 🔴 +3.7 kB
assets/load3d-DsdFawN3.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -4.27 kB 🟢 -3.69 kB
assets/AudioPreviewPlayer-BtT1mbxM.js (removed) 11.3 kB 🟢 -11.3 kB 🟢 -3.35 kB 🟢 -2.99 kB
assets/AudioPreviewPlayer-Di4xIzdd.js (new) 11.3 kB 🔴 +11.3 kB 🔴 +3.35 kB 🔴 +3 kB
assets/nodeTemplates-DPm7dZKm.js (removed) 9.45 kB 🟢 -9.45 kB 🟢 -3.33 kB 🟢 -2.93 kB
assets/nodeTemplates-pQhbQXAZ.js (new) 9.45 kB 🔴 +9.45 kB 🔴 +3.33 kB 🔴 +2.92 kB
assets/InviteMemberDialogContent-B38z90Nz.js (removed) 7.66 kB 🟢 -7.66 kB 🟢 -2.4 kB 🟢 -2.1 kB
assets/InviteMemberDialogContent-CNvDNOMe.js (new) 7.66 kB 🔴 +7.66 kB 🔴 +2.4 kB 🔴 +2.09 kB
assets/Load3DConfiguration-07GAdhlK.js (removed) 6.55 kB 🟢 -6.55 kB 🟢 -2.03 kB 🟢 -1.77 kB
assets/Load3DConfiguration-Cit57yFI.js (new) 6.55 kB 🔴 +6.55 kB 🔴 +2.03 kB 🔴 +1.77 kB
assets/onboardingCloudRoutes-BVNwwAgO.js (removed) 6.31 kB 🟢 -6.31 kB 🟢 -1.96 kB 🟢 -1.69 kB
assets/onboardingCloudRoutes-DPdcVkRX.js (new) 6.31 kB 🔴 +6.31 kB 🔴 +1.96 kB 🔴 +1.69 kB
assets/WidgetWithControl-BbTl4loa.js (new) 5.87 kB 🔴 +5.87 kB 🔴 +2.3 kB 🔴 +2.06 kB
assets/WidgetWithControl-wk95e6qN.js (removed) 5.87 kB 🟢 -5.87 kB 🟢 -2.31 kB 🟢 -2.06 kB
assets/CreateWorkspaceDialogContent-BjOEXH0A.js (new) 5.84 kB 🔴 +5.84 kB 🔴 +2.1 kB 🔴 +1.82 kB
assets/CreateWorkspaceDialogContent-ogaJR5cR.js (removed) 5.84 kB 🟢 -5.84 kB 🟢 -2.09 kB 🟢 -1.82 kB
assets/FreeTierDialogContent-BPm86hYC.js (new) 5.7 kB 🔴 +5.7 kB 🔴 +1.99 kB 🔴 +1.76 kB
assets/FreeTierDialogContent-WEv-pwSm.js (removed) 5.7 kB 🟢 -5.7 kB 🟢 -1.99 kB 🟢 -1.75 kB
assets/EditWorkspaceDialogContent-DjMlGhoJ.js (removed) 5.63 kB 🟢 -5.63 kB 🟢 -2.05 kB 🟢 -1.79 kB
assets/EditWorkspaceDialogContent-lxxkns9V.js (new) 5.63 kB 🔴 +5.63 kB 🔴 +2.06 kB 🔴 +1.79 kB
assets/Preview3d-BhgG_bHU.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.74 kB 🟢 -1.51 kB
assets/Preview3d-C22jGc1w.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.74 kB 🔴 +1.51 kB
assets/ValueControlPopover-B0Z1pRzO.js (removed) 5.22 kB 🟢 -5.22 kB 🟢 -1.88 kB 🟢 -1.67 kB
assets/ValueControlPopover-eVWr8GiA.js (new) 5.22 kB 🔴 +5.22 kB 🔴 +1.88 kB 🔴 +1.69 kB
assets/WidgetTextarea-CDGq98Ds.js (removed) 5.15 kB 🟢 -5.15 kB 🟢 -2.02 kB 🟢 -1.79 kB
assets/WidgetTextarea-CmVW9M3J.js (new) 5.15 kB 🔴 +5.15 kB 🔴 +2.02 kB 🔴 +1.77 kB
assets/CancelSubscriptionDialogContent-CMBEd1vI.js (new) 5.11 kB 🔴 +5.11 kB 🔴 +1.89 kB 🔴 +1.66 kB
assets/CancelSubscriptionDialogContent-DCViH0bb.js (removed) 5.11 kB 🟢 -5.11 kB 🟢 -1.89 kB 🟢 -1.65 kB
assets/DeleteWorkspaceDialogContent-8JqnbWvR.js (removed) 4.54 kB 🟢 -4.54 kB 🟢 -1.73 kB 🟢 -1.5 kB
assets/DeleteWorkspaceDialogContent-B9_3Jgil.js (new) 4.54 kB 🔴 +4.54 kB 🔴 +1.74 kB 🔴 +1.5 kB
assets/tierBenefits-DBEL-Zw9.js (removed) 4.47 kB 🟢 -4.47 kB 🟢 -1.58 kB 🟢 -1.36 kB
assets/tierBenefits-DnNov99f.js (new) 4.47 kB 🔴 +4.47 kB 🔴 +1.58 kB 🔴 +1.37 kB
assets/LeaveWorkspaceDialogContent-DFoeg_x7.js (removed) 4.37 kB 🟢 -4.37 kB 🟢 -1.68 kB 🟢 -1.45 kB
assets/LeaveWorkspaceDialogContent-rd-bKp0p.js (new) 4.37 kB 🔴 +4.37 kB 🔴 +1.68 kB 🔴 +1.46 kB
assets/RemoveMemberDialogContent-DmPYmSAO.js (new) 4.35 kB 🔴 +4.35 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/RemoveMemberDialogContent-DU0YxKtE.js (removed) 4.35 kB 🟢 -4.35 kB 🟢 -1.63 kB 🟢 -1.43 kB
assets/RevokeInviteDialogContent-C7bKDHK4.js (new) 4.26 kB 🔴 +4.26 kB 🔴 +1.65 kB 🔴 +1.44 kB
assets/RevokeInviteDialogContent-L4a7Inu0.js (removed) 4.26 kB 🟢 -4.26 kB 🟢 -1.64 kB 🟢 -1.44 kB
assets/InviteMemberUpsellDialogContent-BtHZNAwr.js (removed) 4.16 kB 🟢 -4.16 kB 🟢 -1.51 kB 🟢 -1.32 kB
assets/InviteMemberUpsellDialogContent-C4J9FfUW.js (new) 4.16 kB 🔴 +4.16 kB 🔴 +1.51 kB 🔴 +1.32 kB
assets/cloudSessionCookie-Cx-255tk.js (new) 4.02 kB 🔴 +4.02 kB 🔴 +1.44 kB 🔴 +1.24 kB
assets/cloudSessionCookie-DEiwnm1B.js (removed) 4.02 kB 🟢 -4.02 kB 🟢 -1.43 kB 🟢 -1.23 kB
assets/saveMesh-ByTJvE71.js (removed) 3.8 kB 🟢 -3.8 kB 🟢 -1.63 kB 🟢 -1.43 kB
assets/saveMesh-CBcJG_34.js (new) 3.8 kB 🔴 +3.8 kB 🔴 +1.63 kB 🔴 +1.43 kB
assets/Media3DTop-CJJYmCug.js (new) 3.73 kB 🔴 +3.73 kB 🔴 +1.56 kB 🔴 +1.37 kB
assets/Media3DTop-Dsh2uqK1.js (removed) 3.73 kB 🟢 -3.73 kB 🟢 -1.57 kB 🟢 -1.38 kB
assets/GlobalToast-6XICGJxu.js (new) 3.04 kB 🔴 +3.04 kB 🔴 +1.26 kB 🔴 +1.08 kB
assets/GlobalToast-BYpQ7-pL.js (removed) 3.04 kB 🟢 -3.04 kB 🟢 -1.26 kB 🟢 -1.08 kB
assets/SubscribeToRun-BuSnt4y9.js (removed) 2.13 kB 🟢 -2.13 kB 🟢 -980 B 🟢 -855 B
assets/SubscribeToRun-dQSP7vfL.js (new) 2.13 kB 🔴 +2.13 kB 🔴 +982 B 🔴 +889 B
assets/CloudRunButtonWrapper-BVXi8Oxn.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +859 B 🔴 +762 B
assets/CloudRunButtonWrapper-CT2xvrGA.js (removed) 1.88 kB 🟢 -1.88 kB 🟢 -861 B 🟢 -758 B
assets/cloudBadges-G4ucmuDo.js (new) 1.65 kB 🔴 +1.65 kB 🔴 +837 B 🔴 +736 B
assets/cloudBadges-zO5nrdDK.js (removed) 1.65 kB 🟢 -1.65 kB 🟢 -837 B 🟢 -736 B
assets/cloudSubscription-DComJaSk.js (removed) 1.56 kB 🟢 -1.56 kB 🟢 -758 B 🟢 -646 B
assets/cloudSubscription-DL65MuBd.js (new) 1.56 kB 🔴 +1.56 kB 🔴 +760 B 🔴 +649 B
assets/previousFullPath---pnDg3M.js (removed) 1.53 kB 🟢 -1.53 kB 🟢 -693 B 🟢 -624 B
assets/previousFullPath-BoocaRiG.js (new) 1.53 kB 🔴 +1.53 kB 🔴 +695 B 🔴 +625 B
assets/Load3D-B8eKy4Xf.js (new) 1.23 kB 🔴 +1.23 kB 🔴 +565 B 🔴 +496 B
assets/Load3D-DO_8H4Lf.js (removed) 1.23 kB 🟢 -1.23 kB 🟢 -563 B 🟢 -495 B
assets/nightlyBadges-0flvUfvh.js (new) 1.18 kB 🔴 +1.18 kB 🔴 +605 B 🔴 +535 B
assets/nightlyBadges-C2VZGp2Y.js (removed) 1.18 kB 🟢 -1.18 kB 🟢 -604 B 🟢 -535 B
assets/Load3dViewerContent-BbtdWLAJ.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -514 B 🟢 -451 B
assets/Load3dViewerContent-pu6o1ZtZ.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +515 B 🔴 +450 B
assets/SubscriptionPanelContentWorkspace-DCC85bw8.js (removed) 1.04 kB 🟢 -1.04 kB 🟢 -482 B 🟢 -417 B
assets/SubscriptionPanelContentWorkspace-Ox8oDrap.js (new) 1.04 kB 🔴 +1.04 kB 🔴 +486 B 🔴 +415 B
assets/WidgetLegacy-BLTKYa18.js (new) 864 B 🔴 +864 B 🔴 +432 B 🔴 +372 B
assets/WidgetLegacy-DoPmX-Zb.js (removed) 864 B 🟢 -864 B 🟢 -432 B 🟢 -373 B
assets/changeTracker-Ce_wIclC.js (removed) 839 B 🟢 -839 B 🟢 -422 B 🟢 -363 B
assets/changeTracker-iv28u3Cw.js (new) 839 B 🔴 +839 B 🔴 +420 B 🔴 +368 B
assets/graphHasMissingNodes-BwBsei_v.js (new) 822 B 🔴 +822 B 🔴 +409 B 🔴 +347 B
assets/graphHasMissingNodes-vvK5NVnu.js (removed) 822 B 🟢 -822 B 🟢 -414 B 🟢 -346 B

Status: 53 added / 53 removed / 79 unchanged

⚡ Performance Report

⚠️ 3 regressions detected

Metric Baseline PR (n=3) Δ Sig
canvas-zoom-sweep: style recalcs 32 33 +2% ⚠️ z=2.8
large-graph-idle: DOM nodes 26 27 +3% ⚠️ z=2.7
workflow-execution: event listeners 71 71 +0% ⚠️ z=4.6
All metrics
Metric Baseline PR (n=3) Δ Sig
canvas-idle: style recalcs 12 11 -9% z=-0.7
canvas-idle: layouts 0 0 +0%
canvas-idle: task duration 402ms 359ms -11% z=-1.1
canvas-idle: DOM nodes 24 21 -12% z=-0.7
canvas-idle: script duration 26ms 21ms -20% z=-2.1
canvas-idle: event listeners 22 6 -73% z=-1.1
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: frame duration 17ms 17ms -0% z=-0.1
canvas-mouse-sweep: style recalcs 81 79 -2% z=0.4
canvas-mouse-sweep: layouts 12 12 +0%
canvas-mouse-sweep: task duration 976ms 867ms -11% z=0.0
canvas-mouse-sweep: DOM nodes 67 64 -5% z=0.6
canvas-mouse-sweep: script duration 142ms 132ms -7% z=-0.6
canvas-mouse-sweep: event listeners 14 5 -62% z=-0.9
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: frame duration 17ms 17ms -0% z=-1.5
canvas-zoom-sweep: style recalcs 32 33 +2% ⚠️ z=2.8
canvas-zoom-sweep: layouts 6 6 +0%
canvas-zoom-sweep: task duration 322ms 299ms -7% z=-1.3
canvas-zoom-sweep: DOM nodes 82 80 -2% z=1.3
canvas-zoom-sweep: script duration 27ms 23ms -17% z=-1.6
canvas-zoom-sweep: event listeners 44 28 -36% z=1.1
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: frame duration 17ms 17ms -0% z=1.2
dom-widget-clipping: style recalcs 13 13 +3% z=0.7
dom-widget-clipping: layouts 0 0 +0%
dom-widget-clipping: task duration 373ms 351ms -6% z=-1.0
dom-widget-clipping: DOM nodes 22 23 +6% z=0.8
dom-widget-clipping: script duration 69ms 66ms -3% z=-0.5
dom-widget-clipping: event listeners 2 10 +400% variance too high
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: frame duration 17ms 17ms -0% z=-1.6
large-graph-idle: style recalcs 12 12 +0% z=1.4
large-graph-idle: layouts 0 0 +0%
large-graph-idle: task duration 551ms 488ms -11% z=-1.1
large-graph-idle: DOM nodes 26 27 +3% ⚠️ z=2.7
large-graph-idle: script duration 109ms 91ms -16% z=-1.0
large-graph-idle: event listeners 30 31 +2% z=0.9
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: frame duration 17ms 17ms +0% z=0.1
large-graph-pan: style recalcs 69 69 +0% z=-0.3
large-graph-pan: layouts 0 0 +0%
large-graph-pan: task duration 1082ms 993ms -8% z=-1.8
large-graph-pan: DOM nodes 18 19 +4% z=-0.0
large-graph-pan: script duration 410ms 380ms -7% z=-1.1
large-graph-pan: event listeners 5 5 +14% z=0.6
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: frame duration 17ms 17ms +0% z=1.2
minimap-idle: style recalcs 11 10 -9% z=0.8
minimap-idle: layouts 0 0 +0%
minimap-idle: task duration 539ms 474ms -12% z=-1.2
minimap-idle: DOM nodes 22 20 -9% z=0.8
minimap-idle: script duration 102ms 89ms -12% z=-0.9
minimap-idle: event listeners 5 6 +13% z=1.9
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: frame duration 17ms 17ms -0% z=1.1
subgraph-dom-widget-clipping: style recalcs 48 48 +0% z=0.2
subgraph-dom-widget-clipping: layouts 0 0 +0%
subgraph-dom-widget-clipping: task duration 363ms 354ms -2% z=-1.2
subgraph-dom-widget-clipping: DOM nodes 23 22 -3% z=-0.1
subgraph-dom-widget-clipping: script duration 124ms 120ms -4% z=-1.2
subgraph-dom-widget-clipping: event listeners 16 16 +0% z=-0.1
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: frame duration 17ms 17ms -0% z=0.2
subgraph-idle: style recalcs 11 12 +6% z=0.9
subgraph-idle: layouts 0 0 +0%
subgraph-idle: task duration 372ms 345ms -7% z=-1.0
subgraph-idle: DOM nodes 22 24 +6% z=1.0
subgraph-idle: script duration 20ms 18ms -12% z=-1.2
subgraph-idle: event listeners 13 14 +5% variance too high
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: frame duration 17ms 17ms -0% z=-0.7
subgraph-mouse-sweep: style recalcs 81 77 -4% z=-1.8
subgraph-mouse-sweep: layouts 16 16 +0%
subgraph-mouse-sweep: task duration 786ms 662ms -16% z=-1.7
subgraph-mouse-sweep: DOM nodes 68 64 -6% z=-1.8
subgraph-mouse-sweep: script duration 104ms 95ms -8% z=-0.9
subgraph-mouse-sweep: event listeners 13 4 -68% variance too high
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: frame duration 17ms 17ms -0% z=-0.7
vue-large-graph-idle: style recalcs 0 0 +0%
vue-large-graph-idle: layouts 0 0 +0%
vue-large-graph-idle: task duration 12787ms 12088ms -5%
vue-large-graph-idle: DOM nodes -3338 -3336 -0%
vue-large-graph-idle: script duration 647ms 597ms -8%
vue-large-graph-idle: event listeners -16485 -16486 +0%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: frame duration 19ms 18ms -3%
vue-large-graph-pan: style recalcs 68 65 -4%
vue-large-graph-pan: layouts 0 0 +0%
vue-large-graph-pan: task duration 14648ms 14062ms -4%
vue-large-graph-pan: DOM nodes -3338 -3338 +0%
vue-large-graph-pan: script duration 889ms 841ms -5%
vue-large-graph-pan: event listeners -16485 -16486 +0%
vue-large-graph-pan: TBT 23ms 17ms -26%
vue-large-graph-pan: frame duration 19ms 18ms -3%
workflow-execution: style recalcs 19 20 +7% z=1.9
workflow-execution: layouts 5 5 -7% z=-0.9
workflow-execution: task duration 130ms 118ms -9% z=-0.6
workflow-execution: DOM nodes 160 169 +5% z=1.3
workflow-execution: script duration 30ms 26ms -14% z=-1.1
workflow-execution: event listeners 71 71 +0% ⚠️ z=4.6
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: frame duration 17ms 17ms +0% z=0.7
Historical variance (last 10 runs)
Metric μ σ CV
canvas-idle: style recalcs 11 1 4.9%
canvas-idle: layouts 0 0 0.0%
canvas-idle: task duration 397ms 35ms 8.7%
canvas-idle: DOM nodes 22 1 5.9%
canvas-idle: script duration 26ms 2ms 8.9%
canvas-idle: event listeners 10 4 38.6%
canvas-idle: TBT 0ms 0ms 0.0%
canvas-idle: frame duration 17ms 0ms 0.0%
canvas-mouse-sweep: style recalcs 79 2 2.8%
canvas-mouse-sweep: layouts 12 0 0.0%
canvas-mouse-sweep: task duration 866ms 58ms 6.7%
canvas-mouse-sweep: DOM nodes 62 2 3.6%
canvas-mouse-sweep: script duration 136ms 7ms 5.5%
canvas-mouse-sweep: event listeners 9 4 46.3%
canvas-mouse-sweep: TBT 0ms 0ms 0.0%
canvas-mouse-sweep: frame duration 17ms 0ms 0.0%
canvas-zoom-sweep: style recalcs 31 0 1.5%
canvas-zoom-sweep: layouts 6 0 0.0%
canvas-zoom-sweep: task duration 330ms 23ms 7.1%
canvas-zoom-sweep: DOM nodes 79 1 0.8%
canvas-zoom-sweep: script duration 28ms 3ms 11.4%
canvas-zoom-sweep: event listeners 23 4 18.4%
canvas-zoom-sweep: TBT 0ms 0ms 0.0%
canvas-zoom-sweep: frame duration 17ms 0ms 0.0%
dom-widget-clipping: style recalcs 13 1 4.1%
dom-widget-clipping: layouts 0 0 0.0%
dom-widget-clipping: task duration 368ms 18ms 4.8%
dom-widget-clipping: DOM nodes 22 2 7.1%
dom-widget-clipping: script duration 68ms 4ms 5.6%
dom-widget-clipping: event listeners 8 8 99.9%
dom-widget-clipping: TBT 0ms 0ms 0.0%
dom-widget-clipping: frame duration 17ms 0ms 0.0%
large-graph-idle: style recalcs 12 0 2.7%
large-graph-idle: layouts 0 0 0.0%
large-graph-idle: task duration 554ms 59ms 10.6%
large-graph-idle: DOM nodes 24 1 3.3%
large-graph-idle: script duration 104ms 12ms 11.7%
large-graph-idle: event listeners 25 7 28.2%
large-graph-idle: TBT 0ms 0ms 0.0%
large-graph-idle: frame duration 17ms 0ms 0.0%
large-graph-pan: style recalcs 70 1 0.9%
large-graph-pan: layouts 0 0 0.0%
large-graph-pan: task duration 1084ms 50ms 4.7%
large-graph-pan: DOM nodes 19 2 9.7%
large-graph-pan: script duration 405ms 23ms 5.7%
large-graph-pan: event listeners 5 1 15.9%
large-graph-pan: TBT 0ms 0ms 0.0%
large-graph-pan: frame duration 17ms 0ms 0.0%
minimap-idle: style recalcs 9 1 6.9%
minimap-idle: layouts 0 0 0.0%
minimap-idle: task duration 535ms 51ms 9.5%
minimap-idle: DOM nodes 19 1 6.9%
minimap-idle: script duration 99ms 11ms 11.1%
minimap-idle: event listeners 5 1 15.9%
minimap-idle: TBT 0ms 0ms 0.0%
minimap-idle: frame duration 17ms 0ms 0.0%
subgraph-dom-widget-clipping: style recalcs 48 1 1.4%
subgraph-dom-widget-clipping: layouts 0 0 0.0%
subgraph-dom-widget-clipping: task duration 380ms 21ms 5.5%
subgraph-dom-widget-clipping: DOM nodes 22 1 5.7%
subgraph-dom-widget-clipping: script duration 129ms 8ms 5.8%
subgraph-dom-widget-clipping: event listeners 17 7 41.7%
subgraph-dom-widget-clipping: TBT 0ms 0ms 0.0%
subgraph-dom-widget-clipping: frame duration 17ms 0ms 0.0%
subgraph-idle: style recalcs 11 1 6.9%
subgraph-idle: layouts 0 0 0.0%
subgraph-idle: task duration 375ms 31ms 8.3%
subgraph-idle: DOM nodes 22 2 7.8%
subgraph-idle: script duration 21ms 3ms 12.7%
subgraph-idle: event listeners 12 8 63.4%
subgraph-idle: TBT 0ms 0ms 0.0%
subgraph-idle: frame duration 17ms 0ms 0.0%
subgraph-mouse-sweep: style recalcs 80 2 2.2%
subgraph-mouse-sweep: layouts 16 0 0.0%
subgraph-mouse-sweep: task duration 784ms 70ms 9.0%
subgraph-mouse-sweep: DOM nodes 67 2 3.1%
subgraph-mouse-sweep: script duration 102ms 7ms 7.3%
subgraph-mouse-sweep: event listeners 8 4 51.6%
subgraph-mouse-sweep: TBT 0ms 0ms 0.0%
subgraph-mouse-sweep: frame duration 17ms 0ms 0.0%
workflow-execution: style recalcs 18 1 6.8%
workflow-execution: layouts 5 0 5.6%
workflow-execution: task duration 124ms 12ms 9.5%
workflow-execution: DOM nodes 161 6 3.8%
workflow-execution: script duration 30ms 4ms 11.8%
workflow-execution: event listeners 52 4 7.9%
workflow-execution: TBT 0ms 0ms 0.0%
workflow-execution: frame duration 17ms 0ms 0.0%
Trend (last 10 commits on main)
Metric Trend Dir Latest
canvas-idle: style recalcs █▅▁▃▁▃▆█▆█ ➡️ 12
canvas-idle: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
canvas-idle: task duration ▃▃▅▆▂█▃▁▃▃ ➡️ 391ms
canvas-idle: DOM nodes █▄▁▂▂▅▆▆▇▇ ➡️ 24
canvas-idle: script duration ▅▃▆▇▅█▄▁▅▆ ➡️ 27ms
canvas-idle: event listeners █▂▁▂▇██▂█▆ 📈 11
canvas-idle: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-idle: frame duration ▁▆█▆▆▃▁▁▃▁ ➡️ 17ms
canvas-mouse-sweep: style recalcs ▂▁▄▄▆▇▆▃█▅ ➡️ 79
canvas-mouse-sweep: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 12
canvas-mouse-sweep: task duration ▃▂▄▄▅█▆▁▆▄ ➡️ 868ms
canvas-mouse-sweep: DOM nodes ▁▁▄▂▅█▇▃▆▆ ➡️ 64
canvas-mouse-sweep: script duration ▆▆▆▅▅█▆▁▅▆ ➡️ 139ms
canvas-mouse-sweep: event listeners ▁▇▁▁▁██▇▁█ 📈 13
canvas-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-mouse-sweep: frame duration ▄▁██▁▅██▅▄ ➡️ 17ms
canvas-zoom-sweep: style recalcs ▃▆█▄▄▆▁▆▁▆ ➡️ 32
canvas-zoom-sweep: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 6
canvas-zoom-sweep: task duration ▂▄▅▆▃█▄▁▁▅ ➡️ 338ms
canvas-zoom-sweep: DOM nodes ▁▄█▅▆▆▄▃▅▄ ➡️ 79
canvas-zoom-sweep: script duration ▂▅▇▆▅█▄▁▂▆ ➡️ 30ms
canvas-zoom-sweep: event listeners ▂▂█▁██▇▁█▁ ➡️ 19
canvas-zoom-sweep: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
canvas-zoom-sweep: frame duration ▁▁▁█▁▁███▁ ➡️ 17ms
dom-widget-clipping: style recalcs ▄█▇▇▁▇▄▇▂▅ ➡️ 13
dom-widget-clipping: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
dom-widget-clipping: task duration ▃▅▆▅▂▇█▁▅▅ ➡️ 371ms
dom-widget-clipping: DOM nodes ▄█▇▅▁▅▄▇▃▄ ➡️ 21
dom-widget-clipping: script duration ▅▇▇▆▃█▇▁▇▇ ➡️ 71ms
dom-widget-clipping: event listeners ▅██▁▁▁▁█▁▁ 📉 2
dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
dom-widget-clipping: frame duration ▄█▇▅▇▇▅▅▁▇ ➡️ 17ms
large-graph-idle: style recalcs ▁▃▆▃▆▆▃▆██ ➡️ 12
large-graph-idle: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-idle: task duration ▃▃▇▅▃██▁▂▅ ➡️ 569ms
large-graph-idle: DOM nodes ▃▁▂▃▆▆▇▂█▆ ➡️ 25
large-graph-idle: script duration ▅▅▇▆▅█▆▁▃▆ ➡️ 110ms
large-graph-idle: event listeners █▄▁▄▇▇█▂█▇ 📈 29
large-graph-idle: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-idle: frame duration ▂▁▂▄▅▄▂▂▅█ ➡️ 17ms
large-graph-pan: style recalcs ▂▂▂▁▇▅▃█▆▃ ➡️ 69
large-graph-pan: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
large-graph-pan: task duration ▄▄▆▄▄█▆▁▂▅ ➡️ 1100ms
large-graph-pan: DOM nodes ▁▃▁▁▅▁▂█▅▂ ➡️ 18
large-graph-pan: script duration ▅▄▆▄▅█▄▁▄▅ ➡️ 413ms
large-graph-pan: event listeners ▆▁▁▃▆▁▃██▃ ➡️ 5
large-graph-pan: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
large-graph-pan: frame duration ▃▁█▆▆▆▆█▁▆ ➡️ 17ms
minimap-idle: style recalcs ▄█▁▂▇▂▁▇█▄ ➡️ 9
minimap-idle: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
minimap-idle: task duration ▃▄▅▇▃█▅▁▁▅ ➡️ 547ms
minimap-idle: DOM nodes ▄█▁▂▇▂▁▇█▄ ➡️ 19
minimap-idle: script duration ▅▆▆▇▅█▅▁▃▆ ➡️ 106ms
minimap-idle: event listeners ▁▃▁▁▆▁▃█▆▁ ➡️ 4
minimap-idle: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
minimap-idle: frame duration ▁█▆▆▃▃▆█▆█ ➡️ 17ms
subgraph-dom-widget-clipping: style recalcs ▃▁▆█▇▃▆▇█▅ ➡️ 48
subgraph-dom-widget-clipping: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-dom-widget-clipping: task duration ▅▂▅█▂▆█▁▂▇ ➡️ 398ms
subgraph-dom-widget-clipping: DOM nodes ▂▁▅▅▅▁▇▅█▄ ➡️ 22
subgraph-dom-widget-clipping: script duration ▅▂▄█▂▅▇▁▂▅ ➡️ 131ms
subgraph-dom-widget-clipping: event listeners ▁▅██▁▁█▅█▅ 📈 16
subgraph-dom-widget-clipping: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-dom-widget-clipping: frame duration ▄█▄▄▄▃▁▆▃▃ ➡️ 17ms
subgraph-idle: style recalcs ▅▁▂▁▆▃▃██▇ ➡️ 12
subgraph-idle: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 0
subgraph-idle: task duration ▁▃▆▅▂█▅▁▁▄ ➡️ 378ms
subgraph-idle: DOM nodes ▄▁▂▁▅▃▂▇█▇ ➡️ 24
subgraph-idle: script duration ▂▃▇▆▂█▅▂▁▅ ➡️ 22ms
subgraph-idle: event listeners ▁▁▁▁▅▄▁███ 📈 21
subgraph-idle: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-idle: frame duration ▃▆▆▆▃▆▁▃▆█ ➡️ 17ms
subgraph-mouse-sweep: style recalcs ▄▂▄█▅▆▃▁▃▄ ➡️ 81
subgraph-mouse-sweep: layouts ▄▄▄▄▄▄▄▄▄▄ ➡️ 16
subgraph-mouse-sweep: task duration ▄▄▅▇▄█▆▁▃▅ ➡️ 785ms
subgraph-mouse-sweep: DOM nodes ▃▂▃█▄▅▃▁▄▃ ➡️ 66
subgraph-mouse-sweep: script duration ▅▆▇▆▅██▁▄▆ ➡️ 105ms
subgraph-mouse-sweep: event listeners ▁▁▁█▇▂▁▇▇▁ ➡️ 5
subgraph-mouse-sweep: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
subgraph-mouse-sweep: frame duration ▄▆▄▆▃▃█▁▃▃ ➡️ 17ms
workflow-execution: style recalcs ▃▆█▇▆▆▇▃▄▁ ➡️ 15
workflow-execution: layouts ▆▆▁▆▆█▆▃▆▃ ➡️ 5
workflow-execution: task duration ▄▆▆▆▁▇█▁▃▃ ➡️ 120ms
workflow-execution: DOM nodes ▄▃▅▃█▃▃▄▃▁ ➡️ 152
workflow-execution: script duration ▅▄▅▆▂▇█▁▃▄ ➡️ 29ms
workflow-execution: event listeners ▄███▁██▄█▄ ➡️ 49
workflow-execution: TBT ▄▄▄▄▄▄▄▄▄▄ ➡️ 0ms
workflow-execution: frame duration ▆▃▄▁▄█▆▅▄▆ ➡️ 17ms
Raw data
{
  "timestamp": "2026-03-18T06:20:56.132Z",
  "gitSha": "7b26e582552f83e222a73babaf0adf1f714f1472",
  "branch": "fix/model-to-node-nested-directory-fallback",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2029.4179999999926,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.417000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 354.103,
      "heapDeltaBytes": 1056432,
      "domNodes": 22,
      "jsHeapTotalBytes": 17301504,
      "scriptDurationMs": 19.442999999999994,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "canvas-idle",
      "durationMs": 2046.1950000000115,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.414000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 356.087,
      "heapDeltaBytes": 1737676,
      "domNodes": 20,
      "jsHeapTotalBytes": 17301504,
      "scriptDurationMs": 21.217,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "canvas-idle",
      "durationMs": 2024.6230000000196,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.531,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 366.564,
      "heapDeltaBytes": 1793528,
      "domNodes": 22,
      "jsHeapTotalBytes": 17563648,
      "scriptDurationMs": 21.674,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2047.6749999999981,
      "styleRecalcs": 84,
      "styleRecalcDurationMs": 45.815000000000005,
      "layouts": 12,
      "layoutDurationMs": 3.8220000000000005,
      "taskDurationMs": 1015.6319999999998,
      "heapDeltaBytes": -2487744,
      "domNodes": 68,
      "jsHeapTotalBytes": 14680064,
      "scriptDurationMs": 136.127,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1826.1079999999765,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 36.613,
      "layouts": 12,
      "layoutDurationMs": 3.373,
      "taskDurationMs": 726.049,
      "heapDeltaBytes": -2287616,
      "domNodes": 59,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 126.37,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1948.4240000000455,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 39.317,
      "layouts": 12,
      "layoutDurationMs": 3.3359999999999994,
      "taskDurationMs": 858.3720000000001,
      "heapDeltaBytes": -2618312,
      "domNodes": 64,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 132.17299999999997,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1752.726999999993,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 17.5,
      "layouts": 6,
      "layoutDurationMs": 0.6050000000000001,
      "taskDurationMs": 292.95000000000005,
      "heapDeltaBytes": 5802020,
      "domNodes": 80,
      "jsHeapTotalBytes": 17563648,
      "scriptDurationMs": 23.078,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1756.8979999999783,
      "styleRecalcs": 33,
      "styleRecalcDurationMs": 21.220000000000002,
      "layouts": 6,
      "layoutDurationMs": 0.637,
      "taskDurationMs": 317.796,
      "heapDeltaBytes": 5979428,
      "domNodes": 82,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 26.936999999999998,
      "eventListeners": 45,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1739.4070000000283,
      "styleRecalcs": 33,
      "styleRecalcDurationMs": 17.067,
      "layouts": 6,
      "layoutDurationMs": 0.5690000000000001,
      "taskDurationMs": 287.25800000000004,
      "heapDeltaBytes": 5565764,
      "domNodes": 78,
      "jsHeapTotalBytes": 17301504,
      "scriptDurationMs": 17.645,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 565.3989999999851,
      "styleRecalcs": 14,
      "styleRecalcDurationMs": 9.392999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 334.84400000000005,
      "heapDeltaBytes": 13485772,
      "domNodes": 23,
      "jsHeapTotalBytes": 13107200,
      "scriptDurationMs": 62.769999999999996,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.65999999999999
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 576.0839999999803,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 10.530000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 355.981,
      "heapDeltaBytes": -11882044,
      "domNodes": 24,
      "jsHeapTotalBytes": 23592960,
      "scriptDurationMs": 66.684,
      "eventListeners": 26,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.65999999999999
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 574.3069999999761,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 9.054999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 361.682,
      "heapDeltaBytes": 11679904,
      "domNodes": 22,
      "jsHeapTotalBytes": 12582912,
      "scriptDurationMs": 69.318,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.65999999999999
    },
    {
      "name": "large-graph-idle",
      "durationMs": 1995.2810000000056,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 12.886999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 494.83400000000006,
      "heapDeltaBytes": 11254600,
      "domNodes": 27,
      "jsHeapTotalBytes": 6348800,
      "scriptDurationMs": 94.03299999999999,
      "eventListeners": 30,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2027.325000000019,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 11.193000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 479.829,
      "heapDeltaBytes": -10654256,
      "domNodes": 23,
      "jsHeapTotalBytes": 8507392,
      "scriptDurationMs": 91.741,
      "eventListeners": 28,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2007.8009999999722,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 12.458,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 490.199,
      "heapDeltaBytes": -10582836,
      "domNodes": 30,
      "jsHeapTotalBytes": 8769536,
      "scriptDurationMs": 87.83799999999998,
      "eventListeners": 34,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2103.9539999999874,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 15.323,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 989.741,
      "heapDeltaBytes": 1726656,
      "domNodes": 18,
      "jsHeapTotalBytes": 9756672,
      "scriptDurationMs": 376.157,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2095.2670000000353,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 16.128,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 995.605,
      "heapDeltaBytes": 1806376,
      "domNodes": 18,
      "jsHeapTotalBytes": 10543104,
      "scriptDurationMs": 381.247,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000073
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2095.3839999999673,
      "styleRecalcs": 70,
      "styleRecalcDurationMs": 16.302000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 993.9609999999999,
      "heapDeltaBytes": 4442096,
      "domNodes": 20,
      "jsHeapTotalBytes": 8450048,
      "scriptDurationMs": 382.77500000000003,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000073
    },
    {
      "name": "minimap-idle",
      "durationMs": 2002.6110000000017,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 9.122000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 466.27599999999995,
      "heapDeltaBytes": -11158264,
      "domNodes": 22,
      "jsHeapTotalBytes": 8507392,
      "scriptDurationMs": 88.348,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "minimap-idle",
      "durationMs": 2007.6109999999971,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.579999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 481.872,
      "heapDeltaBytes": -10792520,
      "domNodes": 20,
      "jsHeapTotalBytes": 8507392,
      "scriptDurationMs": 94.13300000000002,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "minimap-idle",
      "durationMs": 2014.4920000000184,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.031999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 473.2270000000001,
      "heapDeltaBytes": -12410728,
      "domNodes": 18,
      "jsHeapTotalBytes": 8769536,
      "scriptDurationMs": 85.77699999999999,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 562.7120000000332,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 10.116000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 355.496,
      "heapDeltaBytes": 13416396,
      "domNodes": 20,
      "jsHeapTotalBytes": 13631488,
      "scriptDurationMs": 121.837,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 580.1040000000057,
      "styleRecalcs": 50,
      "styleRecalcDurationMs": 14.037,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 353.186,
      "heapDeltaBytes": 12007908,
      "domNodes": 26,
      "jsHeapTotalBytes": 15990784,
      "scriptDurationMs": 114.782,
      "eventListeners": 32,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.65999999999999
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 584.2119999999795,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 11.136,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 354.784,
      "heapDeltaBytes": 12170496,
      "domNodes": 20,
      "jsHeapTotalBytes": 17039360,
      "scriptDurationMs": 122.88300000000002,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000027
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2021.2180000000046,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 10.346000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 343.933,
      "heapDeltaBytes": 1238168,
      "domNodes": 22,
      "jsHeapTotalBytes": 13631488,
      "scriptDurationMs": 17.403999999999996,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.659999999999947
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2006.371999999999,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 11.524999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 344.277,
      "heapDeltaBytes": 1731880,
      "domNodes": 27,
      "jsHeapTotalBytes": 17825792,
      "scriptDurationMs": 16.897,
      "eventListeners": 30,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1990.244999999959,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 9.989999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 345.38599999999997,
      "heapDeltaBytes": 1544880,
      "domNodes": 22,
      "jsHeapTotalBytes": 17039360,
      "scriptDurationMs": 18.791000000000004,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.659999999999947
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1710.4140000000143,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 36.863,
      "layouts": 16,
      "layoutDurationMs": 4.375,
      "taskDurationMs": 680.5880000000001,
      "heapDeltaBytes": -6436912,
      "domNodes": 65,
      "jsHeapTotalBytes": 16777216,
      "scriptDurationMs": 98.031,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1738.5170000000016,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 34.56,
      "layouts": 16,
      "layoutDurationMs": 4.545000000000001,
      "taskDurationMs": 646.9540000000001,
      "heapDeltaBytes": 16111036,
      "domNodes": 62,
      "jsHeapTotalBytes": 15466496,
      "scriptDurationMs": 93.23,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1716.8750000000728,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 37.635000000000005,
      "layouts": 16,
      "layoutDurationMs": 4.433,
      "taskDurationMs": 658.592,
      "heapDeltaBytes": -6811468,
      "domNodes": 64,
      "jsHeapTotalBytes": 15204352,
      "scriptDurationMs": 94.449,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.660000000000036
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 11957.461000000023,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11946.964000000002,
      "heapDeltaBytes": -11362696,
      "domNodes": -3336,
      "jsHeapTotalBytes": 22544384,
      "scriptDurationMs": 610.873,
      "eventListeners": -16486,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.329999999999927
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12250.441000000024,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12239.613,
      "heapDeltaBytes": -14174544,
      "domNodes": -3333,
      "jsHeapTotalBytes": 17563648,
      "scriptDurationMs": 599.202,
      "eventListeners": -16486,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.329999999999927
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 12090.192000000003,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 12078.883999999998,
      "heapDeltaBytes": -28848280,
      "domNodes": -3340,
      "jsHeapTotalBytes": 23068672,
      "scriptDurationMs": 580.229,
      "eventListeners": -16486,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.339999999999783
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14056.542999999976,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 12.419000000000013,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14034.266,
      "heapDeltaBytes": -31306820,
      "domNodes": -3333,
      "jsHeapTotalBytes": 22458368,
      "scriptDurationMs": 816.9810000000001,
      "eventListeners": -16484,
      "totalBlockingTimeMs": 50,
      "frameDurationMs": 18.329999999999927
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14072.585000000003,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 12.629000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14053.279,
      "heapDeltaBytes": -11586864,
      "domNodes": -3340,
      "jsHeapTotalBytes": 17215488,
      "scriptDurationMs": 837.6650000000001,
      "eventListeners": -16488,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.340000000000146
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 14117.745000000014,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 12.512999999999996,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 14098.603000000001,
      "heapDeltaBytes": -23883812,
      "domNodes": -3342,
      "jsHeapTotalBytes": 17739776,
      "scriptDurationMs": 869.155,
      "eventListeners": -16486,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 18.339999999999783
    },
    {
      "name": "workflow-execution",
      "durationMs": 453.8880000000063,
      "styleRecalcs": 24,
      "styleRecalcDurationMs": 24.528000000000002,
      "layouts": 5,
      "layoutDurationMs": 1.5070000000000001,
      "taskDurationMs": 127.614,
      "heapDeltaBytes": 4774608,
      "domNodes": 192,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 26.864,
      "eventListeners": 71,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.65999999999999
    },
    {
      "name": "workflow-execution",
      "durationMs": 440.51200000001245,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 22.544,
      "layouts": 4,
      "layoutDurationMs": 0.9889999999999999,
      "taskDurationMs": 108.17899999999997,
      "heapDeltaBytes": 4376740,
      "domNodes": 157,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 22.776000000000003,
      "eventListeners": 71,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000027
    },
    {
      "name": "workflow-execution",
      "durationMs": 443.3729999999514,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 22.982,
      "layouts": 5,
      "layoutDurationMs": 1.1329999999999998,
      "taskDurationMs": 116.763,
      "heapDeltaBytes": 4488336,
      "domNodes": 157,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 27.642,
      "eventListeners": 71,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998
    }
  ]
}

DownloadAndLoadCogVideoControlNet and DownloadAndLoadCogVideoModel use
HuggingFace repo names, not file-based assets. Registering with
key='model' causes shouldUseAssetBrowser to replace the combo dropdown
with the asset browser, which finds no matching assets and shows an
empty list.

Use empty key '' to keep "Use" button working while preventing asset
browser takeover — matching the pattern used by other HF-download nodes
(Chatterbox, FlashVSR, LivePortrait, etc).
@deepme987 deepme987 requested a review from a team March 18, 2026 04:11
@dosubot dosubot bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Mar 18, 2026
@deepme987 deepme987 marked this pull request as draft March 18, 2026 05:22
@DrJKL DrJKL marked this pull request as ready for review March 18, 2026 06:09
Comment on lines +91 to +97
// Try progressively shorter parent paths
const segments = modelType.split('/')
for (let i = segments.length - 1; i >= 1; i--) {
const parentPath = segments.slice(0, i).join('/')
const fallback = modelToNodeMap.value[parentPath]
if (fallback && fallback.length > 0) return fallback
}
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd love like 3 unit tests for this (or 1 parameterized one)

Comment on lines 88 to 89
const exactMatch = modelToNodeMap.value[modelType]
if (exactMatch && exactMatch.length > 0) return exactMatch
Copy link
Contributor

Choose a reason for hiding this comment

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

If you just start at segments.length, you'll get the same behavior, right?

@DrJKL DrJKL assigned deepme987 and unassigned DrJKL Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files. verified bug Something isn't working (confirmed by the team)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants