Skip to content

fix: show promoted advanced widgets on subgraph nodes - #14647

Open
jaeone94 wants to merge 8 commits into
mainfrom
jaeone/fe-854-bug-promoted-advanced-inputs-do-not-appear-as-subgraph
Open

fix: show promoted advanced widgets on subgraph nodes#14647
jaeone94 wants to merge 8 commits into
mainfrom
jaeone/fe-854-bug-promoted-advanced-inputs-do-not-appear-as-subgraph

Conversation

@jaeone94

@jaeone94 jaeone94 commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

ELI5

A control moved to the outside of a grouped node should stay usable, even if it was originally marked advanced. This change keeps that promoted control visible and connectable while leaving ordinary advanced controls hidden as configured.

Motivation

Promoting an advanced widget from inside a subgraph preserved its advanced flag on the outer node. When global advanced widgets were disabled, the promoted control was filtered out even though the outer subgraph node has no equivalent per-node reveal path, preventing the promoted input from being used there.

Provenance

  • Authored by: interactive session
  • Verified: pnpm test:unit src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts: 35 passed; targeted Playwright regression: 1 passed; pnpm typecheck, browser typecheck, staged lint/format checks, and pnpm knip passed on the current head; CI Unit and E2E workflows passed on the GREEN commit.

Reviewer context

  • Type: bug fix for promoted advanced-widget visibility on subgraph nodes
  • Slots into: subgraph widget promotion; no stacked or companion PRs

Summary

  • Keeps promoted widgets visible on the outer subgraph node even when they retain advanced: true.
  • Determines promotion from the host input's widgetId, without using or traversing interior source metadata for visibility.
  • Preserves explicit hidden behavior and the existing visibility rules for ordinary advanced and linked widgets.
  • Adds unit and Playwright regressions covering the host-rendered control.

Changes

  • What: Projects a host-derived promoted flag into widget slot metadata and lets it bypass only the advanced-visibility filter.
  • What: Verifies the unit behavior after source diagnostic metadata is removed from the render input.
  • What: Covers node creation, subgraph conversion, promotion, root navigation, and host rendering in Playwright.
  • Breaking: None.
  • Dependencies: None.

Review Focus

  • Visibility depends only on the public host SubgraphInput surface, consistent with ADR 0009's black-box boundary.
  • Existing source lookup for diagnostic error mapping is unchanged and does not participate in this visibility decision.
  • Explicitly hidden widgets remain hidden, and unpromoted advanced widgets still follow existing settings.

Red-green proof

Phase Commit Unit E2E
Red 3cc5ad9d72 test: add failing coverage for promoted advanced widgets Failed as expected: 1 failed, 14,853 passed, promoted widget returned visible: false Failed as expected: 1 failed, 108 passed in shard, outer max_shift label was absent
Green 736f2d8b32 fix: show promoted advanced widgets on subgraph nodes Passed E2E passed, including the formerly failing shard 13

The follow-up commit 0c9529e999 replaces the GREEN commit's transitional source-metadata signal with host-scoped promotion metadata while preserving the proven behavior.

Test plan

  • Confirm the unit workflow fails only on the new promoted advanced widget visibility test.
  • Confirm the E2E workflow fails only on the new outer subgraph widget visibility assertion.
  • Confirm the host-scoped implementation passes without source diagnostic metadata.
  • Confirm the current head passes focused unit, type, lint, format, knip, and E2E verification.

Screenshots

스크린샷 2026-08-04 오후 2 43 57 스크린샷 2026-08-04 오후 2 44 06

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/17/2026, 04:10:48 AM UTC

Links

📦 Bundle: 8.85 MB gzip 🟢 -32 B

Details

Summary

  • Raw size: 37.4 MB baseline 37.4 MB — 🔴 +146 B
  • Gzip: 8.85 MB baseline 8.85 MB — 🟢 -32 B
  • Brotli: 6.19 MB baseline 6.19 MB — 🟢 -217 B
  • Bundles: 438 current • 438 baseline • 145 added / 145 removed

Category Glance
Data & Services 🔴 +89 B (3.52 MB) · Graph Workspace 🔴 +57 B (1.37 MB) · Vendor & Third-Party ⚪ 0 B (16.8 MB) · Other ⚪ 0 B (14.2 MB) · Panels & Settings ⚪ 0 B (566 kB) · Utilities & Hooks ⚪ 0 B (550 kB) · + 5 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-CIE66yoe.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.86 kB 🔴 +1.6 kB
assets/index-CWxiMQkI.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.86 kB 🟢 -1.61 kB

Status: 1 added / 1 removed

Graph Workspace — 1.37 MB (baseline 1.37 MB) • 🔴 +57 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Bbj0LSyS.js (new) 1.36 MB 🔴 +1.36 MB 🔴 +297 kB 🔴 +223 kB
assets/GraphView-mX2ioj7r.js (removed) 1.36 MB 🟢 -1.36 MB 🟢 -297 kB 🟢 -223 kB
assets/WidgetCompositor-B6HkinD5.js (removed) 8.17 kB 🟢 -8.17 kB 🟢 -2.76 kB 🟢 -2.48 kB
assets/WidgetCompositor-xR3aEMts.js (new) 8.17 kB 🔴 +8.17 kB 🔴 +2.76 kB 🔴 +2.45 kB

Status: 2 added / 2 removed / 1 unchanged

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-Ba0s1VFD.js (new) 25 kB 🔴 +25 kB 🔴 +6.24 kB 🔴 +5.52 kB
assets/CloudSurveyView-CD1jkENc.js (removed) 25 kB 🟢 -25 kB 🟢 -6.24 kB 🟢 -5.52 kB
assets/CloudLayoutView-BL5seN9w.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -6.57 kB 🟢 -5.74 kB
assets/CloudLayoutView-C_CcQARy.js (new) 21.8 kB 🔴 +21.8 kB 🔴 +6.57 kB 🔴 +5.75 kB
assets/UserCheckView-B8E5khRr.js (new) 8.75 kB 🔴 +8.75 kB 🔴 +2.19 kB 🔴 +1.9 kB
assets/UserCheckView-CULhAhYw.js (removed) 8.75 kB 🟢 -8.75 kB 🟢 -2.19 kB 🟢 -1.91 kB
assets/CloudLoginView-CledgRPv.js (new) 8.74 kB 🔴 +8.74 kB 🔴 +2.55 kB 🔴 +2.26 kB
assets/CloudLoginView-D826R2Zp.js (removed) 8.74 kB 🟢 -8.74 kB 🟢 -2.55 kB 🟢 -2.26 kB
assets/useCloudAuthPage-BwqWxoGS.js (removed) 7.08 kB 🟢 -7.08 kB 🟢 -2.52 kB 🟢 -2.2 kB
assets/useCloudAuthPage-rrn3MbZZ.js (new) 7.08 kB 🔴 +7.08 kB 🔴 +2.52 kB 🔴 +2.2 kB
assets/CloudSignupView-D851JUmw.js (removed) 6.96 kB 🟢 -6.96 kB 🟢 -2.28 kB 🟢 -2 kB
assets/CloudSignupView-DjGzNWeG.js (new) 6.96 kB 🔴 +6.96 kB 🔴 +2.28 kB 🔴 +2 kB
assets/WidgetTextPreview-D2Kio3a3.js (new) 6.07 kB 🔴 +6.07 kB 🔴 +2.13 kB 🔴 +1.9 kB
assets/WidgetTextPreview-DbCYZBfr.js (removed) 6.07 kB 🟢 -6.07 kB 🟢 -2.13 kB 🟢 -1.9 kB
assets/CloudSubscriptionRedirectView-BGVV5Ej5.js (new) 6.05 kB 🔴 +6.05 kB 🔴 +2.25 kB 🔴 +1.96 kB
assets/CloudSubscriptionRedirectView-gIQn-C11.js (removed) 6.05 kB 🟢 -6.05 kB 🟢 -2.25 kB 🟢 -1.96 kB
assets/UserSelectView-DJ137S-b.js (removed) 5.49 kB 🟢 -5.49 kB 🟢 -1.96 kB 🟢 -1.72 kB
assets/UserSelectView-mZ90kLsU.js (new) 5.49 kB 🔴 +5.49 kB 🔴 +1.96 kB 🔴 +1.72 kB
assets/CloudForgotPasswordView-DNQRTWcb.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.72 kB 🟢 -1.49 kB
assets/CloudForgotPasswordView-O9eftwVZ.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.72 kB 🔴 +1.49 kB
assets/CloudAuthTimeoutView-ag3Z8iFk.js (new) 4.43 kB 🔴 +4.43 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/CloudAuthTimeoutView-BFxTA5Fa.js (removed) 4.43 kB 🟢 -4.43 kB 🟢 -1.54 kB 🟢 -1.34 kB
assets/OAuthLayoutView-DjTKKER5.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -700 B 🟢 -586 B
assets/OAuthLayoutView-EdtLa2tU.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +703 B 🔴 +587 B
assets/WidgetTextPreview-CDlh5Pxk.js (removed) 131 B 🟢 -131 B 🟢 -100 B 🟢 -91 B
assets/WidgetTextPreview-edG5-YpI.js (new) 131 B 🔴 +131 B 🔴 +100 B 🔴 +94 B

