Skip to content

Conversation

@DrJKL
Copy link
Contributor

@DrJKL DrJKL commented Nov 23, 2025

Summary

Expose the Auto-refresh and manual refresh controls.
Fixes an issue with the Dropdown where it was index dependent so wasn't updating correctly as new items came in.

Screenshots

┆Issue is synchronized with this Notion page by Unito

@dosubot dosubot bot added the size:M This PR changes 30-99 lines, ignoring generated files. label Nov 23, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 23, 2025

📝 Walkthrough

Walkthrough

Propagates an optional socketless flag from widget specs to InputSlot to hide/make slots non-interactive; consolidates some class bindings; changes select item IDs and watcher behavior; inlines dropdown style logic; removes canvasOnly: true from certain widget creations; updates corresponding tests.

Changes

Cohort / File(s) Summary
Socket / Input Slot
src/renderer/extensions/vueNodes/components/InputSlot.vue, src/renderer/extensions/vueNodes/components/NodeWidgets.vue, src/schemas/nodeDefSchema.ts
Added optional socketless?: boolean prop to InputSlot. NodeWidgets.vue forwards widget.simplified.spec?.socketless into InputSlot. Schema zBaseInputOptions gains socketless: z.boolean().optional(). When true, slot wrapper receives pointer-events-none invisible and slot becomes non-interactive/hidden.
Widget Button / Label
src/renderer/extensions/vueNodes/widgets/components/WidgetButton.vue, src/renderer/extensions/vueNodes/widgets/components/WidgetButton.test.ts
Removed separate label element; widget name is now rendered inside the Button default slot. Tests updated to assert rendered text instead of a separate label element.
Select Dropdown
src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue
Output item ids now use the output value (output-${output}) instead of an index. modelValue watcher now explicitly clears selection when undefined; otherwise finds item by name and updates selection.
Form Dropdown Input
src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownInput.vue
Inlined previous chevronClass and simplified theButtonStyle into template bindings; placeholder rendering now uses in-scope placeholder. Styling logic moved from computed props to template.
Remote Widget Composables & Tests
src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.ts, tests-ui/tests/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.test.ts
Removed canvasOnly: true option from the refresh button and auto-refresh toggle widget creation. Updated unit test expectation to drop canvasOnly: true for the auto-refresh toggle.

Sequence Diagram(s)

sequenceDiagram
  participant Spec as WidgetSpec
  participant NW as NodeWidgets.vue
  participant IS as InputSlot.vue
  participant DOM as DOM

  Note over Spec,NW: widget.simplified.spec may include socketless
  Spec->>NW: provide widget (includes simplified.spec?.socketless)
  NW->>IS: render InputSlot with :socketless
  alt socketless = true
    IS->>IS: apply classes "pointer-events-none invisible"
    IS->>DOM: render hidden/non-interactive slot
  else socketless = false or undefined
    IS->>IS: render normal slot classes
    IS->>DOM: render interactive slot
  end
Loading
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch drjkl/they-keep-pulling-me-back-in

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

@github-actions
Copy link

github-actions bot commented Nov 23, 2025

🎭 Playwright Test Results

⚠️ Tests passed with flaky tests

⏰ Completed at: 11/23/2025, 07:30:39 AM UTC

📈 Summary

  • Total Tests: 496
  • Passed: 484 ✅
  • Failed: 0
  • Flaky: 3 ⚠️
  • Skipped: 9 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 475 / ❌ 0 / ⚠️ 3 / ⏭️ 9
  • chromium-2x: View Report • ✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • chromium-0.5x: View Report • ✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0
  • mobile-chrome: View Report • ✅ 6 / ❌ 0 / ⚠️ 0 / ⏭️ 0

🎉 Click on the links above to view detailed test results for each browser configuration.

@github-actions
Copy link

github-actions bot commented Nov 23, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 11/23/2025, 07:20:24 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Nov 23, 2025

Bundle Size Report

Summary

  • Raw size: 14.2 MB baseline 14.2 MB — 🔴 +137 B
  • Gzip: 2.84 MB baseline 2.84 MB — 🟢 -8 B
  • Brotli: 2.22 MB baseline 2.22 MB — 🔴 +212 B
  • Bundles: 92 current • 92 baseline • 39 added / 39 removed

Category Glance
App Entry Points 🔴 +151 B (3.18 MB) · UI Components 🟢 -14 B (141 kB) · Vendor & Third-Party ⚪ 0 B (5.7 MB) · Other ⚪ 0 B (3.87 MB) · Graph Workspace ⚪ 0 B (940 kB) · Panels & Settings ⚪ 0 B (306 kB) · + 3 more

Per-category breakdown
App Entry Points — 3.18 MB (baseline 3.18 MB) • 🔴 +151 B

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-cPvwn2_N.js (new) 2.95 MB 🔴 +2.95 MB 🔴 +615 kB 🔴 +467 kB
assets/index-BBYNYJFx.js (removed) 2.95 MB 🟢 -2.95 MB 🟢 -615 kB 🟢 -467 kB
assets/index-Dj0mvBcw.js (removed) 228 kB 🟢 -228 kB 🟢 -48.9 kB 🟢 -40.3 kB
assets/index-DyQGte9E.js (new) 228 kB 🔴 +228 kB 🔴 +48.9 kB 🔴 +40.3 kB
assets/index-2G1xCMDw.js (removed) 345 B 🟢 -345 B 🟢 -246 B 🟢 -201 B
assets/index-BSuZz4v8.js (new) 345 B 🔴 +345 B 🔴 +246 B 🔴 +203 B

Status: 3 added / 3 removed

Graph Workspace — 940 kB (baseline 940 kB) • ⚪ 0 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-eVDVc-zA.js (new) 940 kB 🔴 +940 kB 🔴 +182 kB 🔴 +140 kB
assets/GraphView-jL1L9n8J.js (removed) 940 kB 🟢 -940 kB 🟢 -182 kB 🟢 -139 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-BdtWKgqD.js (new) 7.97 kB 🔴 +7.97 kB 🔴 +2.43 kB 🔴 +2.14 kB
assets/UserSelectView-BFIH0URJ.js (removed) 7.97 kB 🟢 -7.97 kB 🟢 -2.44 kB 🟢 -2.14 kB

Status: 1 added / 1 removed

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

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CreditsPanel-D_fPr7AS.js (new) 22.9 kB 🔴 +22.9 kB 🔴 +5.46 kB 🔴 +4.78 kB
assets/CreditsPanel-Dx2rZP36.js (removed) 22.9 kB 🟢 -22.9 kB 🟢 -5.46 kB 🟢 -4.78 kB
assets/KeybindingPanel-BMxOYjJM.js (new) 15.1 kB 🔴 +15.1 kB 🔴 +3.73 kB 🔴 +3.28 kB
assets/KeybindingPanel-DO5tvYS3.js (removed) 15.1 kB 🟢 -15.1 kB 🟢 -3.73 kB 🟢 -3.29 kB
assets/ExtensionPanel-D7t-VKDm.js (new) 11.9 kB 🔴 +11.9 kB 🔴 +2.79 kB 🔴 +2.45 kB
assets/ExtensionPanel-nkrAP1jQ.js (removed) 11.9 kB 🟢 -11.9 kB 🟢 -2.8 kB 🟢 -2.45 kB
assets/AboutPanel-C-CUGfxw.js (removed) 10.1 kB 🟢 -10.1 kB 🟢 -2.63 kB 🟢 -2.32 kB
assets/AboutPanel-ChI1pusx.js (new) 10.1 kB 🔴 +10.1 kB 🔴 +2.62 kB 🔴 +2.31 kB
assets/ServerConfigPanel-C8qGeCT6.js (new) 8.02 kB 🔴 +8.02 kB 🔴 +2.12 kB 🔴 +1.87 kB
assets/ServerConfigPanel-D-cVZulc.js (removed) 8.02 kB 🟢 -8.02 kB 🟢 -2.12 kB 🟢 -1.87 kB
assets/UserPanel-BE1V_Gwj.js (removed) 7.74 kB 🟢 -7.74 kB 🟢 -2.03 kB 🟢 -1.77 kB
assets/UserPanel-CcNNTvyZ.js (new) 7.74 kB 🔴 +7.74 kB 🔴 +2.02 kB 🔴 +1.77 kB
assets/settings-BXTtSH4O.js 33.3 kB 33.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-C9Pzn-NG.js 25.2 kB 25.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CCy2fA_h.js 27.3 kB 27.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-CQpqEFfl.js 26.6 kB 26.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DHcnxypw.js 21.7 kB 21.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DhFTK9fY.js 25.1 kB 25.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DlT4t_ui.js 25.9 kB 25.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-DRgSrIdD.js 24.2 kB 24.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/settings-tjkeqiZq.js 21.1 kB 21.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 6 added / 6 removed

UI Components — 141 kB (baseline 141 kB) • 🟢 -14 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/Load3D.vue_vue_type_script_setup_true_lang-BffsekHu.js (new) 53.9 kB 🔴 +53.9 kB 🔴 +8.43 kB 🔴 +7.23 kB
assets/Load3D.vue_vue_type_script_setup_true_lang-DYHJ7sn-.js (removed) 53.9 kB 🟢 -53.9 kB 🟢 -8.43 kB 🟢 -7.24 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DhmO56Yo.js (removed) 48.1 kB 🟢 -48.1 kB 🟢 -10.3 kB 🟢 -8.93 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-EK1K-3JJ.js (new) 48 kB 🔴 +48 kB 🔴 +10.3 kB 🔴 +8.9 kB
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang--XfL2uWj.js (new) 12.7 kB 🔴 +12.7 kB 🔴 +3.31 kB 🔴 +2.94 kB
assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-B9vu4k9L.js (removed) 12.7 kB 🟢 -12.7 kB 🟢 -3.31 kB 🟢 -2.92 kB
assets/ComfyQueueButton-BbJx3trE.js (removed) 9.22 kB 🟢 -9.22 kB 🟢 -2.5 kB 🟢 -2.2 kB
assets/ComfyQueueButton-DuVh5Hwz.js (new) 9.22 kB 🔴 +9.22 kB 🔴 +2.5 kB 🔴 +2.2 kB
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-BHCRncQ-.js (removed) 2.14 kB 🟢 -2.14 kB 🟢 -795 B 🟢 -690 B
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-jka8Va8z.js (new) 2.14 kB 🔴 +2.14 kB 🔴 +794 B 🔴 +692 B
assets/WidgetButton-CtnTx0SP.js (new) 1.72 kB 🔴 +1.72 kB 🔴 +787 B 🔴 +685 B
assets/WidgetButton-ByrPd5jr.js (removed) 1.62 kB 🟢 -1.62 kB 🟢 -761 B 🟢 -653 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-1-xkWakV.js (removed) 848 B 🟢 -848 B 🟢 -476 B 🟢 -428 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-KtZ1LbXw.js (new) 848 B 🔴 +848 B 🔴 +475 B 🔴 +414 B
assets/LazyImage.vue_vue_type_script_setup_true_lang-Wi-CcgaU.js 10.7 kB 10.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/UserAvatar.vue_vue_type_script_setup_true_lang-D2s8tnS2.js 1.26 kB 1.26 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 7 added / 7 removed

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-B69mv1Hb.js (removed) 7.51 kB 🟢 -7.51 kB 🟢 -1.84 kB 🟢 -1.59 kB
assets/keybindingService-D-QtMjMo.js (new) 7.51 kB 🔴 +7.51 kB 🔴 +1.83 kB 🔴 +1.58 kB
assets/audioService-BHi7g98j.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +963 B 🔴 +823 B
assets/audioService-Ci6dXfL_.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -964 B 🟢 -823 B
assets/serverConfigStore-D2N-YjtJ.js 2.79 kB 2.79 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 2 added / 2 removed

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

Helpers, composables, and utility bundles

File Before After Δ Raw Δ Gzip Δ Brotli
assets/audioUtils-d-DVkEWf.js (new) 1.41 kB 🔴 +1.41 kB 🔴 +651 B 🔴 +546 B
assets/audioUtils-hxiMtsxY.js (removed) 1.41 kB 🟢 -1.41 kB 🟢 -651 B 🟢 -551 B
assets/mathUtil-CTARWQ-l.js 1.07 kB 1.07 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeFilterUtil-CXKCRJ-m.js 460 B 460 B ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 1 added / 1 removed

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

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-OCBGbKU2.js 3.59 MB 3.59 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-primevue-PESgPnbc.js 517 B 517 B ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-three-aR6ntw5X.js 1.37 MB 1.37 MB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-tiptap-CmuD0u4q.js 232 kB 232 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-vue-DhKsTD0i.js 92.6 kB 92.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/vendor-xterm-BZLod3g9.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
Other — 3.87 MB (baseline 3.87 MB) • ⚪ 0 B

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WidgetRecordAudio-31kHrRUB.js (removed) 21.9 kB 🟢 -21.9 kB 🟢 -5.52 kB 🟢 -4.88 kB
assets/WidgetRecordAudio-D91-hpR5.js (new) 21.9 kB 🔴 +21.9 kB 🔴 +5.52 kB 🔴 +4.87 kB
assets/AudioPreviewPlayer-Dcw7VG0W.js (new) 14.9 kB 🔴 +14.9 kB 🔴 +3.69 kB 🔴 +3.3 kB
assets/AudioPreviewPlayer-Y-B-AaPU.js (removed) 14.9 kB 🟢 -14.9 kB 🟢 -3.69 kB 🟢 -3.29 kB
assets/WidgetGalleria-BNTYcvYa.js (removed) 5.56 kB 🟢 -5.56 kB 🟢 -1.75 kB 🟢 -1.54 kB
assets/WidgetGalleria-BvcA_mbC.js (new) 5.56 kB 🔴 +5.56 kB 🔴 +1.74 kB 🔴 +1.54 kB
assets/WidgetColorPicker-aoCfyR0E.js (new) 4.87 kB 🔴 +4.87 kB 🔴 +1.69 kB 🔴 +1.48 kB
assets/WidgetColorPicker-dXaI8Ydd.js (removed) 4.87 kB 🟢 -4.87 kB 🟢 -1.69 kB 🟢 -1.48 kB
assets/WidgetMarkdown-DREp1SjL.js (removed) 4.64 kB 🟢 -4.64 kB 🟢 -1.62 kB 🟢 -1.42 kB
assets/WidgetMarkdown-TOAWTHLe.js (new) 4.64 kB 🔴 +4.64 kB 🔴 +1.62 kB 🔴 +1.41 kB
assets/WidgetAudioUI-D58Jfny-.js (removed) 4.33 kB 🟢 -4.33 kB 🟢 -1.44 kB 🟢 -1.29 kB
assets/WidgetAudioUI-MjyNob98.js (new) 4.33 kB 🔴 +4.33 kB 🔴 +1.44 kB 🔴 +1.29 kB
assets/WidgetTextarea-C0lPx5H4.js (new) 4.03 kB 🔴 +4.03 kB 🔴 +1.34 kB 🔴 +1.19 kB
assets/WidgetTextarea-DJiM4-Zr.js (removed) 4.03 kB 🟢 -4.03 kB 🟢 -1.35 kB 🟢 -1.19 kB
assets/WidgetInputText-AcT7J8Ja.js (removed) 3.45 kB 🟢 -3.45 kB 🟢 -1.24 kB 🟢 -1.09 kB
assets/WidgetInputText-DCEqpzkD.js (new) 3.45 kB 🔴 +3.45 kB 🔴 +1.24 kB 🔴 +1.09 kB
assets/WidgetToggleSwitch-DeVisbCg.js (removed) 3.23 kB 🟢 -3.23 kB 🟢 -1.14 kB 🟢 -996 B
assets/WidgetToggleSwitch-H8_xMbu-.js (new) 3.23 kB 🔴 +3.23 kB 🔴 +1.14 kB 🔴 +1.01 kB
assets/MediaImageBottom-C89SCsJJ.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.05 kB 🟢 -931 B
assets/MediaImageBottom-CBDRvTd8.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.05 kB 🔴 +924 B
assets/MediaAudioBottom-Boi21uO0.js (removed) 3 kB 🟢 -3 kB 🟢 -1.05 kB 🟢 -912 B
assets/MediaAudioBottom-Ctrx-_qr.js (new) 3 kB 🔴 +3 kB 🔴 +1.05 kB 🔴 +921 B
assets/Media3DTop-DmTYRX9b.js (new) 3 kB 🔴 +3 kB 🔴 +1.08 kB 🔴 +929 B
assets/Media3DTop-DwZ1FT8b.js (removed) 3 kB 🟢 -3 kB 🟢 -1.08 kB 🟢 -917 B
assets/MediaVideoBottom-dtJeli8F.js (removed) 3 kB 🟢 -3 kB 🟢 -1.05 kB 🟢 -912 B
assets/MediaVideoBottom-naMkZQrt.js (new) 3 kB 🔴 +3 kB 🔴 +1.05 kB 🔴 +913 B
assets/Media3DBottom-CtfaULOM.js (removed) 2.98 kB 🟢 -2.98 kB 🟢 -1.04 kB 🟢 -912 B
assets/Media3DBottom-N0Rnb2mb.js (new) 2.98 kB 🔴 +2.98 kB 🔴 +1.04 kB 🔴 +919 B
assets/WidgetSelect-B3oIAuUc.js (new) 2.17 kB 🔴 +2.17 kB 🔴 +676 B 🔴 +570 B
assets/WidgetSelect-BIUlEb9j.js (removed) 2.17 kB 🟢 -2.17 kB 🟢 -678 B 🟢 -575 B
assets/WidgetInputNumber-C3KBD-zQ.js (new) 2.12 kB 🔴 +2.12 kB 🔴 +664 B 🔴 +556 B
assets/WidgetInputNumber-CkvPQdLH.js (removed) 2.12 kB 🟢 -2.12 kB 🟢 -665 B 🟢 -566 B
assets/Load3D-BjQAuK28.js (removed) 1.94 kB 🟢 -1.94 kB 🟢 -600 B 🟢 -500 B
assets/Load3D-TBaXqF1h.js (new) 1.94 kB 🔴 +1.94 kB 🔴 +597 B 🔴 +531 B
assets/WidgetLegacy-B2OD88tJ.js (removed) 1.88 kB 🟢 -1.88 kB 🟢 -564 B 🟢 -473 B
assets/WidgetLegacy-BudwySMW.js (new) 1.88 kB 🔴 +1.88 kB 🔴 +561 B 🔴 +477 B
assets/commands-_s-RvhJR.js 13.6 kB 13.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BuUILW6P.js 13 kB 13 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BV4R6fLx.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CLwPdnT6.js 14.2 kB 14.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CWMchBmd.js 15.9 kB 15.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DazTQhtc.js 12.9 kB 12.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DmWrOe93.js 13.7 kB 13.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DwiH7Kr6.js 13.8 kB 13.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-mS3LCNPn.js 14.5 kB 14.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-5lOBdqcC.js 84.5 kB 84.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BOCuaVpE.js 73.4 kB 73.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-ClrEFGUz.js 72.4 kB 72.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-CyNU0iQX.js 99.3 kB 99.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-D7gwLxft.js 114 kB 114 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DC8o4BCt.js 86.8 kB 86.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DKiesCV4.js 94.3 kB 94.3 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Hq2q-OtB.js 83.6 kB 83.6 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-USAlAlnj.js 82 kB 82 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-RTI8pWy9.js 1.42 kB 1.42 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaImageTop-DlKHfEAA.js 1.68 kB 1.68 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaVideoTop-BB0lT7C5.js 2.7 kB 2.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-_Px5dSNW.js 306 kB 306 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-7z21KPoS.js 285 kB 285 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-BWKZzBPK.js 346 kB 346 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CGbgH4Yl.js 320 kB 320 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CjjjdWkV.js 313 kB 313 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-CVrNtxvj.js 288 kB 288 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DLRSA0IK.js 309 kB 309 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-DQV2gnwA.js 372 kB 372 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/nodeDefs-ofqLG5vz.js 310 kB 310 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetChart-rDmYEWg5.js 2.39 kB 2.39 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/WidgetImageCompare-Ds3K3ULR.js 2.15 kB 2.15 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/widgetPropFilter-BIbGSUAt.js 1.28 kB 1.28 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 18 added / 18 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: 1

🧹 Nitpick comments (1)
src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (1)

218-226: Consider clearing selection when item is not found.

The watch handler explicitly handles the undefined case well. However, when currentValue is defined but the corresponding item is not found in dropdownItems, the selectedSet is not cleared. This could leave stale selections that don't match modelValue.

Apply this diff to ensure selection consistency:

   if (currentValue === undefined) {
     selectedSet.value.clear()
     return
   }
+  selectedSet.value.clear()
   const item = dropdownItems.value.find((item) => item.name === currentValue)
   if (item) {
-    selectedSet.value.clear()
     selectedSet.value.add(item.id)
   }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 274f778 and 865a427.

📒 Files selected for processing (7)
  • src/renderer/extensions/vueNodes/components/InputSlot.vue (3 hunks)
  • src/renderer/extensions/vueNodes/components/NodeWidgets.vue (1 hunks)
  • src/renderer/extensions/vueNodes/widgets/components/WidgetButton.vue (1 hunks)
  • src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (2 hunks)
  • src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownInput.vue (2 hunks)
  • src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.ts (2 hunks)
  • src/schemas/nodeDefSchema.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: test
  • GitHub Check: lint-and-format
  • GitHub Check: setup
  • GitHub Check: collect
🔇 Additional comments (10)
src/schemas/nodeDefSchema.ts (1)

32-32: LGTM! Clean schema extension.

The socketless field is properly defined as an optional boolean and follows the established pattern in the schema. This enables the new socketless input slot feature at the schema level.

src/renderer/extensions/vueNodes/widgets/composables/useRemoteWidget.ts (2)

239-239: LGTM! Exposes refresh button in Vue UI.

Removing the canvasOnly constraint allows the refresh button to be rendered in the Vue node interface, aligning with the PR objective to expose manual refresh controls.


264-264: LGTM! Exposes auto-refresh toggle in Vue UI.

Removing the canvasOnly constraint allows the auto-refresh toggle to be rendered in the Vue node interface, aligning with the PR objective to expose auto-refresh controls.

src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue (1)

139-145: Excellent fix for dropdown stability!

Changing from index-based IDs (output-${index}) to value-based IDs (output-${output}) ensures dropdown items maintain stable identities when new outputs are added. This resolves the index-dependent issue mentioned in the PR description.

src/renderer/extensions/vueNodes/components/InputSlot.vue (2)

8-8: LGTM! Minor class consolidation.

Combining the two class strings into one ('-translate-x-1/2 w-3') is a minor refactor that improves readability without changing behavior.


51-51: LGTM! New socketless prop added.

The socketless prop is properly typed as an optional boolean and integrates well with the new socketless input slot feature.

src/renderer/extensions/vueNodes/components/NodeWidgets.vue (1)

43-43: LGTM! Clean socketless binding.

The binding properly propagates the socketless flag from the widget spec to the InputSlot component using optional chaining. This completes the socketless feature integration.

src/renderer/extensions/vueNodes/widgets/components/WidgetButton.vue (1)

8-12: LGTM! Button label moved inline.

Moving the widget name inside the Button component as inline content is a clean UI refactor. The aria-label is still properly set for accessibility, and the conditional rendering is preserved.

src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownInput.vue (2)

35-42: LGTM! Cleaner style computation.

Consolidating the conditional logic into a single cn() call with inline conditionals improves readability while maintaining the same behavior.


70-70: LGTM! Clean template simplifications.

The changes streamline the template by:

  • Using placeholder directly (available via defineProps destructuring)
  • Moving chevron rotation logic inline with cn() and isOpen binding

Both changes improve readability without affecting functionality.

Also applies to: 76-84

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: 0

🧹 Nitpick comments (2)
src/renderer/extensions/vueNodes/widgets/components/WidgetButton.test.ts (2)

85-90: Consider a more specific assertion.

The test uses wrapper.text() to check all text content, which could be fragile if the component or Button renders additional text elements. Consider asserting on the button's text content specifically.

Example:

-    expect(wrapper.text()).toBe('test_button')
+    const button = wrapper.findComponent({ name: 'Button' })
+    expect(button.text()).toBe('test_button')

100-113: Consider adding a test for widget.name and options.label interaction.

The test at lines 100-113 passes both a widget name ('test_button') and a custom label in options, but only verifies the prop values, not the final rendered text. It would be valuable to add a test that clarifies how widget.name and options.label interact in the rendered output—whether both appear, or if one takes precedence.

Example:

it('renders both widget name and button label when both provided', () => {
  const widget = createMockWidget({ label: 'Custom Label' }, undefined, 'widget_name')
  const wrapper = mountComponent(widget)
  
  const button = wrapper.findComponent({ name: 'Button' })
  // Verify expected behavior: does label override name, do both appear, etc.
  expect(button.text()).toBe(/* expected text */)
})
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 31eddbf and 7b2e5ae.

📒 Files selected for processing (1)
  • src/renderer/extensions/vueNodes/widgets/components/WidgetButton.test.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: setup
  • GitHub Check: lint-and-format
  • GitHub Check: test
  • GitHub Check: collect

@christian-byrne christian-byrne merged commit 6d41e8b into main Nov 23, 2025
27 checks passed
@christian-byrne christian-byrne deleted the drjkl/they-keep-pulling-me-back-in branch November 23, 2025 07:59
@christian-byrne christian-byrne added needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch 1.32 cloud/1.32 labels Nov 23, 2025
github-actions bot pushed a commit that referenced this pull request Nov 23, 2025
## Summary

Expose the Auto-refresh and manual refresh controls.
Fixes an issue with the Dropdown where it was index dependent so wasn't
updating correctly as new items came in.

## Screenshots

<!-- Add screenshots or video recording to help explain your changes -->

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6836-Feat-Load-Image-from-Outputs-support-in-Vue-Nodes-2b46d73d365081f1b44fcf2054d653da)
by [Unito](https://www.unito.io)
github-actions bot pushed a commit that referenced this pull request Nov 23, 2025
## Summary

Expose the Auto-refresh and manual refresh controls.
Fixes an issue with the Dropdown where it was index dependent so wasn't
updating correctly as new items came in.

## Screenshots

<!-- Add screenshots or video recording to help explain your changes -->

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6836-Feat-Load-Image-from-Outputs-support-in-Vue-Nodes-2b46d73d365081f1b44fcf2054d653da)
by [Unito](https://www.unito.io)
@comfy-pr-bot
Copy link
Member

@DrJKL Successfully backported to #6871

@comfy-pr-bot
Copy link
Member

@DrJKL Successfully backported to #6872

@github-actions github-actions bot removed the needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch label Nov 23, 2025
christian-byrne pushed a commit that referenced this pull request Nov 23, 2025
…odes (#6871)

Backport of #6836 to `core/1.32`

Automatically created by backport workflow.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6871-backport-core-1-32-Feat-Load-Image-from-Outputs-support-in-Vue-Nodes-2b46d73d36508121b3b3c9dac9e3de5a)
by [Unito](https://www.unito.io)

Co-authored-by: Alexander Brown <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.32 size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants