Skip to content

Conversation

@viva-jinyi
Copy link
Member

@viva-jinyi viva-jinyi commented Nov 13, 2025

📋 Summary

Add visual warning indicators to notify users when a workflow contains missing nodes.

🎯 Changes

1. Improve Missing Nodes Detection System

Problem:

  • useMissingNodes composable was executing independently in each component, causing duplicate API calls
  • ComfyQueueButton retained stale state even after workflow changes
  • SubgraphBreadcrumbItem updated (due to remounting), but ComfyQueueButton remained stale (persistent component)

Solution:

// useMissingNodes.ts
export const useMissingNodes = createSharedComposable(() => {
  // ... existing logic ...
  
  // Watch for workflow changes
  watch(
    () => workflowStore.activeWorkflow,
    async (newWorkflow, oldWorkflow) => {
      if (newWorkflow !== oldWorkflow) {
        await startFetchWorkflowPacks()
      }
    }
  )
})

Why use createSharedComposable?

  • Singleton pattern: All components share the same instance
  • Prevent duplicate calls: startFetchWorkflowPacks() executes only once
  • State synchronization: ComfyQueueButton and SubgraphBreadcrumbItem always see the same data
  • Single watch registration: Workflow change detection logic is not duplicated

Why use watch?

  • Add reactivity: Automatically recalculates missing nodes when activeWorkflow changes
  • Handle persistent components: Components like ComfyQueueButton (that don't remount) update automatically
  • No manual calls needed: State refreshes automatically on workflow switches

2. Add UI Warning Indicators

ComfyQueueButton (Run button)

  • ⚠️ Triangle warning icon display
  • Button disabled state
  • Tooltip: "Workflow contains unsupported nodes (highlighted red). Remove these to run the workflow."
  • Text color always white

SubgraphBreadcrumbItem (Workflow name)

  • ⚠️ Warning icon on root breadcrumb only
  • Tooltip: "Workflow contains unsupported nodes (highlighted red)."

3. Add i18n Keys

{
  "menu": {
    "runWorkflowDisabled": "Workflow contains unsupported nodes (highlighted red). Remove these to run the workflow."
  },
  "breadcrumbsMenu": {
    "missingNodesWarning": "Workflow contains unsupported nodes (highlighted red)."
  }
}

🧪 Testing

  1. Open workflow with missing nodes

    • ✅ ComfyQueueButton shows warning icon + disabled state
    • ✅ Root breadcrumb shows warning icon
    • ✅ Appropriate tooltips displayed
  2. Switch to workflow without missing nodes

    • ✅ Warning icons automatically disappear
    • ✅ ComfyQueueButton becomes enabled
  3. Switch back to workflow with missing nodes

    • ✅ Warning icons reappear
    • ✅ State updates in real-time

📸 Visual Changes

  • ComfyQueueButton: Warning icon (triangle) + disabled styling
  • SubgraphBreadcrumbItem: Gold warning icon on the left
queuebutton.webm

🤖 Generated with Claude Code

┆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 13, 2025
@github-actions
Copy link

github-actions bot commented Nov 13, 2025

🎭 Playwright Test Results

⚠️ Tests passed with flaky tests

⏰ Completed at: 11/19/2025, 08:46:42 AM UTC

📈 Summary

  • Total Tests: 497
  • Passed: 465 ✅
  • Failed: 0
  • Flaky: 2 ⚠️
  • Skipped: 30 ⏭️

📊 Test Reports by Browser

  • chromium: View Report • ✅ 456 / ❌ 0 / ⚠️ 2 / ⏭️ 30
  • 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 13, 2025

🎨 Storybook Build Status

Build completed successfully!

⏰ Completed at: 11/19/2025, 08:36:23 AM UTC

🔗 Links


🎉 Your Storybook is ready for review!

@github-actions
Copy link

github-actions bot commented Nov 13, 2025

Bundle Size Report

Summary

  • Raw size: 13.7 MB baseline 13.7 MB — 🔴 +1.27 kB
  • Gzip: 2.75 MB baseline 2.75 MB — 🔴 +657 B
  • Brotli: 2.16 MB baseline 2.16 MB — 🟢 -66 B
  • Bundles: 91 current • 91 baseline • 42 added / 42 removed

Category Glance
Graph Workspace 🔴 +498 B (913 kB) · App Entry Points 🔴 +416 B (3.14 MB) · UI Components 🔴 +337 B (130 kB) · Vendor & Third-Party 🔴 +15 B (5.32 MB) · Panels & Settings 🔴 +2 B (307 kB) · Other ⚪ 0 B (3.9 MB) · + 3 more

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

Main entry bundles and manifests

File Before After Δ Raw Δ Gzip Δ Brotli
assets/index-DYSLPcg-.js (new) 2.77 MB 🔴 +2.77 MB 🔴 +578 kB 🔴 +439 kB
assets/index-BSttrM9L.js (removed) 2.77 MB 🟢 -2.77 MB 🟢 -578 kB 🟢 -439 kB
assets/index-BY1Nrl4f.js (removed) 364 kB 🟢 -364 kB 🟢 -75.2 kB 🟢 -61.4 kB
assets/index-D3ugv9Vk.js (new) 364 kB 🔴 +364 kB 🔴 +75.2 kB 🔴 +61.3 kB
assets/index-BJDkKYco.js (removed) 345 B 🟢 -345 B 🟢 -243 B 🟢 -234 B
assets/index-DAtER8cp.js (new) 345 B 🔴 +345 B 🔴 +243 B 🔴 +226 B

Status: 3 added / 3 removed

Graph Workspace — 913 kB (baseline 913 kB) • 🔴 +498 B

Graph editor runtime, canvas, workflow orchestration

File Before After Δ Raw Δ Gzip Δ Brotli
assets/GraphView-Cgmx-IW-.js (new) 913 kB 🔴 +913 kB 🔴 +176 kB 🔴 +136 kB
assets/GraphView-BbuH4_oZ.js (removed) 913 kB 🟢 -913 kB 🟢 -176 kB 🟢 -136 kB

Status: 1 added / 1 removed

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

Top-level views, pages, and routed surfaces

File Before After Δ Raw Δ Gzip Δ Brotli
assets/UserSelectView-B8mnv9eU.js (new) 8.03 kB 🔴 +8.03 kB 🔴 +2.45 kB 🔴 +2.15 kB
assets/UserSelectView-yu6gam4d.js (removed) 8.03 kB 🟢 -8.03 kB 🟢 -2.44 kB 🟢 -2.14 kB

Status: 1 added / 1 removed

Panels & Settings — 307 kB (baseline 307 kB) • 🔴 +2 B

Configuration panels, inspectors, and settings screens

File Before After Δ Raw Δ Gzip Δ Brotli
assets/CreditsPanel-CqSuteQi.js (removed) 23 kB 🟢 -23 kB 🟢 -5.46 kB 🟢 -4.79 kB
assets/CreditsPanel-DQ3YhsZn.js (new) 23 kB 🔴 +23 kB 🔴 +5.47 kB 🔴 +4.79 kB
assets/KeybindingPanel-BFeAy6qm.js (removed) 15.1 kB 🟢 -15.1 kB 🟢 -3.74 kB 🟢 -3.3 kB
assets/KeybindingPanel-da4YD8PX.js (new) 15.1 kB 🔴 +15.1 kB 🔴 +3.74 kB 🔴 +3.31 kB
assets/ExtensionPanel-Di_SgIRS.js (new) 12 kB 🔴 +12 kB 🔴 +2.81 kB 🔴 +2.46 kB
assets/ExtensionPanel-YfyCawYS.js (removed) 12 kB 🟢 -12 kB 🟢 -2.8 kB 🟢 -2.46 kB
assets/AboutPanel-BIJ8BhNz.js (new) 10.2 kB 🔴 +10.2 kB 🔴 +2.64 kB 🔴 +2.33 kB
assets/AboutPanel-CV00aZ0M.js (removed) 10.2 kB 🟢 -10.2 kB 🟢 -2.64 kB 🟢 -2.32 kB
assets/ServerConfigPanel-aC1-pZwZ.js (new) 8.09 kB 🔴 +8.09 kB 🔴 +2.14 kB 🔴 +1.89 kB
assets/ServerConfigPanel-DlLLdLJg.js (removed) 8.09 kB 🟢 -8.09 kB 🟢 -2.13 kB 🟢 -1.89 kB
assets/UserPanel-Bd57Twj1.js (removed) 7.8 kB 🟢 -7.8 kB 🟢 -2.04 kB 🟢 -1.78 kB
assets/UserPanel-BGKP1FPF.js (new) 7.8 kB 🔴 +7.8 kB 🔴 +2.04 kB 🔴 +1.78 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 — 130 kB (baseline 130 kB) • 🔴 +337 B

Reusable component library chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/Load3D.vue_vue_type_script_setup_true_lang-BcBJider.js (removed) 53.9 kB 🟢 -53.9 kB 🟢 -8.43 kB 🟢 -7.24 kB
assets/Load3D.vue_vue_type_script_setup_true_lang-DVZ3hfw9.js (new) 53.9 kB 🔴 +53.9 kB 🔴 +8.43 kB 🔴 +7.24 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-CKCP4hRT.js (new) 48.2 kB 🔴 +48.2 kB 🔴 +10.3 kB 🔴 +8.93 kB
assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DWvdyten.js (removed) 48.2 kB 🟢 -48.2 kB 🟢 -10.3 kB 🟢 -8.94 kB
assets/ComfyQueueButton-AKAcdqdI.js (new) 11.5 kB 🔴 +11.5 kB 🔴 +2.86 kB 🔴 +2.52 kB
assets/ComfyQueueButton-DtWGO393.js (removed) 11.2 kB 🟢 -11.2 kB 🟢 -2.79 kB 🟢 -2.47 kB
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-BKeqixqy.js (new) 2.14 kB 🔴 +2.14 kB 🔴 +794 B 🔴 +693 B
assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFIcSIrr.js (removed) 2.14 kB 🟢 -2.14 kB 🟢 -793 B 🟢 -684 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-BH2-o8wl.js (removed) 848 B 🟢 -848 B 🟢 -474 B 🟢 -415 B
assets/MediaTitle.vue_vue_type_script_setup_true_lang-DxEbLeXs.js (new) 848 B 🔴 +848 B 🔴 +473 B 🔴 +420 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
assets/WidgetButton-ByrPd5jr.js 1.62 kB 1.62 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 5 added / 5 removed

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

Stores, services, APIs, and repositories

File Before After Δ Raw Δ Gzip Δ Brotli
assets/keybindingService-D9Ss4e5P.js (new) 7.6 kB 🔴 +7.6 kB 🔴 +1.84 kB 🔴 +1.59 kB
assets/keybindingService-DCB-Iq5w.js (removed) 7.6 kB 🟢 -7.6 kB 🟢 -1.84 kB 🟢 -1.59 kB
assets/serverConfigStore-BNtfnRyz.js (new) 2.79 kB 🔴 +2.79 kB 🔴 +888 B 🔴 +774 B
assets/serverConfigStore-DA5U7kHB.js (removed) 2.79 kB 🟢 -2.79 kB 🟢 -893 B 🟢 -776 B
assets/audioService-DARtIGeh.js (removed) 2.2 kB 🟢 -2.2 kB 🟢 -958 B 🟢 -821 B
assets/audioService-DpDnlHa0.js (new) 2.2 kB 🔴 +2.2 kB 🔴 +958 B 🔴 +824 B

Status: 3 added / 3 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-DeJttHNs.js (new) 1.41 kB 🔴 +1.41 kB 🔴 +650 B 🔴 +541 B
assets/audioUtils-UrBPne_n.js (removed) 1.41 kB 🟢 -1.41 kB 🟢 -648 B 🟢 -547 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.32 MB (baseline 5.32 MB) • 🔴 +15 B

External libraries and shared vendor chunks

File Before After Δ Raw Δ Gzip Δ Brotli
assets/vendor-other-CDhn7HSS.js (new) 3.22 MB 🔴 +3.22 MB 🔴 +685 kB 🔴 +549 kB
assets/vendor-other-BlAt9bI4.js (removed) 3.22 MB 🟢 -3.22 MB 🟢 -685 kB 🟢 -549 kB
assets/vendor-tiptap-Bl_eii0_.js (removed) 232 kB 🟢 -232 kB 🟢 -45.7 kB 🟢 -37.7 kB
assets/vendor-tiptap-wiu3n7I3.js (new) 232 kB 🔴 +232 kB 🔴 +45.7 kB 🔴 +37.7 kB
assets/vendor-vue-BLmCzM8l.js (removed) 92.6 kB 🟢 -92.6 kB 🟢 -23.9 kB 🟢 -20.8 kB
assets/vendor-vue-CBe0BMQG.js (new) 92.6 kB 🔴 +92.6 kB 🔴 +23.9 kB 🔴 +20.8 kB
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-xterm-BZLod3g9.js 407 kB 407 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B

Status: 3 added / 3 removed

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

Bundles that do not match a named category

File Before After Δ Raw Δ Gzip Δ Brotli
assets/WidgetRecordAudio-C3eRNmwF.js (removed) 22 kB 🟢 -22 kB 🟢 -5.53 kB 🟢 -4.88 kB
assets/WidgetRecordAudio-Cnjbuzbb.js (new) 22 kB 🔴 +22 kB 🔴 +5.53 kB 🔴 +4.88 kB
assets/AudioPreviewPlayer-BamlGpNv.js (removed) 15 kB 🟢 -15 kB 🟢 -3.7 kB 🟢 -3.3 kB
assets/AudioPreviewPlayer-CidKQ7ok.js (new) 15 kB 🔴 +15 kB 🔴 +3.7 kB 🔴 +3.3 kB
assets/WidgetInputNumber-D4ATqaqj.js (removed) 14.4 kB 🟢 -14.4 kB 🟢 -3.71 kB 🟢 -3.27 kB
assets/WidgetInputNumber-Z5bmXqzJ.js (new) 14.4 kB 🔴 +14.4 kB 🔴 +3.71 kB 🔴 +3.27 kB
assets/WidgetGalleria-BDlJnF02.js (new) 5.62 kB 🔴 +5.62 kB 🔴 +1.76 kB 🔴 +1.55 kB
assets/WidgetGalleria-mJjPYx6Q.js (removed) 5.62 kB 🟢 -5.62 kB 🟢 -1.75 kB 🟢 -1.55 kB
assets/WidgetColorPicker-CduluXo1.js (new) 4.93 kB 🔴 +4.93 kB 🔴 +1.7 kB 🔴 +1.49 kB
assets/WidgetColorPicker-CS7Gj2li.js (removed) 4.93 kB 🟢 -4.93 kB 🟢 -1.7 kB 🟢 -1.49 kB
assets/WidgetMarkdown-CYLf8egT.js (removed) 4.66 kB 🟢 -4.66 kB 🟢 -1.61 kB 🟢 -1.41 kB
assets/WidgetMarkdown-DcMfJ0ke.js (new) 4.66 kB 🔴 +4.66 kB 🔴 +1.62 kB 🔴 +1.4 kB
assets/WidgetAudioUI-CNOsyt6k.js (new) 4.4 kB 🔴 +4.4 kB 🔴 +1.45 kB 🔴 +1.3 kB
assets/WidgetAudioUI-DYUSjp46.js (removed) 4.4 kB 🟢 -4.4 kB 🟢 -1.44 kB 🟢 -1.29 kB
assets/WidgetTextarea-DIG3Pu09.js (new) 3.66 kB 🔴 +3.66 kB 🔴 +1.27 kB 🔴 +1.12 kB
assets/WidgetTextarea-SjbFa6t0.js (removed) 3.66 kB 🟢 -3.66 kB 🟢 -1.27 kB 🟢 -1.11 kB
assets/WidgetInputText-D1dUoRxo.js (new) 3.52 kB 🔴 +3.52 kB 🔴 +1.25 kB 🔴 +1.1 kB
assets/WidgetInputText-vyPwT2U_.js (removed) 3.52 kB 🟢 -3.52 kB 🟢 -1.24 kB 🟢 -1.09 kB
assets/WidgetToggleSwitch-CwmblU1R.js (new) 3.29 kB 🔴 +3.29 kB 🔴 +1.15 kB 🔴 +1.01 kB
assets/WidgetToggleSwitch-DQRCl--Y.js (removed) 3.29 kB 🟢 -3.29 kB 🟢 -1.15 kB 🟢 -1.02 kB
assets/MediaImageBottom-C2uTLXJI.js (new) 3.11 kB 🔴 +3.11 kB 🔴 +1.07 kB 🔴 +920 B
assets/MediaImageBottom-DEe7MSwj.js (removed) 3.11 kB 🟢 -3.11 kB 🟢 -1.06 kB 🟢 -916 B
assets/MediaAudioBottom-CDkVpnY6.js (new) 3.06 kB 🔴 +3.06 kB 🔴 +1.06 kB 🔴 +932 B
assets/MediaAudioBottom-CvmDF-JZ.js (removed) 3.06 kB 🟢 -3.06 kB 🟢 -1.06 kB 🟢 -940 B
assets/MediaVideoBottom-CoNl9Nti.js (new) 3.06 kB 🔴 +3.06 kB 🔴 +1.06 kB 🔴 +943 B
assets/MediaVideoBottom-de2tSVxI.js (removed) 3.06 kB 🟢 -3.06 kB 🟢 -1.06 kB 🟢 -925 B
assets/Media3DTop-BxPz843c.js (removed) 3.05 kB 🟢 -3.05 kB 🟢 -1.09 kB 🟢 -917 B
assets/Media3DTop-DioaECvh.js (new) 3.05 kB 🔴 +3.05 kB 🔴 +1.09 kB 🔴 +916 B
assets/Media3DBottom-C9d6diiw.js (removed) 3.04 kB 🟢 -3.04 kB 🟢 -1.05 kB 🟢 -921 B
assets/Media3DBottom-CmV0tnDu.js (new) 3.04 kB 🔴 +3.04 kB 🔴 +1.05 kB 🔴 +925 B
assets/WidgetSelect-jUJl2LlE.js (new) 2.24 kB 🔴 +2.24 kB 🔴 +690 B 🔴 +592 B
assets/WidgetSelect-TJ2eS45I.js (removed) 2.24 kB 🟢 -2.24 kB 🟢 -683 B 🟢 -582 B
assets/Load3D-BAuu1IVP.js (new) 2.01 kB 🔴 +2.01 kB 🔴 +613 B 🔴 +511 B
assets/Load3D-CsCmf2kv.js (removed) 2.01 kB 🟢 -2.01 kB 🟢 -605 B 🟢 -517 B
assets/WidgetLegacy-Dmah_a3w.js (removed) 1.95 kB 🟢 -1.95 kB 🟢 -570 B 🟢 -512 B
assets/WidgetLegacy-jiA0-oXn.js (new) 1.95 kB 🔴 +1.95 kB 🔴 +576 B 🔴 +480 B
assets/MediaImageTop-OTVaMdZj.js (removed) 1.68 kB 🟢 -1.68 kB 🟢 -804 B 🟢 -679 B
assets/MediaImageTop-P41-K4nT.js (new) 1.68 kB 🔴 +1.68 kB 🔴 +804 B 🔴 +681 B
assets/commands-_6uSNVYB.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BaAvtVOT.js 14.7 kB 14.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-BRKOlMPq.js 15.4 kB 15.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-C1kmJUO0.js 14.9 kB 14.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-CHLkz7NH.js 17.4 kB 17.4 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-cLsDwHMQ.js 14 kB 14 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Ct50VUT9.js 16.2 kB 16.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-DOEnM922.js 14.1 kB 14.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/commands-Ds4Sq2CW.js 15.7 kB 15.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-B8Zq14EB.js 115 kB 115 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bb_dh-sT.js 72.8 kB 72.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BmeDirDS.js 85 kB 85 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-BPBVYu43.js 99.9 kB 99.9 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-Bq8PFFnX.js 94.8 kB 94.8 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-C7rd6DF7.js 82.5 kB 82.5 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DAyr94k5.js 87.2 kB 87.2 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DkkO0XDC.js 73.7 kB 73.7 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/main-DM_J7KlH.js 84.1 kB 84.1 kB ⚪ 0 B ⚪ 0 B ⚪ 0 B
assets/MediaAudioTop-RTI8pWy9.js 1.42 kB 1.42 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: 19 added / 19 removed

@viva-jinyi viva-jinyi marked this pull request as draft November 13, 2025 14:13
@viva-jinyi viva-jinyi force-pushed the feature/missing-node-warning-icon branch 2 times, most recently from a6f823e to b4d2fa3 Compare November 16, 2025 11:35
@viva-jinyi viva-jinyi marked this pull request as ready for review November 16, 2025 12:16
DrJKL
DrJKL previously approved these changes Nov 17, 2025
@DrJKL DrJKL force-pushed the feature/missing-node-warning-icon branch from b4d2fa3 to e032417 Compare November 17, 2025 20:28
@viva-jinyi viva-jinyi force-pushed the feature/missing-node-warning-icon branch from e032417 to 6702548 Compare November 18, 2025 00:07
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Nov 18, 2025
@viva-jinyi viva-jinyi enabled auto-merge (squash) November 18, 2025 00:17
@viva-jinyi viva-jinyi requested a review from DrJKL November 18, 2025 00:17
DrJKL
DrJKL previously approved these changes Nov 18, 2025
@viva-jinyi viva-jinyi force-pushed the feature/missing-node-warning-icon branch from 29ca9ab to 1671d72 Compare November 18, 2025 07:10
@viva-jinyi viva-jinyi added the needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch label Nov 18, 2025
@viva-jinyi viva-jinyi force-pushed the feature/missing-node-warning-icon branch from 1671d72 to a2508e2 Compare November 19, 2025 04:53
@viva-jinyi viva-jinyi requested a review from DrJKL November 19, 2025 04:59
viva-jinyi and others added 4 commits November 19, 2025 17:34
Display visual warnings when workflow contains missing nodes.

Key changes:
- Convert useMissingNodes to singleton with createSharedComposable
- Add activeWorkflow watch for automatic updates on workflow changes
- Add warning icon + disabled state + tooltip to ComfyQueueButton
- Add warning icon + tooltip to root SubgraphBreadcrumbItem
- Add i18n keys (menu.runWorkflowDisabled, breadcrumbsMenu.missingNodesWarning)

Technical rationale:
- createSharedComposable: All components share same instance, prevents duplicate API calls
- watch: Ensures persistent components (ComfyQueueButton) update automatically on workflow changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@viva-jinyi viva-jinyi force-pushed the feature/missing-node-warning-icon branch from 9949458 to 193b24f Compare November 19, 2025 08:34
Copy link
Contributor

@christian-byrne christian-byrne left a comment

Choose a reason for hiding this comment

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

LGTM

@viva-jinyi viva-jinyi merged commit a521066 into main Nov 19, 2025
27 checks passed
@viva-jinyi viva-jinyi deleted the feature/missing-node-warning-icon branch November 19, 2025 19:23
@christian-byrne christian-byrne added needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch 1.32 and removed needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch labels Nov 19, 2025
@github-actions
Copy link

@viva-jinyi Commit a521066b25a0f7bc09fa6676931bc67faceaef6c already exists on branch core/1.32. No backport needed.

1 similar comment
@github-actions
Copy link

@viva-jinyi Commit a521066b25a0f7bc09fa6676931bc67faceaef6c already exists on branch core/1.32. No backport needed.

@PGCRT
Copy link

PGCRT commented Nov 20, 2025

Can't execute, grayed out run button, without any missing nodes, all nodes loaded properly. Reverting back to an older version

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

Labels

1.32 needs-backport Fix/change that needs to be cherry-picked to the current feature freeze branch size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants