Skip to content

Conversation

@christian-byrne
Copy link
Contributor

@christian-byrne christian-byrne commented Jan 29, 2026

Summary

On Comfy Cloud, PrimitiveNode now creates asset widgets (opening Asset Browser) instead of combo widgets for model-eligible inputs like checkpoints, LoRAs, etc.

Changes

  • Extract createAssetWidget factory to src/platform/assets/utils/createAssetWidget.ts
  • Refactor useComboWidget.ts to use the shared factory (eliminates code duplication)
  • Add cloud asset widget creation in PrimitiveNode._createWidget() using isAssetBrowserEligible()
  • Pass target node's comfyClass to Asset Browser for correct model filtering
  • Convert JS # privates to underscore convention
  • Add knip ignore for isAssetWidget (litegraph public API)

Testing

  • Create PrimitiveNode on cloud, connect to CheckpointLoaderSimple.ckpt_name
  • Verify Asset Browser opens when clicking the widget
  • Select a model, verify filename is set as widget value
  • Connect primitive to node, run workflow, verify model loads
  • Test with LoRA loader, VAE loader, other model inputs
  • Test workflow save/load with primitive asset widgets
  • Verify local behavior unchanged (combo widget still works)

Fixes model selection issue in PrimitiveNode on Comfy Cloud.

┆Issue is synchronized with this Notion page by Unito

Subagent 5 and others added 2 commits January 28, 2026 21:47
On Comfy Cloud, PrimitiveNode now creates asset widgets (opening Asset Browser)
instead of combo widgets for model-eligible inputs like checkpoints, LoRAs, etc.

- Add cloud asset widget creation in #createWidget() using isAssetBrowserEligible()
- Add #createAssetWidget() helper following useComboWidget.ts pattern
- Add #finalizeWidget() helper to DRY up widget sizing/callback setup
- Pass target node's comfyClass to Asset Browser for correct model filtering

Amp-Thread-ID: https://ampcode.com/threads/T-019c0839-bbdc-754a-9d3b-151417058ded
Co-authored-by: Amp <amp@ampcode.com>
- Extract createAssetWidget factory to src/platform/assets/utils/
- Refactor useComboWidget.ts to use the shared factory
- Simplify PrimitiveNode to use shared factory
- Convert JS # privates to underscore convention
- Add knip ignore for isAssetWidget (litegraph public API)

Amp-Thread-ID: https://ampcode.com/threads/T-019c0839-bbdc-754a-9d3b-151417058ded
Co-authored-by: Amp <amp@ampcode.com>
@christian-byrne christian-byrne requested a review from a team as a code owner January 29, 2026 22:34
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jan 29, 2026
@github-actions
Copy link

github-actions bot commented Jan 29, 2026

🎭 Playwright Tests: ⚠️ Passed with flaky tests

Results: 505 passed, 0 failed, 1 flaky, 8 skipped (Total: 514)

❌ Failed Tests

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 29, 2026

📝 Walkthrough

Walkthrough

This change introduces Cloud asset widget support for combo inputs in PrimitiveNode by refactoring existing private methods from hash-prefixed to underscore notation and adding new asset widget creation flows. A utility function for creating asset widgets is added alongside supporting export documentation to track usage by custom nodes.

Changes

Cohort / File(s) Summary
PrimitiveNode private method refactoring
src/extensions/core/widgetInputs.ts
Renamed private methods from # prefix to underscore prefix (#onFirstConnection → _onFirstConnection, #createWidget → _createWidget, #mergeWidgetConfig → _mergeWidgetConfig, #isValidConnection → _isValidConnection, #removeWidgets → _removeWidgets). Added _createAssetWidget and _finalizeWidget helpers to support Cloud asset widget creation path. Expanded imports for asset utilities and cloud-distribution checks.
Asset widget creation utility
src/platform/assets/utils/createAssetWidget.ts
New utility function that creates asset-based widgets with asset browser dialog integration. Validates selected assets and filenames against schemas, derives asset filenames, and invokes callbacks on value changes.
Asset widget composition refactoring
src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts
Simplified asset browser logic by delegating to the new createAssetWidget utility. Removed inline asset browser modal handling and schema validation, reducing code duplication while maintaining asset selection and value propagation behavior.
Export declarations and documentation
src/lib/litegraph/src/litegraph.ts, src/lib/litegraph/src/widgets/widgetMap.ts
Split isComboWidget and isAssetWidget into separate export declarations. Added JSDoc annotation and @knipIgnoreUnusedButUsedByCustomNodes tag to isAssetWidget to document usage by custom nodes.
Documentation
todo.md
Added bug report documenting a cloud-specific issue with model selection via primitive nodes, including reproduction steps and related ticket references.

Sequence Diagram(s)

sequenceDiagram
    participant PN as PrimitiveNode
    participant CAW as createAssetWidget
    participant ABD as AssetBrowserDialog
    participant Schema as AssetSchema
    
    PN->>PN: _onFirstConnection (Cloud context,<br/>combo + eligible asset)
    PN->>CAW: _createAssetWidget(node, widgetName,<br/>inputData)
    CAW->>ABD: useAssetBrowserDialog opens modal
    ABD->>ABD: User selects asset
    ABD->>Schema: validateAsset(assetItem)
    Schema-->>CAW: validation result
    CAW->>Schema: getAssetFilename & validate
    Schema-->>CAW: filename
    CAW->>CAW: widget.value = filename
    CAW->>PN: onValueChange callback
    PN->>PN: _finalizeWidget(setup callbacks,<br/>adjust node size)
Loading

Possibly related PRs