Status: 13 added / 13 removed / 4 unchanged

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/KeybindingPanel-BK6ZH-YJ.js (removed) 49.4 kB 🟢 -49.4 kB 🟢 -9.94 kB 🟢 -8.8 kB
assets/KeybindingPanel-CxwhC7mq.js (new) 49.4 kB 🔴 +49.4 kB 🔴 +9.95 kB 🔴 +8.81 kB
assets/SecretsPanel-DRIFdWGf.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -7.87 kB 🟢 -6.92 kB
assets/SecretsPanel-nKCFAt0I.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +7.87 kB 🔴 +6.92 kB
assets/CreditsPanel-BpF1g-K6.js (removed) 11.5 kB 🟢 -11.5 kB 🟢 -3.21 kB 🟢 -2.81 kB
assets/CreditsPanel-MMIINSmv.js (new) 11.5 kB 🔴 +11.5 kB 🔴 +3.21 kB 🔴 +2.81 kB
assets/AboutPanel-BRegtJCT.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.03 kB 🟢 -2.72 kB
assets/AboutPanel-BXgsEhnT.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.03 kB 🔴 +2.74 kB
assets/ExtensionPanel-CDHSrGur.js (removed) 9.19 kB 🟢 -9.19 kB 🟢 -2.51 kB 🟢 -2.23 kB
assets/ExtensionPanel-CyodDQcc.js (new) 9.19 kB 🔴 +9.19 kB 🔴 +2.51 kB 🔴 +2.22 kB
assets/ServerConfigPanel-BFU_s2Rb.js (removed) 6.09 kB 🟢 -6.09 kB 🟢 -1.94 kB 🟢 -1.72 kB
assets/ServerConfigPanel-CHqyZKR8.js (new) 6.09 kB 🔴 +6.09 kB 🔴 +1.94 kB 🔴 +1.72 kB
assets/UserPanel-BRToLX0b.js (new) 5.73 kB 🔴 +5.73 kB 🔴 +1.78 kB 🔴 +1.55 kB
assets/UserPanel-CMLKEsS7.js (removed) 5.73 kB 🟢 -5.73 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/refreshRemoteConfig-Baf7vi1f.js (new) 4.24 kB 🔴 +4.24 kB 🔴 +1.51 kB 🔴 +1.33 kB
assets/refreshRemoteConfig-DzmNsY-b.js (removed) 4.24 kB 🟢 -4.24 kB 🟢 -1.51 kB 🟢 -1.34 kB
assets/cloudRemoteConfig-CGxKuXf0.js (removed) 951 B 🟢 -951 B 🟢 -514 B 🟢 -424 B
assets/cloudRemoteConfig-JKs7HTCL.js (new) 951 B 🔴 +951 B 🔴 +514 B 🔴 +422 B
assets/refreshRemoteConfig-1tt6wJ9u.js (removed) 110 B 🟢 -110 B 🟢 -89 B 🟢 -83 B
assets/refreshRemoteConfig-BEbD-2r9.js (new) 110 B 🔴 +110 B 🔴 +89 B 🔴 +81 B

Status: 10 added / 10 removed / 16 unchanged

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/SignUpForm-BvhZfr9k.js (removed) 13.3 kB 🟢 -13.3 kB 🟢 -4.52 kB 🟢 -3.93 kB
assets/SignUpForm-C2vv_4dl.js (new) 13.3 kB 🔴 +13.3 kB 🔴 +4.53 kB 🔴 +3.93 kB
assets/auth-BjdlEebR.js (new) 3.71 kB 🔴 +3.71 kB 🔴 +1.29 kB 🔴 +1.1 kB
assets/auth-C-Z31llM.js (removed) 3.71 kB 🟢 -3.71 kB 🟢 -1.28 kB 🟢 -1.11 kB
assets/UpdatePasswordContent-CrkUKIlE.js (new) 1.85 kB 🔴 +1.85 kB 🔴 +842 B 🔴 +740 B
assets/UpdatePasswordContent-S6mhf86x.js (removed) 1.85 kB 🟢 -1.85 kB 🟢 -842 B 🟢 -736 B
assets/authStore-0bwrJMVT.js (new) 128 B 🔴 +128 B 🔴 +104 B 🔴 +106 B
assets/authStore-e1a30Bss.js (removed) 128 B 🟢 -128 B 🟢 -104 B 🟢 -105 B
assets/workspaceAuthStore-CB2OS5xA.js (new) 108 B 🔴 +108 B 🔴 +99 B 🔴 +101 B
assets/workspaceAuthStore-n8vMwca7.js (removed) 108 B 🟢 -108 B 🟢 -99 B 🟢 -103 B
assets/auth-C8nMTmlm.js (new) 105 B 🔴 +105 B 🔴 +96 B 🔴 +89 B
assets/auth-D-wwEvpt.js (removed) 105 B 🟢 -105 B 🟢 -96 B 🟢 -80 B

Status: 6 added / 6 removed / 5 unchanged

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyHubPublishDialog-B97qjDs5.js (new) 90.1 kB 🔴 +90.1 kB 🔴 +19.3 kB 🔴 +16.5 kB
assets/ComfyHubPublishDialog-DR8c-T04.js (removed) 90.1 kB 🟢 -90.1 kB 🟢 -19.3 kB 🟢 -16.5 kB
assets/useShareDialog-CuHAeDuP.js (new) 23.9 kB 🔴 +23.9 kB 🔴 +5.69 kB 🔴 +5.04 kB
assets/useShareDialog-DYHCOLMV.js (removed) 23.9 kB 🟢 -23.9 kB 🟢 -5.7 kB 🟢 -5.04 kB
assets/feedbackDialog-BKMZbbed.js (new) 4.45 kB 🔴 +4.45 kB 🔴 +1.87 kB 🔴 +1.59 kB
assets/feedbackDialog-DuYyX1of.js (removed) 4.45 kB 🟢 -4.45 kB 🟢 -1.87 kB 🟢 -1.6 kB
assets/useRangeEditor-BcVdQQxo.js (removed) 3.29 kB 🟢 -3.29 kB 🟢 -1.14 kB 🟢 -1.03 kB
assets/useRangeEditor-C8BI0SSe.js (new) 3.29 kB 🔴 +3.29 kB 🔴 +1.14 kB 🔴 +1.03 kB
assets/useLayerEditor-D259X8kp.js (new) 1.01 kB 🔴 +1.01 kB 🔴 +491 B 🔴 +407 B
assets/useLayerEditor-erLQYpG4.js (removed) 1.01 kB 🟢 -1.01 kB 🟢 -492 B 🟢 -409 B
assets/ComfyHubPublishDialog-C0HLuh1k.js (removed) 143 B 🟢 -143 B 🟢 -105 B 🟢 -88 B
assets/ComfyHubPublishDialog-Crxvm5T7.js (new) 143 B 🔴 +143 B 🔴 +105 B 🔴 +87 B
assets/useSubscriptionDialog-5nE9jLRP.js (removed) 108 B 🟢 -108 B 🟢 -102 B 🟢 -92 B
assets/useSubscriptionDialog-BUqZU19b.js (new) 108 B 🔴 +108 B 🔴 +102 B 🔴 +97 B

Status: 7 added / 7 removed / 1 unchanged

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-CPyqXT8u.js (new) 14.6 kB 🔴 +14.6 kB 🔴 +3.97 kB 🔴 +3.53 kB
assets/ComfyQueueButton-vxlPBI_G.js (removed) 14.6 kB 🟢 -14.6 kB 🟢 -3.97 kB 🟢 -3.53 kB
assets/useTerminalTabs-BJun51nE.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.69 kB 🔴 +3.27 kB
assets/useTerminalTabs-ChJgPTcl.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.69 kB 🟢 -3.27 kB
assets/InviteMembersForm-Dl6MtGuY.js (new) 8.23 kB 🔴 +8.23 kB 🔴 +2.74 kB 🔴 +2.43 kB
assets/InviteMembersForm-DzghFVoy.js (removed) 8.23 kB 🟢 -8.23 kB 🟢 -2.74 kB 🟢 -2.43 kB
assets/SubscribeButton-Bdw9Pw0M.js (removed) 2.15 kB 🟢 -2.15 kB 🟢 -970 B 🟢 -849 B
assets/SubscribeButton-CzUWooOs.js (new) 2.15 kB 🔴 +2.15 kB 🔴 +969 B 🔴 +848 B
assets/cloudFeedbackTopbarButton-CTXiTgEG.js (removed) 705 B 🟢 -705 B 🟢 -421 B 🟢 -361 B
assets/cloudFeedbackTopbarButton-CuLWPEyU.js (new) 705 B 🔴 +705 B 🔴 +420 B 🔴 +360 B
assets/ComfyQueueButton-2dmdsBvo.js (new) 128 B 🔴 +128 B 🔴 +99 B 🔴 +90 B
assets/ComfyQueueButton-CNuuHdel.js (removed) 128 B 🟢 -128 B 🟢 -99 B 🟢 -92 B

Status: 6 added / 6 removed / 8 unchanged

Data & Services — 3.52 MB (baseline 3.52 MB) • 🔴 +89 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/settingStore-C4XnbkZk.js (new) 3.16 MB 🔴 +3.16 MB 🔴 +740 kB 🔴 +556 kB
assets/settingStore-D2H8iMpS.js (removed) 3.16 MB 🟢 -3.16 MB 🟢 -740 kB 🟢 -556 kB
assets/api-BoE8NPti.js (removed) 186 kB 🟢 -186 kB 🟢 -39.8 kB 🟢 -33.4 kB
assets/api-BwzwuZ1S.js (new) 186 kB 🔴 +186 kB 🔴 +39.8 kB 🔴 +33.3 kB
assets/load3dService-DkI6CZSC.js (removed) 132 kB 🟢 -132 kB 🟢 -29.3 kB 🟢 -24.6 kB
assets/load3dService-DmPu80Ie.js (new) 132 kB 🔴 +132 kB 🔴 +29.3 kB 🔴 +24.6 kB
assets/workflowShareService-BGLU5Rgt.js (removed) 16.5 kB 🟢 -16.5 kB 🟢 -4.91 kB 🟢 -4.34 kB
assets/workflowShareService-DNgF2NB0.js (new) 16.5 kB 🔴 +16.5 kB 🔴 +4.91 kB 🔴 +4.35 kB
assets/keybindingService-BE24O3Vx.js (new) 6.89 kB 🔴 +6.89 kB 🔴 +1.73 kB 🔴 +1.49 kB
assets/keybindingService-cdCw1WYW.js (removed) 6.89 kB 🟢 -6.89 kB 🟢 -1.73 kB 🟢 -1.49 kB
assets/releaseStore-CVMnKpet.js (removed) 6.72 kB 🟢 -6.72 kB 🟢 -2.03 kB 🟢 -1.77 kB
assets/releaseStore-DQv10_PE.js (new) 6.72 kB 🔴 +6.72 kB 🔴 +2.03 kB 🔴 +1.77 kB
assets/systemStatsStore-BBYxMEFl.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.74 kB 🟢 -1.47 kB
assets/systemStatsStore-CYE9otOI.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.74 kB 🔴 +1.47 kB
assets/userStore-B1G4FzIC.js (removed) 2.38 kB 🟢 -2.38 kB 🟢 -897 B 🟢 -796 B
assets/userStore-CAZjJTog.js (new) 2.38 kB 🔴 +2.38 kB 🔴 +897 B 🔴 +795 B
assets/audioService-Cn-r6XMW.js (removed) 1.71 kB 🟢 -1.71 kB 🟢 -830 B 🟢 -732 B
assets/audioService-DrxGhvjp.js (new) 1.71 kB 🔴 +1.71 kB 🔴 +831 B 🔴 +733 B
assets/dialogService-mwTPPQkU.js (new) 98 B 🔴 +98 B 🔴 +97 B 🔴 +86 B
assets/dialogService-SmXbI4pQ.js (removed) 98 B 🟢 -98 B 🟢 -97 B 🟢 -88 B
assets/releaseStore-BcK61TlP.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +90 B
assets/releaseStore-CT42zZBW.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -85 B
assets/settingStore-5AfkVtH3.js (new) 95 B 🔴 +95 B 🔴 +86 B 🔴 +87 B
assets/settingStore-BC86HVKT.js (removed) 95 B 🟢 -95 B 🟢 -86 B 🟢 -89 B
assets/assetsStore-95bEAkny.js (removed) 94 B 🟢 -94 B 🟢 -92 B 🟢 -87 B
assets/assetsStore-CeBRLBuB.js (new) 94 B 🔴 +94 B 🔴 +92 B 🔴 +84 B
assets/api-5-ObLWYi.js (new) 62 B 🔴 +62 B 🔴 +74 B 🔴 +66 B
assets/api-D87x6Ajl.js (removed) 62 B 🟢 -62 B 🟢 -74 B 🟢 -66 B

Status: 14 added / 14 removed / 3 unchanged

Utilities & Hooks — 550 kB (baseline 550 kB) • ⚪ 0 B

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useConflictDetection-BeEOO4IQ.js (new) 236 kB 🔴 +236 kB 🔴 +53 kB 🔴 +43.1 kB
assets/useConflictDetection-C1f_UImY.js (removed) 236 kB 🟢 -236 kB 🟢 -53 kB 🟢 -43.2 kB
assets/useLayerEditorSession-Bik77V5q.js (removed) 158 kB 🟢 -158 kB 🟢 -40.8 kB 🟢 -34.3 kB
assets/useLayerEditorSession-DrcDB0gW.js (new) 158 kB 🔴 +158 kB 🔴 +40.8 kB 🔴 +34.3 kB
assets/useLoad3d-DFHhS4gX.js (removed) 25.8 kB 🟢 -25.8 kB 🟢 -5.8 kB 🟢 -5.15 kB
assets/useLoad3d-DJKdEshJ.js (new) 25.8 kB 🔴 +25.8 kB 🔴 +5.8 kB 🔴 +5.15 kB
assets/useLoad3dViewer-D_WkEq_Q.js (removed) 21.2 kB 🟢 -21.2 kB 🟢 -4.98 kB 🟢 -4.37 kB
assets/useLoad3dViewer-DxQug4b6.js (new) 21.2 kB 🔴 +21.2 kB 🔴 +4.98 kB 🔴 +4.38 kB
assets/useImageCrop-BB52iDXr.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +3.42 kB 🔴 +2.98 kB
assets/useImageCrop-D4bkp5ak.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -3.42 kB 🟢 -2.98 kB
assets/useDowngradeToPersonal-beAXZdlw.js (new) 10.9 kB 🔴 +10.9 kB 🔴 +2.74 kB 🔴 +2.35 kB
assets/useDowngradeToPersonal-CnFEKdex.js (removed) 10.9 kB 🟢 -10.9 kB 🟢 -2.74 kB 🟢 -2.35 kB
assets/useFeatureFlags-C_PwTxD1.js (new) 7.32 kB 🔴 +7.32 kB 🔴 +2.06 kB 🔴 +1.74 kB
assets/useFeatureFlags-TFn6r6gz.js (removed) 7.32 kB 🟢 -7.32 kB 🟢 -2.06 kB 🟢 -1.74 kB
assets/useCompositorLayers-CjhbChuT.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +897 B 🔴 +805 B
assets/useCompositorLayers-oqZyONgt.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -899 B 🟢 -807 B
assets/assetPreviewUtil-Bm7mxSEB.js (new) 2.35 kB 🔴 +2.35 kB 🔴 +970 B 🔴 +850 B
assets/assetPreviewUtil-DBf_tv0J.js (removed) 2.35 kB 🟢 -2.35 kB 🟢 -968 B 🟢 -845 B
assets/useUpstreamValue-DOFG_d5R.js (removed) 1.99 kB 🟢 -1.99 kB 🟢 -760 B 🟢 -685 B
assets/useUpstreamValue-DquIP-jS.js (new) 1.99 kB 🔴 +1.99 kB 🔴 +757 B 🔴 +684 B
assets/useWorkspaceTierLabel-BFJ-7d9o.js (new) 1.93 kB 🔴 +1.93 kB 🔴 +812 B 🔴 +698 B
assets/useWorkspaceTierLabel-iPJP4UxL.js (removed) 1.93 kB 🟢 -1.93 kB 🟢 -813 B 🟢 -698 B
assets/subscriptionCheckoutUtil-B37xYDCN.js (new) 877 B 🔴 +877 B 🔴 +521 B 🔴 +432 B
assets/subscriptionCheckoutUtil-CPKuEgU0.js (removed) 877 B 🟢 -877 B 🟢 -521 B 🟢 -433 B
assets/useSessionCookie-B5eqswH4.js (new) 652 B 🔴 +652 B 🔴 +337 B 🔴 +292 B
assets/useSessionCookie-lOl3GY0Z.js (removed) 652 B 🟢 -652 B 🟢 -337 B 🟢 -290 B
assets/useLoad3d-C98SeU1T.js (new) 311 B 🔴 +311 B 🔴 +163 B 🔴 +147 B
assets/useLoad3d-T7SQ_f75.js (removed) 311 B 🟢 -311 B 🟢 -165 B 🟢 -147 B
assets/useSessionCookie-CiqOtBdf.js (new) 101 B 🔴 +101 B 🔴 +86 B 🔴 +76 B
assets/useSessionCookie-DyerTBJC.js (removed) 101 B 🟢 -101 B 🟢 -86 B 🟢 -84 B
assets/useFeatureFlags-DFlP8gor.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -83 B
assets/useFeatureFlags-QudBgwuC.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +94 B
assets/useLoad3dViewer-Cdr2o0_I.js (removed) 98 B 🟢 -98 B 🟢 -85 B 🟢 -85 B
assets/useLoad3dViewer-DM0OKCqY.js (new) 98 B 🔴 +98 B 🔴 +85 B 🔴 +86 B
assets/useCurrentUser-DeE58GBV.js (new) 94 B 🔴 +94 B 🔴 +95 B 🔴 +85 B
assets/useCurrentUser-HzvJ_Ht3.js (removed) 94 B 🟢 -94 B 🟢 -95 B 🟢 -94 B

Status: 18 added / 18 removed / 20 unchanged

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

External libraries and shared vendor chunks

Status: 18 unchanged

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

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-CMy4H3Hs.js (removed) 115 kB 🟢 -115 kB 🟢 -29.7 kB 🟢 -25.1 kB
assets/core-DxA9LwT9.js (new) 115 kB 🔴 +115 kB 🔴 +29.7 kB 🔴 +25.1 kB
assets/WidgetSelect-BV4A6qep.js (removed) 88.8 kB 🟢 -88.8 kB 🟢 -20.1 kB 🟢 -17.2 kB
assets/WidgetSelect-CQnpysl4.js (new) 88.8 kB 🔴 +88.8 kB 🔴 +20.1 kB 🔴 +17.2 kB
assets/SubscriptionPanelContentWorkspace-7Jw174Q-.js (removed) 80.9 kB 🟢 -80.9 kB 🟢 -15.9 kB 🟢 -13.7 kB
assets/SubscriptionPanelContentWorkspace-hW3uYzHc.js (new) 80.9 kB 🔴 +80.9 kB 🔴 +15.9 kB 🔴 +13.7 kB
assets/Load3D-Dvv1Om-0.js (new) 73.3 kB 🔴 +73.3 kB 🔴 +12.1 kB 🔴 +10.3 kB
assets/Load3D-QhVx2bjf.js (removed) 73.3 kB 🟢 -73.3 kB 🟢 -12.1 kB 🟢 -10.3 kB
assets/WidgetVideoEdit-BOfsp8ex.js (removed) 67.5 kB 🟢 -67.5 kB 🟢 -15.7 kB 🟢 -13.9 kB
assets/WidgetVideoEdit-ByT0C_vz.js (new) 67.5 kB 🔴 +67.5 kB 🔴 +15.7 kB 🔴 +13.9 kB
assets/SubscriptionTransitionPreviewWorkspace-DbAnEmcj.js (new) 66.5 kB 🔴 +66.5 kB 🔴 +13.4 kB 🔴 +11.7 kB
assets/SubscriptionTransitionPreviewWorkspace-DMMXnlg6.js (removed) 66.5 kB 🟢 -66.5 kB 🟢 -13.4 kB 🟢 -11.7 kB
assets/WorkspaceSettingsPanelContent-CgeW4qLy.js (new) 58.2 kB 🔴 +58.2 kB 🔴 +12.4 kB 🔴 +10.8 kB
assets/WorkspaceSettingsPanelContent-CMbASh6k.js (removed) 58.2 kB 🟢 -58.2 kB 🟢 -12.4 kB 🟢 -10.8 kB
assets/Preview3d-bY1ZHVaJ.js (new) 50.9 kB 🔴 +50.9 kB 🔴 +8.32 kB 🔴 +7.25 kB
assets/Preview3d-C1fJxREr.js (removed) 50.9 kB 🟢 -50.9 kB 🟢 -8.32 kB 🟢 -7.25 kB
assets/main-CnmM_KEo.js (new) 45.3 kB 🔴 +45.3 kB 🔴 +13.2 kB 🔴 +11.4 kB
assets/main-DKGLK1EV.js (removed) 45.3 kB 🟢 -45.3 kB 🟢 -13.2 kB 🟢 -11.4 kB
assets/SubscriptionRequiredDialogContentUnified-CoGTrs57.js (removed) 42.7 kB 🟢 -42.7 kB 🟢 -9.39 kB 🟢 -8.2 kB
assets/SubscriptionRequiredDialogContentUnified-I5_sJ02k.js (new) 42.7 kB 🔴 +42.7 kB 🔴 +9.39 kB 🔴 +8.2 kB
assets/LayerEditorContent-Cy5fdpgU.js (removed) 42.5 kB 🟢 -42.5 kB 🟢 -9.62 kB 🟢 -8.43 kB
assets/LayerEditorContent-DW1gjBrS.js (new) 42.5 kB 🔴 +42.5 kB 🔴 +9.62 kB 🔴 +8.43 kB
assets/WidgetBoundingBoxes-BdR-IAd7.js (removed) 33.7 kB 🟢 -33.7 kB 🟢 -9.16 kB 🟢 -8.12 kB
assets/WidgetBoundingBoxes-BLozISv0.js (new) 33.7 kB 🔴 +33.7 kB 🔴 +9.16 kB 🔴 +8.13 kB
assets/WidgetPainter-C1Vm1MNN.js (new) 32.6 kB 🔴 +32.6 kB 🔴 +7.87 kB 🔴 +6.99 kB
assets/WidgetPainter-DyYhQZNL.js (removed) 32.6 kB 🟢 -32.6 kB 🟢 -7.87 kB 🟢 -6.97 kB
assets/Load3dViewerContent-BWDvFrtD.js (new) 30.8 kB 🔴 +30.8 kB 🔴 +6.28 kB 🔴 +5.45 kB
assets/Load3dViewerContent-CzfaWh03.js (removed) 30.8 kB 🟢 -30.8 kB 🟢 -6.29 kB 🟢 -5.46 kB
assets/SubscriptionRequiredDialogContent-Bt0C6KNQ.js (new) 26.9 kB 🔴 +26.9 kB 🔴 +6.36 kB 🔴 +5.59 kB
assets/SubscriptionRequiredDialogContent-C-F2rXuV.js (removed) 26.9 kB 🟢 -26.9 kB 🟢 -6.36 kB 🟢 -5.61 kB
assets/SubscriptionRequiredDialogContentWorkspace-BcOoY-Y_.js (removed) 25.1 kB 🟢 -25.1 kB 🟢 -5.81 kB 🟢 -5.11 kB
assets/SubscriptionRequiredDialogContentWorkspace-CEuAX2ev.js (new) 25.1 kB 🔴 +25.1 kB 🔴 +5.81 kB 🔴 +5.12 kB
assets/CreditsTile-DInkENOZ.js (new) 24.9 kB 🔴 +24.9 kB 🔴 +6.65 kB 🔴 +5.84 kB
assets/CreditsTile-nPHcfEYn.js (removed) 24.9 kB 🟢 -24.9 kB 🟢 -6.65 kB 🟢 -5.83 kB
assets/load3d-Bje_kQdz.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5.4 kB 🔴 +4.68 kB
assets/load3d-lDwODuJx.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -5.41 kB 🟢 -4.68 kB
assets/CurrentUserPopoverWorkspace-DgxzOMQf.js (new) 21.8 kB 🔴 +21.8 kB 🔴 +4.94 kB 🔴 +4.4 kB
assets/CurrentUserPopoverWorkspace-NM5JN8oC.js (removed) 21.8 kB 🟢 -21.8 kB 🟢 -4.94 kB 🟢 -4.4 kB
assets/SignInContent-35s3qLFE.js (removed) 20.6 kB 🟢 -20.6 kB 🟢 -5.18 kB 🟢 -4.54 kB
assets/SignInContent-9mli2uXD.js (new) 20.6 kB 🔴 +20.6 kB 🔴 +5.18 kB 🔴 +4.54 kB
assets/WidgetRecordAudio-BBh2XAnM.js (new) 16.6 kB 🔴 +16.6 kB 🔴 +4.6 kB 🔴 +4.1 kB
assets/WidgetRecordAudio-BYPHU_Iq.js (removed) 16.6 kB 🟢 -16.6 kB 🟢 -4.6 kB 🟢 -4.11 kB
assets/WidgetInputNumber-B4pSeMuj.js (new) 13.9 kB 🔴 +13.9 kB 🔴 +3.63 kB 🔴 +3.21 kB
assets/WidgetInputNumber-C1NmbM8W.js (removed) 13.9 kB 🟢 -13.9 kB 🟢 -3.63 kB 🟢 -3.21 kB
assets/WidgetRange-DXrTRRxG.js (removed) 13.7 kB 🟢 -13.7 kB 🟢 -3.55 kB 🟢 -3.13 kB
assets/WidgetRange-XDHf-N8u.js (new) 13.7 kB 🔴 +13.7 kB 🔴 +3.55 kB 🔴 +3.12 kB
assets/WaveAudioPlayer-aw4L7FLp.js (removed) 12.8 kB 🟢 -12.8 kB 🟢 -3.46 kB 🟢 -3.05 kB
assets/WaveAudioPlayer-CagdFS20.js (new) 12.8 kB 🔴 +12.8 kB 🔴 +3.46 kB 🔴 +3.05 kB
assets/WidgetCurve-lZK5kx8a.js (new) 11.2 kB 🔴 +11.2 kB 🔴 +3.47 kB 🔴 +3.15 kB
assets/WidgetCurve-t6Ic4WKT.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -3.48 kB 🟢 -3.14 kB
assets/TeamWorkspacesDialogContent-CtUpOoeO.js (new) 10.3 kB 🔴 +10.3 kB 🔴 +2.97 kB 🔴 +2.63 kB
assets/TeamWorkspacesDialogContent-DLqRaBzc.js (removed) 10.3 kB 🟢 -10.3 kB 🟢 -2.97 kB 🟢 -2.63 kB
assets/onboardingCloudRoutes-3rSuGYyd.js (removed) 9.46 kB 🟢 -9.46 kB 🟢 -2.84 kB 🟢 -2.43 kB
assets/onboardingCloudRoutes-DALlbvJa.js (new) 9.46 kB 🔴 +9.46 kB 🔴 +2.84 kB 🔴 +2.42 kB
assets/Load3DConfiguration-BejHmV1q.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.61 kB 🔴 +2.3 kB
assets/Load3DConfiguration-DDZAjOQ-.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.61 kB 🟢 -2.3 kB
assets/WidgetImageCrop-C33FckBr.js (new) 8.49 kB 🔴 +8.49 kB 🔴 +2.66 kB 🔴 +2.37 kB
assets/WidgetImageCrop-DRiRG6a9.js (removed) 8.49 kB 🟢 -8.49 kB 🟢 -2.66 kB 🟢 -2.34 kB
assets/SetMemberCreditLimitDialogContent-CgSTeSYW.js (removed) 8.47 kB 🟢 -8.47 kB 🟢 -2.34 kB 🟢 -2.05 kB
assets/SetMemberCreditLimitDialogContent-pH_hDgGL.js (new) 8.47 kB 🔴 +8.47 kB 🔴 +2.34 kB 🔴 +2.05 kB
assets/nodeTemplates-0NpfBjNj.js (removed) 8.32 kB 🟢 -8.32 kB 🟢 -2.86 kB 🟢 -2.51 kB
assets/nodeTemplates-Dik6u5Tv.js (new) 8.32 kB 🔴 +8.32 kB 🔴 +2.86 kB 🔴 +2.51 kB
assets/NightlySurveyController-BSp1ELQZ.js (new) 7.5 kB 🔴 +7.5 kB 🔴 +2.55 kB 🔴 +2.25 kB
assets/NightlySurveyController-C4TeoAJL.js (removed) 7.5 kB 🟢 -7.5 kB 🟢 -2.55 kB 🟢 -2.25 kB
assets/CloudRunButtonWrapper-BMOC0yi1.js (new) 7.29 kB 🔴 +7.29 kB 🔴 +2.29 kB 🔴 +2.01 kB
assets/CloudRunButtonWrapper-DGCbVxuz.js (removed) 7.29 kB 🟢 -7.29 kB 🟢 -2.29 kB 🟢 -2 kB
assets/WidgetWithControl-4nwLP9Gw.js (new) 6.48 kB 🔴 +6.48 kB 🔴 +2.64 kB 🔴 +2.32 kB
assets/WidgetWithControl-v8pRpLxu.js (removed) 6.48 kB 🟢 -6.48 kB 🟢 -2.64 kB 🟢 -2.33 kB
assets/missingModelMetadata-BluB2eG2.js (removed) 6.45 kB 🟢 -6.45 kB 🟢 -2.2 kB 🟢 -1.93 kB
assets/missingModelMetadata-DHSPZblM.js (new) 6.45 kB 🔴 +6.45 kB 🔴 +2.21 kB 🔴 +1.93 kB
assets/CancelSubscriptionDialogContent-BkbJnDdC.js (removed) 5.97 kB 🟢 -5.97 kB 🟢 -1.98 kB 🟢 -1.75 kB
assets/CancelSubscriptionDialogContent-BowlthDR.js (new) 5.97 kB 🔴 +5.97 kB 🔴 +1.98 kB 🔴 +1.75 kB
assets/load3dPreviewExtensions-B95HEmwK.js (removed) 5.88 kB 🟢 -5.88 kB 🟢 -1.81 kB 🟢 -1.6 kB
assets/load3dPreviewExtensions-DYHYkTxM.js (new) 5.88 kB 🔴 +5.88 kB 🔴 +1.81 kB 🔴 +1.6 kB
assets/launchCancellationFlow-89MmZ-Oa.js (new) 5.18 kB 🔴 +5.18 kB 🔴 +1.78 kB 🔴 +1.55 kB
assets/launchCancellationFlow-CZRK49IG.js (removed) 5.18 kB 🟢 -5.18 kB 🟢 -1.78 kB 🟢 -1.56 kB
assets/CreateWorkspaceDialogContent-Bnfdn74P.js (removed) 5.12 kB 🟢 -5.12 kB 🟢 -1.79 kB 🟢 -1.55 kB
assets/CreateWorkspaceDialogContent-Eh7WatlW.js (new) 5.12 kB 🔴 +5.12 kB 🔴 +1.79 kB 🔴 +1.55 kB
assets/ChangeMemberRoleDialogContent-CE_4TlRH.js (new) 4.97 kB 🔴 +4.97 kB 🔴 +1.64 kB 🔴 +1.43 kB
assets/ChangeMemberRoleDialogContent-lKMqlcjq.js (removed) 4.97 kB 🟢 -4.97 kB 🟢 -1.64 kB 🟢 -1.43 kB
assets/InviteMemberDialogContent-FEGnX-uU.js (new) 4.96 kB 🔴 +4.96 kB 🔴 +1.64 kB 🔴 +1.44 kB
assets/InviteMemberDialogContent-hl3nGKIm.js (removed) 4.96 kB 🟢 -4.96 kB 🟢 -1.64 kB 🟢 -1.44 kB
assets/EditWorkspaceDialogContent-CInnZUSl.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.76 kB 🟢 -1.52 kB
assets/EditWorkspaceDialogContent-Dy47LqoU.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.76 kB 🔴 +1.52 kB
assets/WidgetTextarea-BqF4LARG.js (removed) 4.81 kB 🟢 -4.81 kB 🟢 -1.87 kB 🟢 -1.65 kB
assets/WidgetTextarea-DEYa3adG.js (new) 4.81 kB 🔴 +4.81 kB 🔴 +1.87 kB 🔴 +1.64 kB
assets/saveMesh-8YzkckQO.js (removed) 4.76 kB 🟢 -4.76 kB 🟢 -1.52 kB 🟢 -1.35 kB
assets/saveMesh-DjQBLQTI.js (new) 4.76 kB 🔴 +4.76 kB 🔴 +1.52 kB 🔴 +1.34 kB
assets/WorkspacePanelContent-fVpSgnFv.js (removed) 4.74 kB 🟢 -4.74 kB 🟢 -1.63 kB 🟢 -1.44 kB
assets/WorkspacePanelContent-UEWGgbJF.js (new) 4.74 kB 🔴 +4.74 kB 🔴 +1.63 kB 🔴 +1.44 kB
assets/ValueControlPopover-B6w0UklZ.js (removed) 4.49 kB 🟢 -4.49 kB 🟢 -1.55 kB 🟢 -1.38 kB
assets/ValueControlPopover-Bqk8fDYg.js (new) 4.49 kB 🔴 +4.49 kB 🔴 +1.55 kB 🔴 +1.38 kB
assets/DeleteWorkspaceDialogContent-BxuzU-Wh.js (new) 3.84 kB 🔴 +3.84 kB 🔴 +1.44 kB 🔴 +1.24 kB
assets/DeleteWorkspaceDialogContent-Da24mJUV.js (removed) 3.84 kB 🟢 -3.84 kB 🟢 -1.44 kB 🟢 -1.24 kB
assets/RemoveMemberDialogContent-7SthdWUX.js (removed) 3.76 kB 🟢 -3.76 kB 🟢 -1.39 kB 🟢 -1.21 kB
assets/RemoveMemberDialogContent-DLl14pCv.js (new) 3.76 kB 🔴 +3.76 kB 🔴 +1.38 kB 🔴 +1.2 kB
assets/RevokeInviteDialogContent-BAyTsvXp.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.39 kB 🔴 +1.21 kB
assets/RevokeInviteDialogContent-CNBXgDbi.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.39 kB 🟢 -1.21 kB
assets/LeaveWorkspaceDialogContent-B2MqOaGP.js (new) 3.67 kB 🔴 +3.67 kB 🔴 +1.38 kB 🔴 +1.22 kB
assets/LeaveWorkspaceDialogContent-N4dQ7o5A.js (removed) 3.67 kB 🟢 -3.67 kB 🟢 -1.39 kB 🟢 -1.22 kB
assets/InviteMemberUpsellDialogContent-ahDlMcTL.js (new) 3.47 kB 🔴 +3.47 kB 🔴 +1.24 kB 🔴 +1.09 kB
assets/InviteMemberUpsellDialogContent-khcYLUtq.js (removed) 3.47 kB 🟢 -3.47 kB 🟢 -1.24 kB 🟢 -1.08 kB
assets/workspaceCheckoutTelemetry-DIzdv4-e.js (removed) 3.4 kB 🟢 -3.4 kB 🟢 -1.52 kB 🟢 -1.32 kB
assets/workspaceCheckoutTelemetry-DUiMgUji.js (new) 3.4 kB 🔴 +3.4 kB 🔴 +1.52 kB 🔴 +1.32 kB
assets/GlobalToast-CQmntHld.js (new) 3.25 kB 🔴 +3.25 kB 🔴 +1.3 kB 🔴 +1.11 kB
assets/GlobalToast-MNxFH5ri.js (removed) 3.25 kB 🟢 -3.25 kB 🟢 -1.3 kB 🟢 -1.11 kB
assets/Media3DTop--zdxbu75.js (new) 3.21 kB 🔴 +3.21 kB 🔴 +1.26 kB 🔴 +1.11 kB
assets/Media3DTop-B1edu1z6.js (removed) 3.21 kB 🟢 -3.21 kB 🟢 -1.26 kB 🟢 -1.1 kB
assets/load3dAdvanced-DlxZXXxa.js (removed) 2.82 kB 🟢 -2.82 kB 🟢 -1.1 kB 🟢 -959 B
assets/load3dAdvanced-QD7dQ79q.js (new) 2.82 kB 🔴 +2.82 kB 🔴 +1.09 kB 🔴 +956 B
assets/SubscribeToRun-CTHHwU_b.js (new) 2.39 kB 🔴 +2.39 kB 🔴 +1.03 kB 🔴 +907 B
assets/SubscribeToRun-DsPCFznT.js (removed) 2.39 kB 🟢 -2.39 kB 🟢 -1.03 kB 🟢 -909 B
assets/MediaAudioTop-CAvL-ZhP.js (removed) 1.62 kB 🟢 -1.62 kB 🟢 -807 B 🟢 -671 B
assets/MediaAudioTop-D6fgJKKR.js (new) 1.62 kB 🔴 +1.62 kB 🔴 +807 B 🔴 +668 B
assets/cloudSessionCookie-CkHAoC6u.js (new) 933 B 🔴 +933 B 🔴 +432 B 🔴 +378 B
assets/cloudSessionCookie-DX4ztZfM.js (removed) 933 B 🟢 -933 B 🟢 -435 B 🟢 -380 B
assets/cloudBadges-CtQEqS6r.js (new) 922 B 🔴 +922 B 🔴 +513 B 🔴 +452 B
assets/cloudBadges-uws46PFU.js (removed) 922 B 🟢 -922 B 🟢 -515 B 🟢 -456 B
assets/Load3DAdvanced-BksYH7nn.js (removed) 761 B 🟢 -761 B 🟢 -423 B 🟢 -358 B
assets/Load3DAdvanced-Da8E48lf.js (new) 761 B 🔴 +761 B 🔴 +422 B 🔴 +360 B
assets/nightlyBadges-C5Pdgjcj.js (removed) 411 B 🟢 -411 B 🟢 -273 B 🟢 -269 B
assets/nightlyBadges-CkhjHsp4.js (new) 411 B 🔴 +411 B 🔴 +273 B 🔴 +228 B
assets/Load3dViewerContent-B8Uj0304.js (new) 137 B 🔴 +137 B 🔴 +103 B 🔴 +91 B
assets/Load3dViewerContent-BJjuNGmi.js (removed) 137 B 🟢 -137 B 🟢 -103 B 🟢 -90 B
assets/missingModelMetadata-Dk41JShz.js (removed) 125 B 🟢 -125 B 🟢 -103 B 🟢 -103 B
assets/missingModelMetadata-KhvyV-br.js (new) 125 B 🔴 +125 B 🔴 +103 B 🔴 +104 B
assets/Load3DAdvanced-5WOKyQ-U.js (removed) 122 B 🟢 -122 B 🟢 -97 B 🟢 -89 B
assets/Load3DAdvanced-CSgT_b0t.js (new) 122 B 🔴 +122 B 🔴 +97 B 🔴 +87 B
assets/WidgetLegacy-CnMqvvwg.js (removed) 117 B 🟢 -117 B 🟢 -106 B 🟢 -102 B
assets/WidgetLegacy-KdK61iOY.js (new) 117 B 🔴 +117 B 🔴 +106 B 🔴 +92 B
assets/workflowDraftStoreV2-Bh0ymo0V.js (removed) 112 B 🟢 -112 B 🟢 -101 B 🟢 -112 B
assets/workflowDraftStoreV2-DJuDOH1j.js (new) 112 B 🔴 +112 B 🔴 +101 B 🔴 +108 B
assets/Load3D-CR4jI4fh.js (removed) 98 B 🟢 -98 B 🟢 -89 B 🟢 -81 B
assets/Load3D-D-eGlWhh.js (new) 98 B 🔴 +98 B 🔴 +89 B 🔴 +78 B
assets/changeTracker-DAvLUmfd.js (removed) 91 B 🟢 -91 B 🟢 -93 B 🟢 -94 B
assets/changeTracker-Lq5IbVoS.js (new) 91 B 🔴 +91 B 🔴 +93 B 🔴 +79 B

Status: 68 added / 68 removed / 217 unchanged

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.1 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 52.4 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 69.3 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.2 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 67.6 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.7 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.2 MB heap
minimap-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.4 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 51.8 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.6 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.6 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 146ms TBT · 76.5 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.8 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 162.8 MB heap
vue-large-graph-pan: · 55.4 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 77ms TBT · 157.9 MB heap
workflow-execution: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 65.4 MB heap

⚠️ 6 regressions detected

Show regressions
Metric Baseline PR (median) Δ Sig
canvas-idle: task duration 416ms 504ms +21% ⚠️ z=3.5
canvas-zoom-sweep: task duration 333ms 411ms +24% ⚠️ z=3.7
large-graph-idle: task duration 556ms 659ms +18% ⚠️ z=2.1
large-graph-pan: task duration 1044ms 1242ms +19% ⚠️ z=3.7
minimap-idle: task duration 548ms 643ms +17% ⚠️ z=2.4
subgraph-idle: task duration 408ms 503ms +23% ⚠️ z=4.2
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 6ms 9ms +37% z=-2.4
canvas-idle: layout count 0 0 +0%
canvas-idle: style recalc count 10 9 -15% z=-4.7
canvas-idle: task duration 416ms 504ms +21% ⚠️ z=3.5
canvas-idle: script duration 6ms 9ms +42% z=-7.4
canvas-idle: TBT 0ms 0ms +0%
canvas-idle: heap used 66.4 MB 66.1 MB -0%
canvas-idle: DOM nodes 20 17 -15% z=-4.4
canvas-idle: event listeners 4 4 +0% z=-1.6
canvas-mouse-sweep: avg frame time 17ms 17ms -0% z=-0.4
canvas-mouse-sweep: p95 frame time 17ms 17ms -0%
canvas-mouse-sweep: layout duration 3ms 4ms +22% z=1.8
canvas-mouse-sweep: style recalc duration 31ms 45ms +42% z=0.6
canvas-mouse-sweep: layout count 12 12 +0%
canvas-mouse-sweep: style recalc count 74 79 +6% z=-0.1
canvas-mouse-sweep: task duration 734ms 946ms +29% z=1.4
canvas-mouse-sweep: script duration 85ms 121ms +42% z=-2.3
canvas-mouse-sweep: TBT 0ms 0ms +0%
canvas-mouse-sweep: heap used 44.9 MB 52.4 MB +17%
canvas-mouse-sweep: DOM nodes -278 35 -112% z=-10.8
canvas-mouse-sweep: event listeners -153 4 -103% z=-1.1
canvas-zoom-sweep: avg frame time 17ms 17ms +0% z=0.5
canvas-zoom-sweep: p95 frame time 17ms 17ms +0%
canvas-zoom-sweep: layout duration 1ms 1ms +6% z=0.0
canvas-zoom-sweep: style recalc duration 14ms 22ms +54% z=2.0
canvas-zoom-sweep: layout count 6 6 +0%
canvas-zoom-sweep: style recalc count 32 32 +0% z=1.6
canvas-zoom-sweep: task duration 333ms 411ms +24% ⚠️ z=3.7
canvas-zoom-sweep: script duration 8ms 11ms +35% z=-5.2
canvas-zoom-sweep: TBT 0ms 0ms +0%
canvas-zoom-sweep: heap used 69.2 MB 69.3 MB +0%
canvas-zoom-sweep: DOM nodes 78 78 +0% z=-1.6
canvas-zoom-sweep: event listeners 19 19 +0% z=-0.9
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 6ms 9ms +45% z=-1.7
dom-widget-clipping: layout count 0 0 +0%
dom-widget-clipping: style recalc count 12 12 -4% z=-3.2
dom-widget-clipping: task duration 320ms 396ms +24% z=1.9
dom-widget-clipping: script duration 44ms 59ms +35% z=-2.8
dom-widget-clipping: TBT 0ms 0ms +0%
dom-widget-clipping: heap used 50.1 MB 51.2 MB +2%
dom-widget-clipping: DOM nodes 20 19 -5% z=-2.2
dom-widget-clipping: event listeners 0 1 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 6ms 7ms +16% z=-4.5
large-graph-idle: layout count 0 0 +0%
large-graph-idle: style recalc count 10 8 -20% z=-11.5
large-graph-idle: task duration 556ms 659ms +18% ⚠️ z=2.1
large-graph-idle: script duration 12ms 15ms +28% z=-8.3
large-graph-idle: TBT 0ms 0ms +0%
large-graph-idle: heap used 69.6 MB 67.6 MB -3%
large-graph-idle: DOM nodes -281 -283 +1% z=-340.4
large-graph-idle: event listeners -149 -164 +10% z=-31.2
large-graph-pan: avg frame time 17ms 17ms +0% z=0.3
large-graph-pan: p95 frame time 17ms 17ms +0%
large-graph-pan: layout duration 0ms 0ms +0%
large-graph-pan: style recalc duration 12ms 14ms +20% z=-3.7
large-graph-pan: layout count 0 0 +0%
large-graph-pan: style recalc count 68 69 +1% z=-1.7
large-graph-pan: task duration 1044ms 1242ms +19% ⚠️ z=3.7
large-graph-pan: script duration 275ms 344ms +25% z=-3.2
large-graph-pan: TBT 0ms 0ms +0%
large-graph-pan: heap used 69.3 MB 66.7 MB -4%
large-graph-pan: DOM nodes -283 -283 +0% z=-183.0
large-graph-pan: event listeners -149 -148 -1% z=-184.7
large-graph-zoom: avg frame time 17ms 17ms -0%
large-graph-zoom: p95 frame time 17ms 17ms +0%
large-graph-zoom: layout duration 8ms 7ms -4%
large-graph-zoom: style recalc duration 14ms 14ms +2%
large-graph-zoom: layout count 60 60 +0%
large-graph-zoom: style recalc count 66 65 -2%
large-graph-zoom: task duration 1212ms 1403ms +16%
large-graph-zoom: script duration 312ms 394ms +26%
large-graph-zoom: TBT 0ms 0ms +0%
large-graph-zoom: heap used 53.1 MB 57.2 MB +8%
large-graph-zoom: DOM nodes -286 -288 +1%
large-graph-zoom: event listeners -153 -153 +0%
minimap-idle: avg frame time 17ms 17ms +0% z=-0.4
minimap-idle: p95 frame time 17ms 17ms +0%
minimap-idle: layout duration 0ms 0ms +0%
minimap-idle: style recalc duration 6ms 10ms +85% z=0.8
minimap-idle: layout count 0 0 +0%
minimap-idle: style recalc count 8 8 -6% z=-3.0
minimap-idle: task duration 548ms 643ms +17% ⚠️ z=2.4
minimap-idle: script duration 14ms 17ms +23% z=-8.2
minimap-idle: TBT 0ms 0ms +0%
minimap-idle: heap used 70.6 MB 70.4 MB -0%
minimap-idle: DOM nodes -284 -284 -0% z=-221.3
minimap-idle: event listeners -149 -149 +0% z=-232.6
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 9ms 10ms +10% z=-2.8
subgraph-dom-widget-clipping: layout count 0 0 +0%
subgraph-dom-widget-clipping: style recalc count 46 46 +0% z=-3.3
subgraph-dom-widget-clipping: task duration 354ms 406ms +15% z=1.5
subgraph-dom-widget-clipping: script duration 100ms 118ms +18% z=-1.6
subgraph-dom-widget-clipping: TBT 0ms 0ms +0%
subgraph-dom-widget-clipping: heap used 51.7 MB 51.8 MB +0%
subgraph-dom-widget-clipping: DOM nodes 18 18 +0% z=-3.7
subgraph-dom-widget-clipping: event listeners 8 7 -13% z=-1.6
subgraph-idle: avg frame time 17ms 17ms +0% z=0.4
subgraph-idle: p95 frame time 17ms 17ms +0%
subgraph-idle: layout duration 0ms 0ms +0%
subgraph-idle: style recalc duration 6ms 9ms +47% z=-1.6
subgraph-idle: layout count 0 0 +0%
subgraph-idle: style recalc count 10 10 -5% z=-2.1
subgraph-idle: task duration 408ms 503ms +23% ⚠️ z=4.2
subgraph-idle: script duration 6ms 8ms +32% z=-4.6
subgraph-idle: TBT 0ms 0ms +0%
subgraph-idle: heap used 66.4 MB 66.6 MB +0%
subgraph-idle: DOM nodes 20 19 -5% z=-1.9
subgraph-idle: event listeners 4 4 +0% 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 4ms 4ms +15% z=-0.8
subgraph-mouse-sweep: style recalc duration 31ms 38ms +24% z=-1.3
subgraph-mouse-sweep: layout count 16 16 +0%
subgraph-mouse-sweep: style recalc count 76 77 +1% z=-1.6
subgraph-mouse-sweep: task duration 658ms 809ms +23% z=0.6
subgraph-mouse-sweep: script duration 66ms 91ms +39% z=-1.5
subgraph-mouse-sweep: TBT 0ms 0ms +0%
subgraph-mouse-sweep: heap used 57.7 MB 57.6 MB -0%
subgraph-mouse-sweep: DOM nodes 62 64 +3% z=-1.3
subgraph-mouse-sweep: event listeners 4 4 +0% variance too high
subgraph-transition-enter: avg frame time 17ms 17ms +0%
subgraph-transition-enter: p95 frame time 17ms 17ms -1%
subgraph-transition-enter: layout duration 10ms 13ms +36%
subgraph-transition-enter: style recalc duration 26ms 32ms +22%
subgraph-transition-enter: layout count 15 15 +0%
subgraph-transition-enter: style recalc count 20 20 +0%
subgraph-transition-enter: task duration 791ms 998ms +26%
subgraph-transition-enter: script duration 13ms 18ms +35%
subgraph-transition-enter: TBT 121ms 146ms +21%
subgraph-transition-enter: heap used 73.4 MB 76.5 MB +4%
subgraph-transition-enter: DOM nodes 13673 13673 +0%
subgraph-transition-enter: event listeners 2373 2375 +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 32ms 38ms +17%
viewport-pan-sweep: layout count 0 0 +0%
viewport-pan-sweep: style recalc count 249 250 +0%
viewport-pan-sweep: task duration 3554ms 4360ms +23%
viewport-pan-sweep: script duration 822ms 1070ms +30%
viewport-pan-sweep: TBT 0ms 0ms +0%
viewport-pan-sweep: heap used 70.3 MB 63.8 MB -9%
viewport-pan-sweep: DOM nodes -282 -283 +0%
viewport-pan-sweep: event listeners -133 -147 +11%
vue-large-graph-idle: avg frame time 17ms 18ms +3%
vue-large-graph-idle: p95 frame time 17ms 17ms +0%
vue-large-graph-idle: layout duration 0ms 0ms +0%
vue-large-graph-idle: style recalc duration 0ms 0ms +0%
vue-large-graph-idle: layout count 0 0 +0%
vue-large-graph-idle: style recalc count 0 0 +0%
vue-large-graph-idle: task duration 13106ms 17054ms +30%
vue-large-graph-idle: script duration 86ms 127ms +48%
vue-large-graph-idle: TBT 0ms 0ms +0%
vue-large-graph-idle: heap used 158.6 MB 162.8 MB +3%
vue-large-graph-idle: DOM nodes -8312 -8312 +0%
vue-large-graph-idle: event listeners -16389 -16388 -0%
vue-large-graph-pan: avg frame time 17ms 18ms +5%
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 17ms 23ms +36%
vue-large-graph-pan: layout count 0 0 +0%
vue-large-graph-pan: style recalc count 132 174 +31%
vue-large-graph-pan: task duration 16549ms 21083ms +27%
vue-large-graph-pan: script duration 376ms 429ms +14%
vue-large-graph-pan: TBT 0ms 77ms
vue-large-graph-pan: heap used 174.1 MB 157.9 MB -9%
vue-large-graph-pan: DOM nodes -8312 -8314 +0%
vue-large-graph-pan: event listeners -16385 -16383 -0%
workflow-execution: avg frame time 17ms 17ms -0% z=0.1
workflow-execution: p95 frame time 17ms 17ms -0%
workflow-execution: layout duration 1ms 1ms -13% z=-3.4
workflow-execution: style recalc duration 18ms 24ms +34% z=-0.2
workflow-execution: layout count 3 4 +17% z=-2.7
workflow-execution: style recalc count 14 14 +0% z=-1.9
workflow-execution: task duration 98ms 120ms +22% z=-0.3
workflow-execution: script duration 7ms 8ms +27% z=-7.0
workflow-execution: TBT 0ms 0ms +0%
workflow-execution: heap used 65.4 MB 65.4 MB -0%
workflow-execution: DOM nodes 123 126 +2% z=-5.0
workflow-execution: event listeners 97 98 +1% z=10.6
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-08-17T04:21:16.387Z",
  "gitSha": "b9acfa457df0b410b670ace7a8ba4fa697f38cd9",
  "branch": "jaeone/fe-854-bug-promoted-advanced-inputs-do-not-appear-as-subgraph",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2030.6999999999675,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.064,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 483.3229999999999,
      "heapDeltaBytes": 4795036,
      "heapUsedBytes": 69339204,
      "domNodes": 18,
      "jsHeapTotalBytes": 24641536,
      "scriptDurationMs": 7.862000000000001,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-idle",
      "durationMs": 2066.3500000000568,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.337000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 525.601,
      "heapDeltaBytes": 4769056,
      "heapUsedBytes": 69255368,
      "domNodes": 16,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 9.854999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2089.476999999988,
      "styleRecalcs": 79,
      "styleRecalcDurationMs": 50.241,
      "layouts": 12,
      "layoutDurationMs": 4.286,
      "taskDurationMs": 993.353,
      "heapDeltaBytes": -382628,
      "heapUsedBytes": 63905336,
      "domNodes": 63,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 125.413,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1860.922999999957,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 39.111000000000004,
      "layouts": 12,
      "layoutDurationMs": 3.6359999999999997,
      "taskDurationMs": 898.974,
      "heapDeltaBytes": -18527096,
      "heapUsedBytes": 46069728,
      "domNodes": 6,
      "jsHeapTotalBytes": 24350720,
      "scriptDurationMs": 115.76899999999998,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1772.1300000000042,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 24.229,
      "layouts": 6,
      "layoutDurationMs": 0.6739999999999999,
      "taskDurationMs": 415.56499999999994,
      "heapDeltaBytes": 8168800,
      "heapUsedBytes": 72719124,
      "domNodes": 78,
      "jsHeapTotalBytes": 24903680,
      "scriptDurationMs": 11.357,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1754.5130000000881,
      "styleRecalcs": 32,
      "styleRecalcDurationMs": 20.091,
      "layouts": 6,
      "layoutDurationMs": 0.616,
      "taskDurationMs": 407.3300000000001,
      "heapDeltaBytes": 8027396,
      "heapUsedBytes": 72539492,
      "domNodes": 78,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 11.406000000000002,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 635.263000000009,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 8.252,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 400.02000000000004,
      "heapDeltaBytes": -11140100,
      "heapUsedBytes": 53458748,
      "domNodes": 18,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 60.141,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 628.7150000000565,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 8.833999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 391.909,
      "heapDeltaBytes": -10783948,
      "heapUsedBytes": 53860768,
      "domNodes": 20,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 57.516999999999996,
      "eventListeners": 0,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2018.500999999958,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.0489999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 594.841,
      "heapDeltaBytes": 8620876,
      "heapUsedBytes": 68779056,
      "domNodes": -283,
      "jsHeapTotalBytes": 2981888,
      "scriptDurationMs": 13.018000000000002,
      "eventListeners": -179,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2036.8459999999686,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.882,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 722.356,
      "heapDeltaBytes": 12794972,
      "heapUsedBytes": 73063340,
      "domNodes": -283,
      "jsHeapTotalBytes": 2719744,
      "scriptDurationMs": 17.579000000000004,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2129.505999999992,
      "styleRecalcs": 69,
      "styleRecalcDurationMs": 13.959,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1181.268,
      "heapDeltaBytes": 7878148,
      "heapUsedBytes": 68935296,
      "domNodes": -283,
      "jsHeapTotalBytes": 3960832,
      "scriptDurationMs": 332.269,
      "eventListeners": -147,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2350.007000000005,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.669999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 1302.699,
      "heapDeltaBytes": 10252692,
      "heapUsedBytes": 70954520,
      "domNodes": -283,
      "jsHeapTotalBytes": 3436544,
      "scriptDurationMs": 355.782,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3201.1830000000145,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 13.810000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.117999999999999,
      "taskDurationMs": 1392.6680000000001,
      "heapDeltaBytes": -3596696,
      "heapUsedBytes": 58464284,
      "domNodes": -288,
      "jsHeapTotalBytes": 4030464,
      "scriptDurationMs": 401.33399999999995,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3248.790999999983,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 14.579000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.242999999999999,
      "taskDurationMs": 1413.3029999999999,
      "heapDeltaBytes": -553248,
      "heapUsedBytes": 61495780,
      "domNodes": -287,
      "jsHeapTotalBytes": 2457600,
      "scriptDurationMs": 385.885,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2039.8569999999836,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.716999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 653.0419999999999,
      "heapDeltaBytes": 12784504,
      "heapUsedBytes": 73886004,
      "domNodes": -281,
      "jsHeapTotalBytes": 2719744,
      "scriptDurationMs": 17.512000000000008,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2046.3600000000497,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 12.761999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 633.516,
      "heapDeltaBytes": 12599760,
      "heapUsedBytes": 73710128,
      "domNodes": -286,
      "jsHeapTotalBytes": 2981888,
      "scriptDurationMs": 17.106999999999996,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 612.6810000000091,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 10.232,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 417.6810000000001,
      "heapDeltaBytes": -10320536,
      "heapUsedBytes": 54183036,
      "domNodes": 18,
      "jsHeapTotalBytes": 25952256,
      "scriptDurationMs": 123.182,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 573.5859999999775,
      "styleRecalcs": 46,
      "styleRecalcDurationMs": 9.868,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 394.10799999999995,
      "heapDeltaBytes": -10312392,
      "heapUsedBytes": 54372848,
      "domNodes": 18,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 113.403,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2010.5890000000386,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 9.108999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 462.89200000000005,
      "heapDeltaBytes": 4903796,
      "heapUsedBytes": 69674960,
      "domNodes": 20,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 6.331999999999999,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1993.3089999999538,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 9.271999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 542.667,
      "heapDeltaBytes": 5202956,
      "heapUsedBytes": 69965932,
      "domNodes": 18,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 9.734000000000002,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1717.8880000000163,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 35.885,
      "layouts": 16,
      "layoutDurationMs": 3.9290000000000003,
      "taskDurationMs": 783.199,
      "heapDeltaBytes": -4016960,
      "heapUsedBytes": 60494620,
      "domNodes": 66,
      "jsHeapTotalBytes": 25690112,
      "scriptDurationMs": 88.03,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1727.4059999999736,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 40.386,
      "layouts": 16,
      "layoutDurationMs": 4.923,
      "taskDurationMs": 834.318,
      "heapDeltaBytes": -4239512,
      "heapUsedBytes": 60226212,
      "domNodes": 62,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 94.323,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1401.0090000000446,
      "styleRecalcs": 20,
      "styleRecalcDurationMs": 32.181000000000004,
      "layouts": 15,
      "layoutDurationMs": 13.001999999999999,
      "taskDurationMs": 997.8499999999999,
      "heapDeltaBytes": -3986388,
      "heapUsedBytes": 80244024,
      "domNodes": 13673,
      "jsHeapTotalBytes": 9175040,
      "scriptDurationMs": 17.732,
      "eventListeners": 2375,
      "totalBlockingTimeMs": 146,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8494.338000000027,
      "styleRecalcs": 249,
      "styleRecalcDurationMs": 37.581,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4382.149,
      "heapDeltaBytes": 9574320,
      "heapUsedBytes": 69638932,
      "domNodes": -284,
      "jsHeapTotalBytes": 5009408,
      "scriptDurationMs": 1070.185,
      "eventListeners": -131,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8445.859999999924,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 37.456,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 4338.527,
      "heapDeltaBytes": 3436576,
      "heapUsedBytes": 64211260,
      "domNodes": -281,
      "jsHeapTotalBytes": 3174400,
      "scriptDurationMs": 1070.6419999999998,
      "eventListeners": -163,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 18312.208,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17260.492,
      "heapDeltaBytes": -40121632,
      "heapUsedBytes": 170367648,
      "domNodes": -8312,
      "jsHeapTotalBytes": -15142912,
      "scriptDurationMs": 130.993,
      "eventListeners": -16389,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17612.180999999964,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 16847.871000000003,
      "heapDeltaBytes": -28204164,
      "heapUsedBytes": 171104752,
      "domNodes": -8312,
      "jsHeapTotalBytes": -9379840,
      "scriptDurationMs": 123.35,
      "eventListeners": -16387,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.80000000000291
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 22506.73999999998,
      "styleRecalcs": 175,
      "styleRecalcDurationMs": 29.02199999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21888.704999999998,
      "heapDeltaBytes": -29265248,
      "heapUsedBytes": 168375212,
      "domNodes": -8312,
      "jsHeapTotalBytes": -12820480,
      "scriptDurationMs": 457.13300000000004,
      "eventListeners": -16383,
      "totalBlockingTimeMs": 138,
      "frameDurationMs": 18.333333333333332,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 20938.987999999994,
      "styleRecalcs": 172,
      "styleRecalcDurationMs": 17.649000000000026,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 20276.78,
      "heapDeltaBytes": -47606708,
      "heapUsedBytes": 162827012,
      "domNodes": -8316,
      "jsHeapTotalBytes": -12263424,
      "scriptDurationMs": 400.3690000000001,
      "eventListeners": -16383,
      "totalBlockingTimeMs": 15,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 455.73699999999917,
      "styleRecalcs": 15,
      "styleRecalcDurationMs": 27.503,
      "layouts": 4,
      "layoutDurationMs": 1.3850000000000002,
      "taskDurationMs": 127.647,
      "heapDeltaBytes": 4949524,
      "heapUsedBytes": 68420152,
      "domNodes": 128,
      "jsHeapTotalBytes": 4718592,
      "scriptDurationMs": 8.717999999999998,
      "eventListeners": 99,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "workflow-execution",
      "durationMs": 464.30499999996755,
      "styleRecalcs": 13,
      "styleRecalcDurationMs": 20.209999999999997,
      "layouts": 3,
      "layoutDurationMs": 0.7159999999999999,
      "taskDurationMs": 112.57999999999998,
      "heapDeltaBytes": 4927104,
      "heapUsedBytes": 68679556,
      "domNodes": 123,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 7.871000000000001,
      "eventListeners": 97,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

🎭 Playwright: ✅ 1817 passed, 0 failed · 4 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1798 / ❌ 0 / ⚠️ 3 / ⏭️ 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)
  • New-test walkthrough (chromium, recorded video): View Report

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

🎭 Playwright: ⏳ Running...

@coderabbitai

coderabbitai Bot commented Aug 4, 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

The PR records promotion state in widget metadata and updates Vue widget visibility handling. Promoted advanced widgets remain visible when global advanced widgets are disabled. Unit, component, and Vue-mode browser tests cover the behavior.

Changes

Promoted widget visibility

Layer / File(s) Summary
Promotion metadata
src/composables/graph/useGraphNodeManager.ts, src/composables/graph/useGraphNodeManager.test.ts, src/lib/litegraph/src/interfaces.ts
Widget slot metadata records whether an input is promoted. Tests cover regular linked inputs and subgraph-projected inputs. The LiteGraph interface documents the promoted widget identity.
Visibility and selected-widget rendering
src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts, src/components/builder/AppModeWidgetList.vue, src/components/builder/AppModeWidgetList.test.ts
Processed widgets bypass advanced filtering when linked or promoted. Selected widget data enables advanced fields without mutating the matched widget. Component tests cover a promoted advanced widget.
Visibility validation
src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts, browser_tests/tests/subgraph/subgraphPromotion.spec.ts
Unit and Vue-mode browser tests verify that promoted advanced widgets remain visible when advanced widgets are disabled and retain advanced styling.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: drjkl

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Description check ✅ Passed The description covers the change, motivation, implementation, review focus, tests, breaking changes, dependencies, and screenshots.
Title check ✅ Passed The title clearly and concisely summarizes the main fix: showing promoted advanced widgets on subgraph nodes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
End-To-End Regression Coverage For Fixes ✅ Passed The PR uses bug-fix language, but it changes browser_tests/tests/subgraph/subgraphPromotion.spec.ts alongside src/ files and describes the Playwright regression test.
Adr Compliance For Entity/Litegraph Changes ✅ Passed The litegraph change adds documentation only; other graph-related changes add promotion metadata and visibility logic, with no entity mutations, god-object APIs, ECS methods/back-references, or ext...
✨ 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 jaeone/fe-854-bug-promoted-advanced-inputs-do-not-appear-as-subgraph

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

❤️ Share

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

@coderabbitai 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 `@src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts`:
- Around line 326-371: The new visibility tests must not be merged while
production behavior still fails: keep
src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts lines
326-371 in draft status until the production fix is implemented; land
browser_tests/tests/subgraph/subgraphPromotion.spec.ts lines 97-144 with that
same fix without marking it expected-to-fail or suppressing it. Run the relevant
tests and quality gates, and track the source defect in a dedicated follow-up
rather than masking it in test-only coverage.
🪄 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: 0e1c8a38-6b09-49e2-8582-3a39cbc86fc5

📥 Commits

Reviewing files that changed from the base of the PR and between 2e2d60b and 3cc5ad9.

📒 Files selected for processing (2)
  • browser_tests/tests/subgraph/subgraphPromotion.spec.ts
  • src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts

Comment thread src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts Outdated
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026
@codecov

codecov Bot commented Aug 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main   #14647      +/-   ##
==========================================
+ Coverage   78.49%   78.83%   +0.34%     
==========================================
  Files        1790     1880      +90     
  Lines      105515   116053   +10538     
  Branches    33298    37717    +4419     
==========================================
+ Hits        82819    91485    +8666     
- Misses      22251    24033    +1782     
- Partials      445      535      +90     
Flag Coverage Δ
unit 72.94% <100.00%> (+2.15%) ⬆️

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

Files with missing lines Coverage Δ
src/components/builder/AppModeWidgetList.vue 85.71% <100.00%> (+12.03%) ⬆️
src/composables/graph/useGraphNodeManager.ts 79.82% <ø> (-6.16%) ⬇️
...nsions/vueNodes/composables/useProcessedWidgets.ts 94.91% <100.00%> (+0.02%) ⬆️

... and 630 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.

@jaeone94
jaeone94 marked this pull request as ready for review August 4, 2026 04:07
@jaeone94
jaeone94 requested a review from a team August 4, 2026 04:07
@dosubot dosubot Bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Aug 4, 2026
@dosubot

dosubot Bot commented Aug 4, 2026

Copy link
Copy Markdown

📄 Knowledge review

Dosu skipped reviewing this PR because your organization has used its 200 included credits for the month. Your usage will reset on 2026-09-01. To have Dosu review this PR before then, ask your organization admin to upgrade to a pro account.


Leave Feedback Ask Dosu about ComfyUI_frontend Add Dosu to your team

…puts-do-not-appear-as-subgraph

# Conflicts:
#	src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 4, 2026

@christian-byrne christian-byrne 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.

Reviewed the diff plus the surrounding promotion machinery, and ran the unit suite and mutations locally. The fix is sound and the flag derivation is exact: input.widgetId is written only on subgraph host inputs (SubgraphNode.ts:653, promotionUtils.ts:326) and deleted on demotion and rebind, so promoted and promotedInputWidgets can never disagree. hidden is still short-circuited, and the ADR 0009 black-box claim holds since nothing in the visibility path walks the interior.

Two things I suspected and confirmed are NOT problems, recorded so nobody re-litigates them:

  • The classic canvas is unaffected and was never broken. LGraphNode.isWidgetVisible (:4033) reads the top-level widget.advanced, which _projectPromotedWidget never sets, while the Vue path reads options.advanced from the cloned interior options. This PR aligns Vue with canvas rather than diverging from it.
  • Un-promotion leaves no stale flag. _clearPromotedWidget does not clear widgetId, but removing-input drops the whole slot, so no live input survives with a stale id.

Three findings that could not be anchored inline because their lines are not in the diff:

issue: src/components/builder/AppModeWidgetList.vue:80 — this PR makes a broken App Mode state reachable.

matchingWidget.slotMetadata = undefined strips the new promoted flag before useProcessedWidgets runs, so the advanced filter re-applies and visibleWidgets comes back empty. Pre-fix the widget was unrenderable on the node, and selection is a click on a rendered widget (AppBuilder.vue:147), so it could never be selected. Now it can be, and the App Mode entry renders a labelled row with a rename popover and no control.

Preserving the flag rather than nulling the object would avoid it:

matchingWidget.slotMetadata = slotMetadata && { ...slotMetadata, linked: false }

question: src/renderer/extensions/vueNodes/composables/useProcessedWidgets.ts:338 — permanent advanced ring on the host node.

ProcessedWidget.advanced stays true, so the promoted widget keeps the ring ring-component-node-widget-advanced treatment, and the host node has no advanced toggle that could ever turn it off. Is that intended? Neither the unit test nor the E2E asserts on it either way, so it is currently unverified in both directions.

nitpick (non-blocking): useProcessedWidgets.test.ts:176 — stale name after the rename.

Reads "keeps advanced widgets visible when linked and showAdvanced is false" while the third parameter is now ignoreAdvanced. It covers both branches but is named for one.

Comment thread src/composables/graph/useGraphNodeManager.ts
Comment thread src/renderer/extensions/vueNodes/composables/useProcessedWidgets.test.ts Outdated
Comment thread browser_tests/tests/subgraph/subgraphPromotion.spec.ts
- keep selected advanced widgets visible in app mode
- pin promoted slot metadata at its producer boundary
- simplify and clarify promoted visibility coverage
@jaeone94

jaeone94 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

Addressed the unanchored review items in the follow-up commit:

  • App Mode now forces advanced visibility only for its one-widget selected-input projection, so the control remains visible while slot UI stays removed; a component regression test pins the behavior.
  • The advanced ring remains intentional: promotion bypasses advanced filtering but preserves the source schema advanced presentation metadata.
  • The visibility test names now describe the renamed ignoreAdvanced contract.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 9, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 9, 2026
@jaeone94
jaeone94 added this pull request to the merge queue Aug 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 17, 2026
@jaeone94
jaeone94 added this pull request to the merge queue Aug 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 17, 2026
@jaeone94
jaeone94 added this pull request to the merge queue Aug 17, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 17, 2026
@github-actions github-actions Bot added the risk:R3 PR risk grade (advisory shadow check; grader-owned) label Aug 17, 2026
@jaeone94

jaeone94 commented Aug 17, 2026

Copy link
Copy Markdown
Collaborator Author

Merge queue follow-up: this was a semantic conflict with #15057, which moved Testing Pinia initialization into the shared Vitest setup and removed file-local imports and setup. The queue merge retained the newly added local beforeEach after those imports were removed.

Pushed 65bef75 to remove the redundant local setup and rely on the shared test setup.

Verification:

  • Targeted unit test: 35 passed
  • Full local unit suite: 14,956 passed, 8 skipped
  • Format, lint, typecheck, and knip passed
  • PR CI: 56 passed, 10 skipped, 0 failed

The new commit dismissed the previous approval, so the PR is ready for re-review.

Created by Codex

@jaeone94 jaeone94 assigned christian-byrne and unassigned jaeone94 Aug 17, 2026
DrJKL pushed a commit that referenced this pull request Aug 20, 2026
## Summary

Forward-ports the promoted advanced-widget visibility invariant from
#14647 to the store-backed ECS rendering path.

Promoted host inputs are user-selected public controls and bypass only
the advanced-widget filter. Explicitly hidden widgets remain hidden.

## Red-green verification

- `4e2084d8a0` adds canvas and App Mode regressions; both fail on the
ECS base because visibility only recognizes external links.
- `796648dcae` derives promotion from the host input's canonical
`widgetId`; all regressions pass.

## Test plan

- [x] Confirm canvas regression fails before the fix
- [x] Confirm App Mode regression fails before the fix
- [x] Confirm targeted unit suite passes after the fix (39 tests)
- [x] Run typecheck, lint, and format checks

---------

Co-authored-by: Amp <amp@ampcode.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:R3 PR risk grade (advisory shadow check; grader-owned) size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants