-
Notifications
You must be signed in to change notification settings - Fork 391
Fix type on LoadClip being marked as asset #6207
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
🎨 Storybook Build Status✅ Build completed successfully! ⏰ Completed at: 10/22/2025, 10:18:36 PM UTC 🔗 Links🎉 Your Storybook is ready for review! |
🎭 Playwright Test Results⏰ Completed at: 10/22/2025, 10:37:06 PM UTC 📈 Summary
📊 Test Reports by Browser
🎉 Click on the links above to view detailed test results for each browser configuration. |
Bundle Size ReportSummary
Category Glance Per-category breakdownApp Entry Points — 3.31 MB (baseline 3.31 MB) • 🔴 +107 B_Main entry bundles and manifests_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | ---------------------------------------- | ------- | ------- | ----------------------- | ---------------------- | ----------------------- | | **assets/index-BdoipTqA.js** _(new)_ | — | 2.69 MB | 🔴 +2.69 MB | 🔴 +561 kB | 🔴 +424 kB | | ~~assets/index-Zh6m8FKF.js~~ _(removed)_ | 2.69 MB | — | 🟢 -2.69 MB | 🟢 -561 kB | 🟢 -424 kB | | ~~assets/index-CGul_qH8.js~~ _(removed)_ | 616 kB | — | 🟢 -616 kB | 🟢 -114 kB | 🟢 -90.4 kB | | **assets/index-CYm6WnjF.js** _(new)_ | — | 616 kB | 🔴 +616 kB | 🔴 +114 kB | 🔴 +90.2 kB |Status: 2 added / 2 removed Graph Workspace — 707 kB (baseline 707 kB) • ⚪ 0 B_Graph editor runtime, canvas, workflow orchestration_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | -------------------------------------------- | ------ | ------ | ---------------------- | ---------------------- | ---------------------- | | ~~assets/GraphView-Bsg1-04Z.js~~ _(removed)_ | 707 kB | — | 🟢 -707 kB | 🟢 -139 kB | 🟢 -107 kB | | **assets/GraphView-DYoeiuuC.js** _(new)_ | — | 707 kB | 🔴 +707 kB | 🔴 +139 kB | 🔴 +107 kB |Status: 1 added / 1 removed Views & Navigation — 8.15 kB (baseline 8.15 kB) • ⚪ 0 B_Top-level views, pages, and routed surfaces_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | ------------------------------------------------- | ------- | ------- | ----------------------- | ----------------------- | ----------------------- | | **assets/UserSelectView-CJguHtZh.js** _(new)_ | — | 8.15 kB | 🔴 +8.15 kB | 🔴 +2.46 kB | 🔴 +2.17 kB | | ~~assets/UserSelectView-oSSXodjR.js~~ _(removed)_ | 8.15 kB | — | 🟢 -8.15 kB | 🟢 -2.46 kB | 🟢 -2.16 kB |Status: 1 added / 1 removed Panels & Settings — 294 kB (baseline 294 kB) • ⚪ 0 B_Configuration panels, inspectors, and settings screens_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | ---------------------------------------------------- | ------- | ------- | ----------------------- | ----------------------- | ----------------------- | | **assets/CreditsPanel-D5PZzfoz.js** _(new)_ | — | 22.1 kB | 🔴 +22.1 kB | 🔴 +5.28 kB | 🔴 +4.61 kB | | ~~assets/CreditsPanel-t4HjIzXJ.js~~ _(removed)_ | 22.1 kB | — | 🟢 -22.1 kB | 🟢 -5.28 kB | 🟢 -4.62 kB | | ~~assets/KeybindingPanel-CYBPSJHO.js~~ _(removed)_ | 15.2 kB | — | 🟢 -15.2 kB | 🟢 -3.75 kB | 🟢 -3.31 kB | | **assets/KeybindingPanel-DbLTp4E6.js** _(new)_ | — | 15.2 kB | 🔴 +15.2 kB | 🔴 +3.75 kB | 🔴 +3.3 kB | | **assets/ExtensionPanel-Cv0IrWFu.js** _(new)_ | — | 12.1 kB | 🔴 +12.1 kB | 🔴 +2.82 kB | 🔴 +2.47 kB | | ~~assets/ExtensionPanel-me9CJS1e.js~~ _(removed)_ | 12.1 kB | — | 🟢 -12.1 kB | 🟢 -2.82 kB | 🟢 -2.47 kB | | ~~assets/AboutPanel-B9TeBtp5.js~~ _(removed)_ | 10.3 kB | — | 🟢 -10.3 kB | 🟢 -2.66 kB | 🟢 -2.33 kB | | **assets/AboutPanel-ROmyHaRv.js** _(new)_ | — | 10.3 kB | 🔴 +10.3 kB | 🔴 +2.65 kB | 🔴 +2.33 kB | | ~~assets/ServerConfigPanel-C9NevBaF.js~~ _(removed)_ | 8.2 kB | — | 🟢 -8.2 kB | 🟢 -2.16 kB | 🟢 -1.9 kB | | **assets/ServerConfigPanel-DDAHmQj0.js** _(new)_ | — | 8.2 kB | 🔴 +8.2 kB | 🔴 +2.16 kB | 🔴 +1.9 kB | | ~~assets/UserPanel-C7_o-0D3.js~~ _(removed)_ | 7.91 kB | — | 🟢 -7.91 kB | 🟢 -2.05 kB | 🟢 -1.8 kB | | **assets/UserPanel-DxEePD_z.js** _(new)_ | — | 7.91 kB | 🔴 +7.91 kB | 🔴 +2.05 kB | 🔴 +1.79 kB | | assets/settings-B-df0dZe.js | 20.7 kB | 20.7 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-CI6OKvJn.js | 22.9 kB | 22.9 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-CXGVj_nD.js | 24.5 kB | 24.5 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-DfQ6dSJj.js | 31.6 kB | 31.6 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-DJ2QgDzm.js | 25.2 kB | 25.2 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-DRNLPMG6.js | 23.7 kB | 23.7 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-DVVycxDc.js | 19.9 kB | 19.9 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-G6Dybj1b.js | 24.1 kB | 24.1 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/settings-M6_GZccG.js | 26 kB | 26 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B |Status: 6 added / 6 removed UI Components — 12.3 kB (baseline 12.3 kB) • ⚪ 0 B_Reusable component library chunks_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | ----------------------------------------------------------------- | ------- | ------- | ----------------------- | ----------------------- | ----------------------- | | ~~assets/ComfyQueueButton-D6msLCSG.js~~ _(removed)_ | 11.1 kB | — | 🟢 -11.1 kB | 🟢 -2.76 kB | 🟢 -2.44 kB | | **assets/ComfyQueueButton-DKnPY1Qh.js** _(new)_ | — | 11.1 kB | 🔴 +11.1 kB | 🔴 +2.76 kB | 🔴 +2.43 kB | | assets/UserAvatar.vue_vue_type_script_setup_true_lang-C9bSkTC5.js | 1.12 kB | 1.12 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B |Status: 1 added / 1 removed Data & Services — 10 kB (baseline 10 kB) • ⚪ 0 B_Stores, services, APIs, and repositories_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | ---------------------------------------------------- | ------- | ------- | ----------------------- | ----------------------- | ----------------------- | | **assets/keybindingService-B3ndolVD.js** _(new)_ | — | 7.21 kB | 🔴 +7.21 kB | 🔴 +1.75 kB | 🔴 +1.51 kB | | ~~assets/keybindingService-CEs4ttTs.js~~ _(removed)_ | 7.21 kB | — | 🟢 -7.21 kB | 🟢 -1.75 kB | 🟢 -1.51 kB | | assets/serverConfigStore-iGY5jDEQ.js | 2.79 kB | 2.79 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B |Status: 1 added / 1 removed Utilities & Hooks — 1.07 kB (baseline 1.07 kB) • ⚪ 0 B_Helpers, composables, and utility bundles_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | --------------------------- | ------- | ------- | ------------------ | ------------------ | ------------------ | | assets/mathUtil-CTARWQ-l.js | 1.07 kB | 1.07 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B |Vendor & Third-Party — 5.36 MB (baseline 5.36 MB) • ⚪ 0 B_External libraries and shared vendor chunks_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | --------------------------------------- | ------- | ------- | ------------------ | ------------------ | ------------------ | | assets/vendor-other-BS4x9rn-.js | 3.22 MB | 3.22 MB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/vendor-primevue-PESgPnbc.js | 517 B | 517 B | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/vendor-tiptap-CaF3gvNN.js | 232 kB | 232 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/vendor-visualization-BEfdbjRw.js | 1.82 MB | 1.82 MB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/vendor-vue-QoLEmtWS.js | 92.4 kB | 92.4 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B |Other — 2.79 MB (baseline 2.79 MB) • ⚪ 0 B_Bundles that do not match a named category_ | File | Before | After | Δ Raw | Δ Gzip | Δ Brotli | | --------------------------- | ------- | ------- | ------------------ | ------------------ | ------------------ | | assets/commands-B2KZRBmX.js | 15.1 kB | 15.1 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-Bw-ckyga.js | 13.9 kB | 13.9 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-C_NmM85I.js | 13.8 kB | 13.8 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-CuozCW4W.js | 14 kB | 14 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-DGfVUJCR.js | 16.2 kB | 16.2 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-dOJNDogK.js | 14.5 kB | 14.5 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-DwiE551e.js | 14.7 kB | 14.7 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-Fw7mvqSy.js | 13.1 kB | 13.1 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/commands-FXnO1W4Q.js | 13.2 kB | 13.2 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-6UgCUkrV.js | 108 kB | 108 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-BfHN1fzx.js | 125 kB | 125 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-BhulUfFD.js | 77.5 kB | 77.5 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-BPHe683n.js | 92.4 kB | 92.4 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-C75C4LWt.js | 90.9 kB | 90.9 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-CEhf19j2.js | 99.4 kB | 99.4 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-CipazGd8.js | 79.3 kB | 79.3 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-CKz_lTAz.js | 94.3 kB | 94.3 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/main-Dzm38Va4.js | 90.3 kB | 90.3 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-BePSqkA4.js | 195 kB | 195 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-BfT7dJcF.js | 204 kB | 204 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-BiAtoiXc.js | 194 kB | 194 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-CDfbduPY.js | 219 kB | 219 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-CDurg_KW.js | 197 kB | 197 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-CE-vG3RG.js | 182 kB | 182 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-DAwVV156.js | 200 kB | 200 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-DexhCMEi.js | 233 kB | 233 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | | assets/nodeDefs-kTrYLFPK.js | 184 kB | 184 kB | ⚪ 0 B | ⚪ 0 B | ⚪ 0 B | |
function isAssetBrowserEligible(nodeType: string = ''): boolean { | ||
function isAssetBrowserEligible( | ||
nodeType: string = '', | ||
widgetName: string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[quality] medium Priority
Issue: Function signature inconsistency - required parameter appears optional
Context: widgetName parameter is required for the function logic but is not marked with default value or optional typing
Suggestion: Either make widgetName optional with a default value or remove the default empty string from nodeType since both are required
!!nodeType && useModelToNodeStore().getRegisteredNodeTypes().has(nodeType) | ||
(nodeType && | ||
widgetName && | ||
useModelToNodeStore().getRegisteredNodeTypes()[nodeType] === |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[performance] low Priority
Issue: Unnecessary store call on every function invocation
Context: useModelToNodeStore() is called every time the function is invoked, which could be optimized
Suggestion: Consider memoizing the store reference or accepting it as a parameter for better performance in tight loops
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After a quick check, this change is out of scope for this PR. Having a single store call breaks mocking used in tests.
/** Internal computed for reactive caching of registered node types */ | ||
const registeredNodeTypes = computed(() => { | ||
return new Set( | ||
const registeredNodeTypes = computed<Record<string, string>>(() => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[quality] low Priority
Issue: Inconsistent variable naming between computed property and function
Context: The computed property is named registeredNodeTypes but returns a Record mapping, not just types
Suggestion: Consider renaming to registeredNodeTypeToWidget or nodeTypeWidgetMap for clarity
expect(assetService.isAssetBrowserEligible('', '')).toBe(false) | ||
}) | ||
it('should return false for other combo widgets on the registered node', () => { | ||
expect(assetService.isAssetBrowserEligible('ClipLoader', 'type')).toBe( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[quality] low Priority
Issue: Test assertion could be more descriptive
Context: The test name mentions checking for other combo widgets but uses a generic ClipLoader example
Suggestion: Use LoadClip and type widget specifically since that was the original bug, or add a comment explaining the test case
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comprehensive PR Review
This review is generated by Claude. It may not always be accurate, as with human reviewers. If you believe that any of the comments are invalid or incorrect, please state why for each. For others, please implement the changes in one way or another.
Review Summary
PR: Fix type on LoadClip being marked as asset (#6207)
Impact: 56 additions, 32 deletions across 6 files
Issue Distribution
- Critical: 0
- High: 1
- Medium: 3
- Low: 3
Category Breakdown
- Architecture: 1 issues
- Security: 0 issues
- Performance: 1 issues
- Code Quality: 5 issues
Key Findings
Architecture & Design
The PR introduces a breaking change to the public API by changing getRegisteredNodeTypes() return type from Set to Record<string, string>. While this change enables the core functionality fix, it could break external extensions that depend on this API.
Security Considerations
No security vulnerabilities identified. The change is focused on UI logic for asset browser eligibility and doesn't introduce attack vectors.
Performance Impact
Minor performance concern with repeated store calls in the isAssetBrowserEligible function, but unlikely to cause noticeable impact in typical usage patterns.
Integration Points
The change affects how combo widgets determine asset browser eligibility. All tests have been updated appropriately, and the fix specifically addresses the LoadClip type widget issue mentioned in the PR description.
Positive Observations
- Comprehensive test coverage with all relevant test files updated
- Clear fix targeting the specific issue described in the PR
- Proper function signature updates maintaining type safety
- Good separation of concerns between data structure changes and function logic
References
Next Steps
- Address critical issues before merge
- Consider architectural feedback for long-term maintainability
- Add tests for uncovered scenarios
- Update documentation if needed
This is a comprehensive automated review. For architectural decisions requiring human judgment, please request additional manual review.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No nits from me. Looks good.
Optional: Before/After screenshots? |
a4ef589
IMO feel free to bypass merge whenever |
Previously, asset conversion was performed on any combo widget on a valid node. As the `type` widget on LoadClip was also a combo widget, it was being incorrectly converted. This PR changes the isAssetBrowserEligible check to also verify the widget name is correct. <img width="694" height="174" alt="image" src="https://github.com/user-attachments/assets/a8523ade-7f59-4480-b5e6-8782fd680106" /> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6207-Fix-type-on-LoadClip-being-marked-as-asset-2946d73d3650811690f8d3a221a5b76d) by [Unito](https://www.unito.io)
@AustinMroz Successfully backported to #6214 |
Backport of #6207 to `rh-test` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6214-backport-rh-test-Fix-type-on-LoadClip-being-marked-as-asset-2956d73d36508180b4ccd59a40672327) by [Unito](https://www.unito.io) Co-authored-by: AustinMroz <[email protected]>
Previously, asset conversion was performed on any combo widget on a valid node. As the
type
widget on LoadClip was also a combo widget, it was being incorrectly converted.This PR changes the isAssetBrowserEligible check to also verify the widget name is correct.

┆Issue is synchronized with this Notion page by Unito