Suggested reviewers

  • AustinMroz
  • DrJKL
✨ Finishing touches
  • 📝 Generate docstrings

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 and usage tips.

@coderabbitai coderabbitai bot requested review from AustinMroz and DrJKL January 29, 2026 22:35
@github-actions
Copy link

github-actions bot commented Jan 29, 2026

🎨 Storybook Build Status

loading Build is starting...

⏰ Started at: 01/29/2026, 10:36:34 PM UTC

🚀 Building Storybook

  • 📦 Installing dependencies...
  • 🔧 Building Storybook components...
  • 🌐 Preparing deployment to Cloudflare Pages...

⏱️ Please wait while the Storybook build is in progress...

@github-actions
Copy link

Bundle Size Report

Summary

  • Raw size: 22.1 MB baseline 22.1 MB — 🔴 +1.08 kB
  • Gzip: 4.61 MB baseline 4.6 MB — 🔴 +249 B
  • Brotli: 3.42 MB baseline 3.42 MB — 🔴 +230 B
  • Bundles: 173 current • 173 baseline • 81 added / 81 removed

Category Glance
Other 🔴 +843 B (7.1 MB) · Data & Services 🔴 +251 B (2.7 MB) · Panels & Settings 🟢 -8 B (471 kB) · Graph Workspace 🟢 -1 B (974 kB) · Vendor & Third-Party ⚪ 0 B (10.7 MB) · Views & Navigation ⚪ 0 B (80.7 kB) · + 5 more

Per-category breakdown
App Entry Points — 26 kB (baseline 26 kB) • ⚪ 0 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-7fwrUnqt.js (new) 26 kB 🔴 +26 kB 🔴 +7.51 kB 🔴 +6.61 kB
assets/index-DF1PnLuz.js (removed) 26 kB 🟢 -26 kB 🟢 -7.51 kB 🟢 -6.61 kB

Status: 1 added / 1 removed

Graph Workspace — 974 kB (baseline 974 kB) • 🟢 -1 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-DbM8Ydo8.js (removed) 974 kB 🟢 -974 kB 🟢 -197 kB 🟢 -148 kB
assets/GraphView-Dlz7Ny39.js (new) 974 kB 🔴 +974 kB 🔴 +197 kB 🔴 +149 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CloudSurveyView-D6JQyl1x.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -3.6 kB 🟢 -3.05 kB
assets/CloudSurveyView-DViR5Mxe.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +3.6 kB 🔴 +3.06 kB
assets/CloudLoginView-CesL3dj0.js (removed) 11.8 kB 🟢 -11.8 kB 🟢 -3.09 kB 🟢 -2.72 kB
assets/CloudLoginView-if2jhCMi.js (new) 11.8 kB 🔴 +11.8 kB 🔴 +3.09 kB 🔴 +2.72 kB
assets/UserCheckView-BuUD9-bH.js (new) 10.5 kB 🔴 +10.5 kB 🔴 +2.45 kB 🔴 +2.13 kB
assets/UserCheckView-K8qHM-rC.js (removed) 10.5 kB 🟢 -10.5 kB 🟢 -2.45 kB 🟢 -2.13 kB
assets/CloudLayoutView-BDY_wyVx.js (new) 8.54 kB 🔴 +8.54 kB 🔴 +2.24 kB 🔴 +1.96 kB
assets/CloudLayoutView-CwL5x-jX.js (removed) 8.54 kB 🟢 -8.54 kB 🟢 -2.24 kB 🟢 -1.96 kB
assets/CloudSignupView-DglYQzzH.js (new) 8.18 kB 🔴 +8.18 kB 🔴 +2.33 kB 🔴 +2.02 kB
assets/CloudSignupView-Dq3DoVdu.js (removed) 8.18 kB 🟢 -8.18 kB 🟢 -2.33 kB 🟢 -2.02 kB
assets/CloudForgotPasswordView-5LQ63-gH.js (removed) 6.26 kB 🟢 -6.26 kB 🟢 -1.93 kB 🟢 -1.69 kB
assets/CloudForgotPasswordView-CtvQm30N.js (new) 6.26 kB 🔴 +6.26 kB 🔴 +1.93 kB 🔴 +1.69 kB
assets/UserSelectView-Bbnwi7WO.js (removed) 5.28 kB 🟢 -5.28 kB 🟢 -1.76 kB 🟢 -1.58 kB
assets/UserSelectView-BsLenr_4.js (new) 5.28 kB 🔴 +5.28 kB 🔴 +1.76 kB 🔴 +1.57 kB
assets/CloudSubscriptionRedirectView-D21SsJeE.js (removed) 5.27 kB 🟢 -5.27 kB 🟢 -1.73 kB 🟢 -1.54 kB
assets/CloudSubscriptionRedirectView-dGe6rZpC.js (new) 5.27 kB 🔴 +5.27 kB 🔴 +1.73 kB 🔴 +1.54 kB
assets/CloudAuthTimeoutView-CDsWlpfF.js (new) 5.24 kB 🔴 +5.24 kB 🔴 +1.7 kB 🔴 +1.49 kB
assets/CloudAuthTimeoutView-CIs6xJvA.js (removed) 5.24 kB 🟢 -5.24 kB 🟢 -1.71 kB 🟢 -1.49 kB
assets/CloudSorryContactSupportView-n5f-fGMz.js 1.97 kB 1.97 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/layout-V93lMUpe.js 500 B 500 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 9 added / 9 removed

Panels & Settings — 471 kB (baseline 471 kB) • 🟢 -8 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WorkspacePanel-CBDWrvtF.js (removed) 29.8 kB 🟢 -29.8 kB 🟢 -5.89 kB 🟢 -5.14 kB
assets/WorkspacePanel-CMjqXykj.js (new) 29.8 kB 🔴 +29.8 kB 🔴 +5.89 kB 🔴 +5.14 kB
assets/LegacyCreditsPanel-B74SBe6x.js (new) 23.8 kB 🔴 +23.8 kB 🔴 +5.94 kB 🔴 +5.23 kB
assets/LegacyCreditsPanel-Bmq8vnx0.js (removed) 23.8 kB 🟢 -23.8 kB 🟢 -5.94 kB 🟢 -5.22 kB
assets/SubscriptionPanel-7FxZuiFJ.js (removed) 21 kB 🟢 -21 kB 🟢 -5.04 kB 🟢 -4.44 kB
assets/SubscriptionPanel-eQhXm1mT.js (new) 21 kB 🔴 +21 kB 🔴 +5.05 kB 🔴 +4.45 kB
assets/KeybindingPanel-COFiAZqk.js (new) 14.2 kB 🔴 +14.2 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/KeybindingPanel-W4MjuR_8.js (removed) 14.2 kB 🟢 -14.2 kB 🟢 -3.74 kB 🟢 -3.31 kB
assets/AboutPanel-BhSyj82V.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.68 kB 🟢 -2.42 kB
assets/AboutPanel-DbOxpXOd.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.68 kB 🔴 +2.42 kB
assets/ExtensionPanel-CFJqBN3Y.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.71 kB 🟢 -2.4 kB
assets/ExtensionPanel-Cph5zibD.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.71 kB 🔴 +2.4 kB
assets/ServerConfigPanel-CTKd-Xri.js (new) 7.23 kB 🔴 +7.23 kB 🔴 +2.16 kB 🔴 +1.94 kB
assets/ServerConfigPanel-nk_wXHvr.js (removed) 7.23 kB 🟢 -7.23 kB 🟢 -2.17 kB 🟢 -1.94 kB
assets/UserPanel-BtUL3E43.js (removed) 6.58 kB 🟢 -6.58 kB 🟢 -1.9 kB 🟢 -1.68 kB
assets/UserPanel-D5-OQeeV.js (new) 6.58 kB 🔴 +6.58 kB 🔴 +1.9 kB 🔴 +1.67 kB
assets/refreshRemoteConfig-DugRl30A.js (new) 1.31 kB 🔴 +1.31 kB 🔴 +571 B 🔴 +492 B
assets/refreshRemoteConfig-XPqYH6rL.js (removed) 1.31 kB 🟢 -1.31 kB 🟢 -574 B 🟢 -500 B
assets/config-_c4aC-Rr.js (removed) 1.16 kB 🟢 -1.16 kB 🟢 -610 B 🟢 -535 B
assets/config-c15IO18P.js (new) 1.15 kB 🔴 +1.15 kB 🔴 +602 B 🔴 +524 B
assets/cloudRemoteConfig-BMnV2Oem.js (removed) 1.11 kB 🟢 -1.11 kB 🟢 -511 B 🟢 -448 B
assets/cloudRemoteConfig-DDkKNI0v.js (new) 1.11 kB 🔴 +1.11 kB 🔴 +510 B 🔴 +456 B
assets/refreshRemoteConfig-B6tctsPI.js (removed) 169 B 🟢 -169 B 🟢 -108 B 🟢 -105 B
assets/refreshRemoteConfig-B8_d5moN.js (new) 169 B 🔴 +169 B 🔴 +108 B 🔴 +109 B
assets/remoteConfig-B0mlVvm7.js 788 B 788 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-2UNjEj6k.js 32.9 kB 32.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-B2OMGvh7.js 31.2 kB 31.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BcujOfpn.js 29.6 kB 29.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BI09_t23.js 29.4 kB 29.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BKamuseh.js 25.8 kB 25.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-BlTun9tZ.js 26.4 kB 26.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CZ62uO3e.js 30.2 kB 30.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DaK-NByz.js 35.2 kB 35.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DaS3cSXp.js 39.4 kB 39.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DWbMuaAa.js 32 kB 32 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-S7pA60Hj.js 30.4 kB 30.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 12 added / 12 removed

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

Authentication, profile, and account management bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/auth-DlFumTGu.js (removed) 3.54 kB 🟢 -3.54 kB 🟢 -1.24 kB 🟢 -1.05 kB
assets/auth-hkNp_WpF.js (new) 3.54 kB 🔴 +3.54 kB 🔴 +1.24 kB 🔴 +1.05 kB
assets/firebaseAuthStore-Bfaiil72.js (new) 217 B 🔴 +217 B 🔴 +138 B 🔴 +130 B
assets/firebaseAuthStore-D4z2aaYO.js (removed) 217 B 🟢 -217 B 🟢 -138 B 🟢 -120 B
assets/auth-CQl9aVJs.js (removed) 178 B 🟢 -178 B 🟢 -142 B 🟢 -132 B
assets/auth-d1KFnWeT.js (new) 178 B 🔴 +178 B 🔴 +142 B 🔴 +132 B

Status: 3 added / 3 removed

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

Modals, dialogs, drawers, and in-app editors

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useSubscriptionDialog-B0Qj3Swf.js (new) 2.71 kB 🔴 +2.71 kB 🔴 +1.29 kB 🔴 +1.14 kB
assets/useSubscriptionDialog-B1qSbLXx.js (removed) 2.71 kB 🟢 -2.71 kB 🟢 -1.29 kB 🟢 -1.15 kB
assets/useSubscriptionDialog-5HaNHwN-.js (new) 179 B 🔴 +179 B 🔴 +110 B 🔴 +101 B
assets/useSubscriptionDialog-BDgrkGJc.js (removed) 179 B 🟢 -179 B 🟢 -110 B 🟢 -96 B

Status: 2 added / 2 removed

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

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/ComfyQueueButton-C-4MxJcA.js (new) 9.52 kB 🔴 +9.52 kB 🔴 +2.69 kB 🔴 +2.41 kB
assets/ComfyQueueButton-CCHBjaym.js (removed) 9.52 kB 🟢 -9.52 kB 🟢 -2.68 kB 🟢 -2.41 kB
assets/SubscribeButton-CbICuqob.js (removed) 4.63 kB 🟢 -4.63 kB 🟢 -1.57 kB 🟢 -1.39 kB
assets/SubscribeButton-DN53869J.js (new) 4.63 kB 🔴 +4.63 kB 🔴 +1.57 kB 🔴 +1.39 kB
assets/cloudFeedbackTopbarButton-BJl7ITK_.js (new) 1.24 kB 🔴 +1.24 kB 🔴 +676 B 🔴 +571 B
assets/cloudFeedbackTopbarButton-ByddwiAD.js (removed) 1.24 kB 🟢 -1.24 kB 🟢 -673 B 🟢 -569 B
assets/ComfyQueueButton-B9kzAUm4.js (removed) 181 B 🟢 -181 B 🟢 -118 B 🟢 -111 B
assets/ComfyQueueButton-DTkJy0hg.js (new) 181 B 🔴 +181 B 🔴 +118 B 🔴 +112 B
assets/Button-Bb_i0j7c.js 3.82 kB 3.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/CloudBadge-BNjL4ma_.js 1.85 kB 1.85 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/TopbarBadge-qACg_vGT.js 8.36 kB 8.36 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar-D80lITos.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetButton-DSv9NFvF.js 2.41 kB 2.41 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 4 added / 4 removed

Data & Services — 2.7 MB (baseline 2.7 MB) • 🔴 +251 B

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/dialogService-BDF0j6VD.js (new) 2.01 MB 🔴 +2.01 MB 🔴 +424 kB 🔴 +324 kB
assets/dialogService-DP0R0c7e.js (removed) 2 MB 🟢 -2 MB 🟢 -424 kB 🟢 -324 kB
assets/api-BdHT5Gha.js (removed) 674 kB 🟢 -674 kB 🟢 -149 kB 🟢 -118 kB
assets/api-C904-tvP.js (new) 674 kB 🔴 +674 kB 🔴 +149 kB 🔴 +118 kB
assets/releaseStore-Cdrh85nI.js (new) 8.91 kB 🔴 +8.91 kB 🔴 +2.4 kB 🔴 +2.12 kB
assets/releaseStore-Dk3h6_QN.js (removed) 8.91 kB 🟢 -8.91 kB 🟢 -2.4 kB 🟢 -2.12 kB
assets/keybindingService-DH2LS5Fq.js (new) 6.78 kB 🔴 +6.78 kB 🔴 +1.75 kB 🔴 +1.52 kB
assets/keybindingService-DlzAZGLf.js (removed) 6.78 kB 🟢 -6.78 kB 🟢 -1.74 kB 🟢 -1.52 kB
assets/bootstrapStore-APmgMP_u.js (removed) 2.69 kB 🟢 -2.69 kB 🟢 -1.03 kB 🟢 -976 B
assets/bootstrapStore-CPMRwHj8.js (new) 2.69 kB 🔴 +2.69 kB 🔴 +1.03 kB 🔴 +964 B
assets/userStore-C3b34E40.js (new) 2.16 kB 🔴 +2.16 kB 🔴 +813 B 🔴 +724 B
assets/userStore-Df4qGwiz.js (removed) 2.16 kB 🟢 -2.16 kB 🟢 -811 B 🟢 -725 B
assets/audioService-1AnyXAKO.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +929 B 🔴 +813 B
assets/audioService-CB6eBoZ4.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -931 B 🟢 -811 B
assets/releaseStore-BEj4DKlW.js (removed) 140 B 🟢 -140 B 🟢 -106 B 🟢 -107 B
assets/releaseStore-Cqkzw4Ue.js (new) 140 B 🔴 +140 B 🔴 +106 B 🔴 +114 B
assets/serverConfigStore-DOoqLe5c.js 2.64 kB 2.64 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 8 added / 8 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/useErrorHandling-Dt9Gdv12.js (removed) 5.21 kB 🟢 -5.21 kB 🟢 -1.53 kB 🟢 -1.35 kB
assets/useErrorHandling-DwFK6xJg.js (new) 5.21 kB 🔴 +5.21 kB 🔴 +1.54 kB 🔴 +1.34 kB
assets/useWorkspaceUI-CtHv_AcS.js (removed) 3.42 kB 🟢 -3.42 kB 🟢 -975 B 🟢 -842 B
assets/useWorkspaceUI-DDZr-MBP.js (new) 3.42 kB 🔴 +3.42 kB 🔴 +977 B 🔴 +843 B
assets/useSubscriptionActions-BqRlSEJz.js (new) 2.22 kB 🔴 +2.22 kB 🔴 +871 B 🔴 +766 B
assets/useSubscriptionActions-W3IXhMYs.js (removed) 2.22 kB 🟢 -2.22 kB 🟢 -872 B 🟢 -765 B
assets/subscriptionCheckoutUtil-BaLctcWY.js (new) 2.03 kB 🔴 +2.03 kB 🔴 +871 B 🔴 +763 B
assets/subscriptionCheckoutUtil-D1XN55Vc.js (removed) 2.03 kB 🟢 -2.03 kB 🟢 -872 B 🟢 -764 B
assets/useSubscriptionCredits-BUGVCWki.js (new) 1.39 kB 🔴 +1.39 kB 🔴 +599 B 🔴 +532 B
assets/useSubscriptionCredits-CeNYqc5P.js (removed) 1.39 kB 🟢 -1.39 kB 🟢 -595 B 🟢 -523 B
assets/audioUtils-BA_65CFh.js (new) 970 B 🔴 +970 B 🔴 +548 B 🔴 +460 B
assets/audioUtils-CmbeEWg8.js (removed) 970 B 🟢 -970 B 🟢 -547 B 🟢 -489 B
assets/useCurrentUser-CEzKrvzN.js (new) 145 B 🔴 +145 B 🔴 +114 B 🔴 +105 B
assets/useCurrentUser-ZLdhKKc0.js (removed) 145 B 🟢 -145 B 🟢 -114 B 🟢 -103 B
assets/_plugin-vue_export-helper-DuK_Fly3.js 467 B 467 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/colorUtil-GMAsfHxw.js 7.2 kB 7.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/markdownRendererUtil-ivqHoiOs.js 1.78 kB 1.78 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/tailwindUtil-CJjrIEVR.js 488 B 488 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-chart-DHGfk3hn.js 408 kB 408 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-other-jpGqhHNG.js 4.1 MB 4.1 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-4Jj8eU28.js 3.04 MB 3.04 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-reka-ui-aCG649nF.js 263 kB 263 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-CERwhPwK.js 1.83 MB 1.83 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-BxrEVL6s.js 650 kB 650 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-Dwii0E-t.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-IX6P8SWv.js 398 kB 398 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 7.1 MB (baseline 7.1 MB) • 🔴 +843 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/core-0U6VRvi1.js (new) 181 kB 🔴 +181 kB 🔴 +43.5 kB 🔴 +36.4 kB
assets/core-DkHQ8u-H.js (removed) 180 kB 🟢 -180 kB 🟢 -43.3 kB 🟢 -36.2 kB
assets/WidgetSelect-BTrc2bOp.js (new) 52.2 kB 🔴 +52.2 kB 🔴 +11.5 kB 🔴 +10 kB
assets/WidgetSelect-CZYBn9GW.js (removed) 52.2 kB 🟢 -52.2 kB 🟢 -11.5 kB 🟢 -10 kB
assets/Load3DControls-5l4Dyd65.js (removed) 35.9 kB 🟢 -35.9 kB 🟢 -5.87 kB 🟢 -5.08 kB
assets/Load3DControls-BFJxCnIV.js (new) 35.9 kB 🔴 +35.9 kB 🔴 +5.87 kB 🔴 +5.08 kB
assets/SubscriptionRequiredDialogContent--94-HThu.js (removed) 28.7 kB 🟢 -28.7 kB 🟢 -6.78 kB 🟢 -5.92 kB
assets/SubscriptionRequiredDialogContent-BM8JLPtx.js (new) 28.7 kB 🔴 +28.7 kB 🔴 +6.79 kB 🔴 +5.92 kB
assets/CurrentUserPopoverWorkspace-DWq1ZSri.js (removed) 22.2 kB 🟢 -22.2 kB 🟢 -4.99 kB 🟢 -4.42 kB
assets/CurrentUserPopoverWorkspace-Mc8wqvWq.js (new) 22.2 kB 🔴 +22.2 kB 🔴 +5 kB 🔴 +4.42 kB
assets/Load3D-BKPTqk_H.js (removed) 19.2 kB 🟢 -19.2 kB 🟢 -4.37 kB 🟢 -3.84 kB
assets/Load3D-D4Ystkob.js (new) 19.2 kB 🔴 +19.2 kB 🔴 +4.37 kB 🔴 +3.85 kB
assets/WidgetInputNumber-D0FfsbMs.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.53 kB 🔴 +4.03 kB
assets/WidgetInputNumber-DJlddSVQ.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.53 kB 🟢 -4.03 kB
assets/WidgetRecordAudio-BqZjKIfw.js (new) 18.3 kB 🔴 +18.3 kB 🔴 +4.97 kB 🔴 +4.44 kB
assets/WidgetRecordAudio-DH_0Cndu.js (removed) 18.3 kB 🟢 -18.3 kB 🟢 -4.97 kB 🟢 -4.43 kB
assets/SubscriptionPanelContentWorkspace-BL8Uf38H.js (removed) 18.2 kB 🟢 -18.2 kB 🟢 -4.48 kB 🟢 -3.89 kB
assets/SubscriptionPanelContentWorkspace-D35s0Ajm.js (new) 18.2 kB 🔴 +18.2 kB 🔴 +4.48 kB 🔴 +3.9 kB
assets/WidgetImageCrop-B8Rd21LI.js (removed) 17.1 kB 🟢 -17.1 kB 🟢 -4.14 kB 🟢 -3.63 kB
assets/WidgetImageCrop-mIPWjA67.js (new) 17.1 kB 🔴 +17.1 kB 🔴 +4.14 kB 🔴 +3.63 kB
assets/PanelTemplate-Bg5L07US.js (new) 16.2 kB 🔴 +16.2 kB 🔴 +5.46 kB 🔴 +4.8 kB
assets/PanelTemplate-D6qAE1R4.js (removed) 16.2 kB 🟢 -16.2 kB 🟢 -5.46 kB 🟢 -4.8 kB
assets/AudioPreviewPlayer-ChfKVlkC.js (removed) 10.8 kB 🟢 -10.8 kB 🟢 -2.97 kB 🟢 -2.65 kB
assets/AudioPreviewPlayer-DEnytAcp.js (new) 10.8 kB 🔴 +10.8 kB 🔴 +2.97 kB 🔴 +2.65 kB
assets/InviteMemberDialogContent-aFSLTnZh.js (removed) 8.36 kB 🟢 -8.36 kB 🟢 -2.5 kB 🟢 -2.17 kB
assets/InviteMemberDialogContent-DfmUAYvb.js (new) 8.36 kB 🔴 +8.36 kB 🔴 +2.51 kB 🔴 +2.17 kB
assets/WidgetWithControl-Cpjx3_eN.js (new) 8.07 kB 🔴 +8.07 kB 🔴 +2.68 kB 🔴 +2.41 kB
assets/WidgetWithControl-DXKlTP0t.js (removed) 8.07 kB 🟢 -8.07 kB 🟢 -2.68 kB 🟢 -2.41 kB
assets/CreateWorkspaceDialogContent-ClNVYpHy.js (removed) 5.93 kB 🟢 -5.93 kB 🟢 -1.92 kB 🟢 -1.68 kB
assets/CreateWorkspaceDialogContent-ntUFmLWv.js (new) 5.93 kB 🔴 +5.93 kB 🔴 +1.93 kB 🔴 +1.69 kB
assets/EditWorkspaceDialogContent-CrtmYET-.js (removed) 5.7 kB 🟢 -5.7 kB 🟢 -1.88 kB 🟢 -1.64 kB
assets/EditWorkspaceDialogContent-Dnj5zctb.js (new) 5.7 kB 🔴 +5.7 kB 🔴 +1.88 kB 🔴 +1.65 kB
assets/ValueControlPopover-BaiXXaKw.js (new) 5.17 kB 🔴 +5.17 kB 🔴 +1.69 kB 🔴 +1.5 kB
assets/ValueControlPopover-mhmdhVXW.js (removed) 5.17 kB 🟢 -5.17 kB 🟢 -1.68 kB 🟢 -1.49 kB
assets/DeleteWorkspaceDialogContent-B2wmD7vp.js (new) 4.59 kB 🔴 +4.59 kB 🔴 +1.56 kB 🔴 +1.35 kB
assets/DeleteWorkspaceDialogContent-DZy0SOHt.js (removed) 4.59 kB 🟢 -4.59 kB 🟢 -1.56 kB 🟢 -1.35 kB
assets/LeaveWorkspaceDialogContent-BoHon5df.js (removed) 4.41 kB 🟢 -4.41 kB 🟢 -1.5 kB 🟢 -1.31 kB
assets/LeaveWorkspaceDialogContent-CrG-wj5c.js (new) 4.41 kB 🔴 +4.41 kB 🔴 +1.5 kB 🔴 +1.31 kB
assets/RemoveMemberDialogContent-B_50coTb.js (removed) 4.38 kB 🟢 -4.38 kB 🟢 -1.45 kB 🟢 -1.27 kB
assets/RemoveMemberDialogContent-B0xDNN60.js (new) 4.38 kB 🔴 +4.38 kB 🔴 +1.46 kB 🔴 +1.27 kB
assets/RevokeInviteDialogContent-oOyKcy_w.js (removed) 4.29 kB 🟢 -4.29 kB 🟢 -1.47 kB 🟢 -1.29 kB
assets/RevokeInviteDialogContent-R04cWfnQ.js (new) 4.29 kB 🔴 +4.29 kB 🔴 +1.47 kB 🔴 +1.29 kB
assets/GlobalToast-4dD6T7rQ.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.1 kB 🔴 +938 B
assets/GlobalToast-XsC4ER92.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.1 kB 🟢 -944 B
assets/SubscribeToRun-CMmafHPi.js (new) 2.96 kB 🔴 +2.96 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/SubscribeToRun-tjMU1mPH.js (removed) 2.96 kB 🟢 -2.96 kB 🟢 -1.15 kB 🟢 -1.02 kB
assets/cloudSessionCookie-BuHXMdoj.js (removed) 2.94 kB 🟢 -2.94 kB 🟢 -929 B 🟢 -800 B
assets/cloudSessionCookie-CZwkLU2y.js (new) 2.94 kB 🔴 +2.94 kB 🔴 +938 B 🔴 +811 B
assets/BaseViewTemplate-CgHWblIY.js (removed) 2.42 kB 🟢 -2.42 kB 🟢 -1.04 kB 🟢 -945 B
assets/BaseViewTemplate-m6AJ-F6b.js (new) 2.42 kB 🔴 +2.42 kB 🔴 +1.04 kB 🔴 +940 B
assets/CloudRunButtonWrapper-CjtALtUy.js (removed) 1.79 kB 🟢 -1.79 kB 🟢 -643 B 🟢 -562 B
assets/CloudRunButtonWrapper-DBARP52Y.js (new) 1.79 kB 🔴 +1.79 kB 🔴 +645 B 🔴 +563 B
assets/cloudBadges-BCkC0nnk.js (removed) 1.08 kB 🟢 -1.08 kB 🟢 -537 B 🟢 -475 B
assets/cloudBadges-CA8icBdm.js (new) 1.08 kB 🔴 +1.08 kB 🔴 +537 B 🔴 +476 B
assets/graphHasMissingNodes-Cqub79xP.js (new) 1.06 kB 🔴 +1.06 kB 🔴 +462 B 🔴 +407 B
assets/graphHasMissingNodes-ZWZCepou.js (removed) 1.06 kB 🟢 -1.06 kB 🟢 -462 B 🟢 -408 B
assets/cloudSubscription-CgMhMGVU.js (new) 976 B 🔴 +976 B 🔴 +462 B 🔴 +401 B
assets/cloudSubscription-CT9EAW9R.js (removed) 976 B 🟢 -976 B 🟢 -465 B 🟢 -396 B
assets/nightlyBadges-FNlSLLTS.js (new) 595 B 🔴 +595 B 🔴 +356 B 🔴 +307 B
assets/nightlyBadges-tkNiAxP-.js (removed) 595 B 🟢 -595 B 🟢 -356 B 🟢 -307 B
assets/SubscriptionPanelContentWorkspace-Cwt2s7Tf.js (removed) 266 B 🟢 -266 B 🟢 -136 B 🟢 -116 B
assets/SubscriptionPanelContentWorkspace-DZ6Y0llu.js (new) 266 B 🔴 +266 B 🔴 +136 B 🔴 +125 B
assets/WidgetInputNumber-clbh2Ths.js (new) 186 B 🔴 +186 B 🔴 +119 B 🔴 +119 B
assets/WidgetInputNumber-DxeEXT3R.js (removed) 186 B 🟢 -186 B 🟢 -119 B 🟢 -109 B
assets/WidgetLegacy-1y8Muap5.js (new) 164 B 🔴 +164 B 🔴 +125 B 🔴 +109 B
assets/WidgetLegacy-CyQg8hLf.js (removed) 164 B 🟢 -164 B 🟢 -125 B 🟢 -116 B
assets/Load3D-9Op0OMLD.js (removed) 131 B 🟢 -131 B 🟢 -107 B 🟢 -105 B
assets/Load3D-lVjDH33m.js (new) 131 B 🔴 +131 B 🔴 +107 B 🔴 +105 B
assets/auto-DWs2ctGL.js 1.73 kB 1.73 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BEw5ErI4.js 18.5 kB 18.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BGeHkplA.js 17.9 kB 17.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BV0l36Iz.js 17.2 kB 17.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C_Y3D6Cn.js 17.8 kB 17.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C6piRza5.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Cf8Zq1td.js 18.8 kB 18.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CiziP3Xs.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-D1595tOr.js 19.3 kB 19.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DXauvccL.js 20.6 kB 20.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-P5QCEfZc.js 18 kB 18 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-WbYP_D61.js 17 kB 17 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-COrIg4fJ.js 188 B 188 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/i18n-Cp-AD5FJ.js 499 kB 499 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/LazyImage-DHwPdKGO.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BHtk4Fg_.js 174 kB 174 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BMSlgLcp.js 155 kB 155 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BQCWi9e4.js 112 kB 112 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BWJjz1qs.js 130 kB 130 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CJicmTR7.js 113 kB 113 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CNOkBy-u.js 126 kB 126 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CySb1R5_.js 151 kB 151 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DMUPIFMF.js 133 kB 133 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DpsGU4si.js 126 kB 126 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Dz6IPJXM.js 144 kB 144 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-lrEzMywH.js 128 kB 128 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Media3DTop-DUmUhXD6.js 2.38 kB 2.38 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-CD66_Mw_.js 2 kB 2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-Bqe7yvm_.js 2.34 kB 2.34 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-De3MzVmp.js 2.82 kB 2.82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/mixpanel.module-CC2-PIpB.js 143 B 143 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-A7pvB7zM.js 370 kB 370 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BIVjUijC.js 345 kB 345 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-Chkn0HaI.js 343 kB 343 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CK_6GHao.js 452 kB 452 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CToVAwnT.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DDabdWgx.js 417 kB 417 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DgvJyE3d.js 386 kB 386 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DjxaeFt_.js 416 kB 416 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DslnWEGg.js 377 kB 377 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-EPAM3kwk.js 373 kB 373 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-NrulhNyH.js 366 kB 366 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/OBJLoader2WorkerModule-DTMpvldF.js 109 kB 109 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/previousFullPath-CmezY7As.js 838 B 838 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/rolldown-runtime-cVp-94Rc.js 1.96 kB 1.96 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/Slider-D4lsf6Ob.js 4.21 kB 4.21 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widget-BJiJuR5i.js 518 B 518 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-CUtab2CB.js 4.71 kB 4.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetBoundingBox-D79nBMxa.js 186 B 186 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-CiXfBVBH.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetColorPicker-BxNqMlFv.js 3.71 kB 3.71 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetGalleria-DDD96zwa.js 4.57 kB 4.57 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-A6pZMGtc.js 3.79 kB 3.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetInputText-DSMUKRnt.js 2.58 kB 2.58 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetLayoutField-MDImyvc3.js 2.7 kB 2.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetMarkdown-a8bZhyc5.js 3.49 kB 3.49 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-ERx8czR8.js 1.31 kB 1.31 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetTextarea-CV3BoahN.js 3.87 kB 3.87 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetToggleSwitch-ZdaYkxkD.js 3.26 kB 3.26 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetTypes-KPj-zM0O.js 573 B 573 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 34 added / 34 removed

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@src/extensions/core/widgetInputs.ts`:
- Around line 235-245: The asset-widget early-return path skips copying the
existing target value into the new widget, so when you create an asset widget
via this._createAssetWidget(node, widgetName, inputData) you must sync its
initial value from the node/inputData like other widgets do (so PrimitiveNode
doesn't keep the placeholder). After creating widget (but before
this._finalizeWidget(widget, oldWidth, oldHeight, recreating)), copy the
existing value from the node/inputData target (the same source used by
COMBO/widget creation paths) into widget's value/state; then call
_finalizeWidget as before. Use the same field accessors that other widget paths
use to ensure parity with combo widgets (refer to node, inputData, widget,
_createAssetWidget, and _finalizeWidget).
- Around line 235-241: Import useSettingStore and read the
Comfy.Assets.UseAssetAPI flag (as isUsingAssetAPI) and include it in the
PrimitiveNode asset-widget creation branch so asset widgets are only created
when the toggle is enabled; specifically, update the COMBO handling around the
assetService.isAssetBrowserEligible(...) check in widgetInputs.ts to require
isUsingAssetAPI (match the pattern used in useComboWidget's `if (isUsingAssetAPI
&& isEligible)`) before proceeding with the PrimitiveNode asset widget creation.

Comment on lines +235 to +245
// Cloud: Use asset widget for model-eligible inputs
if (isCloud && type === 'COMBO') {
const isEligible = assetService.isAssetBrowserEligible(
node.comfyClass,
widgetName
)
if (isEligible) {
widget = this._createAssetWidget(node, widgetName, inputData)
this._finalizeWidget(widget, oldWidth, oldHeight, recreating)
return
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Sync existing target widget value for asset widgets.
The asset-widget early return skips the existing-value copy used for other widgets, so PrimitiveNode starts with the placeholder even when the target node already has a model selected. This breaks parity with combo widgets and can mislead users.

✅ Suggested fix
     if (isEligible) {
       widget = this._createAssetWidget(node, widgetName, inputData)
+      const theirWidget = node.widgets?.find((w) => w.name === widgetName)
+      if (theirWidget) widget.value = theirWidget.value
       this._finalizeWidget(widget, oldWidth, oldHeight, recreating)
       return
     }
🤖 Prompt for AI Agents
In `@src/extensions/core/widgetInputs.ts` around lines 235 - 245, The asset-widget
early-return path skips copying the existing target value into the new widget,
so when you create an asset widget via this._createAssetWidget(node, widgetName,
inputData) you must sync its initial value from the node/inputData like other
widgets do (so PrimitiveNode doesn't keep the placeholder). After creating
widget (but before this._finalizeWidget(widget, oldWidth, oldHeight,
recreating)), copy the existing value from the node/inputData target (the same
source used by COMBO/widget creation paths) into widget's value/state; then call
_finalizeWidget as before. Use the same field accessors that other widget paths
use to ensure parity with combo widgets (refer to node, inputData, widget,
_createAssetWidget, and _finalizeWidget).

Comment on lines +235 to +241
// Cloud: Use asset widget for model-eligible inputs
if (isCloud && type === 'COMBO') {
const isEligible = assetService.isAssetBrowserEligible(
node.comfyClass,
widgetName
)
if (isEligible) {
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

rg -n "Comfy\.Assets\.UseAssetAPI"

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2200


🏁 Script executed:

cat -n src/extensions/core/widgetInputs.ts | sed -n '200,280p'

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 2879


🏁 Script executed:

rg -n "useComboWidget|PrimitiveNode" src/extensions/core/widgetInputs.ts

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 421


🏁 Script executed:

cat -n src/renderer/extensions/vueNodes/widgets/composables/useComboWidget.ts | sed -n '165,185p'

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 850


🏁 Script executed:

grep -n "_createAssetWidget" src/extensions/core/widgetInputs.ts

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 177


🏁 Script executed:

cat -n src/extensions/core/widgetInputs.ts | sed -n '1,100p'

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 4093


🏁 Script executed:

cat -n src/extensions/core/widgetInputs.ts | sed -n '300,330p'

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 1139


🏁 Script executed:

grep -n "useSettingStore\|Comfy\.Assets\.UseAssetAPI" src/extensions/core/widgetInputs.ts

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 52


🏁 Script executed:

cat -n src/extensions/core/widgetInputs.ts | sed -n '1,35p'

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 1667


🏁 Script executed:

grep -n "_createAssetWidget\|createAssetWidget" src/extensions/core/widgetInputs.ts

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 293


🏁 Script executed:

rg -n "class.*Node.*extends\s+LGraphNode" src/extensions/core/widgetInputs.ts -A 5

Repository: Comfy-Org/ComfyUI_frontend

Length of output: 271


Add Comfy.Assets.UseAssetAPI toggle check to PrimitiveNode asset widget creation.
useComboWidget respects this setting (line 179 in useComboWidget.ts: if (isUsingAssetAPI && isEligible)), but PrimitiveNode bypasses it entirely. Lines 236-245 create asset widgets without checking the toggle, causing inconsistent behavior when users disable the asset API. Import useSettingStore and add the toggle check before line 242.

🤖 Prompt for AI Agents
In `@src/extensions/core/widgetInputs.ts` around lines 235 - 241, Import
useSettingStore and read the Comfy.Assets.UseAssetAPI flag (as isUsingAssetAPI)
and include it in the PrimitiveNode asset-widget creation branch so asset
widgets are only created when the toggle is enabled; specifically, update the
COMBO handling around the assetService.isAssetBrowserEligible(...) check in
widgetInputs.ts to require isUsingAssetAPI (match the pattern used in
useComboWidget's `if (isUsingAssetAPI && isEligible)`) before proceeding with
the PrimitiveNode asset widget creation.

@christian-byrne
Copy link
Contributor Author

Replaced by #8454

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant