-
Notifications
You must be signed in to change notification settings - Fork 420
fix: remove LOD from vue nodes #6950
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
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (2)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the 📝 WalkthroughWalkthroughRemoves the entire Level of Detail (LOD) optimization system from Vue nodes, including the useLOD composable, LODFallback component, lod-toggle CSS classes, associated tests, and render mode setting synchronization. Adds hideInVueNodes setting flag for UI filtering. Changes
Possibly related PRs
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
🎨 Storybook Build Status✅ Build completed successfully! ⏰ Completed at: 11/26/2025, 03:47:53 AM UTC 🔗 Links🎉 Your Storybook is ready for review! |
🎭 Playwright Test Results❌ Some tests failed ⏰ Completed at: 11/26/2025, 03:56:18 AM 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.18 MB (baseline 3.18 MB) • 🟢 -365 BMain entry bundles and manifests
Status: 3 added / 3 removed Graph Workspace — 944 kB (baseline 946 kB) • 🟢 -1.83 kBGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 6.54 kB (baseline 6.54 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 1 added / 1 removed Panels & Settings — 298 kB (baseline 298 kB) • 🟢 -2 BConfiguration panels, inspectors, and settings screens
Status: 6 added / 6 removed UI Components — 138 kB (baseline 139 kB) • 🟢 -168 BReusable component library chunks
Status: 9 added / 9 removed Data & Services — 12.5 kB (baseline 12.5 kB) • ⚪ 0 BStores, services, APIs, and repositories
Status: 3 added / 3 removed Utilities & Hooks — 2.94 kB (baseline 2.94 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 1 added / 1 removed Vendor & Third-Party — 8.56 MB (baseline 8.56 MB) • 🟢 -758 BExternal libraries and shared vendor chunks
Status: 5 added / 5 removed Other — 3.84 MB (baseline 3.84 MB) • 🟢 -407 BBundles that do not match a named category
Status: 23 added / 23 removed |
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.
Actionable comments posted: 2
♻️ Duplicate comments (1)
src/platform/settings/composables/useSettingSearch.ts (1)
11-11: Verify the import path for useVueFeatureFlags.ESLint reports the same import resolution issue as in
useSettingUI.ts. This was already flagged in that file for verification.
🧹 Nitpick comments (2)
src/platform/settings/types.ts (1)
50-50: Consider adding JSDoc documentation for the new property.The
hideInVueNodesproperty is well-named and correctly typed. Consider adding a JSDoc comment to explain its purpose, similar to other properties in the interface.// sortOrder for sorting settings within a group. Higher values appear first. // Default is 0 if not specified. sortOrder?: number + // Whether to hide this setting when Vue nodes rendering is enabled. + // Used to filter out Litegraph-specific settings in Vue node mode. hideInVueNodes?: booleansrc/platform/settings/composables/useSettingSearch.ts (1)
58-65: Update comment to reflect the new filtering condition.The comment on line 58 states "Filter out hidden and deprecated settings, just like in normal settings tree" but doesn't mention the new
hideInVueNodesfiltering. The implementation correctly filters settings, but the comment should be updated for clarity.- // Filter out hidden and deprecated settings, just like in normal settings tree + // Filter out hidden, deprecated, and Vue-node-excluded settings if ( setting.type === 'hidden' || setting.deprecated || (shouldRenderVueNodes.value && setting.hideInVueNodes) ) {
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (25)
browser_tests/tests/vueNodes/nodeStates/lod.spec.ts(0 hunks)packages/design-system/src/css/style.css(0 hunks)src/composables/graph/useVueNodeLifecycle.ts(0 hunks)src/composables/settings/useRenderModeSetting.ts(0 hunks)src/platform/settings/composables/useSettingSearch.ts(2 hunks)src/platform/settings/composables/useSettingUI.ts(2 hunks)src/platform/settings/constants/coreSettings.ts(1 hunks)src/platform/settings/types.ts(1 hunks)src/renderer/core/layout/__tests__/TransformPane.test.ts(0 hunks)src/renderer/core/layout/transform/TransformPane.vue(2 hunks)src/renderer/extensions/vueNodes/VideoPreview.vue(1 hunks)src/renderer/extensions/vueNodes/components/ImagePreview.vue(1 hunks)src/renderer/extensions/vueNodes/components/InputSlot.vue(1 hunks)src/renderer/extensions/vueNodes/components/LGraphNode.vue(0 hunks)src/renderer/extensions/vueNodes/components/LODFallback.vue(0 hunks)src/renderer/extensions/vueNodes/components/NodeHeader.vue(3 hunks)src/renderer/extensions/vueNodes/components/OutputSlot.vue(1 hunks)src/renderer/extensions/vueNodes/components/widgets/LOD_IMPLEMENTATION_GUIDE.md(0 hunks)src/renderer/extensions/vueNodes/lod/useLOD.ts(0 hunks)src/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vue(1 hunks)src/renderer/extensions/vueNodes/widgets/components/WidgetRecordAudio.vue(0 hunks)src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vue(1 hunks)src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue(0 hunks)src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue(1 hunks)tests-ui/tests/renderer/extensions/vueNodes/lod/useLOD.test.ts(0 hunks)
💤 Files with no reviewable changes (12)
- src/renderer/core/layout/tests/TransformPane.test.ts
- src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue
- src/renderer/extensions/vueNodes/components/widgets/LOD_IMPLEMENTATION_GUIDE.md
- packages/design-system/src/css/style.css
- src/renderer/extensions/vueNodes/components/LODFallback.vue
- src/composables/graph/useVueNodeLifecycle.ts
- src/renderer/extensions/vueNodes/widgets/components/WidgetRecordAudio.vue
- src/composables/settings/useRenderModeSetting.ts
- browser_tests/tests/vueNodes/nodeStates/lod.spec.ts
- tests-ui/tests/renderer/extensions/vueNodes/lod/useLOD.test.ts
- src/renderer/extensions/vueNodes/components/LGraphNode.vue
- src/renderer/extensions/vueNodes/lod/useLOD.ts
🧰 Additional context used
📓 Path-based instructions (18)
**/*.{vue,ts,tsx}
📄 CodeRabbit inference engine (.cursorrules)
**/*.{vue,ts,tsx}: Leverage VueUse functions for performance-enhancing utilities
Use vue-i18n in Composition API for any string literals and place new translation entries in src/locales/en/main.json
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
**/*.{ts,tsx,js}
📄 CodeRabbit inference engine (.cursorrules)
Use es-toolkit for utility functions
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (.cursorrules)
Use TypeScript for type safety
**/*.{ts,tsx}: Never useanytype - use proper TypeScript types
Never useas anytype assertions - fix the underlying type issue
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.ts
**/*.{ts,tsx,js,vue}
📄 CodeRabbit inference engine (.cursorrules)
Implement proper error handling in components and services
**/*.{ts,tsx,js,vue}: Use 2-space indentation, single quotes, no semicolons, and maintain 80-character line width as configured in.prettierrc
Organize imports by sorting and grouping by plugin, and runpnpm formatbefore committing
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
src/**/*.{vue,ts}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
src/**/*.{vue,ts}: Leverage VueUse functions for performance-enhancing styles
Implement proper error handling
Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.json
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
src/**/*.ts
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
src/**/*.ts: Use es-toolkit for utility functions
Use TypeScript for type safety
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.ts
**/*.{ts,tsx,js,jsx,vue}
📄 CodeRabbit inference engine (CLAUDE.md)
Use camelCase for variable and setting names in TypeScript/Vue files
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
**/*.{ts,tsx,vue}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx,vue}: Useconst settingStore = useSettingStore()andsettingStore.get('Comfy.SomeSetting')to retrieve settings in TypeScript/Vue files
Useawait settingStore.set('Comfy.SomeSetting', newValue)to update settings in TypeScript/Vue files
Check server capabilities usingapi.serverSupportsFeature('feature_name')before using enhanced features
Useapi.getServerFeature('config_name', defaultValue)to retrieve server feature configurationEnforce ESLint rules for Vue + TypeScript including: no floating promises, no unused imports, and i18n raw text restrictions in templates
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.ts: Define dynamic setting defaults using runtime context with functions in settings configuration
UsedefaultsByInstallVersionproperty for gradual feature rollout based on version in settings configuration
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.ts
src/**/{services,composables}/**/*.{ts,tsx}
📄 CodeRabbit inference engine (src/CLAUDE.md)
src/**/{services,composables}/**/*.{ts,tsx}: Useapi.apiURL()for backend endpoints instead of constructing URLs directly
Useapi.fileURL()for static file access instead of constructing URLs directly
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts
src/**/*.{ts,tsx,vue}
📄 CodeRabbit inference engine (src/CLAUDE.md)
src/**/*.{ts,tsx,vue}: Sanitize HTML with DOMPurify to prevent XSS attacks
Avoid using @ts-expect-error; use proper TypeScript types instead
Use es-toolkit for utility functions instead of other utility libraries
Implement proper TypeScript types throughout the codebase
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
src/**/{composables,components}/**/*.{ts,tsx,vue}
📄 CodeRabbit inference engine (src/CLAUDE.md)
Clean up subscriptions in state management to prevent memory leaks
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
src/**/*.{vue,ts,tsx}
📄 CodeRabbit inference engine (src/CLAUDE.md)
Follow Vue 3 composition API style guide
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.tssrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
src/**/{components,composables}/**/*.{ts,tsx,vue}
📄 CodeRabbit inference engine (src/CLAUDE.md)
Use vue-i18n for ALL user-facing strings by adding them to
src/locales/en/main.json
Files:
src/platform/settings/composables/useSettingUI.tssrc/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue
**/composables/use*.ts
📄 CodeRabbit inference engine (AGENTS.md)
Name composables in the format
useXyz.ts
Files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts
**/*.vue
📄 CodeRabbit inference engine (.cursorrules)
**/*.vue: Use setup() function for component logic in Vue 3 Composition API
Utilize ref and reactive for reactive state in Vue 3
Implement computed properties with computed() function
Use watch and watchEffect for side effects in Vue 3
Implement lifecycle hooks with onMounted, onUpdated, etc.
Utilize provide/inject for dependency injection in Vue 3
Use Vue 3.5 style of default prop declaration with defineProps()
Organize Vue components in <script> <style> order
Use Tailwind CSS for styling Vue components
Implement responsive design with Tailwind CSS
Do not use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage). Use replacements: Select, Popover, DatePicker, ToggleSwitch, Drawer, AutoComplete, Tabs, Stepper, Message respectively
Implement proper props and emits definitions in Vue components
Utilize Vue 3's Teleport component when needed
Use Suspense for async components in Vue 3
Follow Vue 3 style guide and naming conventions
Never use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage)Never use
:class="[]"to merge class names - always useimport { cn } from '@/utils/tailwindUtil'for class merging in Vue templates
**/*.vue: Use TypeScript with Vue 3 Single File Components (.vuefiles)
Name Vue components in PascalCase (e.g.,MenuHamburger.vue)Files:
src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vuesrc/**/*.vue
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
src/**/*.vue: Use the Vue 3 Composition API instead of the Options API when writing Vue components (exception: when overriding or extending PrimeVue components for compatibility)
Use setup() function for component logic
Utilize ref and reactive for reactive state
Implement computed properties with computed()
Use watch and watchEffect for side effects
Implement lifecycle hooks with onMounted, onUpdated, etc.
Utilize provide/inject for dependency injection
Use vue 3.5 style of default prop declaration
Use Tailwind CSS for styling
Implement proper props and emits definitions
Utilize Vue 3's Teleport component when needed
Use Suspense for async components
Follow Vue 3 style guide and naming conventionsFiles:
src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue**/*.{vue,html}
📄 CodeRabbit inference engine (CLAUDE.md)
Never use
dark:ordark-theme:Tailwind variants - instead use semantic values fromstyle.csstheme, e.g.bg-node-component-surfaceFiles:
src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vuesrc/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vuesrc/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/components/NodeHeader.vuesrc/renderer/extensions/vueNodes/VideoPreview.vuesrc/renderer/core/layout/transform/TransformPane.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vuesrc/renderer/extensions/vueNodes/components/ImagePreview.vue🧠 Learnings (20)
📚 Learning: 2025-11-24T19:47:14.779Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:14.779Z Learning: Applies to **/*.{ts,tsx,vue} : Use `const settingStore = useSettingStore()` and `settingStore.get('Comfy.SomeSetting')` to retrieve settings in TypeScript/Vue filesApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/types.ts📚 Learning: 2025-11-24T19:47:14.779Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:14.779Z Learning: Applies to **/*.{ts,tsx,vue} : Use `await settingStore.set('Comfy.SomeSetting', newValue)` to update settings in TypeScript/Vue filesApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/platform/settings/constants/coreSettings.tssrc/platform/settings/types.ts📚 Learning: 2025-11-24T19:46:52.279Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .cursorrules:0-0 Timestamp: 2025-11-24T19:46:52.279Z Learning: Applies to **/*.{vue,ts,tsx} : Leverage VueUse functions for performance-enhancing utilitiesApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vue📚 Learning: 2025-11-24T19:47:02.860Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .github/copilot-instructions.md:0-0 Timestamp: 2025-11-24T19:47:02.860Z Learning: Applies to src/**/*.{vue,ts} : Leverage VueUse functions for performance-enhancing stylesApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:46:52.279Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .cursorrules:0-0 Timestamp: 2025-11-24T19:46:52.279Z Learning: Applies to **/*.{vue,ts,tsx} : Use vue-i18n in Composition API for any string literals and place new translation entries in src/locales/en/main.jsonApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:47:34.324Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:34.324Z Learning: Applies to src/**/{components,composables}/**/*.{ts,tsx,vue} : Use vue-i18n for ALL user-facing strings by adding them to `src/locales/en/main.json`Applied to files:
src/platform/settings/composables/useSettingUI.ts📚 Learning: 2025-11-24T19:47:45.616Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/components/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:45.616Z Learning: Applies to src/components/**/*.{vue,ts,js} : Use existing VueUse composables (such as useElementHover) instead of manually managing event listenersApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:47:34.324Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:34.324Z Learning: Applies to src/**/*.{vue,ts,tsx} : Follow Vue 3 composition API style guideApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:47:02.860Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .github/copilot-instructions.md:0-0 Timestamp: 2025-11-24T19:47:02.860Z Learning: Applies to src/**/*.{vue,ts} : Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.jsonApplied to files:
src/platform/settings/composables/useSettingUI.ts📚 Learning: 2025-11-24T19:47:45.616Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/components/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:45.616Z Learning: Applies to src/components/**/*.{vue,ts,js} : Use vue-i18n for ALL UI stringsApplied to files:
src/platform/settings/composables/useSettingUI.ts📚 Learning: 2025-11-24T19:47:14.779Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:14.779Z Learning: Applies to **/*.{ts,tsx,vue} : Use `api.getServerFeature('config_name', defaultValue)` to retrieve server feature configurationApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:47:14.779Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:14.779Z Learning: Applies to **/*.{ts,tsx,vue} : Check server capabilities using `api.serverSupportsFeature('feature_name')` before using enhanced featuresApplied to files:
src/platform/settings/composables/useSettingUI.tssrc/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:48:23.088Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-11-24T19:48:23.088Z Learning: Applies to **/*.{ts,tsx,vue} : Enforce ESLint rules for Vue + TypeScript including: no floating promises, no unused imports, and i18n raw text restrictions in templatesApplied to files:
src/platform/settings/composables/useSettingUI.ts📚 Learning: 2025-11-24T19:47:45.616Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/components/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:45.616Z Learning: Applies to src/components/**/*.vue : Replace PrimeVue InputSwitch component with ToggleSwitchApplied to files:
src/renderer/extensions/vueNodes/components/OutputSlot.vuesrc/platform/settings/composables/useSettingSearch.tssrc/renderer/extensions/vueNodes/components/InputSlot.vue📚 Learning: 2025-11-24T19:47:02.860Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .github/copilot-instructions.md:0-0 Timestamp: 2025-11-24T19:47:02.860Z Learning: Applies to src/**/*.vue : Use the Vue 3 Composition API instead of the Options API when writing Vue components (exception: when overriding or extending PrimeVue components for compatibility)Applied to files:
src/platform/settings/composables/useSettingSearch.ts📚 Learning: 2025-11-24T19:46:52.279Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .cursorrules:0-0 Timestamp: 2025-11-24T19:46:52.279Z Learning: Applies to **/*.vue : Do not use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage). Use replacements: Select, Popover, DatePicker, ToggleSwitch, Drawer, AutoComplete, Tabs, Stepper, Message respectivelyApplied to files:
src/renderer/extensions/vueNodes/components/InputSlot.vuesrc/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue📚 Learning: 2025-11-24T19:46:52.279Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .cursorrules:0-0 Timestamp: 2025-11-24T19:46:52.279Z Learning: Applies to **/*.vue : Never use deprecated PrimeVue components (Dropdown, OverlayPanel, Calendar, InputSwitch, Sidebar, Chips, TabMenu, Steps, InlineMessage)Applied to files:
src/renderer/extensions/vueNodes/components/InputSlot.vue📚 Learning: 2025-11-24T19:47:45.616Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/components/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:45.616Z Learning: Applies to src/components/**/*.vue : Replace PrimeVue Dropdown component with SelectApplied to files:
src/renderer/extensions/vueNodes/components/InputSlot.vue📚 Learning: 2025-11-24T19:47:45.616Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: src/components/CLAUDE.md:0-0 Timestamp: 2025-11-24T19:47:45.616Z Learning: Applies to src/components/**/*.{vue,ts,js} : Use useIntersectionObserver for visibility detection instead of custom scroll handlersApplied to files:
src/renderer/core/layout/transform/TransformPane.vue📚 Learning: 2025-11-24T19:46:52.279Z
Learnt from: CR Repo: Comfy-Org/ComfyUI_frontend PR: 0 File: .cursorrules:0-0 Timestamp: 2025-11-24T19:46:52.279Z Learning: Applies to **/*.vue : Use Vue 3.5 style of default prop declaration with defineProps<T>()Applied to files:
src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue🧬 Code graph analysis (2)
src/platform/settings/composables/useSettingUI.ts (4)
src/composables/useVueFeatureFlags.ts (1)
useVueFeatureFlags(37-39)src/platform/settings/settingStore.ts (1)
SettingTreeNode(20-22)src/utils/treeUtil.ts (1)
buildTree(3-40)src/platform/settings/types.ts (1)
SettingParams(29-51)src/platform/settings/composables/useSettingSearch.ts (1)
src/composables/useVueFeatureFlags.ts (1)
useVueFeatureFlags(37-39)🪛 ESLint
src/platform/settings/composables/useSettingUI.ts
[error] 13-13: Unable to resolve path to module '@/composables/useVueFeatureFlags'.
(import-x/no-unresolved)
src/platform/settings/composables/useSettingSearch.ts
[error] 11-11: Unable to resolve path to module '@/composables/useVueFeatureFlags'.
(import-x/no-unresolved)
⏰ 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). (5)
- GitHub Check: deploy-and-comment
- GitHub Check: test
- GitHub Check: lint-and-format
- GitHub Check: setup
- GitHub Check: collect
🔇 Additional comments (13)
src/renderer/core/layout/transform/TransformPane.vue (2)
4-11: Class binding clean-up correctly removes LOD dependencyDropping the LOD-related class and relying solely on
isInteractingto toggletransform-pane--interactingvswill-change-autokeeps the pane behavior focused on interaction state and aligns with the PR goal of removing LOD from Vue nodes. Tailwind +cnusage also matches the guidelines.
32-38: useTransformState destructuring now minimal and focusedLimiting the
useTransformState()destructure totransformStyleandsyncWithCanvasremoves unused state (e.g., camera/LOD) without changing the existing transform sync behavior. The interaction state is now cleanly handled viauseTransformSettling, which keeps the responsibilities well separated.src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue (2)
17-21: LOD-specific label class removal looks correctDropping the
lod-toggleclass from the label while keeping the same typography preserves layout and removes the LOD toggle affordance, which matches the PR goal of hiding LOD in Vue nodes. No issues from a styling or behavior standpoint.
24-32: Wrapper class change aligns UX with non-interactive LOD behaviorReplacing the LOD-specific class with
cursor-default min-w-0keeps the layout intact and makes the widget area clearly non-interactive now that LOD toggling is gone. This is consistent with the broader LOD removal and avoids misleading cursor feedback.src/platform/settings/composables/useSettingUI.ts (2)
40-42: LGTM! Filtering logic correctly hides LOD settings in Vue nodes.The filtering logic properly excludes settings with
hideInVueNodes: truewhen Vue nodes rendering is enabled. The condition!(shouldRenderVueNodes.value && setting.hideInVueNodes)ensures backward compatibility by only applying the filter when the Vue nodes feature is active.
13-13: The import path is valid and the module exists with proper exports.The file
src/composables/useVueFeatureFlags.tsexists and correctly exportsuseVueFeatureFlagsas a named export on lines 37-38. The import statement inuseSettingUI.tson line 13 matches this export exactly. The ESLint error about unresolved path appears to be a false positive or configuration issue, not an actual problem with the import.src/platform/settings/composables/useSettingSearch.ts (1)
59-63: LGTM! Filtering logic is consistent with useSettingUI.ts.The filtering logic correctly excludes settings with
hideInVueNodes: truewhen Vue nodes rendering is enabled, maintaining consistency with the implementation inuseSettingUI.ts.src/renderer/extensions/vueNodes/VideoPreview.vue (1)
86-97: LGTM! Clean LOD removal with preserved functionality.The Video Dimensions section is now rendered directly without the LODFallback wrapper, successfully completing the LOD removal for this component. The conditional rendering logic based on
videoError,isLoading, andactualDimensionsstates is correct, and all text strings are properly internationalized.src/renderer/extensions/vueNodes/components/OutputSlot.vue (1)
6-11: LOD class removal on slot label is safe and consistentRemoving the LOD-specific class from the output slot label keeps layout and behavior intact; the slot still uses
slotWrapperClass+cnfor dynamic styling and tooltips remain unchanged.src/renderer/extensions/vueNodes/widgets/components/WidgetTextarea.vue (1)
3-7: Class merging update for Textarea matches Tailwind +cnguidelinesUsing
:class="cn(WidgetInputBaseClass, 'size-full text-xs resize-none')"correctly composes Tailwind classes and base widget styles, and cleanly removes the old LOD-related class without affecting behavior.src/renderer/extensions/vueNodes/widgets/components/WidgetMarkdown.vue (1)
6-11: Markdown container LOD class removal is a safe visual-only changeDropping the LOD-specific class from the rendered markdown container keeps the scrollable area and sizing intact, with no impact on editing behavior or markdown rendering.
src/renderer/extensions/vueNodes/components/InputSlot.vue (1)
13-20: Input slot label refactor keeps error styling and layout intactWrapping the label in a flex/min-w-0 container and composing classes via
cn('truncate text-xs font-normal', labelClasses)cleanly removes LOD styling while preserving truncation and error highlighting logic.src/renderer/extensions/vueNodes/components/NodeHeader.vue (1)
21-62: Node header flex layout simplification preserves behavior and structureThe updated flex classes on the collapse button wrapper, title container, and right-side actions area remove LOD-specific styling without changing tooltip behavior, title editing, or badge rendering; the header still has a stable, responsive layout.
|
Updating Playwright Expectations |
## Summary Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. ## Changes - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]>
## Summary Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. ## Changes - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]>
|
@simula-r Backport to Please manually cherry-pick commit Conflicting files
|
|
@simula-r Backport to Please manually cherry-pick commit Conflicting files
|
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
## Summary Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. ## Changes - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
## Summary Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. ## Changes - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
## Summary Backport of #6950 onto cloud/1.32. - cherry-picked 4b87b1f - resolved same PNG + WidgetMarkdown conflicts by keeping upstream LOD removal and local padding ## Testing - pnpm typecheck ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6982-backport-cloud-1-32-fix-remove-LOD-from-vue-nodes-2b86d73d365081ee9346d685bd65a642) by [Unito](https://www.unito.io) Co-authored-by: Simula_r <[email protected]> Co-authored-by: github-actions <[email protected]>
## Summary Backport of #6950 onto cloud/1.33 (clean cherry-pick of 4b87b1f). ## Testing - pnpm typecheck ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6983-backport-cloud-1-33-fix-remove-LOD-from-vue-nodes-2b86d73d36508119bafbc5a5a6a5ad42) by [Unito](https://www.unito.io) Co-authored-by: Simula_r <[email protected]> Co-authored-by: github-actions <[email protected]>
## Summary Backport of #6950 onto core/1.33 (clean cherry-pick of 4b87b1f). ## Testing - pnpm typecheck ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6984-backport-core-1-33-fix-remove-LOD-from-vue-nodes-2b86d73d36508151bf1ae4a879016211) by [Unito](https://www.unito.io) Co-authored-by: Simula_r <[email protected]> Co-authored-by: github-actions <[email protected]>
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same. - **What**: settings, all LOD related code in vue nodes ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6950-fix-remove-LOD-from-vue-nodes-2b76d73d365081568723f8cbc7be7e17) by [Unito](https://www.unito.io) --------- Co-authored-by: github-actions <[email protected]> (cherry picked from commit 4b87b1f)
## Summary Backport of #6950 onto core/1.32. - cherry-picked 4b87b1f - resolved conflicts by taking the upstream PNG expectations and removing LOD bits from WidgetMarkdown while preserving cloud-specific padding ## Testing - pnpm typecheck ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6981-backport-core-1-32-fix-remove-LOD-from-vue-nodes-2b86d73d365081ac95fddfb272a0e105) by [Unito](https://www.unito.io) Co-authored-by: Simula_r <[email protected]> Co-authored-by: github-actions <[email protected]>
Summary
Refactor to remove LOD from vue nodes. Also, hide Litegraph LOD settings in vue nodes to prevent confusion / stale setting. Keep litegraph LOD the exact same.
Changes
┆Issue is synchronized with this Notion page by Unito