Compare commits

...

2794 Commits

Author SHA1 Message Date
Rizumu Ayaka
edebfbff98 chore: update test widgets node 2025-09-02 22:53:36 +08:00
Rizumu Ayaka
60ce863b60 feat(V3 UI style): color picker + file upload + input text + multi select + select + select button + slider + textarea + tree select 2025-09-02 22:47:07 +08:00
Rizumu Ayaka
242a4a4454 feat: the selection style of LGraphNode 2025-09-02 14:55:00 +08:00
Rizumu Ayaka
1ddb453522 feat: widget select button style 2025-09-02 14:53:18 +08:00
Rizumu Ayaka
962302d5ba feat: widget input text style 2025-09-02 14:48:40 +08:00
Rizumu Ayaka
fc7365ba49 fix: the version of tailwind-merge does not match 2025-09-02 14:35:28 +08:00
Rizumu Ayaka
5f8e5365ed wip: create a test widget to test 2025-08-29 02:14:26 +08:00
Rizumu Ayaka
d9efa78723 feat: localization fields 2025-08-28 16:27:58 +08:00
Rizumu Ayaka
30e7e0956e refactor: v3 ui slots connection dots 2025-08-27 18:23:28 +08:00
Rizumu Ayaka
3895a43b73 feat: v3 style of node body (#5169)
* feat: v3 style of node body

* Update src/renderer/extensions/vueNodes/components/LGraphNode.vue

* fix: review's issues

* fix: review's issue
2025-08-22 21:49:13 -07:00
Benjamin Lu
907ba12e04 [bugfix] Hide center dot when dragging links (#5133)
The center dot/marker on links should not be visible when the user is dragging links to connect nodes. This fix ensures the center marker is hidden during link dragging operations.

🤖 Generated with Claude Code

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-20 20:41:29 -04:00
Benjamin Lu
4b9a3a1984 [bugfix] Fix link center dot hit detection when marker is disabled (#5135)
When linkMarkerShape is set to None, clicks were still being detected on the invisible center dot. This fix adds proper checks to skip hit detection when the center marker is disabled.

Fixes center dot hit detection issue

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-20 16:06:25 -07:00
Benjamin Lu
0939eba7d8 Revert "feat: Add slot registration and spatial indexing for hit detection"
This reverts commit 70fbfd0f5e.
2025-08-20 16:30:40 -04:00
Benjamin Lu
70fbfd0f5e feat: Add slot registration and spatial indexing for hit detection
- Implement slot registration for all nodes (Vue and LiteGraph)
- Add spatial indexes for slots and reroutes to improve hit detection performance
- Register slots when nodes are drawn via new registerSlots() method
- Update LayoutStore to use spatial indexing for O(log n) queries instead of O(n)

Resolves #5125

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 16:26:59 -04:00
Christian Byrne
3a52c46a04 remove logging from vue node layouting modules (#5111) 2025-08-19 15:02:32 -07:00
Christian Byrne
55c4e3418a Remove layout logging noise from console (#5101)
- Remove loglevel import and logger setup from LayoutStore
- Remove all logger.debug() calls throughout LayoutStore
- Remove localStorage debug check for layout operations
- Remove unused DEBUG_CONFIG from layout constants
- Clean up console noise while preserving error handling

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-19 10:05:29 -07:00
bymyself
23ceb04994 [bugfix] Fix Vue node import path after refactoring
Update LGraphNode import path from old location to new domain-driven architecture path.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-19 09:53:46 -07:00
Christian Byrne
8e8dd63696 fix: Initialize Vue node manager when first node is added to empty graph (#5086)
* fix: Initialize Vue node manager when first node is added to empty graph

When Vue nodes are enabled and the graph starts empty (0 nodes), the
node manager wasn't being initialized. This caused Vue nodes to not
render until the setting was toggled off and on again.

The fix adds a one-time event handler that listens for the first node
being added to an empty graph and initializes the node manager at that
point.

Fixes the issue where Vue nodes don't render on initial page load when
the setting is enabled.

* fix: Add TODO comment for reactive graph mutations observer

Added comment to indicate that the monkey-patching approach should be
replaced with a proper reactive graph mutations observer when available.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-19 09:52:01 -07:00
Christian Byrne
316e05b8b9 [refactor] Reorganize Vue nodes to domain-driven design architecture (#5085)
* refactor: Reorganize Vue nodes system to domain-driven design architecture

Move Vue nodes code from scattered technical layers to domain-focused structure:

- Widget system → src/renderer/extensions/vueNodes/widgets/
- LOD optimization → src/renderer/extensions/vueNodes/lod/
- Layout logic → src/renderer/extensions/vueNodes/layout/
- Node components → src/renderer/extensions/vueNodes/components/
- Test structure mirrors source organization

Benefits:
- Clear domain boundaries instead of technical layers
- Everything Vue nodes related in renderer domain (not workbench)
- camelCase naming (vueNodes vs vue-nodes)
- Tests co-located with source domains
- All imports updated to new DDD structure

* fix: Skip spatial index performance test on CI to avoid flaky timing

Performance tests are inherently flaky on CI due to variable system
performance. This test should only run locally like the other
performance tests.
2025-08-18 16:58:45 -07:00
Christian Byrne
0e236b8e2c refactor: Reorganize layout system into new renderer architecture (#5071)
- Move layout system to renderer/core/layout/
  - Store, operations, adapters, and sync modules organized clearly
  - Merged layoutTypes.ts and layoutOperations.ts into single types.ts
- Move canvas rendering to renderer/core/canvas/
  - LiteGraph-specific code in litegraph/ subdirectory
  - PathRenderer at canvas level
- Move spatial indexing to renderer/core/spatial/
- Move Vue node composables to renderer/extensions/vue-nodes/
- Update all import paths throughout codebase
- Apply consistent naming (renderer vs rendering)

This establishes clearer separation between core rendering concerns
and optional extensions, making the architecture more maintainable.

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-17 20:19:00 -07:00
Benjamin Lu
d02cd527ae [chore] Extract link rendering out of LGraphCanvas (#4994)
* feat: Implement CRDT-based layout system for Vue nodes

Major refactor to solve snap-back issues and create single source of truth for node positions:

- Add Yjs-based CRDT layout store for conflict-free position management
- Implement layout mutations service with clean API
- Create Vue composables for layout access and node dragging
- Add one-way sync from layout store to LiteGraph
- Disable LiteGraph dragging when Vue nodes mode is enabled
- Add z-index management with bring-to-front on node interaction
- Add comprehensive TypeScript types for layout system
- Include unit tests for layout store operations
- Update documentation to reflect CRDT architecture

This provides a solid foundation for both single-user performance and future real-time collaboration features.

Co-Authored-By: Claude <noreply@anthropic.com>

* style: Apply linter fixes to layout system

* fix: Remove unnecessary README files and revert services README

- Remove unnecessary types/README.md file
- Revert unrelated changes to services/README.md
- Keep only relevant documentation for the layout system implementation

These were issues identified during PR review that needed to be addressed.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Clean up layout store and implement proper CRDT operations

- Created dedicated layoutOperations.ts with production-grade CRDT interfaces
- Integrated existing QuadTree spatial index instead of simple cache
- Split composables into separate files (useLayout, useNodeLayout, useLayoutSync)
- Cleaned up operation handlers using specific types instead of Extract
- Added proper operation interfaces with type guards and extensibility
- Updated all type references to use new operation structure

The layout store now properly uses the existing QuadTree infrastructure for
efficient spatial queries and follows CRDT best practices with well-defined
operation interfaces.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Extract services and split composables for better organization

- Created SpatialIndexManager to handle QuadTree operations separately
- Added LayoutAdapter interface for CRDT abstraction (Yjs, mock implementations)
- Split GraphNodeManager into focused composables:
  - useNodeWidgets: Widget state and callback management
  - useNodeChangeDetection: RAF-based geometry change detection
  - useNodeState: Node visibility and reactive state management
- Extracted constants for magic numbers and configuration values
- Updated layout store to use SpatialIndexManager and constants

This improves code organization, testability, and makes it easier to swap
CRDT implementations or mock services for testing.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Add node slots to layout tree

* Revert "Add node slots to layout tree"

This reverts commit 460493a620.

* Remove slots from layoutTypes

* Totally not scuffed renderer and adapter

* Revert "Totally not scuffed renderer and adapter"

This reverts commit 2b9d83efb8.

* Revert "Remove slots from layoutTypes"

This reverts commit 18f78ff786.

* Reapply "Add node slots to layout tree"

This reverts commit 236fecb549.

* Revert "Add node slots to layout tree"

This reverts commit 460493a620.

* docs: Replace architecture docs with comprehensive ADR

- Add ADR-0002 for CRDT-based layout system decision
- Follow established ADR template with persuasive reasoning
- Include performance benefits, collaboration readiness, and architectural advantages
- Update ADR index

* Add node slots to layout tree

* Revert "Add node slots to layout tree"

This reverts commit 460493a620.

* Remove slots from layoutTypes

* Totally not scuffed renderer and adapter

* Remove unused methods in LGLA

* Extract slot position calculations to shared utility

- Create slotCalculations.ts utility for centralized slot position logic
- Update LGraphNode to delegate to helper while maintaining compatibility
- Modify LitegraphLinkAdapter to use layout tree positions when available
- Enable link rendering to use layout system coordinates instead of litegraph positions

This allows the layout tree to control link rendering positions, enabling proper
synchronization between Vue components and canvas rendering.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* [fix] Restore original link rendering behavior after refactor

This commit fixes several rendering discrepancies introduced during the link rendering refactor to ensure exact parity with the original litegraph implementation:

Path Shape Fixes:
- STRAIGHT_LINK: Now correctly applies l=10 offset to create innerA/innerB points and uses midX=(innerA.x+innerB.x)*0.5 for elbow placement, matching the original 6-segment path
- LINEAR_LINK: Restored 4-point path with l=15 directional offsets (start → innerA → innerB → end)

Arrow Rendering:
- computeConnectionPoint: Now always uses bezier math with 0.25 factor spline offsets regardless of render mode, ensuring arrow positions match original
- Arrow positions: Fixed to render at 0.25 and 0.75 positions along the path
- Arrow gating: Moved scale>=0.6 and highQuality checks to adapter layer to maintain PathRenderer purity
- Arrow shape: Restored original triangle dimensions (-5,-3) to (0,+7) to (+5,-3)

Center Marker:
- Fixed 'None' option: Center marker now correctly hidden when LinkMarkerShape.None is selected
- Center point calculation: Updated for all render modes to match original positions
- STRAIGHT_LINK center: Uses midX and average of innerA/innerB y-coordinates
- LINEAR_LINK center: Uses midpoint between innerA and innerB control points

These fixes ensure backward compatibility while maintaining the clean separation between the pure PathRenderer and litegraph-specific LitegraphLinkAdapter.

Fixes #Issue-Number

---------

Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-17 18:07:23 -07:00
Christian Byrne
4f337be837 feat: Implement CRDT-based layout system for Vue nodes (#4959)
* feat: Implement CRDT-based layout system for Vue nodes

Major refactor to solve snap-back issues and create single source of truth for node positions:

- Add Yjs-based CRDT layout store for conflict-free position management
- Implement layout mutations service with clean API
- Create Vue composables for layout access and node dragging
- Add one-way sync from layout store to LiteGraph
- Disable LiteGraph dragging when Vue nodes mode is enabled
- Add z-index management with bring-to-front on node interaction
- Add comprehensive TypeScript types for layout system
- Include unit tests for layout store operations
- Update documentation to reflect CRDT architecture

This provides a solid foundation for both single-user performance and future real-time collaboration features.

Co-Authored-By: Claude <noreply@anthropic.com>

* style: Apply linter fixes to layout system

* fix: Remove unnecessary README files and revert services README

- Remove unnecessary types/README.md file
- Revert unrelated changes to services/README.md
- Keep only relevant documentation for the layout system implementation

These were issues identified during PR review that needed to be addressed.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Clean up layout store and implement proper CRDT operations

- Created dedicated layoutOperations.ts with production-grade CRDT interfaces
- Integrated existing QuadTree spatial index instead of simple cache
- Split composables into separate files (useLayout, useNodeLayout, useLayoutSync)
- Cleaned up operation handlers using specific types instead of Extract
- Added proper operation interfaces with type guards and extensibility
- Updated all type references to use new operation structure

The layout store now properly uses the existing QuadTree infrastructure for
efficient spatial queries and follows CRDT best practices with well-defined
operation interfaces.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: Extract services and split composables for better organization

- Created SpatialIndexManager to handle QuadTree operations separately
- Added LayoutAdapter interface for CRDT abstraction (Yjs, mock implementations)
- Split GraphNodeManager into focused composables:
  - useNodeWidgets: Widget state and callback management
  - useNodeChangeDetection: RAF-based geometry change detection
  - useNodeState: Node visibility and reactive state management
- Extracted constants for magic numbers and configuration values
- Updated layout store to use SpatialIndexManager and constants

This improves code organization, testability, and makes it easier to swap
CRDT implementations or mock services for testing.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* Add node slots to layout tree

* Revert "Add node slots to layout tree"

This reverts commit 460493a620.

* Remove slots from layoutTypes

* Totally not scuffed renderer and adapter

* Revert "Totally not scuffed renderer and adapter"

This reverts commit 2b9d83efb8.

* Revert "Remove slots from layoutTypes"

This reverts commit 18f78ff786.

* Reapply "Add node slots to layout tree"

This reverts commit 236fecb549.

* Revert "Add node slots to layout tree"

This reverts commit 460493a620.

* docs: Replace architecture docs with comprehensive ADR

- Add ADR-0002 for CRDT-based layout system decision
- Follow established ADR template with persuasive reasoning
- Include performance benefits, collaboration readiness, and architectural advantages
- Update ADR index

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Benjamin Lu <benjaminlu1107@gmail.com>
2025-08-16 20:49:17 -07:00
Benjamin Lu
88a5fb0a44 Add vue node feature flag (#4927) 2025-08-12 15:59:24 -04:00
Benjamin Lu
7a8f539468 test(ci): skip transformPerformance suite on CI (#4843) 2025-08-08 18:15:18 -07:00
Benjamin Lu
2c121a4a3c Revert "refactor(litegraph): decouple render-time state from models for reroutes and links\n\nIntroduce RenderedLinkSegment; compute reroute render params without mutating model; render into ephemeral segments instead of writing to Reroute/LLink."
This reverts commit d7ed1d36ed.
2025-08-08 16:34:32 -04:00
Benjamin Lu
d7ed1d36ed refactor(litegraph): decouple render-time state from models for reroutes and links\n\nIntroduce RenderedLinkSegment; compute reroute render params without mutating model; render into ephemeral segments instead of writing to Reroute/LLink. 2025-08-08 16:29:09 -04:00
github-actions
3fd0a8b125 Update locales [skip ci] 2025-08-08 18:03:41 +00:00
Christian Byrne
0a7431edd5 Fix TransformPane pos/size (#4826) 2025-08-08 10:58:54 -07:00
github-actions
7c7263f2cd Update locales [skip ci] 2025-08-07 09:36:14 +00:00
Christian Byrne
2ab4fb79ee [feat] TransformPane - Viewport synchronization layer for Vue nodes (#4304)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Benjamin Lu <benceruleanlu@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
2025-08-07 05:31:20 -04:00
bymyself
d488e59a2a [feat] Add Vue action widgets
- WidgetButton: Action button with Button component and callback handling
- WidgetFileUpload: File upload interface with FileUpload component
2025-08-06 18:47:18 -04:00
bymyself
dfd6c46764 [feat] Add Vue visual widgets
- WidgetColorPicker: Color selection with ColorPicker component
- WidgetImage: Single image display with Image component
- WidgetImageCompare: Before/after comparison with ImageCompare component
- WidgetGalleria: Image gallery/carousel with Galleria component
- WidgetChart: Data visualization with Chart component
2025-08-06 18:47:18 -04:00
bymyself
199e256824 [feat] Add Vue selection widgets
- WidgetSelect: Dropdown selection with Select component
- WidgetMultiSelect: Multiple selection with MultiSelect component
- WidgetSelectButton: Button group selection with SelectButton component
- WidgetTreeSelect: Hierarchical selection with TreeSelect component
2025-08-06 18:47:18 -04:00
bymyself
2f3b0d8db4 [feat] Add Vue input widgets
- WidgetInputText: Single-line text input with InputText component
- WidgetTextarea: Multi-line text input with Textarea component
- WidgetSlider: Numeric range input with Slider component
- WidgetToggleSwitch: Boolean toggle with ToggleSwitch component
2025-08-06 18:47:18 -04:00
bymyself
b0867c463b [feat] Add Vue widget registry system
- Complete widget type enum with all 15 widget types
- Component mapping registry for dynamic widget rendering
- Helper function for type-safe widget component resolution
2025-08-06 18:47:18 -04:00
bymyself
e6c33e1eb8 [feat] Add core Vue widget infrastructure
- SimplifiedWidget interface for Vue-based node widgets
- widgetPropFilter utility with component-specific exclusion lists
- Removes DOM manipulation and positioning concerns
- Provides clean API for value binding and prop filtering
2025-08-06 18:47:18 -04:00
Christian Byrne
b6f564dc30 [test] Test automatic backport workflow (#4789) 2025-08-06 13:43:58 -07:00
Christian Byrne
3f290e2cbd [feat] Limit release notifications to desktop app only (#4788) 2025-08-06 12:00:52 -07:00
Christian Byrne
37099c498b [feat] Add automatic backport workflow (#4778) 2025-08-06 01:19:14 -07:00
snomiao
6b31596399 [feat] Support Markdown rendering for node descriptions in NodePreview (#4684)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-06 00:44:23 -07:00
Comfy Org PR Bot
c6a9f43052 1.25.5 (#4779)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-08-06 00:44:13 -07:00
Christian Byrne
3e2d62efb4 [CI] Auto-create release candidate branches for minor/major versions (#4777) 2025-08-05 23:50:53 -07:00
Jin Yi
aaaa0cdcb9 fix: use selected target_branch for PR base in update-manager-types workflow (#4776) 2025-08-05 23:35:14 -07:00
Benjamin Lu
5ad9f86a58 [bugfix] Fix RefreshButton component name conflict (#4773)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-05 23:28:15 -07:00
Christian Byrne
b46f3853a5 docs: Update litegraph integration documentation and add ADR (#4771) 2025-08-05 20:31:10 -07:00
Christian Byrne
86509bda43 Merge pull request #4667 from Comfy-Org/bl-merge-lg-fe
Merge ComfyUI_frontend and litegraph.js
2025-08-05 18:02:47 -07:00
Benjamin Lu
b33f820b3b explicit this binding 2025-08-05 18:37:19 -04:00
Benjamin Lu
a7a4448878 prettier on executionUtil.ts 2025-08-05 18:29:42 -04:00
Benjamin Lu
85a5d1ed56 Fix inconsistent subgraphNode usage
Prior to this commit, subgraphNode inconsistently refers to either the
parent graph, or to indicate the current node is a subgraph.

This corrects the usage of subgraphNode to consistently refer to the
subgraph instance as defined in the constructor.

This solves a bug where graph serialization fails due to an incorrectly
reported infinite loop.

Port of https://github.com/Comfy-Org/litegraph.js/pull/1193
2025-08-05 18:29:05 -04:00
Benjamin Lu
01e4260d4c Fix duplicated inputs on loading nested subgraphs
Subgraphs are loaded in order of creation. Under most circumstances,
this means newer subgraphs are loaded first. With nested subgraphs, this
means a subgraph node has it's inputs connected before it's inside is
loaded. When the inner subgraph is loaded, input-added events are
triggered even though inputs already exist on the subgraph node.

This is resolved by adding a check for if an input of the corresponding
name already exists when adding an input.

Port of https://github.com/Comfy-Org/litegraph.js/pull/1192
2025-08-05 18:28:07 -04:00
Benjamin Lu
fad8dae796 Merge branch 'main' into bl-merge-lg-fe 2025-08-05 18:24:29 -04:00
Christian Byrne
88aa6e894e [docs] Enhance CLAUDE.md files with quality control guidelines (#4690)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-05 15:22:00 -07:00
Benjamin Lu
0ce5aeb2bd eslint disable next litegraph tests 2025-08-05 18:14:47 -04:00
Benjamin Lu
a289f44263 Expect ts errors and remove litegraph test from ts exclude 2025-08-05 18:04:07 -04:00
Benjamin Lu
500c9c6631 Expect ESLint/vue-tsc errors for litegraph src 2025-08-05 17:15:41 -04:00
AustinMroz
a8bd66b18f Fix inconsistent subgraphNode usage (#4688) 2025-08-05 13:39:13 -07:00
Benjamin Lu
c53f197de2 npm run format 2025-08-05 09:57:28 -04:00
Benjamin Lu
50feb27339 Delete litegraph .prettierrc file 2025-08-05 09:43:07 -04:00
Benjamin Lu
bbf0a65abf Fix CSS import order 2025-08-05 07:31:07 -04:00
Benjamin Lu
9e3b845884 Apply patch from a65b8ec8c139a733a857e5ab85b6b1e9ac9ecdd1 2025-08-05 06:49:38 -04:00
Benjamin Lu
a041cc8e0e Literally put subgraph into LGraph 2025-08-05 06:33:02 -04:00
Benjamin Lu
b64a46a386 Revert "Bad circular dep fix: Lazily import and lose some types (needs long term solution)"
This reverts commit b10d06166a.
2025-08-05 01:04:09 -04:00
Christian Byrne
1bf2470f8f [feat] Add dynamic price badge for Veo3VideoGenerationNode (#4682)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-04 15:05:00 -07:00
Christian Byrne
681d4c6758 [Bug] SaveAnimatedPNG node does not display generated APNG (#4197)
Co-authored-by: github-actions <github-actions@github.com>
2025-08-04 14:57:54 -07:00
Benjamin Lu
a199d11925 Fix path 2025-08-04 16:40:58 -04:00
Benjamin Lu
f13af07fed Merge branch 'main' into bl-merge-lg-fe 2025-08-04 16:34:33 -04:00
Benjamin Lu
fd71c97dc4 Add litegraph tests to vitest config 2025-08-04 16:21:09 -04:00
Benjamin Lu
b10d06166a Bad circular dep fix: Lazily import and lose some types (needs long term solution) 2025-08-04 16:16:14 -04:00
Benjamin Lu
47e6503681 Readd litegraph tests to tsconfig exclude 2025-08-04 16:13:21 -04:00
Benjamin Lu
797616c455 Fix some pathings 2025-08-04 14:52:42 -04:00
Benjamin Lu
6048dc0c60 Readd litegraph tests to tsconfig 2025-08-04 14:52:06 -04:00
Benjamin Lu
264663363a Fix css path 2025-08-04 14:50:28 -04:00
Comfy Org PR Bot
821f3765cc [chore] Update litegraph to 0.17.1 (#4676)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-08-04 09:49:41 -07:00
Benjamin Lu
7f849e9a44 Update remaining @comfyorg/litegraph references 2025-08-04 10:16:24 -04:00
Benjamin Lu
489b205bf5 [chore] Fix litegraph import after migration to git subtree
Updated import from @comfyorg/litegraph npm package to relative path
since browser tests don't have @ alias configured in tsconfig

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:17:09 -04:00
Benjamin Lu
5c7ac51d22 [chore] Remove obsolete update-litegraph workflow
This workflow updated the @comfyorg/litegraph npm dependency.
No longer needed since litegraph is now a git subtree.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:12:04 -04:00
Benjamin Lu
e7f698a08a [chore] Remove package.json and package-lock.json from litegraph
Litegraph is no longer a standalone npm package.
Dependencies are managed by frontend's package.json

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:09:25 -04:00
Benjamin Lu
ba3cc19e53 [chore] Remove vite.config.mts from litegraph
No longer needed as litegraph is built as part of frontend, not as standalone library

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:08:46 -04:00
Benjamin Lu
a91d8a1836 [chore] Remove disabled/backup config files from litegraph
Removed eslint.config.js.disabled and tsconfig.json.bak
Frontend's configs handle litegraph code

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:07:54 -04:00
Benjamin Lu
ba09d67e03 [chore] Remove redundant lint-staged config from litegraph
Frontend's root lint-staged config already handles all file types

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:07:09 -04:00
Benjamin Lu
eb76222cd0 [chore] Remove redundant .gitignore from litegraph
Root .gitignore already covers all necessary patterns

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:01:43 -04:00
Benjamin Lu
68f7ed14d9 [chore] Remove redundant husky config from litegraph
Frontend already has its own husky pre-commit hooks configured

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:01:06 -04:00
Benjamin Lu
dd0e8a6c6f [chore] Remove litegraph GitHub workflows
These workflows were for managing litegraph as a standalone npm package.
No longer needed since litegraph is now a git subtree within the frontend.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 05:00:27 -04:00
Benjamin Lu
9862b68799 [chore] Move unit test mdc file to project root
Relocated .cursor/rules/unit-test.mdc from litegraph subtree to project root maintaining folder structure

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 04:53:36 -04:00
Benjamin Lu
ffa34c49a3 [fix] Resolve TypeScript errors from litegraph migration to frontend tsconfig
Fixed various TypeScript errors resulting from differences between litegraph's
ES2023 configuration and frontend's ES2022 configuration:

- Added @ts-ignore comments for unused variable warnings (TS6133)
- Added @ts-nocheck to LGraphCanvas.ts due to numerous unused variables
- Fixed widget type incompatibility between frontend augmentation and litegraph
- Resolved Float64Array generic type conflicts between ES2022/ES2023
- Made LGraphNodeConstructor.type optional to match frontend augmentation
- Added required override modifiers for inherited methods
- Fixed possibly undefined method invocation with explicit checks
- Added undefined check for optional constructor.type assignment

All changes maintain runtime compatibility while satisfying TypeScript's
stricter checking under the frontend configuration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 04:49:33 -04:00
Benjamin Lu
579201945e [fix] Replace ES2023 toReversed() with ES2022-compatible implementation
Replaced array.toReversed() method calls with backwards iteration loops
to maintain compatibility with ES2022 target in TypeScript configuration.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-04 04:05:17 -04:00
Benjamin Lu
fc287a830c Fix import paths for litegraph files 2025-08-04 03:36:05 -04:00
Benjamin Lu
a674b99009 [config] Exclude litegraph test files from TypeScript compilation 2025-08-04 03:31:50 -04:00
Benjamin Lu
06b6832bea Temporarily disable one subgraph test 2025-08-03 22:22:19 -04:00
Benjamin Lu
357ae8f0d8 Remove litegraph test tsconfig 2025-08-03 22:14:12 -04:00
Benjamin Lu
5b245c9433 [build] Disable litegraph ESLint config temporarily
- Renamed eslint.config.js to eslint.config.js.disabled
- Prevents ESLint from loading litegraph's config which requires uninstalled dependencies
- Added TODO to make litegraph compatible with frontend's ESLint rules
2025-08-03 22:08:22 -04:00
Benjamin Lu
fef02e5f56 [refactor] Migrate litegraph imports from npm package to local subtree
- Updated all imports from '@comfyorg/litegraph' to '@/lib/litegraph/src/'
- Replaced deep dist imports with direct source paths
- Updated CSS import in main.ts
- All imports now use the @ alias consistently
2025-08-03 22:06:29 -04:00
Benjamin Lu
3f7e6fa53b Remove litegraph's tsconfig 2025-08-03 21:12:28 -04:00
Benjamin Lu
6a1b184a63 explanatory comment 2025-08-03 21:06:00 -04:00
Matthew Meredith
669ee2633a include litegraph augmentation in generated declarations (#4614) 2025-08-03 15:55:29 -07:00
Benjamin Lu
09515cd13d [config] Exclude litegraph from main eslint config 2025-08-03 18:35:20 -04:00
Benjamin Lu
1d815b3075 [config] Remove @comfyorg/litegraph from vite exclude list
Since litegraph is now integrated as a git subtree rather than an
external npm dependency, it no longer needs to be excluded from
Vite's dependency optimization.
2025-08-03 15:35:24 -04:00
Benjamin Lu
2d16105e8d Remove @comfyorg/litegraph npm dependency
The litegraph code is now integrated as a git subtree under src/lib/litegraph/
2025-08-03 15:14:23 -04:00
Benjamin Lu
e324c805ba Add 'src/lib/litegraph/' from commit '1b58bf4966e9cdaa04bfaa40f5650b6c6680ab97'
git-subtree-dir: src/lib/litegraph
git-subtree-mainline: 1eadf80fec
git-subtree-split: 1b58bf4966
2025-08-03 14:55:05 -04:00
Comfy Org PR Bot
1eadf80fec 1.25.4 (#4660)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-08-02 20:59:05 -07:00
Comfy Org PR Bot
f1aba23ee1 [chore] Update litegraph to 0.17.0 (#4659)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-08-02 20:05:06 -07:00
Chenlei Hu
934f2674e9 [refactor] Reorganize CLAUDE.md into hierarchical subdirectory files (#4640) 2025-08-02 19:52:33 -07:00
Chenlei Hu
907662a42b [feat] Add Upstash Context7 MCP server to .mcp.json (#4656) 2025-08-02 19:52:01 -07:00
Chenlei Hu
378ac4880c [improve] Streamline GitHub issue templates for better UX (#4657) 2025-08-02 19:49:53 -07:00
Jin Yi
4c6e7f106b [fix] Detect missing nodes in subgraphs (#4639)
Co-authored-by: bymyself <cbyrne@comfy.org>
2025-08-02 19:45:05 -07:00
Comfy Org PR Bot
1b58bf4966 0.17.0 (#1187)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-08-02 18:25:51 -07:00
Christian Byrne
3b4c0b5d2b [feat] Add node title buttons with icon-only rendering (#1186) 2025-08-02 17:35:38 -07:00
Benjamin Lu
a568c0651f Fix "Dragging from input slot connected to SubgraphInputNode creates new link instead of moving existing one" (#1184)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: bymyself <cbyrne@comfy.org>
2025-08-02 00:56:41 -04:00
Christian Byrne
46a486c694 [fix] Optimize subgraph serialization to exclude unused definitions (#1185) 2025-08-01 21:40:29 -07:00
Christian Byrne
dc395f5d6d [fix] Fix viewport sync in minimap and subgraphs navigation (#4644) 2025-08-01 18:12:18 -07:00
Christian Byrne
61c9341450 [fix] Add type guard for SubgraphDefinition to improve TypeScript inference (#4651) 2025-08-01 17:37:06 -07:00
Benjamin Lu
d96d8cb9a9 Ignore Claude local config (#4649) 2025-08-01 16:22:42 -07:00
Chenlei Hu
d779df5f64 [bugfix] Fix pre-commit hook cross-platform compatibility (#4643) 2025-08-01 15:43:44 -07:00
Benjamin Lu
6fa2e8e3ca Add slot compatibility checking for subgraph slots (#1182) 2025-08-01 15:38:57 -07:00
Christian Byrne
47e1808861 [fix] Toggle bypass/mute of subgraph nodes applies mode to all children recursively (#4636) 2025-08-01 00:35:11 -07:00
Christian Byrne
eae4b954d0 [fix] Preserve per-workflow subgraph navigation state (#4616)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-31 19:37:17 -07:00
Christian Byrne
baea47c493 Extract selection filtering logic to useSelectedLiteGraphItems composable and don't show toolbox when selecting Reroutes (#4634) 2025-07-31 18:02:08 -07:00
Comfy Org PR Bot
8673e0e6c4 1.25.3 (#4633)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-31 15:11:36 -07:00
Christian Byrne
b125e0aa3a [feat] Move partial execution to the backend and make work with subgraphs (#4624) 2025-07-31 13:28:52 -07:00
Christian Byrne
aabea4b78d [feat] Viewport persistence for subgraph navigation (#4613) 2025-07-30 17:54:35 -07:00
Christian Byrne
f85df302fb [fix] show tooltip on color picker button in selection toolbox (#4612) 2025-07-30 17:24:48 -07:00
Christian Byrne
b2b50ac012 [Style] Update "convert to subgraph" icon (#4611) 2025-07-30 13:29:30 -07:00
Christian Byrne
fe475403b0 [feat] Add theme-aware colors to minimap (#4598) 2025-07-30 12:41:02 -07:00
Christian Byrne
efb08bf2ba [Style] Fix node preview header/title overflow (#4610) 2025-07-30 11:46:50 -07:00
Christian Byrne
2c84ecbf6e [fix] Make minimap reactive to subgraph context changes (#4597) 2025-07-30 10:41:17 -07:00
Christian Byrne
f987cf9dbd [feat] Improve SubgraphNode badge with sitemap icon and primary color (#4596) 2025-07-30 02:48:02 -07:00
Comfy Org PR Bot
2b019935a7 [chore] Update litegraph to 0.16.20 (#4594)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-30 02:31:50 -07:00
Christian Byrne
f8ec532f1a [ci] Include litegraph changes in changelog during automated release process (#4595) 2025-07-30 02:31:29 -07:00
Christian Byrne
b370b6387d [fix] DOM widgets lose correct positioning when SubgraphNodes are nested (#4588) 2025-07-30 02:18:58 -07:00
Christian Byrne
516eb26d3e [feat] Add custom icon system with workflow icon (#4590) 2025-07-30 01:27:15 -07:00
Christian Byrne
5c71854a96 [ci] Enable CI tests for all feature branch PRs (#4591) 2025-07-30 01:27:02 -07:00
Christian Byrne
04b03e22f8 [Subgraph] Use color palette colors for subgraph io node slot labels (#1176) 2025-07-30 01:24:00 -07:00
Christian Byrne
b0d05c6ef6 [chore] Mark generated TypeScript files in .gitattributes (#4592) 2025-07-30 01:19:01 -07:00
Comfy Org PR Bot
f936ffcaf7 0.16.20 (#1175)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-30 01:01:35 -07:00
Christian Byrne
596c51d1ef [fix] Fix "Require confirmation before clearing workflow" setting not working (#4587)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-30 00:08:06 -07:00
Christian Byrne
381b5c7295 [fix] Preserve tooltips when promoting widgets to subgraph inputs (#1174) 2025-07-29 23:53:19 -07:00
Christian Byrne
d70949dd47 [feat] Remove default Backspace keybinding to clear workflow (#4586) 2025-07-29 20:42:38 -07:00
Christian Byrne
abf93d2c11 [fix] Update canvas when removing subgraph IO slots to re-render links (#1173) 2025-07-29 18:20:15 -07:00
Comfy Org PR Bot
f064fec3a8 1.25.2 (#4580)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-29 02:04:00 -07:00
Rizumu Ayaka
abf591d122 fix: DOM widget position offset after canvas moves (#4557) 2025-07-29 01:40:47 -07:00
Comfy Org PR Bot
e7a425eeae [chore] Update litegraph to 0.16.19 (#4578)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-29 01:26:48 -07:00
Christian Byrne
7d8c56c5e6 [feat] Add comprehensive Claude PR review with inline comments (#4453)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-29 01:16:30 -07:00
Comfy Org PR Bot
fe3b8be89f 0.16.19 (#1169)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-29 01:01:14 -07:00
Christian Byrne
cf072b8420 [fix] Fix link input slots not being updated in subgraphs (#4575) 2025-07-29 00:32:39 -07:00
Christian Byrne
fcebbbcba8 [fix] Allow creating connections from empty subgraph slots (#1167) 2025-07-29 00:20:37 -07:00
Christian Byrne
4b75528c39 [fix] Fix graph configuration callbacks not reaching subgraph nodes (#4572) 2025-07-29 00:17:03 -07:00
Christian Byrne
dd14144f47 [fix] Update Search & Replace to support nodes in subgraphs (#4576) 2025-07-29 00:10:56 -07:00
Christian Byrne
00cd9fadec [feat] Prevent browser zoom on UI components with canvas wheel event forwarding (#4574) 2025-07-28 23:51:09 -07:00
Christian Byrne
98d694f7e3 [fix] Prevent incorrect 'frontend_only' badges in subgraphs (#4571) 2025-07-28 23:05:27 -07:00
Christian Byrne
b1fc8846a3 [fix] Update API node pricing for multiple providers (#4564)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-28 23:01:46 -07:00
Jin Yi
680c09a584 [fix] Detect missing nodes in subgraphs (#4547)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-28 21:55:53 -07:00
Christian Byrne
7fe4c07a9c [fix] Preserve subgraph structure when clearing workflow (#4567)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-28 20:53:05 -07:00
SHIVANSH GUPTA
577cd23c3e Feature Implemented: Warning displayed when frontend version mismatches (#4363)
Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-28 18:23:49 -07:00
Christian Byrne
b1436a068b [feat] sync subgraph node titles with breadcrumb renaming (#4565) 2025-07-28 18:00:59 -07:00
Christian Byrne
b6922cf386 Add delay to breadcrumb and workflow tab tooltips (#4559) 2025-07-28 13:09:34 -07:00
Dr.Lt.Data
6167861340 refine locales/ko (#4549) 2025-07-27 13:10:55 -07:00
Christian Byrne
68f50670d3 [refactor] Streamline create-frontend-release command (#4546) 2025-07-27 00:53:28 -07:00
Jennifer Weber
67277d483d Update missing nodes dialog title (#4545)
Co-authored-by: Jennifer Weber <weberjc@MacBookPro.attlocal.net>
Co-authored-by: github-actions <github-actions@github.com>
2025-07-27 00:29:57 -07:00
Comfy Org PR Bot
a4cf280887 1.25.1 (#4544)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-26 19:06:31 -07:00
Terry Jia
344afa21a7 minimap (#4520)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2025-07-26 18:16:41 -07:00
Terry Jia
ab8bcc9522 [test] add test for shift + wheel to pan canvas (#4540)
Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: github-actions <github-actions@github.com>
2025-07-26 12:45:36 -07:00
Comfy Org PR Bot
4bab7bc609 [chore] Update litegraph to 0.16.18 (#4541)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-26 11:47:18 -07:00
Comfy Org PR Bot
bdcda7308b 0.16.18 (#1165)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-26 10:51:30 -07:00
Terry Jia
3039b4526d add shift + scroll to pan horizontally (#1164) 2025-07-26 09:43:22 -07:00
Terry Jia
e3628ed156 add CanvasNavigationMode (#4533)
Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: github-actions <github-actions@github.com>
2025-07-25 19:01:43 -07:00
Christian Byrne
271643aa93 [test] Fix failing test case that uses old subgraph breadcrumb element (#4537) 2025-07-25 16:47:32 -07:00
Christian Byrne
7802213887 [enhance] Add rich context to RecursionError messages (#1160) 2025-07-25 12:09:04 -07:00
Comfy Org PR Bot
35fb141b07 [chore] Update litegraph to 0.16.17 (#4528)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-07-24 19:40:33 -07:00
Sambhavi Pandey
475c9f7f89 fix(queryRegex): safe escape for query regex (#4493)
Co-authored-by: Sambhavi Pandey <sambhavi.pandey@aexp.com>
2025-07-24 15:31:07 -07:00
Christian Byrne
e0aac8c9db [docs] improve browser testing developer onboarding guide (#4524) 2025-07-24 14:38:54 -07:00
Comfy Org PR Bot
83795d5db1 0.16.17 (#1159)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-24 14:05:44 -07:00
Terry Jia
8ff5f07f9a Add canvasNavigationMode for changing left click pan behaviour (#1108) 2025-07-24 13:07:58 -07:00
Comfy Org PR Bot
49b936c50f 1.25.0 (#4513)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-24 01:02:10 -07:00
filtered
4d7e9b70d1 [Test] Update test expectations for #4420 (#4511)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-24 17:59:39 +10:00
filtered
4d0ba197a8 [Cleanup] Remove deprecated: node def validation (#4038) 2025-07-24 17:54:29 +10:00
filtered
78fc86d153 Revert "[test] Update browser test expectations" (#4512) 2025-07-24 17:37:53 +10:00
Terry Jia
906bc42f7f record audio node support (#4289)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2025-07-24 00:22:16 -07:00
Christian Byrne
bb5aef9275 [test] Update browser test expectations (#4510)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-24 00:20:19 -07:00
pythongosssss
62f3ba0689 V3 UI - Tabs & Menu rework (#4374)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-24 00:09:12 -07:00
Sidharth
2338cbd4c9 Fix: Scroll event leak after scrolling to the top of a text widget #3990 (#4231) 2025-07-24 16:25:03 +10:00
brucew4yn3rp
83aa887456 [Feature] Enhanced MaskEditor to an Image Canvas (#4361)
Co-authored-by: duckcomfy <a@a.a>
2025-07-24 16:23:50 +10:00
Ferrah Aiko
37bfc53616 Add the ability to parse workflows from AVIF images (#4420) 2025-07-23 23:20:39 -07:00
Sidharth
b240c090aa Fix: Escape closes Settings dialog if login dialog open (#4364) 2025-07-23 22:41:26 -07:00
Comfy Org PR Bot
309a5b8c9a 1.24.2 (#4509)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-23 22:17:07 -07:00
Christian Byrne
c06bc63c6f [feat] Update node output system to use NodeLocatorIds (#4500) 2025-07-23 22:01:18 -07:00
Christian Byrne
052d5320c0 Revert PRs #4506 and #4507 - Fix execution output issues (#4508) 2025-07-23 17:53:04 -07:00
filtered
e34d9bb411 Fix LoadImage bleeds values between subgraphs (#4507) 2025-07-24 07:58:50 +10:00
filtered
f81b191fae Fix execution output & previews not displayed (#4506) 2025-07-23 05:12:30 -07:00
Comfy Org PR Bot
4cd0c270bf [chore] Update litegraph to 0.16.16 (#4505)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-23 04:11:38 -07:00
Comfy Org PR Bot
5bed360a14 0.16.16 (#1153)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-23 03:52:29 -07:00
filtered
16b607c95c [API] Add subgraph ID to execution DTO (#1152) 2025-07-23 03:51:48 -07:00
filtered
b0968509f9 Fix progress stuck after execution interrupted (#4503) 2025-07-22 23:49:34 -07:00
guill
7eb3eb2473 Update the frontend to support async nodes. (#4382)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2025-07-23 13:46:00 +10:00
Comfy Org PR Bot
cccf51b652 0.16.15 (#1151)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-22 13:00:08 -07:00
Christian Byrne
ff68c42162 [feat] Hide subgraph nodes from node library and search (#4498) 2025-07-22 12:59:25 -07:00
Christian Byrne
defaef8043 [fix] prevent memory leak in SubgraphNode event listeners (#1150) 2025-07-22 12:38:55 -07:00
Christian Byrne
280131d33d [feat] Node Definition Filter Registry System (#4497) 2025-07-22 12:27:32 -07:00
Christian Byrne
6b3de73655 [test] Clean up SubgraphMemory tests to remove invalid assertions (#1149) 2025-07-22 11:53:50 -07:00
Christian Byrne
ae8293e2cd [test] Remove redundant circular reference TODO test (#1148) 2025-07-22 10:59:30 -07:00
Christian Byrne
7b32a2fb6e [tests] Add browser tests for subgraph functionalities (#4495) 2025-07-22 10:35:49 -07:00
Christian Byrne
27865278da [test] Remove misleading createNode todo test (#1147) 2025-07-22 10:35:35 -07:00
Christian Byrne
61611fb0cb [feat] Add pricing for new API nodes (#4391) 2025-07-21 20:02:22 -07:00
Christian Byrne
1cd6a7f667 [chore] Update litegraph to 0.16.14 (#4494) 2025-07-21 17:48:32 -07:00
Comfy Org PR Bot
a62362234c 0.16.14 (#1146)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-21 12:35:01 -07:00
Christian Byrne
a39f6e6763 [feat] DOM widget promotion for subgraph inputs (#4491) 2025-07-21 11:52:54 -07:00
Christian Byrne
def6010d72 [refactor] Remove parentSubgraphNode property from widgets (#1145) 2025-07-21 11:26:03 -07:00
filtered
efdb8080ae Change widget demoted event name (#1144) 2025-07-21 16:31:16 +00:00
Christian Byrne
995f482593 [feat] Implement versioned defaults for link release actions (#4489) 2025-07-21 08:23:39 -07:00
Christian Byrne
23b2302ce3 [chore] Update litegraph to 0.16.13 (#4490) 2025-07-21 00:30:09 -07:00
Comfy Org PR Bot
b745b58e6b 0.16.13 (#1143)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-20 23:43:28 -07:00
Christian Byrne
6f3f1f9f24 [fix] Change parentSubgraphNode type to NodeLike (#1142) 2025-07-20 23:18:08 -07:00
Comfy Org PR Bot
c0feaa5f94 0.16.12 (#1141)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-20 19:10:59 -07:00
Christian Byrne
0a8f16fe19 [feat] Add containerNode property for DOM widget positioning in subgraphs (#1128)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-20 18:36:33 -07:00
Comfy Org PR Bot
d833ab65a6 [chore] Update litegraph to 0.16.11 (#4484)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-20 14:20:50 +00:00
filtered
dea4a76ceb [Test] Add explicit timeout to consistently failing test (#4485) 2025-07-21 00:19:22 +10:00
Comfy Org PR Bot
2fd94319bc 0.16.11 (#1140)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-20 05:45:26 -07:00
filtered
32062aa126 Add workaround for incorrect downstream patch (#1139) 2025-07-20 22:23:07 +10:00
filtered
db70bd61d5 [CI] Fix PR check workflow (#4482) 2025-07-20 18:45:11 +10:00
filtered
e10a9c112a Revert "[fix] Handle missing _listenerController.abort when loading workflows" (#1137) 2025-07-20 14:58:11 +10:00
Christian Byrne
7e41834094 [fix] Handle missing _listenerController.abort when loading workflows (#1134) 2025-07-19 14:25:54 -07:00
Terry Jia
ed1d944e0e [3d] remove unnecessary uploadTexture (#4357) 2025-07-19 11:38:49 -07:00
Comfy Org PR Bot
10296d54e0 0.16.10 (#1135) 2025-07-19 06:43:32 +10:00
filtered
3f9fb421d0 Always create cloned, separate subgraph definintions (#1133) 2025-07-18 19:53:48 +00:00
Comfy Org PR Bot
282f9ce27a [chore] Update Comfy Registry API types from comfy-api@9ccb96a (#4470)
Co-authored-by: viva-jinyi <53567196+viva-jinyi@users.noreply.github.com>
2025-07-18 15:53:21 +09:00
filtered
d2e49ac110 [Test] Uncomment test - already working as expected (#1131) 2025-07-17 20:29:08 -07:00
Rizumu Ayaka
11eff4981f Fix Help Center changelog toast overflows viewport (#4469) 2025-07-17 17:13:01 -07:00
Benjamin Lu
927773f553 Fix Danger.js Security Issues (#4462) 2025-07-16 12:15:05 -07:00
guill
1200c07fcd Add support for Feature Flags (#4439) 2025-07-15 15:59:11 -07:00
Christian Byrne
967f1e15e3 [fix] Add subgraph edge case tests (#1127)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-15 12:48:11 -07:00
Christian Byrne
28f955ed6a [test] Add subgraph units tests for events and i/o (#1126)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-15 10:11:08 -07:00
Christian Byrne
3ac96979fe [test] Add Subgraph memory, DTO, execution unit tests (#1123) 2025-07-15 09:21:40 -07:00
Christian Byrne
ca5774c0df [feat] Add subgraph test infrastructure (#1111) 2025-07-15 07:53:26 -07:00
Christian Byrne
be7edab141 [feat] Add GitHub Action for automated Claude PR reviews (#4452) 2025-07-14 16:44:51 -07:00
filtered
f3168aac89 Revert "[fix] Fix Danger CI permissions for PRs from forks" (#4450) 2025-07-15 04:52:01 +10:00
Benjamin Lu
2f3c762e85 [fix] Fix Danger CI permissions for PRs from forks (#4449)
It's good to have working and in ASAP, although better approaches are being researched and investigated
2025-07-14 14:08:44 -04:00
Benjamin Lu
8b8caa4b29 Add Danger PR Review (#4442) 2025-07-13 21:21:29 -07:00
Christian Byrne
a70d69cbd2 [fix] Sync subgraph node title changes with breadcrumb navigation (#4394) 2025-07-13 07:37:48 +10:00
filtered
01c735d943 Fix cannot check widget value if undefined (#4433) 2025-07-12 09:05:58 +10:00
Comfy Org PR Bot
f0bc4c6959 [chore] Update litegraph to 0.16.9 (#4432)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-12 09:01:24 +10:00
Comfy Org PR Bot
4ab223d651 0.16.9 (#1117)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-12 08:55:23 +10:00
filtered
d60d9485f3 Fix cannot check widget value if undefined (#1116) 2025-07-12 08:51:04 +10:00
filtered
19eaf6ecdc Fix SubgraphNode widget values ignored (#4429) 2025-07-11 22:37:23 +10:00
Comfy Org PR Bot
054077c445 [chore] Update litegraph to 0.16.8 (#4427)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-11 22:28:02 +10:00
Comfy Org PR Bot
3c7d6968ed 0.16.8 (#1115)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-11 19:54:01 +10:00
filtered
6134452891 Return SubgraphNode widget values during execution (#1114) 2025-07-11 09:45:20 +00:00
filtered
ef9b625208 Fix DTO return type to allow clean test/merge (#4426) 2025-07-11 19:27:31 +10:00
Comfy Org PR Bot
688193ad9a 1.24.1 (#4425)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-11 18:13:36 +10:00
filtered
5c119fcbda Improve execution logic / Fix group node execution (#4422) 2025-07-11 00:40:48 -07:00
Comfy Org PR Bot
998abbbdbd [chore] Update litegraph to 0.16.7 (#4424)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-11 00:22:05 -07:00
filtered
696c8720b6 [CI] Improve claude code release command (#4413) 2025-07-11 00:19:59 -07:00
Comfy Org PR Bot
f90e7f1f3c 0.16.7 (#1113)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-11 00:16:48 -07:00
filtered
a70bcb048c Improve execution logic using shared DTO map (#1112) 2025-07-11 00:11:50 -07:00
ComfyUI Wiki
80e5cf1b9d Update template translation (#4396)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-10 23:10:42 -07:00
Deep Roy
7cf5d1e86b Add prompt ID to interrupt API call (#4393) 2025-07-10 17:24:21 -07:00
Emanuel F.
ab43b5e421 Menu bar mobile behavior change (#4312) 2025-07-10 15:08:51 -07:00
ComfyUI Wiki
43f73f8856 Correct the translation for 'Credits' in the zh-TW locale. (#4415) 2025-07-10 12:44:25 +00:00
filtered
0b5ade3a3b [chore] Update docs - node.js versions (#4414) 2025-07-10 05:34:28 -07:00
Christian Byrne
eb63b5c536 [feat] Add Traditional Chinese language support (#4410)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-10 01:52:47 -07:00
Christian Byrne
e6d78ab22c docs: Add Claude Code command to create release (#4408) 2025-07-09 22:53:07 -07:00
Christian Byrne
bc4753e119 [docs] Improve language contribution process (#4409) 2025-07-09 22:51:12 -07:00
Comfy Org PR Bot
733c9f81b0 1.24.0 (#4406)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-09 17:20:33 -07:00
filtered
1afae4f723 [CI] Fix frontend package release skipped (#4404) 2025-07-09 16:28:55 -07:00
bmcomfy
1632798fd2 [System Pop Up] Improve help center and what's new popup UI (#4395)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-09 16:17:50 -07:00
Christian Byrne
103139fdab 1.24.0 (#4401)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-09 15:00:20 -07:00
filtered
834ac3ea61 [CodeHealth] Simplify code as follow-up to #4354 (#4400) 2025-07-09 13:08:33 -07:00
Christian Byrne
22c70d5d1b [fix] use getter functions for sidebar tab command labels to resolve i18n collection issues (#4370)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-08 23:50:49 -07:00
bmcomfy
f5b03f323d [System Pop Up] Hide hidden and deprecated settings from search results (#4390) 2025-07-08 17:19:37 -07:00
bmcomfy
d6f6407c44 [System Pop Up] Add setting to disable version update notifications (#4388) 2025-07-08 14:43:11 -07:00
Christian Byrne
2906ea3fd9 [fix] Correct API node pricing discrepancies (#4381) 2025-07-07 23:33:55 -07:00
Comfy Org PR Bot
c03771988d [chore] Update litegraph to 0.16.6 (#4380)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-07-07 23:16:09 -07:00
Christian Byrne
3db44707fa [fix] Clean up slot references when removing widgets (#1107) 2025-07-07 23:14:35 -07:00
Comfy Org PR Bot
2b831d5d87 0.16.6 (#1110)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-07 21:42:57 -07:00
filtered
e93da6bce4 Hide widget values when computedDisabled is true (#1109) 2025-07-07 21:04:58 -07:00
Christian Byrne
368c54bcf6 [docs] Add Claude Code command for automated hotfix releases (#4369) 2025-07-07 20:43:50 -07:00
Christian Byrne
f1575a693f [update] Video to Video API node pricing (#4378) 2025-07-07 20:24:33 -07:00
Christian Byrne
4eeff5533a [feat] Add dynamic pricing for new API nodes (#4367) 2025-07-06 18:31:04 -07:00
Alexander Piskun
c7877dbd18 fix(float-precision): correct float widget rounding (#4291)
Signed-off-by: Alexander Piskun <bigcat88@icloud.com>
2025-07-06 15:40:27 -07:00
Terry Jia
4cbcded820 add defaultsByInstallVersion (#4354) 2025-07-06 13:28:58 -07:00
Comfy Org PR Bot
469594e5cc [chore] Update litegraph to 0.16.5 (#4365)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-06 13:38:06 +00:00
Comfy Org PR Bot
914c3e4705 0.16.5 (#1106)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-06 23:19:58 +10:00
AustinMroz
6ae6a05b14 Add fallback for virtual nodes that redirect links (#1102) 2025-07-06 13:01:56 +00:00
Christian Byrne
191b4574b9 [fix] Add dynamic pricing for API nodes with quantity parameters (#4362) 2025-07-05 20:50:33 -07:00
filtered
0c4339f652 [TS] Update callbacks using CanvasMouseEvent #1104 (#4358) 2025-07-05 11:53:44 -07:00
filtered
fe57458a66 [TS] Update callbacks using CanvasMouseEvent (#1104) 2025-07-05 10:52:25 -07:00
RickyHuang
35556eb674 fIx: side toolbar tab tooltip not reactive when changing locale (#4213)
Co-authored-by: Huang Yun Qi <yun-qi.huang@ubisoft.com>
2025-07-05 02:54:23 -07:00
Christian Byrne
92b65ca00e [fix] Remove optional designation from issue report details field (#4355) 2025-07-04 20:34:47 -07:00
Christian Byrne
8f4e807468 [fix] move i18n pre-commit check inside Windows conditional block (#4353) 2025-07-04 17:25:04 -07:00
Terry Jia
c1db367422 add installedVersion (#4337)
Co-authored-by: bymyself <cbyrne@comfy.org>
2025-07-04 16:52:18 -07:00
Christian Byrne
3b435e337e [fix] Add dynamic pricing for Ideogram nodes based on num_images parameter (#4351) 2025-07-04 16:13:33 -07:00
guill
5eac669b41 Fix a bug that prevented subgraph reuse (#1103) 2025-07-04 15:11:11 -07:00
Terry Jia
ee5088551e Vue expose (#4265) 2025-07-03 21:35:24 -07:00
Christian Byrne
44bbfa9f39 [feat] Implement getNodeByComfyNodeName API integration (#4343) 2025-07-03 17:59:21 -07:00
Comfy Org PR Bot
1b4ad61e7f [chore] Update Comfy Registry API types from comfy-api@4b0dc99 (#4340)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-07-03 12:42:23 -07:00
Christian Byrne
7befec5b17 Add unused i18n keys detection to pre-commit hook (#4328) 2025-07-03 10:53:56 -07:00
Comfy Org PR Bot
a51c09893f 1.24.0-1 (#4336)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-02 19:52:05 -07:00
Comfy Org PR Bot
f290c00a61 [chore] Update litegraph to 0.16.4 (#4335)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-02 17:57:33 -07:00
Comfy Org PR Bot
9ef47e70cf 0.16.4 (#1101)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-02 17:49:56 -07:00
filtered
8b8f38f4de Widget promotion (#1100) 2025-07-02 17:49:15 -07:00
bmcomfy
a45753486d [System Pop Up] Improve help center menu behavior and Electron compatibility (#4330) 2025-07-02 16:13:13 -07:00
Christian Byrne
5cc1a8dea2 [test] Add release notification browser tests (#4311)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-02 01:29:09 -07:00
Christian Byrne
959ab3b3ec [feat] Add ESLint i18n enforcement and fix hardcoded strings (#4327)
Co-authored-by: github-actions <github-actions@github.com>
2025-07-02 00:41:46 -07:00
Terry Jia
35ff882ff2 [3d] better solution to support reading extra resource/texture (#4209) 2025-07-01 21:25:18 -07:00
filtered
f57f97cfcd [TS] Remove frontend-only typing from litegraph (#4325) 2025-07-01 20:07:05 -07:00
Christian Byrne
8f825c066b [docs] add code quality guidelines for i18n, async cleanup, and error handling (#4305) 2025-07-01 17:13:55 -07:00
Comfy Org PR Bot
e6f90e3101 1.24.0-0 (#4321)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-01 22:06:28 +00:00
filtered
d68391a80a [CI] Fix prerelease version tag not set (#4322) 2025-07-01 15:06:08 -07:00
filtered
6f9d5a7a5b [CI] Fix prerelease version tag not set (#1098) 2025-07-01 15:06:07 -07:00
filtered
df710945c9 [CI] Skip i18n in unrelated PRs (#4320) 2025-07-01 14:53:48 -07:00
filtered
8d6360074d Use prerelease flag for draft releases (#4319) 2025-07-01 14:51:24 -07:00
filtered
26c106c3e4 Allow prerelease using version bump action (#4318) 2025-07-01 14:29:55 -07:00
Comfy Org PR Bot
d92c282439 [chore] Update litegraph to 0.16.3 (#4316)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-01 13:40:21 -07:00
Comfy Org PR Bot
a80312280d 0.16.3 (#1097)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-01 12:59:21 -07:00
Comfy Org PR Bot
bf3dcc83a0 [chore] Update litegraph to 0.16.2 (#4315)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-01 12:58:53 -07:00
filtered
f9cf25ad82 Add subgraph IO change event handlers (#1096) 2025-07-01 12:58:28 -07:00
Comfy Org PR Bot
7d029a4998 0.16.2 (#1095)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-07-01 12:48:39 -07:00
filtered
c846ab80ae Add events for Subgraph input/output changes (#1094) 2025-07-01 12:36:41 -07:00
filtered
eb93bb3c22 Fix control + mouse-wheel zoom in trackpad mode (#1093) 2025-07-01 17:06:10 +00:00
filtered
6470a0bbd9 [CodeHealth] Follow-up on #4288 - code style / async (#4308) 2025-07-01 09:46:24 -07:00
ComfyUI Wiki
c75015c5b8 Fix helper menu issues and align with the design. (#4261) 2025-06-30 21:36:09 -04:00
filtered
d7597acefe Add typecheck script to package.json (#1092) 2025-07-01 00:54:20 +00:00
Christian Byrne
64a2a5b3ae [fix] Mock release API in browser tests to prevent UI interference (#4310) 2025-06-30 17:36:07 -07:00
filtered
fada8bf9cf Follow-up on #4256 (#4307) 2025-06-30 12:25:55 -07:00
Terry Jia
5bbed91295 usage log table (#4288)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-30 12:13:01 -07:00
Christian Byrne
eb8b67dd9d [docs] Update nested README files with comprehensive component listings (#4303) 2025-06-29 19:55:21 -07:00
Christian Byrne
d6a8f98327 [docs] add component communication best practices (#4302) 2025-06-29 18:25:28 -07:00
filtered
8457768a41 [Test] Update test expectations to match core changes to scheduler (#4293)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-28 21:58:31 -07:00
Comfy Org PR Bot
3ae7faa8c5 [chore] Update litegraph to 0.16.1 (#4292)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-28 17:08:56 -07:00
Comfy Org PR Bot
0c5e0d4b73 0.16.1 (#1090)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-28 16:49:30 -07:00
filtered
b5a9cbcc16 [Test] Fix auto-format file breaks module (#1089) 2025-06-28 16:20:03 -07:00
filtered
a7fb685290 Add Subgraphs (#3905)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-28 15:37:23 -07:00
Comfy Org PR Bot
abcf8ba8e6 0.16.0 (#1086)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-28 15:31:06 -07:00
filtered
cab707a32c [Test] Fix circular test imports in CI (#1088) 2025-06-28 15:30:42 -07:00
filtered
7378c858bd Fix lint errors (#1087) 2025-06-28 15:25:04 -07:00
filtered
bcaaa00770 Add Subgraphs (#1000) 2025-06-28 15:21:56 -07:00
Christian Byrne
7620bb9063 [bugfix] Handle backend error messages with appended content (#4283) 2025-06-27 13:47:21 -07:00
bmcomfy
2d2cec2e79 [System Pop Up] Add help center with release notifications and "What's New" popup (#4256)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-26 14:11:15 -07:00
filtered
3e7f9627b4 Fix pointer does not reset when moving out of group resize corner (#1084) 2025-06-26 10:04:27 -07:00
Comfy Org PR Bot
c2ae40bab5 1.23.4 (#4281)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-26 08:39:41 -07:00
filtered
10fbf7e847 Use scaled FLUX weights by default (#4280) 2025-06-26 08:38:30 -07:00
Comfy Org PR Bot
0bbfc44bc7 1.23.3 (#4279)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-26 08:12:00 -07:00
filtered
a9b7ed2a53 Prevent video output nodes from showing edit model button (#4278) 2025-06-26 06:15:09 -07:00
filtered
35ee8f2d92 Only show edit image icon on valid nodes (#4277) 2025-06-26 03:00:05 -07:00
filtered
9a3530dc3a Add initial edit model button (static) (#4276)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-26 00:34:38 -07:00
Comfy Org PR Bot
4c177121a6 [chore] Update Comfy Registry API types from comfy-api@065aded (#4274)
Co-authored-by: bmcomfy <214909599+bmcomfy@users.noreply.github.com>
2025-06-25 23:57:37 +00:00
Jin Yi
63181a1ddd [Manager] Standardize Card Aspect Ratios & Enhance UI (#4271)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-25 12:34:19 -07:00
Jin Yi
e17ca7ce71 fix: node migration TypeError (#4260) 2025-06-25 03:01:40 -07:00
Comfy Org PR Bot
77d2cae301 1.23.2 (#4266)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-25 00:48:39 +00:00
Comfy Org PR Bot
164a4c4c25 [chore] Update Comfy Registry API types from comfy-api@af72ba5 (#4264)
Co-authored-by: bmcomfy <214909599+bmcomfy@users.noreply.github.com>
2025-06-24 14:57:41 -07:00
Jin Yi
47145ce4b8 [Manager] Modal UI Adjustment (Align with Design) (#4222) 2025-06-23 21:30:56 -07:00
Christian Byrne
6cf77a9814 [Manager] Fix bug: installed packs metadata not re-fetched after installations (#4254) 2025-06-23 04:37:50 -07:00
Christian Byrne
886e4908d4 [Manager] Fix flush timing issue when switching tabs (#4253) 2025-06-23 03:49:47 -07:00
Christian Byrne
24cbc41832 [Manager] Fix bug: opening modal when last focused tab was 'Installed' always shows empty list (#4252) 2025-06-23 02:41:15 -07:00
Christian Byrne
a80a939324 Fix: virtual grid scrolling bug when container is rendered with emtpy items (switching tabs) (#4251) 2025-06-23 00:13:46 -07:00
Christian Byrne
8e2d7cabba Fix bug: drag-and-drop, copy-paste, and upload don't work in nodes that specify upload folder that isn't 'input' (#4186) 2025-06-22 20:18:36 -07:00
Christian Byrne
e8dd26ff59 [Manager] Fix: When using registry search provider, results not properly paginated' (#4249) 2025-06-22 20:05:37 -07:00
Christian Byrne
3a1bd1829a [feat] Add auto-refresh on task completion for RemoteWidget nodes (#4191)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-06-22 17:30:24 -07:00
ComfyUI Wiki
2f9dcd1669 Fix: fix typo in Lite Graph settings (#4245) 2025-06-22 08:32:09 +00:00
filtered
e23547dd5a [TS] Remove expect-error (type fix) (#4235) 2025-06-21 20:52:35 -07:00
Comfy Org PR Bot
f0f40bc39b 1.23.1 (#4234)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-21 18:37:51 +00:00
Christian Byrne
4b32786ef5 [Manager] Update Algolia mappings (#4230)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-21 11:09:14 -07:00
Comfy Org PR Bot
9942b17388 [chore] Update Comfy Registry API types from comfy-api@4286a10 (#4229)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-06-20 15:47:04 -07:00
Christian Byrne
b99214bf5e [feat] Show version-specific missing core nodes in workflow warnings (#4227)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-20 15:33:47 -07:00
Christian Byrne
2ef760c599 [Manager] Keep progress dialog on top using priority system (#4225) 2025-06-20 15:22:42 -07:00
Christian Byrne
429ab6c365 [Manager] Fix "total nodes" count when selecting multiple packs (#4228) 2025-06-20 15:20:26 -07:00
ComfyUI Wiki
b7693ae9f5 Fix typo in 3D settings (#4224) 2025-06-20 13:26:40 -07:00
filtered
ebedf1074d [CI] Fix intermittent actions/cache errors (#4220) 2025-06-18 03:55:05 -07:00
filtered
0832347f47 [CI] Fix intermittent failure when using actions/cache (#4219) 2025-06-18 01:24:42 -07:00
filtered
c745af0f25 [Test] Fix vitest scope overlaps playwright tests (#4218) 2025-06-18 01:08:30 -07:00
Comfy Org PR Bot
8c05266b83 1.23.0 (#4217)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-18 00:32:54 -07:00
Jin Yi
fa14ec52f4 [Manager] Impletent “Install All” button (#4196)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
Co-authored-by: Terry Jia <terryjia88@gmail.com>
Co-authored-by: comfy-waifu <comfywaifu.ai@gmail.com>
Co-authored-by: Comfy Org PR Bot <snomiao+comfy-pr@gmail.com>
2025-06-18 10:52:24 +09:00
Christian Byrne
ec9da0b6c5 [refactor] Add ResultItemType and improve image upload typing (#4200) 2025-06-16 14:31:24 -07:00
Christian Byrne
98bb1df436 [refactor] introduce frontend type augmentation pattern (#4192) 2025-06-16 11:32:07 -07:00
Christian Byrne
75077fe9ed [Manager] Add registry search fallback with gateway pattern (#4187) 2025-06-15 17:22:05 -07:00
filtered
d5ecfb2c99 Revert "[refactor] Refactor and type image upload options" (#4190) 2025-06-15 12:17:54 -07:00
Christian Byrne
3211875084 [refactor] Refactor and type image upload options (#4185) 2025-06-15 12:07:26 -07:00
Christian Byrne
a6bd04f951 [Manager] Make dialog closeable with button and hotkey (#4179)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-14 15:21:43 -07:00
Christian Byrne
5b32d2aad0 [Manager] Persist/Restore Manager UI state (#4180) 2025-06-14 15:19:56 -07:00
Christian Byrne
23ba7e6501 [Manager] Fix version selector popover not closing when selecting different pack (#4176) 2025-06-14 15:06:32 -07:00
filtered
c1fbb6a893 Update Claude Code rules to match repo (#1081) 2025-06-14 11:47:33 +00:00
filtered
46b279b2b3 [CI] Change default dev branch to subgraph (#1080) 2025-06-14 07:44:16 +00:00
Comfy Org PR Bot
1e2b16f14d 1.22.2 (#4170)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-14 07:19:53 +00:00
Christian Byrne
ec27d50333 [Manager] Fix selection state race condition during pack data merge (#4165) 2025-06-13 23:46:53 -07:00
Christian Byrne
693e156ab2 [Manager] Update PackCard styling to match Figma design (#4164) 2025-06-13 22:27:34 -07:00
comfy-waifu
8274df5075 Fixed favicon some progress frames not found - by ComfyWaifu 🤍 (#4143) 2025-06-13 21:59:35 -07:00
Christian Byrne
55bf36564d [Manager] Fix card selection highlight z-index and border radius issues (#4160) 2025-06-13 21:19:11 -07:00
Christian Byrne
48ac4a2b36 [Manager] Fix race condition in pack selection (#4158) 2025-06-14 03:53:06 +00:00
Christian Byrne
c9c1275e4c [Manager] Add enable/disable toggle for installed node packs (#4157) 2025-06-13 20:43:38 -07:00
Terry Jia
78ebc54ebe [3d] bugfix for preview manager (#4147) 2025-06-13 17:34:45 -07:00
Christian Byrne
88f2cc7847 [Manager] Refactor search result types (#4154) 2025-06-13 15:08:55 -07:00
Christian Byrne
7907e206da [Types] Remove outdated type intersection (#4146) 2025-06-13 14:08:59 -07:00
Christian Byrne
c4fa3dfe5a [Manager] Fix: fetch repeated infitely if no node packs installed (#4145) 2025-06-13 13:57:03 -07:00
filtered
587d7a19a1 [TS] Improve various types / remove assertions (#4148) 2025-06-13 01:46:50 -07:00
filtered
b17dc296ab [CodeHealth] Add debug logging on disconnect fail (#1078) 2025-06-12 22:36:12 -07:00
Jin Yi
9ca705381c Update fallback banner layout (#4141)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-12 11:04:55 -07:00
Christian Byrne
a937ac59ad Revert Algolia proxy changes (#4133) 2025-06-11 06:41:35 -07:00
duckcomfy
995979a4e1 feat: add keyboard shortcut to move selected nodes (unbound by default) (#4066)
Co-authored-by: duckcomfy <a@a.a>
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-06-11 06:35:49 -07:00
Comfy Org PR Bot
c02ac95815 [chore] Update Comfy Registry API types from comfy-api@34a03c4 (#4123)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-06-10 05:01:45 -07:00
Christian Byrne
d01926b043 [Dev] Add note to Claude memory about common mistake with url prefixes (#4118) 2025-06-09 07:14:26 -07:00
Christian Byrne
344c6f6244 Reland Playwright MCP for Local Development (#4070) 2025-06-08 01:21:22 -07:00
Terry Jia
b2918a4cf6 Improve bg color image logic (#4095) 2025-06-08 01:20:56 -07:00
Hayden
6d4eafb07a Fix primevue overlay component z-index might be incorrect (#4074) 2025-06-08 01:20:41 -07:00
Comfy Org PR Bot
97edaade63 1.22.1 (#4104)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-08 08:17:34 +00:00
Christian Byrne
83af274339 [fix] resolve @ symbol parsing errors in extension tooltips (#4100) 2025-06-08 01:02:36 -07:00
filtered
f251af25cc Revert "[refactor] Refactor file handling" (#4103) 2025-06-08 07:20:15 +00:00
filtered
e2024c1e79 Revert "[fix] Remove dynamic import timing issue causing Playwright test flakiness" (#4102) 2025-06-07 23:57:29 -07:00
filtered
e8236e1a85 [chore] Pin third-party GitHub Actions to commit SHAs (#4076) 2025-06-07 21:06:34 -07:00
Christian Byrne
79a63de70e [docs] Remove deprecated comment from registerExtension (#4098) 2025-06-07 20:32:36 -07:00
Christian Byrne
3eee7cde0b [docs] Convert .cursorrules to standard markdown format (#4099) 2025-06-07 19:45:03 -07:00
Christian Byrne
6bbe46009b [docs] Add PrimeVue deprecated component guidelines (#4097) 2025-06-07 18:27:35 -07:00
Terry Jia
1ca71caf45 [3d] performance improvement by using threejs setViewport (#4079) 2025-06-06 17:35:16 -07:00
Benjamin Lu
65289b1927 Update to new card design (#4065)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-06-06 04:19:05 -07:00
filtered
9e2180dcd8 [CodeHealth] Lint script files (#4081) 2025-06-05 03:23:56 -07:00
Benjamin Lu
defea56ba5 [docs] update env example (#4078) 2025-06-05 10:39:48 +10:00
Comfy Org PR Bot
e6bca95a5f [chore] Update ComfyUI-Manager API types from ComfyUI-Manager@4cceb46 (#4077)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-06-04 10:07:16 -07:00
Christian Byrne
841e3f743a [feat] Add workflow to generate ComfyUI-Manager types from OpenAPI (#4072) 2025-06-04 04:31:26 -07:00
filtered
0a22191c86 [chore] Pin third-party GitHub Actions to commit SHAs (#1074) 2025-06-04 11:18:08 +00:00
Christian Byrne
73be826956 [Feature] Add "All" category to template workflows (#3931)
Co-authored-by: github-actions <github-actions@github.com>
2025-06-04 02:58:00 -07:00
Christian Byrne
398dc6d8a6 [feat] Add dynamic pricing for API nodes with real-time updates (#3963)
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-04 02:04:24 -07:00
Comfy Org PR Bot
d1f4341319 1.22.0 (#4060)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-03 06:16:28 -07:00
Comfy Org PR Bot
8c8bb1a3b7 [chore] Update litegraph to 0.15.15 (#4062)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-03 06:16:12 -07:00
Comfy Org PR Bot
7ff7f780ca 0.15.15 (#1073)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-03 13:13:50 +00:00
filtered
d225e77d30 Fix custom widgets with draw may break rendering (#1072) 2025-06-03 06:00:02 -07:00
ComfyUI Wiki
05ef25a7a3 Update the Compare slider start position to the middle (#4052) 2025-06-02 21:40:13 -07:00
Benjamin Lu
86aeeb87bb Change hosts accept from readWrite to read (#4058) 2025-06-03 03:16:43 +00:00
Christian Byrne
f7093f6ce0 [dev] Add claude command to provide feedback and spot issues with local changes using Playwright MCP (#4039) 2025-06-02 02:19:51 -07:00
Benjamin Lu
88817e5bc0 Use new Algolia proxy (#4030) 2025-06-02 00:20:37 -07:00
filtered
3ac8aa248c Revert "Export vue new (#3966)" (#4050) 2025-06-02 09:57:47 +10:00
filtered
75ab54ee04 Revert "[Dev] Add Playwright MCP for Local Development (#4028)" (#4048) 2025-06-02 06:21:35 +10:00
filtered
a5729c9e06 Revert "[fix] Automatically fix malformed node def translations" (#4045) 2025-06-02 05:37:30 +10:00
filtered
d1da3476da Revert "Update locales for node definitions" (#4047) 2025-06-02 05:36:41 +10:00
Comfy Org PR Bot
ac01bff67e Update locales for node definitions (#4019)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
Co-authored-by: bymyself <cbyrne@comfy.org>
Co-authored-by: github-actions <github-actions@github.com>
2025-06-01 06:46:50 -07:00
Christian Byrne
ec4ced26e7 [fix] Automatically fix malformed node def translations (#4042) 2025-06-01 06:45:40 -07:00
Benjamin Lu
40cfc43c54 Add Help Menu in NodeLibrarySidebarTab (#3922)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-01 23:24:31 +10:00
filtered
35a811c5cf Remove duplication from bug report form (#4043) 2025-06-01 22:42:50 +10:00
Christian Byrne
3d4ac07957 [DevTask] Add custom node testing checkbox to issue template (#4041) 2025-06-01 02:55:59 -07:00
Christian Byrne
54055e7707 [docs] Centralize troubleshooting documentation (#4040) 2025-06-01 01:32:21 -07:00
Christian Byrne
69f33f322f [fix] Clear CSS background variable when canvas background image is removed (#4034) 2025-06-01 13:41:17 +10:00
Christian Byrne
b81c2f7cd2 [bugfix] Filter model metadata by current widget selection (#4021)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-06-01 12:43:00 +10:00
Comfy Org PR Bot
6289ac9182 1.21.3 (#4035)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-06-01 00:31:35 +00:00
Christian Byrne
86a7dd05a3 [Dev] Add Playwright MCP for Local Development (#4028)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-31 13:51:37 -07:00
Christian Byrne
dee00edc5f [feat] Add node library sorting and grouping controls (#4024)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-31 17:39:39 +10:00
Christian Byrne
afac449f41 [fix] Remove dynamic import timing issue causing Playwright test flakiness (#4031) 2025-05-31 14:01:13 +10:00
filtered
aca1a2a194 Revert "Allow extensions to define pinia stores" (#4027) 2025-05-31 04:12:59 +10:00
filtered
4dfe75d68b Add GH types to issue templates (#3991) 2025-05-30 02:57:10 -07:00
Christian Byrne
2c37dba143 [docs] Add Claude command for adding missing i18n strings (#4023) 2025-05-30 02:22:40 -07:00
Christian Byrne
3936454ffd [feat] Add logout button to user popover (#4022) 2025-05-30 02:17:00 -07:00
Christian Byrne
30ee669f5c [refactor] Refactor file handling (#3955) 2025-05-30 02:05:41 -07:00
Terry Jia
811ddd6165 Allow extensions to define pinia stores (#4018) 2025-05-30 12:05:03 +10:00
filtered
0cdaa512c8 Allow extensions to raise their own Vue dialogs (#4008) 2025-05-29 21:05:52 +10:00
filtered
3a514ca63b Fix dragging preview image does nothing (#4009) 2025-05-29 04:50:04 +10:00
Terry Jia
405b5fc5b7 Add copy url button (#4000)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-28 17:55:57 +10:00
filtered
ee2171b6ce Fix node resize cursor flicker (#1070) 2025-05-28 07:34:04 +00:00
Comfy Org PR Bot
0eaf7d11b6 1.21.2 (#4003)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-28 17:09:41 +10:00
Robin Huang
fa58c04b3a [fix] Disable serialization for text preview widget (#4004) 2025-05-28 04:20:26 +00:00
Comfy Org PR Bot
9c84c9e250 [chore] Update litegraph to 0.15.14 (#3998)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-28 00:40:16 +00:00
Comfy Org PR Bot
3608ea6d18 0.15.14 (#1069)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-28 10:21:58 +10:00
filtered
273eae1e8d Fix custom widget drawWidget never called (#1068) 2025-05-28 10:12:13 +10:00
Terry Jia
6f9f048b4a [3d] fix wrong hasRecording status (#3995) 2025-05-27 13:07:50 +00:00
filtered
768faeee7e [Test] Disable flaky test (#3994) 2025-05-27 21:03:49 +10:00
filtered
eba81efb4b [Test] Fix husky rejects all test file commits (#3993) 2025-05-27 20:50:15 +10:00
filtered
f9d92b8198 Fix native reroute chaining (#3989) 2025-05-27 16:57:36 +10:00
filtered
c4bbe7fee1 Update Claude rules: no @ts-expect-error (#3985) 2025-05-27 13:23:49 +10:00
Comfy Org PR Bot
8f4f5f8e5f [chore] Update litegraph to 0.15.13 (#3983)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-26 22:34:53 +00:00
Comfy Org PR Bot
0d5fd0e90d 0.15.13 (#1067)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-27 08:18:26 +10:00
filtered
b86f2b58e6 Remove node edge resize (#1066) 2025-05-26 22:10:41 +00:00
filtered
e971667264 Add some basic Claude code rules (#1065) 2025-05-27 07:37:26 +10:00
Comfy Org PR Bot
9e137d9924 1.21.1 (#3982)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-26 08:31:56 +00:00
Comfy Org PR Bot
a084b55db7 [chore] Update litegraph to 0.15.12 (#3981)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-26 07:39:07 +00:00
Comfy Org PR Bot
0385fb4d75 0.15.12 (#1064)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-26 07:16:16 +00:00
filtered
71928af112 Allow node resize from any corner or edge (#1063) 2025-05-26 06:36:03 +00:00
filtered
835f318999 Report if Forgot Password? cannot be processed (#3979) 2025-05-26 11:10:05 +10:00
filtered
c35d44c491 [TS] Fix workflow store type assertions (#3978) 2025-05-26 05:39:30 +10:00
filtered
38d3e15103 Never restore view when setting is disabled (#3975) 2025-05-24 22:47:08 +10:00
Terry Jia
674d04c9cf Export vue new (#3966)
Co-authored-by: hayden <48267247+hayden-fr@users.noreply.github.com>
2025-05-23 18:24:33 -07:00
Terry Jia
8209765eec [3d] improve mtl support logic (#3965) 2025-05-23 18:22:13 -07:00
Terry Jia
9d48638464 [3d] fix wrong generated language translation for 3d node output (#3967)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-22 16:49:48 -07:00
Comfy Org PR Bot
0095f02f46 1.21.0 (#3962)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-21 21:35:34 -04:00
Christian Byrne
178c79e559 [fix] Make gallery navigation buttons visible on mobile devices (#3953) 2025-05-21 21:34:13 -04:00
Christian Byrne
7c0040bfec Move user.css to user data (#3952) 2025-05-21 21:33:11 -04:00
Christian Byrne
77f91dea10 [Dev Tool] Add claude directives (#3960) 2025-05-21 21:32:18 -04:00
Christian Byrne
4ad6475283 [Feature] Add audio preview support to queue sidebar (#3954)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-21 21:31:38 -04:00
Terry Jia
b531d34027 [3d] performance improve (#3961) 2025-05-21 21:29:52 -04:00
Christian Byrne
55ad207345 Trigger browser test expectations update (#3959)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-21 17:20:55 -07:00
Christian Byrne
ccc1039abb [feat] Add file upload support to canvas background image setting (#3958)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-21 16:06:16 -07:00
Christian Byrne
49400c69b6 Set output as background (#3079)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-21 12:15:15 -04:00
Comfy Org PR Bot
32605eeb8f 1.20.4 (#3951)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-20 23:03:12 -04:00
Christian Byrne
f08ec0a981 [API Node] Add cost indicators on API nodes (#3924)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-05-20 21:59:11 -04:00
Christian Byrne
356886dc29 [Feature] Add MP4 workflow file open support (#3950) 2025-05-20 17:57:20 -07:00
Christian Byrne
f96de24a66 Migrate user.css file to upstream (#3949) 2025-05-20 20:11:06 -04:00
Christian Byrne
9d48487af8 [Dev Tools] Add more claude directives (#3948)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-20 13:45:31 -07:00
Christian Byrne
69b534bf14 [UI] Improve template card spacing and responsive image display (#3930)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-20 14:14:05 -04:00
Christian Byrne
2acb2ac181 [Style] Increase template card elevation in dark mode (#3946) 2025-05-20 14:13:12 -04:00
Christian Byrne
37a583e39c [fix] Adjust API node badge colors for light theme (#3945) 2025-05-20 14:12:51 -04:00
gfejer
d8821db2be PWA support (#3639)
Co-authored-by: bymyself <cbyrne@comfy.org>
2025-05-20 02:31:59 -07:00
Yiximail
f2c4e567e4 Add a button to selection toolbox to open mask editor (#3603)
Co-authored-by: bymyself <cbyrne@comfy.org>
2025-05-20 01:23:39 -07:00
Christian Byrne
fec4c4e928 [docs] Add comprehensive documentation for browser tests (#3942)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-05-19 23:08:03 -07:00
Terry Jia
49d32f4809 [3d] support mtl for obj file (#3933)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-19 20:48:57 -07:00
Christian Byrne
07f0b88e30 Require description field to be non-empty when reporting issue from the UI (#3939)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-20 13:18:19 +10:00
Christian Byrne
d92ed22908 Remove leftover asset (#3938) 2025-05-20 12:46:35 +10:00
Christian Byrne
24c0c2c499 [Dev Tools] Add claude config (#3937) 2025-05-20 12:34:51 +10:00
Christian Byrne
774bff2ed6 [Refactor] Move component test next to component (#3940) 2025-05-20 11:52:26 +10:00
filtered
942758e3a5 [CI] Prevent accidental dev publish on latest tag (#1060) 2025-05-19 13:25:40 +10:00
filtered
456a96e875 [CI] Add GH action to publish non-release npm package (#1059) 2025-05-19 12:58:22 +10:00
Comfy Org PR Bot
6d87f2b2ff 1.20.3 (#3932)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-18 21:26:18 -04:00
Christian Byrne
20911aa892 docs: improve README development section organization (#3929)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-05-19 09:38:59 +10:00
Christian Byrne
3a6018589e Add testing documentation guides for frontend tests (#3927) 2025-05-19 08:41:51 +10:00
Christian Byrne
4c92a7142e Fix: Close user popover on button clicks (#3928) 2025-05-19 08:41:33 +10:00
Christian Byrne
293993e7de Hide manager button in missing nodes dialog when manager is not installed (#3925) 2025-05-18 12:16:24 -04:00
Christian Byrne
a7ee3fae05 Add tests for ChatHistoryWidget and related features (#3921) 2025-05-18 12:16:06 -04:00
Christian Byrne
22dc84324e [docs] add READMEs for major folders (#3923) 2025-05-18 12:11:56 -04:00
Christian Byrne
e76e9ec61a docs: enhance README with development setup and troubleshooting guides (#3920) 2025-05-17 17:15:10 -04:00
filtered
94fde504d0 [CI] Add dev release GH Action (#3910) 2025-05-17 12:43:01 +10:00
Comfy Org PR Bot
e3ecf90bb3 1.20.2 (#3917)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-16 22:02:09 -04:00
Yoland Yan
a131f36cf3 [Fix] Fix out of bound issue when window was close and reopen at diff size (#3906) 2025-05-16 22:01:30 -04:00
Christian Byrne
4cad1a9567 Add LLM chat history widget (#3907)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-16 22:00:45 -04:00
filtered
47a6c6d595 [Dev] Allow Vue dev tools to be disabled (#3911) 2025-05-16 21:59:23 -04:00
filtered
068279ec34 Replace reactive DragAndScale proxy with callback (#3915) 2025-05-16 21:58:21 -04:00
filtered
d1ec780dbd Add rectangle resize methods, use in DragAndScale (#1057) 2025-05-16 17:22:51 +00:00
Comfy Org PR Bot
2885ebf5e0 [chore] Update litegraph to 0.15.11 (#3914)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-17 02:03:58 +10:00
Comfy Org PR Bot
06413df706 0.15.11 (#1056)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-17 01:54:43 +10:00
filtered
f5b3036b6c [API] Add DragAndScale onChanged callback (#1055) 2025-05-16 15:50:45 +00:00
filtered
56109eccc0 [CI] Add manual test frontend GH action (#1054) 2025-05-16 14:52:53 +10:00
filtered
de21f5ccd3 Fix unnecessary module loading for type imports (#1053) 2025-05-15 23:16:27 +00:00
Yoland Yan
d4e76ddc45 Add vite-plugin-html and vite-plugin-vue-devtools (#3903) 2025-05-15 14:51:39 -04:00
Chenlei Hu
9a5b80a279 [Refactor] Split SelectionToolbox buttons to components (#3902) 2025-05-15 11:20:51 -04:00
filtered
985dab7e1c Allow LGraph.configure to be made recursive (#3894) 2025-05-15 10:48:56 -04:00
filtered
7f2b8a5321 [CodeHealth] Add various minor fixes - logging, missed i18n (#3895)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-15 22:04:48 +10:00
filtered
b035c95cc0 [chore] Update vite / vitest / dts packages (#1052) 2025-05-15 11:16:44 +00:00
filtered
59ce169ec9 Add selection changed state watcher (#3899) 2025-05-15 21:13:54 +10:00
Comfy Org PR Bot
4294b2c13b [chore] Update litegraph to 0.15.10 (#3898)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-15 20:22:01 +10:00
Comfy Org PR Bot
2b45828afc 0.15.10 (#1051)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-15 09:46:58 +00:00
filtered
19b7d28d97 [API] Add dirty state flag for selectedItems (#1050) 2025-05-15 19:33:51 +10:00
filtered
ad528461c9 [API] Deprecate node.captureInput (#1049) 2025-05-15 06:58:46 +00:00
Comfy Org PR Bot
242c7e2885 1.20.1 (#3891)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-14 22:40:07 -04:00
Chenlei Hu
c1442ec755 [Cleanup] Remove api nodes news dialog (#3890)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-14 21:06:08 -04:00
Terry Jia
ebd9c96a28 [3d] bug fix and add loading for background image change (#3888) 2025-05-14 16:11:36 -04:00
Chenlei Hu
e6d649b596 [Refactor] Convert NodeBadge.vue to composable (#3883) 2025-05-13 21:56:26 -04:00
Comfy Org PR Bot
b037ba84e3 1.20.0 (#3850)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-05-13 21:05:21 -04:00
杨必赞
7c5c47c105 expose user loggedin in extensionManager (#3871) 2025-05-13 21:04:27 -04:00
Chenlei Hu
b152f67d95 [Refactor] useBrowserTabTitle composable (#3881) 2025-05-13 17:02:54 -04:00
Chenlei Hu
be84d81c32 [Branding] Show execution progress in favicon (#3880) 2025-05-13 15:57:18 -04:00
Christian Byrne
a474a094f3 [Manager] Fix search results render incorrectly when scrolling pages then changing query or tab (#3879) 2025-05-13 15:29:10 -04:00
Christian Byrne
bc360eef15 [Manager] Cache Algolia searches and limit suggestions queries (#3876) 2025-05-13 15:28:42 -04:00
Christian Byrne
a52cc0ebe9 [Manager] Don't show empty suggestions dropdown (#3878) 2025-05-13 11:40:15 -07:00
Christian Byrne
b3c6513e7a Fix bug: Virtual Grid increments page size when no results left to render (#3877) 2025-05-13 11:26:00 -07:00
Christian Byrne
a9bdc70e28 [API Node] Show message tip about API-key-based login (#3851)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <hcl@comfy.org>
2025-05-13 13:03:13 -04:00
filtered
58906fa821 [CodeHealth] Remove remaining uses of global app var (#3868) 2025-05-13 12:01:02 -04:00
filtered
a17fb04f83 [Test] Add per-workflow viewport comparison test (#3867)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-13 11:48:38 +10:00
Comfy Org PR Bot
5c0ad994d8 1.19.9 (#3866)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-12 16:25:19 -04:00
filtered
31be0a04f0 Use upstreamed viewport serialisation (#3864) 2025-05-13 05:33:10 +10:00
Comfy Org PR Bot
d9ab4270d1 [chore] Update litegraph to 0.15.9 (#3863)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-13 05:11:00 +10:00
Comfy Org PR Bot
c4b0372cd4 0.15.9 (#1044)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-13 05:04:55 +10:00
filtered
de32560816 [TS] Improve types and (#1043) 2025-05-12 19:02:57 +00:00
filtered
10118d95e3 Export the viewport offset and scale with the graph (#1042) 2025-05-12 18:47:10 +00:00
filtered
36bd1f74ca [TS] Fix weak ds.offset type breaks litegraph CI (#3861) 2025-05-13 04:34:47 +10:00
filtered
c2a88d3088 [Refactor] Use Rectangle for canvas visible area (#1041) 2025-05-12 11:01:36 +00:00
filtered
7144ec54aa Fix UI crash when selecting broken node + TS fixes (#3859) 2025-05-12 17:57:59 +10:00
Dr.Lt.Data
b2f144c27b refine locales/ko (#3853) 2025-05-12 04:25:02 +10:00
Christian Byrne
014c0022c1 [API Node] Remove mailto on own address (#3852) 2025-05-11 11:12:54 +10:00
Comfy Org PR Bot
5d556c9c94 1.19.8 (#3849)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-10 18:18:54 -04:00
Christian Byrne
992c2ba822 Show text progress messages on executing nodes (#3824) 2025-05-10 16:10:58 -04:00
Christian Byrne
4cc6a15fde Fix refresh combos command fails on nodes using V2 spec (#3848) 2025-05-10 16:06:25 -04:00
Christian Byrne
3f50b8b46d [Test] Add missing plugins in component tests (#3847) 2025-05-10 16:05:30 -04:00
Christian Byrne
bb588ff44e [API Node] Use staging platform url while in dev environment (#3846) 2025-05-10 16:04:51 -04:00
Christian Byrne
974236ce5a Fix video previews not displayed if VHS previously installed but disabled or uninstalled (#3844) 2025-05-10 16:03:55 -04:00
filtered
6ff80cfd36 [Cleanup] Fix node background drawn twice / misc (#1040) 2025-05-10 14:47:48 +00:00
Comfy Org PR Bot
6ed870d431 1.19.7 (#3837)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-09 19:40:11 -04:00
thot experiment
4e25a78d2d add audio preview widgets to new save nodes (#3840) 2025-05-09 19:34:37 -04:00
Christian Byrne
6408623b71 [API Node] Show user state when logged in via API key (#3838)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <hcl@comfy.org>
2025-05-09 14:45:32 -04:00
Comfy Org PR Bot
fdad2475ce Update locales for node definitions (#3792)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-05-09 14:11:38 -04:00
Chenlei Hu
5486fb94a0 [API Nodes] Add api pricing link to user popover (#3836)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-09 14:11:01 -04:00
Christian Byrne
34b1fd5a72 [API Node] Allow authentification via Comfy API key (#3815)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-09 13:42:03 -04:00
thot experiment
aa46524829 add workflow parsing for mp3 and opus formats (#3832) 2025-05-09 13:40:50 -04:00
filtered
3bd87820eb Fix undo / redo resets viewport (#3834) 2025-05-09 18:55:34 +10:00
filtered
d452240936 [TS] Declare missing types in BaseWidget (#1038) 2025-05-09 06:37:59 +00:00
filtered
0f95ed852e [TS] Fix / consolidate DOM widget types (#3830) 2025-05-09 16:24:31 +10:00
Comfy Org PR Bot
3501b480d4 [chore] Update litegraph to 0.15.8 (#3827)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-09 15:48:22 +10:00
filtered
5fa0401acd Fix workflow Export missing viewport scale/offset (#3828) 2025-05-09 14:58:16 +10:00
Comfy Org PR Bot
4d39dc28e0 1.19.6 (#3825)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-08 21:36:15 -04:00
Comfy Org PR Bot
bc8b13b5a4 0.15.8 (#1036)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-09 10:35:44 +10:00
filtered
441f14c12e [TS] Fix callback type prevents use as method (#1035) 2025-05-09 10:34:45 +10:00
Chenlei Hu
2a297e512d Fit view on workflow load without extra.ds (#3822)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-08 17:39:44 -04:00
Chenlei Hu
2019c1d877 Align reset_view param on json file load (#3823) 2025-05-08 16:00:13 -04:00
Comfy Org PR Bot
1adc0b6c00 0.15.7 (#1034)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-08 13:55:19 -04:00
Chenlei Hu
2405be993c Add DragAndScale.fitToBounds (#1033) 2025-05-08 13:55:11 -04:00
Chenlei Hu
2425e32d51 Partial execute to selected output nodes (#3818)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-08 11:44:26 -04:00
Comfy Org PR Bot
b6466c44e5 1.19.5 (#3817)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-07 22:36:19 -04:00
filtered
13441add24 Convert DOM widgets to Litegraph widget subclass (#3813) 2025-05-08 10:25:54 +10:00
Comfy Org PR Bot
64ce8ce5ed [chore] Update litegraph to 0.15.6 (#3814)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 09:39:07 +10:00
Comfy Org PR Bot
f55c01af65 0.15.6 (#1032)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 09:27:30 +10:00
filtered
3fec0e2d39 Fix explicit undefined interpreted as text by consumers (#1031) 2025-05-08 09:26:55 +10:00
Comfy Org PR Bot
841ff0b46c [chore] Update litegraph to 0.15.5 (#3812)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 09:05:03 +10:00
Comfy Org PR Bot
dbc5cdf600 0.15.5 (#1030)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 08:54:55 +10:00
filtered
4f9a40dcfd Fix downstream DOM widget impl. crash on load (#1029) 2025-05-08 08:54:07 +10:00
Chenlei Hu
df86da3d67 [Bug] Add null check on customSpec being null (#3810) 2025-05-07 17:09:52 -04:00
filtered
3aea2c120a Update widget types to match Litegraph changes (#3808) 2025-05-08 06:56:53 +10:00
Comfy Org PR Bot
6fdef0308b [chore] Update litegraph to 0.15.4 (#3809)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 06:43:40 +10:00
Comfy Org PR Bot
288f961688 0.15.4 (#1028)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-08 06:39:22 +10:00
filtered
1b37502d70 [API] Improve widget typing (#1027) 2025-05-08 06:37:16 +10:00
Chenlei Hu
973a1eb0a9 [Bug] Guard link fixer with try-catch (#3806) 2025-05-07 16:10:21 -04:00
filtered
b9d9ce78f9 [TS] Widget typing (#3804) 2025-05-08 04:38:17 +10:00
Benjamin Lu
bb1ac32ccd Revert "Remove Release Summary section in README (#3607)" (#3802) 2025-05-07 13:56:05 -04:00
Christian Byrne
1ef3c007e6 [Auth] Allow user select GitHub account on login (#3801) 2025-05-07 12:03:23 -04:00
Terry Jia
db81b62274 [3d] add record video support for load3d animation node (#3798) 2025-05-07 10:12:33 -04:00
Comfy Org PR Bot
43365b4318 1.19.4 (#3800)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 23:11:01 +10:00
Comfy Org PR Bot
dfdffcd27e [chore] Update litegraph to 0.15.3 (#3799)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 22:47:16 +10:00
Comfy Org PR Bot
252454484f [chore] Update litegraph to 0.15.2 (#3797)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 22:41:23 +10:00
Comfy Org PR Bot
33a76714f7 0.15.3 (#1026)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 22:38:48 +10:00
filtered
44c98fbf62 Rename widget _displayValue to resolve conflict (#1025) 2025-05-07 22:36:40 +10:00
Comfy Org PR Bot
8cf449c957 0.15.2 (#1024)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 21:48:14 +10:00
filtered
86d1c2a93a Workaround crash on load from custom nodes (#1023) 2025-05-07 21:18:42 +10:00
Comfy Org PR Bot
c1984f7ccd 1.19.3 (#3795)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-06 22:04:37 -04:00
Christian Byrne
bbbf140b1f Handle user avatar error (#3735)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-06 22:04:25 -04:00
Terry Jia
754eb807de [3d] some improvement for load3d recording video (#3794) 2025-05-06 22:03:12 -04:00
filtered
fad6c6c502 [nit] Further simplify watcher via whenever (#3790) 2025-05-06 20:23:46 -04:00
Chenlei Hu
926278e9ef [nit] Simplify selection overlay watcher (#3789) 2025-05-06 16:07:19 -04:00
Chenlei Hu
131fae72d4 [Branding] Use new logo on menu bar (#3788) 2025-05-06 15:18:50 -04:00
filtered
ccbdff0ad1 Fix Rectangle subarray end offset logic (#1021) 2025-05-06 18:10:59 +00:00
filtered
df6e4debb5 Fix widget snap to work with input sockets (#1017) 2025-05-07 02:02:49 +10:00
Comfy Org PR Bot
a8a7288e0d [chore] Update litegraph to 0.15.1 (#3784)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-07 02:01:50 +10:00
Chenlei Hu
2a21dd1004 [Branding] Use new logo favicon (#3787) 2025-05-06 11:02:49 -04:00
Chenlei Hu
3bdd814b3c [Branding] Use new comfyorg logo (#3786) 2025-05-06 10:54:37 -04:00
Comfy Org PR Bot
c7c7547454 0.15.1 (#1020)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-06 19:55:15 +10:00
filtered
c6df437662 [CodeHealth] Replace temporary TS conversion widget types (#1019) 2025-05-06 19:53:49 +10:00
filtered
0da6be5cdc [Refactor] Update Litegraph widget types / cleanup (#3782) 2025-05-06 19:40:30 +10:00
filtered
a74df42cce Fix Rectangle.size exception on access (#1013) 2025-05-06 19:28:51 +10:00
filtered
28434e7165 Fix node with any widgets bypasses link validation (#1016)
- Followup on #891
2025-05-06 09:10:35 +00:00
Comfy Org PR Bot
6a3cf9e698 [chore] Update litegraph to 0.15.0 (#3759)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-05-06 18:54:33 +10:00
Christian Byrne
6b98f1de0e [API Node] Adjust notification dismiss logic and message (#3778) 2025-05-06 00:51:47 -07:00
Chenlei Hu
d05a340949 [Auth] Allow user select google account on login (#3777) 2025-05-05 23:16:16 -04:00
Comfy Org PR Bot
ca16e55579 1.19.2 (#3774)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-05 21:16:28 -04:00
Christian Byrne
a54529da40 [API Node] Refine locales (#3772) 2025-05-05 21:16:19 -04:00
Christian Byrne
f52915a590 Allow disabling proxy of /template path via env (#3773) 2025-05-05 17:48:11 -07:00
Christian Byrne
13b00cdbc6 Update template titles (#3771) 2025-05-05 19:05:35 -04:00
Christian Byrne
626b54da27 Fix: latent preview format is read from wrong byte of header (#3761) 2025-05-05 15:08:55 -07:00
filtered
c344a73739 [API] Export widget classes for downstream use (#1018)
Exports all widget classes.

- BaseSteppedWidget
- BaseWidget
- BooleanWidget
- ButtonWidget
- ComboWidget
- KnobWidget
- NumberWidget
- SliderWidget
- TextWidget
2025-05-06 06:50:17 +10:00
Christian Byrne
c24472aeac [API Node] Add localizations for template workflow descriptions (#3769)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-05 12:53:02 -07:00
Chenlei Hu
ea605887fa [API Nodes] Add cost badge for api nodes (#3768) 2025-05-05 14:25:19 -04:00
Chenlei Hu
6edea73bf8 Update blog post link (#3767) 2025-05-05 13:56:20 -04:00
Chenlei Hu
6b8bf989f1 [API Nodes] Apply yellow color to api nodes by default (#3766) 2025-05-05 13:56:11 -04:00
Christian Byrne
3758a435cb [API Node] Sort API templates by localized display name (#3765)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-05 10:55:02 -07:00
Christian Byrne
813bf11484 Fix execution error message overflowing out of screen (#3762) 2025-05-05 23:20:32 +10:00
filtered
b5ae354bec Prevent node tooltip from breaking pan & zoom (#3760) 2025-05-05 22:48:25 +10:00
Comfy Org PR Bot
f6101bccae 0.15.0 (#1012)
Minor version increment to 0.15.0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-05 10:51:30 +10:00
filtered
75df19521b Widget overhaul (#1010)
### Widget text overhaul

#### Current
- Numbers and text overlap
- Combo boxes truncate the value before the label

![image](https://github.com/user-attachments/assets/c991b0b6-879f-4455-92d4-4254ef25b55c)

#### Proposed

**By default, widgets will now truncate their labels before their
values.**


https://github.com/user-attachments/assets/296ea5ab-d2ff-44f2-9139-5d97789e4f12

- Changes the way widget text is rendered, calculated, and truncated
- Truncation now applies in a standard way to the following widgets:
  - Text
  - Combo
  - Number
- Centralises widget draw routines in base class

### Config

```ts
// Truncate **both** widgets and labels evenly
LiteGraph.truncateWidgetTextEvenly = true

// Swap the default from truncating labels before values, to truncating values first (restores legacy behaviour)
// truncateWidgetTextEvenly **must** be `false`.
LiteGraph.truncateWidgetValuesFirst = true
```

### API / interfaces  

- Adds rich `Rectangle` concrete impl., with many methods and helpful
accessors (e.g. `right`, `bottom`)
- Actually _improves_ performance due to switch from Float32Array to
Float64Array
- Impact vs plain Float64Array was not detectable outside of a 2M+
instantiation-loop with random data
  - Lazy `pos` & `size` `subarray` properties
- Adds `ReadOnlySize`
- Adds higher-level text draw functions to abstract the nitty gritty in
a performant way (binary search)

- Resolves Comfy-Org/ComfyUI_frontend/issues/457
2025-05-05 10:48:06 +10:00
Comfy Org PR Bot
7a1a626b36 1.19.1 (#3756)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-04 20:45:43 -04:00
Comfy Org PR Bot
63d24301a3 [chore] Update litegraph to 0.15.0-3 (#3757)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-05 09:31:52 +10:00
Chenlei Hu
93d7d2c69c [Bug] Remove default dialog close button on news dialog (#3758) 2025-05-04 19:07:13 -04:00
Comfy Org PR Bot
406abd7731 0.15.0-3 (#1011)
Prerelease version increment to 0.15.0-3

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-05 09:01:05 +10:00
Chenlei Hu
2d9a0d02ab [API Nodes] Add API Nodes new feature dialog (#3755)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-04 17:20:05 -04:00
filtered
386f18a1e5 Remove DragAndScale rounding when using trackpad (#1009)
Fixes issue where pinch to zoom would jitter around scale 1 - D&S rounds
the value to exactly 1 when it is "close enough". Good for pointer, poor
UX for precision trackpad.
2025-05-04 21:06:43 +00:00
filtered
6601cf6959 Add setting to enable Litegraph trackpad gestures (#3751)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-04 14:31:43 +10:00
Terry Jia
77ac4a415c [3d] add recording video support (#3749)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-03 23:00:07 -04:00
Comfy Org PR Bot
8ae36e2c8d [chore] Update litegraph to 0.15.0-2 (#3750)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-04 12:01:52 +10:00
Comfy Org PR Bot
53f766af3d 0.15.0-2 (#1008)
Prerelease version increment to 0.15.0-2

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-04 12:00:10 +10:00
filtered
81eed7a1fa Add macOS trackpad gesture support (#1007)
Adds trackpad gesture support to canvas interaction.  Supports:

- Pinch to zoom
- Two-finger panning

Feature is off by default. Also by default, the browser user-agent must
include "Mac" (even if the feature has been enabled).

```ts
// Enable mac trackpad gestures
LiteGraph.macTrackpadGestures = true

// Disable the default Mac user-agent check
LiteGraph.macGesturesRequireMac = false
```
2025-05-04 11:58:24 +10:00
Yiximail
cb9ec354e7 Implement mask editor undo/redo (#3708) 2025-05-03 19:55:37 -04:00
filtered
8713cd6e25 [TS] Require override keyword (#3746) 2025-05-03 19:54:45 -04:00
filtered
bfc87af9d1 [TS] Force explicit override & property access (#1006)
Enables TypeScript rules that improve code legibility.

- Requires `override` keyword
- Prevent indexed properties from being accessed with dot notation

```ts
const obj: Record<string, unknown> = {}

// Prefer
obj["property"]

// Over
obj.property
```
2025-05-03 20:37:01 +00:00
filtered
c30244ef66 [Desktop] Fix Server-Config panel does not load (#3743) 2025-05-04 05:13:04 +10:00
Comfy Org PR Bot
2024aa6562 1.19.0 (#3737)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-03 11:14:47 -04:00
filtered
00c2181bb6 Show warning toast when no items are selected (#3741) 2025-05-03 11:14:02 -04:00
filtered
f2eafae82d Add no-items-selected event (#1004)
Emits an event when attempting to delete items with nothing selected.
Event is generic and should also be used to report any other
user-initiated actions.

Emitted from LGraphCanvas.canvas
- bubbles
- non-cancellable

```
litegraph:no-items-selected
```
2025-05-03 13:49:33 +00:00
Christian Byrne
743f3cb5a1 [Subgraph] Add subgraph breadcrumbs component (#3241)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-05-03 09:31:45 +10:00
Comfy Org PR Bot
111fdcc71a [chore] Update litegraph to 0.15.0-1 (#3738)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-03 08:33:18 +10:00
Comfy Org PR Bot
aa9f2f74b1 0.15.0-1 (#1003)
Prerelease version increment to 0.15.0-1

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-03 08:14:00 +10:00
filtered
27fbc2ea7c [API] Rewrite LGraphCanvas.setGraph for subgraph (#1002)
Code search showed no usage.

Fixes TS type on LGraph.
2025-05-02 22:01:59 +00:00
Terry Jia
ba3b1bae87 add List view for workflow tempalte (#3710)
Co-authored-by: Chenlei Hu <hcl@comfy.org>
Co-authored-by: github-actions <github-actions@github.com>
2025-05-02 17:50:53 -04:00
filtered
9dcc3bf39a [Refactor] Remove redundant code (#1001)
Removes redundant code. After being refactored out of LGraphCanvas, the
class methods were being passed their own properties as params.
2025-05-02 18:06:23 +00:00
Christian Byrne
23d32282bc Fix: server fails to load SVG outputs when user has "Preview Format" setting specified (#3734) 2025-05-02 10:09:50 -07:00
Chenlei Hu
197f33ffcd [Bug] Register dom widget when only node is added to graph (#3732) 2025-05-02 12:49:19 -04:00
filtered
b618ebe36d Change groupNode menu anchor to retain position (#3733) 2025-05-03 02:11:06 +10:00
Benjamin Lu
b61640c51b [Desktop] Add toasts for update check (#3723)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 11:06:51 -04:00
Comfy Org PR Bot
869f500d4e 1.18.6 (#3730)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-02 10:59:25 -04:00
Chenlei Hu
ec8ee49a2c [Bug] Fix zoom lag of DOM widget (#3714) 2025-05-02 10:58:51 -04:00
Comfy Org PR Bot
53372110d3 [chore] Update electron-types to 0.4.43 (#3731)
Co-authored-by: benceruleanlu <162923238+benceruleanlu@users.noreply.github.com>
2025-05-02 10:32:13 -04:00
Christian Byrne
1cbc0fc613 [API Node] Sort API templates by name (#3721) 2025-05-01 21:30:32 -04:00
filtered
c82401c61c [TS] Fix strict type on chain callback, widgetInput (#3727) 2025-05-01 21:29:43 -04:00
Comfy Org PR Bot
2c75948ab9 [chore] Update litegraph to 0.15.0-0 (#3725)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 10:27:52 +10:00
Comfy Org PR Bot
b838a70ed2 0.15.0-0 (#998)
Preminor version increment to 0.15.0-0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 00:10:00 +00:00
filtered
89b826a231 [Test] Add missing test expectation (#3724)
Co-authored-by: github-actions <github-actions@github.com>
2025-05-02 09:57:29 +10:00
Christian Byrne
3806ba3bf1 Increase template card titles' line height to 2 lines (#3722) 2025-05-01 19:28:02 -04:00
thot experiment
878aedb4f7 add svg metadata loading (#3719)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 09:26:24 +10:00
filtered
199eeae269 Add subgraph skeleton classes (#997)
Allows downstream consumers to use subgraph types ahead of impl.
2025-05-01 23:16:19 +00:00
filtered
ee89fc575f [Cleanup] Removes unused code (#996)
- Removes unused code
- Removes unnecessary globalAlpha reset when drawing reroute highlight
2025-05-01 22:38:54 +00:00
filtered
cb6020dfc1 [Perf] Prefer set over array.includes (#995)
Simplifies code and improves performance.
2025-05-01 22:31:51 +00:00
filtered
388a3d64cc [Refactor] Split node slot code out to base class (#994)
Foundational work for subgraph.
2025-05-01 22:26:25 +00:00
filtered
2e0267105e [chore] Update typescript package (#993)
v5.8.2 -> v5.8.3
2025-05-01 22:19:50 +00:00
Comfy Org PR Bot
f7e4ed23d7 [chore] Update litegraph to 0.14.6 (#3717)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-05-01 16:19:35 -04:00
Chenlei Hu
4461210f43 Prune widgets on graph configure (#3716) 2025-05-01 16:07:42 -04:00
Comfy Org PR Bot
7a9b23087e 0.14.6 (#992)
Patch version increment to 0.14.6

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 05:57:12 +10:00
filtered
c4b4b84b41 Fix combo widget dimming on small / broken lists (#989)
- Disables both buttons when there are less than 2 options
- Enables both buttons when combo list values contains error (identical
first and last items).
- Adds deprecation console warning when widget values are passed as a
function
- Fix buttons always dimmed when using legacy values-as-function
- Resolves #984
2025-05-02 05:55:18 +10:00
dependabot[bot]
f868fac6e9 Bump vite from 5.4.18 to 5.4.19 (#3715)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 15:13:28 -04:00
Comfy Org PR Bot
f7b51bbf7d [chore] Update litegraph to 0.14.5 (#3713)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 02:56:39 +10:00
Comfy Org PR Bot
537cdf7838 0.14.5 (#991)
Patch version increment to 0.14.5

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-02 02:53:21 +10:00
filtered
7d38f6bdc7 Fix regression in legacy widget-values-as-function (#990)
Resolves issue with KJNodes get/set nodes.

![image](https://github.com/user-attachments/assets/ecbf99d4-b2d3-48bf-a34c-65d0bf451b4c)

Downstream consumer:

c3dc82108a/web/js/setgetnodes.js (L401-L404)
2025-05-01 16:50:26 +00:00
Comfy Org PR Bot
8b6758ddfc 1.18.5 (#3711)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-05-01 08:53:53 -04:00
Comfy Org PR Bot
0d87f301b9 [chore] Update litegraph to 0.14.4 (#3706)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-01 08:50:51 -04:00
Christian Byrne
8349181321 Fix parsing workflows from mp4 (isobmff) (#3707) 2025-05-01 08:50:24 -04:00
Comfy Org PR Bot
cfabeb0821 0.14.4 (#988)
Patch version increment to 0.14.4

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-05-01 10:34:51 +10:00
filtered
0cdee75460 [API] Allow canvas font customisation (#987)
Allows customisation of fonts via `LiteGraph` global var:

```ts
LiteGraph.NODE_FONT = "wingdings"
```


![image](https://github.com/user-attachments/assets/36bec38d-ea5f-4ec6-a2a3-bc5a57826c1e)
2025-05-01 00:19:36 +00:00
Chenlei Hu
98b75e4819 [Bug] Fix staging tag shown in prod (#3705) 2025-04-30 19:36:07 -04:00
Chenlei Hu
d41b8c4e83 [Refactor] Use single map to store dom widget and states (#3703) 2025-04-30 19:29:49 -04:00
Chenlei Hu
ee8f0bf013 [Style] Fix user icon size (#3701) 2025-04-30 16:19:59 -04:00
Chenlei Hu
834d5820d2 [Auth] Allow change password in user panel (#3699)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-30 16:12:57 -04:00
filtered
c695b2e2bd Fix LGraph attach/detach canvas silently fails (#986)
Attach would allow duplicate entries.
Detach left the canvas.graph property set, if list_of_graphcanvas was
not set.
2025-04-30 18:10:45 +00:00
Comfy Org PR Bot
a43d1e1ee8 1.18.4 (#3686)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-30 10:32:08 -04:00
Benjamin Lu
35f0551244 Personal Data Consent Checkbox (#3697)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-30 10:29:46 -04:00
filtered
2f0e3d35d3 [CodeHealth] Standardise code in processKey (#985) 2025-04-30 08:23:38 +00:00
filtered
838acefd72 Fix graph.change called twice on keypress (#3695) 2025-04-30 17:59:01 +10:00
Chenlei Hu
df723b56da Show staging tag for staging firebase (#3693) 2025-04-29 21:32:00 -04:00
Benjamin Lu
c5eb97e563 Add contact info to auth modal (#3692)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-29 20:36:25 -04:00
Chenlei Hu
98d7256da4 Remove refresh button when all nodes are selected (#3690) 2025-04-29 19:59:49 -04:00
Christian Byrne
4828af9a13 [API Node] Update FAQ link to docs.comfy (#3691) 2025-04-29 19:59:28 -04:00
Benjamin Lu
4e0950d953 Adopt copilot instructions (#3689) 2025-04-29 18:46:53 -04:00
Chenlei Hu
beec20a382 [Style] Hide deprecated settings on UI (#3688) 2025-04-29 18:45:41 -04:00
Chenlei Hu
b4731637d4 [Style] Use icon for experimental setting tag (#3687) 2025-04-29 15:59:40 -04:00
Chenlei Hu
30ce4a243d [Refactor] Extract CreditTopUpOption component (#3685) 2025-04-29 14:10:09 -04:00
Chenlei Hu
a2f04844e0 [Bug] Identify api nodes as core nodes (#3683) 2025-04-29 11:45:52 -04:00
Comfy Org PR Bot
1531025070 1.18.3 (#3677)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-29 11:26:52 -04:00
Terry Jia
fb14d24047 [upstream] Upstream PreviewAny from rgthree-comfy (#3640) 2025-04-29 11:23:30 -04:00
filtered
04815605b4 Fix two undo steps on add node via context menu (#3674) 2025-04-29 11:23:12 -04:00
Terry Jia
c7435af51b better expression (#3678) 2025-04-29 11:18:01 -04:00
filtered
3bc9a3933f Fix two undo steps on alt-click to add reroute (#3675) 2025-04-28 19:20:00 -04:00
filtered
64d1225037 [Refactor] Convert to generic CustomEventTarget (#983)
Converts LinkConnector event target to a generic class.

Subgraph pre-requisite.
2025-04-28 22:19:26 +00:00
filtered
bd1890a422 [Refactor] Convert save viewport in workflow to watcher (#3673) 2025-04-29 06:49:41 +10:00
Chenlei Hu
5ec4ec8303 [Bug] Fix mp4 output preview in queue (#3672) 2025-04-28 15:25:53 -04:00
filtered
be92f5bdbb [Refactor] Move slot code out of LGraphNode (#981)
Moves collapsed node slot render code to the slot instances.
2025-04-28 17:35:45 +00:00
Chenlei Hu
b1a98437e4 [Auth] Warn insecure context on login (#3663)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-27 22:04:19 -04:00
filtered
ccc588b842 [API] Remove unused: LGraphNode.addConnection (#980)
Confirmed unused via code search
2025-04-28 01:52:53 +00:00
Christian Byrne
96d954ceb2 [API Node] Conditional signup render (#3653)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <hcl@comfy.org>
2025-04-27 21:47:17 -04:00
Chenlei Hu
c6cb3f0a33 [Auth] Report better auth domain error (#3662)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-27 21:29:52 -04:00
Comfy Org PR Bot
25136cc63d [chore] Update litegraph to 0.14.3 (#3660)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-27 21:01:29 -04:00
Chenlei Hu
8472bde5dd [Cleanup] Remove unnecessary null check on auth (2/2) (#3661)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-27 20:50:59 -04:00
Comfy Org PR Bot
3b6dc28727 1.18.2 (#3659)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-27 19:14:19 -04:00
filtered
6835b2bb5c Add theme colour for disabled widgets (#3657) 2025-04-27 19:12:47 -04:00
Comfy Org PR Bot
85f677f58c 0.14.3 (#979)
Patch version increment to 0.14.3

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-28 05:51:38 +10:00
filtered
ee222c794b Fade invalid increment/decrement widget buttons (#978)
When a widget cannot be incremented/decremented further, show a disabled
effect on the widget buttons.


https://github.com/user-attachments/assets/7770a9f1-31f6-430b-ab02-420327621148
2025-04-28 05:47:48 +10:00
filtered
85b1534263 [API] Send optional pointermove event with onDragStart. (#977)
Sends the `pointermove` event that triggered `onDragStart` with the
callback.

It is possible for no `pointermove` events to occur, but still be far
from the original `pointerdown` event. In this case, `eMove` will be
`undefined`, and `onDragEnd` will be called immediately after
`onDragStart`.
2025-04-27 17:01:38 +00:00
filtered
81a00b5e6c [Refactor] Remove repeat interface definitions (#976)
Prefers param destructuring over manual impl.
2025-04-27 16:30:59 +00:00
filtered
47732404cd Remove Rename Slot option from input sockets (#975)
This menu option was unintentionally inherited from input slots.

- Ref: https://github.com/Comfy-Org/ComfyUI_frontend/issues/3654
2025-04-27 15:47:22 +00:00
filtered
b3d030e36b [API] Add LLink.resolve static / instance methods (#974)
- `LLink.resolve`: Resolves all IDs on the link to their respective
objects (node IDs, slot indexes)
- `LinkNetwork.getLink`: a more concise pattern to resolve links
2025-04-26 20:51:41 +00:00
filtered
8e8818c24d Minor subgraph ts fixes (#973) 2025-04-26 20:34:02 +00:00
filtered
8e414ab133 [Refactor] Abstract legacy link colour properties (#972)
Replaces colour context interface with a simple abstraction object /
interface.
2025-04-26 20:31:43 +00:00
Comfy Org PR Bot
8f540e6603 [chore] Update litegraph to 0.14.2 (#3650)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-27 05:41:32 +10:00
Christian Byrne
99cc587abf Load workflows from mp4/mov files (#3543)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-26 12:31:29 -07:00
Comfy Org PR Bot
0b46288d32 0.14.2 (#971)
Patch version increment to 0.14.2

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-26 17:12:00 +00:00
filtered
5c41e4e09c Add virtual slots to Reroutes (#970)
### Virtual helper "slots"

Adds a virtual input and output slot to native reroutes, allowing links
to be dragged from them to other reroutes or nodes.


https://github.com/user-attachments/assets/67d308c4-4732-4b04-a2b9-0a2b0c79b413

### Notes

- Reroute slots automatically show an outline as the pointer gets close
- When the slot is clickable, it will highlight in the same colour as
the reroute
- Enables opposite direction connecting: from reroute to node outputs
- Floating reroutes only show one slot - to whichever side is not
connected
2025-04-27 03:00:01 +10:00
Benjamin Lu
82c5f02c3d Add contributing guidelines to README.md (#3637)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-26 08:39:35 -04:00
Chenlei Hu
04f447c2a3 [Cleanup] Remove tooltip on current user button (#3636) 2025-04-25 19:27:47 -04:00
Benjamin Lu
84c14ddd92 Remove automatic nightly pytorch for blackwell users on desktop (#3613)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-25 18:08:37 -04:00
Comfy Org PR Bot
c7e6d66d47 [chore] Update electron-types to 0.4.42 (#3634)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-26 07:45:10 +10:00
filtered
5d4be8dc63 Fix electron type workflow (#3633) 2025-04-26 07:43:35 +10:00
Chenlei Hu
0bec26ca4b [Cleanup] Remove api.listUserData (#3632) 2025-04-25 15:55:42 -04:00
Chenlei Hu
45eb4701d2 Implement top menu user popover (#3631)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-25 15:26:41 -04:00
Chenlei Hu
25359575db [Refactor] Extract user credit component (#3630) 2025-04-25 15:02:36 -04:00
Comfy Org PR Bot
d0b99b95c6 1.18.1 (#3629)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-25 13:34:35 -04:00
filtered
ddff592561 Fix new link follows pointer until menu closed (#3628)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-26 03:26:03 +10:00
Benjamin Lu
8491ca91b7 Move component tests into the same directory as their component counterparts (#3625)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-25 13:13:30 -04:00
Yiximail
630fa04882 Fix dynamic screen height (#3626) 2025-04-25 13:12:30 -04:00
Comfy Org PR Bot
bf80ae7295 [chore] Update litegraph to 0.14.1 (#3627)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-26 02:38:46 +10:00
Comfy Org PR Bot
de0f0ebac1 0.14.1 (#969)
Patch version increment to 0.14.1

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-26 02:34:16 +10:00
filtered
38dd58ae23 Fix new link follows pointer until context menu closed (#968)
- Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/3618
2025-04-26 02:33:28 +10:00
filtered
c10ce1caa1 [API] Add deprecated warning logging (#967)
Adds a global API to notify devs / users of deprecated features.

- Custom callbacks may be added
- By default, remembers message text and only sends each message once
- Sends to console.warn by default

```ts
// Add a custom notification when a warning is encountered
const warnMessage = (message: string, source?: object) => {
  addToast({ message, detail: object })
}
LiteGraph.onDeprecationWarning.push(warnMessage)
```

```ts
// Debugging flag. Repeats deprecation warnings every time they are reported.
// May impact performance.
LiteGraph.alwaysRepeatWarnings = true
```

Generate a warning
```ts
import { warnDeprecated } from "@/utils/feedback"

warnDeprecated(
  "[DEPRECATED] graph.oldFeature() will be removed from Litegraph. " +
  "Please use graph.newFeature() instead. https://helpful.site/faq",
  objectThatCausedThis
)
```
2025-04-26 02:16:01 +10:00
Yiximail
44348180f5 Fix long-press to open contextmenu on touch devices (#3624) 2025-04-25 11:30:13 -04:00
Benjamin Lu
4e12800336 Expand component test coverage to BrowserTabTitle (#3623)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-25 11:03:46 -04:00
Yiximail
d883448b86 Fix incorrect touch event handling by accurately tracking touch points (#3622) 2025-04-25 10:54:34 -04:00
Benjamin Lu
1c59e3b51b [nit] Use TorchMirrorUrl (#3617)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-25 10:52:52 -04:00
filtered
63407abf3c Reduce input socket hitbox for widgets (#966)
Restores the full left-arrow button click area for widgets. Previously
lost ~5 canvas pixels to clicks intercepted by input sockets.

Supporting refactors:
- Maps concrete node slot impls. to private array, once per frame
- Converts slot boundingRect to use absolute canvas pos (same as other
elements)
- Stores parent node ref in concrete slot classes
2025-04-25 14:12:09 +00:00
Chenlei Hu
b79cbf69af Use PrimeVue Avatar component (#3615) 2025-04-24 21:49:03 -04:00
Chenlei Hu
b05407ffdd [Refactor] Split authStore into authStore and authService (#3612)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 20:45:30 -04:00
Benjamin Lu
2a62f7ec7f ignore Vite timestamped config modules in .gitignore (#3614)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-24 20:40:18 -04:00
Benjamin Lu
bf757c11ef Reland "Add unified sidebar width setting" (#3611)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 17:45:25 -04:00
Chenlei Hu
0ed29a198d [Cleanup] Remove unnecessary null check on auth (#3610) 2025-04-24 17:36:16 -04:00
Chenlei Hu
31d5671f24 Revert "Add unified sidebar width setting" (#3609) 2025-04-24 17:14:01 -04:00
Benjamin Lu
ba3e2edb8a Add unified sidebar width setting (#3605)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 16:41:46 -04:00
Benjamin Lu
9c2300d780 Update README with Recommended Code Editor Configuration (#3606)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-24 16:34:38 -04:00
Benjamin Lu
3f85ff751c Remove Release Summary section in README (#3607)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-24 16:34:07 -04:00
Chenlei Hu
0caf1686c3 Add Comfy.User.SignOut command (#3608)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 16:33:26 -04:00
Chenlei Hu
26f98d24fb [Refactor] Async load all setting panels (#3604) 2025-04-24 13:00:42 -04:00
Comfy Org PR Bot
fcbdee54ec 1.18.0 (#3552)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-04-24 12:43:44 -04:00
filtered
a944372f39 Improve default node sizes (#3596)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 12:42:16 -04:00
Comfy Org PR Bot
df51e89311 [chore] Update litegraph to 0.14.0 (#3602)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-25 01:00:15 +10:00
Comfy Org PR Bot
0fd47a767d 0.14.0 (#964)
Minor version increment to 0.14.0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-25 00:33:35 +10:00
filtered
080a8da8f4 Overhaul node computeSize - use actual text width (#962)
### Node resize overhaul

- Precisely calculates node minimum size
- Prevents input & output overlap
- Prevents (normal*) widgets from rendering text over the edge of nodes
- Performance impact was sub-millisecond for normal usage in a 500-node
graph


![image](https://github.com/user-attachments/assets/5b6a6cc7-a752-4d7e-bcdf-b4bc8df26c51)

_Minimum size for a few example node configurations_

### Widgets

- Converts hard-coded draw render values to class static properties
- Adds widget button draw function for left/right arrow widgets

_*_ Exception: `control_after_generate`, as it is not a true input /
widget. A check may be added later to handle this special case.
2025-04-25 00:31:34 +10:00
filtered
79ce3199d4 [Cleanup] Documentation (#963)
Adds / cleans JSDoc.
2025-04-24 22:47:20 +10:00
Terry Jia
b314435f81 add importmap for vue-i18n (#3595) 2025-04-23 22:34:19 -04:00
Chenlei Hu
ba367c0214 [nit] Rename credit history to invoice history (#3598)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-23 22:33:52 -04:00
Chenlei Hu
64ad6a9bb0 Re-style TopUpCreditDialog to match design (#3597) 2025-04-23 22:28:35 -04:00
AustinMroz
3819db5ec4 Introduce widgetType option to inputSpec (#3550) 2025-04-23 20:36:01 -04:00
filtered
80517e8204 [Test] Add test expectation (#3593) 2025-04-24 08:48:06 +10:00
Comfy Org PR Bot
40034e77f9 1.17.11 (#3592)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-24 08:04:24 +10:00
filtered
2ef8b7cfd7 Fix opening search from context menu (#3591)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-24 07:54:27 +10:00
Comfy Org PR Bot
9cf3a0e568 1.17.10 (#3590)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-23 15:19:22 -04:00
Chenlei Hu
f562cf27cd [API Node] Workaround custom node hijack on api.queuePrompt (#3589)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-04-23 15:18:37 -04:00
Chenlei Hu
4244a0a258 [Cleanup] Remove unused dialog functions (#3588) 2025-04-23 11:46:50 -04:00
Comfy Org PR Bot
ad3d2fe2e9 1.17.9 (#3585)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-23 11:16:46 -04:00
Chenlei Hu
4c23cfbd4d [API Node] Better execution error handling (#3587)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-23 11:15:38 -04:00
Chenlei Hu
9e10e55633 [Schema] Add api_node flag to node def schema (#3586) 2025-04-23 10:47:08 -04:00
filtered
d70260615b [Refactor] Split NodeSlot out to separate files (#960)
Split files only; no code changes.  New files moved to `/node`.
2025-04-23 14:43:55 +00:00
Christian Byrne
59cbe90fd3 [API Node] Reset password (#3578)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-23 10:13:17 -04:00
Christian Byrne
16bd9abccd Translate user and credits settings categories (#3580)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-23 10:12:14 -04:00
Christian Byrne
e84bdc96cf Update FAQ link (#3579) 2025-04-23 10:12:02 -04:00
Comfy Org PR Bot
a57be36d4d 1.17.8 (#3573)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-22 22:26:48 -04:00
Christian Byrne
3bd508c001 Use generalized prod config var (#3574) 2025-04-22 22:26:31 -04:00
Chenlei Hu
612500a4dc [nit] Fix typo (#3577) 2025-04-22 21:35:26 -04:00
Christian Byrne
e9723407d8 [API Node] Fix credits fetch condition (#3575) 2025-04-22 21:33:44 -04:00
Christian Byrne
a01aa39423 [API Node] Show error toast (#3576) 2025-04-22 21:32:52 -04:00
Chenlei Hu
ab94a55858 Show user avatar on top menu if available (#3572) 2025-04-22 19:47:34 -04:00
Christian Byrne
1bcf5e28d4 [API Node] Contact support button (#3571)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-22 19:47:23 -04:00
Chenlei Hu
9e247063aa [nit] Adjust font size of User Panel header (#3570) 2025-04-22 19:03:40 -04:00
Comfy Org PR Bot
cdddf359a8 1.17.7 (#3569)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-22 18:52:13 -04:00
Christian Byrne
8558f87547 [API Node] User management (#3567)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <hcl@comfy.org>
2025-04-22 18:48:45 -04:00
Chenlei Hu
262991db6b [Bug] Prevent node pasting in signin dialog (#3568) 2025-04-22 16:18:25 -04:00
Chenlei Hu
585d52e24e [Bug] Fix DOM widgets position when canvas bounding box change (#3565)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-22 15:11:54 -04:00
Chenlei Hu
b7535755f0 Revert "[nit] Remove tab index on canvas element" (#3566) 2025-04-22 12:58:37 -04:00
Chenlei Hu
6b7b0f6ec1 [nit] Remove tab index on canvas element (#3563) 2025-04-22 11:40:22 -04:00
filtered
c7318bcf0a Update node search to use litegraph LinkConnector (#3546)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-22 10:35:49 -04:00
Christian Byrne
11f909436c [Manager] Fix reactivity of node pack version options dropdown (#3557) 2025-04-22 09:45:46 -04:00
Comfy Org PR Bot
d8f4dc95bb 1.17.6 (#3558)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-04-21 22:50:43 -07:00
Christian Byrne
c1bc664edd Add command to open signin dialog (#3556)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-21 22:46:31 -07:00
Christian Byrne
e7fe2046ba Checkout on credit add (#3555) 2025-04-21 22:46:05 -07:00
Comfy Org PR Bot
bf4ad38e9b 1.17.5 (#3551)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-21 20:08:30 -04:00
Chenlei Hu
cbbbb9c694 [Cleanup] Remove LGraphNode.isValidWidgetLink (#959)
Ref: https://github.com/Comfy-Org/ComfyUI_frontend/pull/3549
2025-04-21 15:50:14 -04:00
Chenlei Hu
2b024bb186 [Cleanup] Remove LGraphNode.isValidWidgetLink (#3549) 2025-04-21 15:48:55 -04:00
filtered
a28effc9f1 Add socketless widget option (#958)
Declares `socketless` property on `IWidgetOptions`.

- Ref: https://github.com/comfyanonymous/ComfyUI/pull/7714
2025-04-21 19:36:38 +00:00
filtered
6e5930c355 [API] Add sockets to custom widgets by default (#3548) 2025-04-21 15:24:48 -04:00
Comfy Org PR Bot
6151d487c6 [chore] Update litegraph to 0.13.8 (#3547)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-22 02:17:12 +10:00
Comfy Org PR Bot
e06e8c0a3f 0.13.8 (#957)
Patch version increment to 0.13.8

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-22 02:12:27 +10:00
filtered
58d8f10e40 [API] Add disconnect links method to LinkConnector (#956)
Provides a simple API for consumers to drag & drop links into a bin /
void, in order to disconnect them.
2025-04-21 16:10:27 +00:00
Comfy Org PR Bot
e027a9bf44 [chore] Update litegraph to 0.13.7 (#3544)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-21 11:00:10 -04:00
Comfy Org PR Bot
ddfd89df60 0.13.7 (#955)
Patch version increment to 0.13.7

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-22 00:04:58 +10:00
filtered
78bd6704fe Improve slot render stability & perf (#954)
- `draw` is now skipped for slots that should not be shown (prev. drawn
with 0 alpha)
- Fixes slot always rendered when widget not found in `node.widgets`
- Remove redundant check from `isWidgetInputSlot` - type is already
`INodeInputSlot`
2025-04-22 00:03:00 +10:00
filtered
2ad1481f02 Remove LayoutElement, resolve root TS issues (#953)
- Converts type assertions to use inference via discriminated unions
- Removes the LayoutElement class (only used by node slots, and recently
reduced to a single function)
- Splits `boundingRect` property out from `Positionable` interface
- Slots now use the standard `boundingRect` property
- Perf improvements / Removes redundant code
2025-04-21 22:23:09 +10:00
filtered
53ee5904e8 [TS] Fix serialisation type (#3541) 2025-04-21 21:13:42 +10:00
Christian Byrne
f82bb71b1e Fix client => canvas position conversion (#3540) 2025-04-21 20:21:25 +10:00
Terry Jia
40d08a890d [3d] move default values of backgroundColor, LightIntensity, LightMaximum, LightMinimum, LightStep to settings panel (#3536)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-20 23:08:23 -04:00
Chenlei Hu
ebf3c0c049 [API Nodes] Add credit management panel UI (#3535)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-20 22:11:43 -04:00
Comfy Org PR Bot
e77d5c1f57 1.17.4 (#3533)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-20 21:04:14 -04:00
Chenlei Hu
b5c1da22db [API Nodes] Remove cost from signin required dialog (#3532) 2025-04-20 17:02:42 -04:00
Chenlei Hu
0006dd3855 [Refactor] Split custom vite plugins to files under build/plugins (#3531) 2025-04-20 14:07:45 -04:00
Terry Jia
7355209c12 build vue and primevue separately and generate importmap (#3473)
Co-authored-by: Chenlei Hu <hcl@comfy.org>
2025-04-20 13:43:22 -04:00
Chenlei Hu
2aef0a9af8 [Bug] Fix model name (#3530) 2025-04-20 13:16:13 -04:00
Chenlei Hu
b74887d543 [i18n] Use gpt-o4-mini for translation (#3529) 2025-04-20 13:13:00 -04:00
Benjamin Lu
bf4ae227b3 Add manual update check (#3504)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-04-20 12:28:59 -04:00
Christian Byrne
184bb582da [Manager] Check if node is core node when inferring node pack (#3521) 2025-04-20 12:13:50 -04:00
Christian Byrne
3bc3179763 Apply filename text replacements (e.g., %date:hh:mm:ss%) in all save nodes (#3523) 2025-04-20 12:12:28 -04:00
Comfy Org PR Bot
eb100894ce [chore] Update Comfy Registry API types from comfy-api@7bc8051 (#3524)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-04-20 12:12:14 -04:00
Comfy Org PR Bot
9a992cb14d [chore] Update litegraph to 0.13.6 (#3528)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-21 01:18:27 +10:00
filtered
f7a0a92f3a [CodeHealth] Standardise code (#951)
Refactors & standardises code.
2025-04-20 15:02:54 +00:00
filtered
7c236bcfc8 [API] Remove broken: node.addInputs & addOutputs (#950)
The current impls. do not work as intended; they will only assign the
additional info properties if there are at least three items in the
input array.

Adding replacements would be trivial, if required, and would benefit by
not inheriting the current public interface.

Confirmed unused via code search.
2025-04-20 12:59:23 +00:00
Comfy Org PR Bot
133aa9bc87 [chore] Update litegraph to 0.13.5 (#3527)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-20 21:31:02 +10:00
Comfy Org PR Bot
b6a04d245b 0.13.6 (#949)
Patch version increment to 0.13.6

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-20 11:26:31 +00:00
filtered
cc5aece6b6 [API] Mark ContextMenu methods as deprecated, cleanup (#948)
- Marks unused static methods as deprecated
- Removes redundant / orphaned code
- Uses existing AbortController to remove all root listeners
2025-04-20 11:25:25 +00:00
Dr.Lt.Data
3204637e5a refine locales/ko (#3526) 2025-04-20 21:14:33 +10:00
filtered
21a3f56187 [API] Allow new node to be created without links (#947)
When using the Add Node context menus, allows consumers to prevent new
nodes from being linked.

- Related: #946
2025-04-20 10:55:52 +00:00
filtered
a76c50252b Fix part of snapped link follows pointer (#945)
Removes the green circle that always follows the pointer, even when a
link is snapped elsewhere.
2025-04-20 08:52:01 +00:00
filtered
c607c53543 [API] Return ContextMenu created for connecting link (#944)
Allows further customisation / hooks of the created ContextMenu.
2025-04-20 18:50:42 +10:00
filtered
b988238155 [Cleanup] Assorted minor code clean-up (#943)
Adds one warning log for an extreme edge case.
2025-04-20 08:35:45 +00:00
filtered
48bf415e52 [API] Allow connecting to nodes without known slot (#942)
Allows better downstream customisation of `LinkConnector`.
2025-04-20 08:20:12 +00:00
Comfy Org PR Bot
13db014387 0.13.5 (#941)
Patch version increment to 0.13.5

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-19 22:25:05 -04:00
Chenlei Hu
453257cd30 [Bug] Remove unused prop LayoutElement.value (#940)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/939

The prop is unused and is causing object clone circular ref issue.
2025-04-19 22:23:49 -04:00
Comfy Org PR Bot
b2cb719026 1.17.3 (#3520)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-19 22:21:18 -04:00
Christian Byrne
add805460c Fix drag and drop image with embedded workflow on Firefox (#3519)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-19 22:19:48 -04:00
Benjamin Lu
9621b8f339 [Desktop] Support Nvidia Blackwell (#3480)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-19 21:42:30 -04:00
Christian Byrne
6be381b15d Allow git describe formatted versions of node packs in workflows (#3518) 2025-04-19 21:42:01 -04:00
Christian Byrne
8afe99f48c Fix node.widgets undefined on refresh (#3515) 2025-04-20 10:21:31 +10:00
Christian Byrne
7c88bda647 Add optional icon to LGraphBadge and use for API nodes (#930)
Adds option to include an icon when creating an `LGraphBadge`. Then,
adds the icon to the title of nodes whose `constructor.nodeData` has a
non-null `credits_cost` property (API nodes that ComfyUI_frontend was
able to successfully query a credit cost for).


![Selection_1228](https://github.com/user-attachments/assets/9b63c0d1-b25b-4066-858f-7f32488eeb38)


- https://github.com/Comfy-Org/ComfyUI-private/pull/2
- https://github.com/Comfy-Org/litegraph.js/pull/930
- https://github.com/Comfy-Org/ComfyUI_frontend/pull/3470

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-04-20 10:10:45 +10:00
Christian Byrne
deeed9853c Remove fetch-templates script invoke in CI (#938)
See https://github.com/Comfy-Org/ComfyUI_frontend/pull/3500 for details.
2025-04-19 16:41:43 -07:00
Christian Byrne
9cd11261f9 [API Node] Set auth persistence in local stoarge (#3514) 2025-04-18 23:15:07 -04:00
Comfy Org PR Bot
fbc6665ff4 1.17.2 (#3513)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-18 22:26:07 -04:00
Christian Byrne
2daa51421c Remove fetch-templates script (#3500) 2025-04-18 20:34:03 -04:00
Christian Byrne
0f175c3dc1 [Api Node] Add ToS and privacy policy links (#3511) 2025-04-18 20:21:20 -04:00
Christian Byrne
8d4263c94e Use dev firebase and switch to prod in release workflow (#3499) 2025-04-18 17:23:10 -04:00
Chenlei Hu
04580ac031 [SettingUI] Group setting menu items (#3510) 2025-04-18 16:47:32 -04:00
Chenlei Hu
cd35f1d86d [Refactor] Generate DOM widget id in constructor (#3508) 2025-04-18 13:47:16 -04:00
Comfy Org PR Bot
5100bf6b00 0.13.4 (#937)
Patch version increment to 0.13.4

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-18 16:14:23 +00:00
Chenlei Hu
5d584577fe [Bug] Fix uuid generation in insecure context (#3505) 2025-04-18 11:43:25 -04:00
filtered
6293b4bbe0 Disconnect moved output links when dropped on canvas (#936)
- Resolves #884
2025-04-18 23:22:28 +10:00
filtered
02d165bf2a [API] LinkConnector reset no longer run after drop (#935)
`reset()` is no longer automatically called after `dropLinks`. This
brings the API in line with original intent, and how canvas is already
configured; reset is called by `pointer.finally()`.
2025-04-18 11:45:36 +00:00
filtered
10a96d1af6 [TMP] Temporarily disable hidream template test (#3502) 2025-04-18 21:34:02 +10:00
filtered
5c76bec611 [TS] Export types (#933)
Re-exports module-level exports at the package level.
2025-04-18 21:01:10 +10:00
filtered
ce46f19de9 Fix LinkConnector methods cannot be cancelled via API (#934)
- Checks if `e.preventDefault()` has been called for all cancellable
LinkConnector callbacks
- Sets `cancelable: true` on dispatched events
- Dedupes canvas pointer calls
2025-04-18 20:50:33 +10:00
Comfy Org PR Bot
03392a3cc7 1.17.1 (#3486)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-17 22:57:57 -04:00
Christian Byrne
12576243ad Remove unused tailwind classes (#3495) 2025-04-17 22:57:47 -04:00
Christian Byrne
e2a6dc2ec8 [Templates] Use fallbacks when translating template titles and category names (#3494) 2025-04-17 22:57:03 -04:00
Chenlei Hu
2f77d74891 [Refactor] Move tree logic to setting composable (#3491) 2025-04-17 16:34:42 -04:00
Chenlei Hu
dacb59f5d3 [Refactor] Extract setting dialog logic into composables (#3490) 2025-04-17 15:55:16 -04:00
Christian Byrne
74f991ec1b Translate Wan2.1-Fun template titles (#3489)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-17 15:55:08 -04:00
Christian Byrne
6bc03a624e Add HiDream templates translations (#3485)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-17 13:46:11 -04:00
Christian Byrne
1fb015e046 Remove templates build from release process (#3481) 2025-04-17 10:41:36 -04:00
Christian Byrne
87bf2310b6 Support previewing animated image uploads (#3479)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-17 10:20:09 -04:00
filtered
f1a25989d7 Fix corrupt workflow permanently corrupts session (#3484) 2025-04-17 10:18:14 -04:00
filtered
236e3fb3e9 Log errors in generic error handler (#3482) 2025-04-17 15:16:05 +10:00
Chenlei Hu
50382827bc [API Nodes] Add auth_token_comfy_org to queue prompt request body (#3477) 2025-04-16 15:26:25 -04:00
Christian Byrne
41675805b6 [Test] Add LGraphBadge light theme browser test (#3475)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-16 15:10:14 -04:00
Makki Shizu
6321fae6f3 fix 2_pass_pose_worship zh translation (#3474) 2025-04-16 11:04:28 -04:00
filtered
51ec57dc5c Fix graph.links cannot be iterated (#932)
Proxied links object now correctly supports spread operator.
2025-04-16 09:13:20 +00:00
Chenlei Hu
06caa21a4d [API Nodes] Setup Google/Github login (#3471) 2025-04-15 20:56:18 -04:00
Chenlei Hu
9ce3cccfd4 [API Nodes] Wire password login (#3469) 2025-04-15 19:41:22 -04:00
Chenlei Hu
9935b322f0 [API Nodes] Signin/Signup dialog (#3466)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-15 17:37:53 -04:00
Comfy Org PR Bot
60dd242b23 [chore] Update Comfy Registry API types from comfy-api@b664e39 (#3465)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-04-15 17:16:02 -04:00
Christian Byrne
cec0dcbccd [Api Node] Firebase auth and user auth store (#3467) 2025-04-15 17:15:51 -04:00
Chenlei Hu
907632a250 Use bundler moduleResolution mode in tsconfig (#3464) 2025-04-15 11:17:07 -04:00
Comfy Org PR Bot
45c450cdb9 [chore] Update litegraph to 0.13.3 (#3463)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-15 11:03:32 -04:00
Comfy Org PR Bot
af3fa1cd8c 0.13.3 (#928)
Patch version increment to 0.13.3

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-15 11:00:16 -04:00
Chenlei Hu
0063bf618d [Bug] Show widget slot when slot is hovered (#929)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/925


https://github.com/user-attachments/assets/81bd6ce3-6feb-456a-9bb3-e512008b2e63
2025-04-15 10:59:56 -04:00
Chenlei Hu
15fbc8fb77 Export types files under dist/ (#927)
This is required to enable "bundler" mode in tsconfig in
ComfyUI_frontend.
2025-04-15 10:51:02 -04:00
Chenlei Hu
ca85b2b144 [DevExperience] Add recommended extensions to .vscode (#3459) 2025-04-15 10:27:43 -04:00
Comfy Org PR Bot
1f28e6ef33 1.17.0 (#3458)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-14 21:06:33 -04:00
Comfy Org PR Bot
fee444c64b [chore] Update litegraph to 0.13.2 (#3460)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-14 21:06:23 -04:00
Comfy Org PR Bot
c90edcc201 0.13.2 (#926)
Patch version increment to 0.13.2

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-14 20:52:46 -04:00
Chenlei Hu
851739a768 [API Node] Sign in required dialog (#3457)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-14 17:49:17 -04:00
Benjamin Lu
1631665efb Fix minor typo (#3456)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-14 13:24:13 -04:00
Terry Jia
1a066c7062 [3d] move default values of showPreview, showGrid, cameraType to settings panel (#3443)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-13 19:44:47 -04:00
Chenlei Hu
e45f5bdebb [lint] Fix remaining vue lint warnings (#3435) 2025-04-12 22:29:29 -04:00
Dr.Lt.Data
c270e7734a refine locales/ko (#3434) 2025-04-12 22:19:11 -04:00
Chenlei Hu
8d7a21e008 [lint] Add eslint-plugin-prettier (#3433) 2025-04-12 22:12:50 -04:00
Comfy Org PR Bot
29e63baca6 1.16.7 (#3430)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-12 21:22:02 -04:00
Benjamin Lu
b22713daf0 Add source prop to commands (#3429)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-12 21:20:53 -04:00
Chenlei Hu
bdffdc9f10 [Bug] Fix configure of non-serializable widget (#921)
Follow up on https://github.com/Comfy-Org/litegraph.js/pull/915

Filter out non-serializable widgets during node configuration. Current
usage in frontend should not be affected as preview media widgets are
mostly dynamically added at the end of widget list.
2025-04-12 21:01:31 -04:00
dependabot[bot]
2acf16d3d0 Bump vite from 6.2.5 to 6.2.6 (#922) 2025-04-13 11:00:53 +10:00
Benjamin Lu
c8b8953e0a Add reset individual keybind button (#3423)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-12 16:59:00 -04:00
Benjamin Lu
731ce8599d Allow scrolling on .settings-content (#3427)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-12 16:58:08 -04:00
filtered
ec8e55c1c1 Allow zooming inside multi-line string widgets (#3422)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-12 13:13:00 -04:00
dependabot[bot]
04d38f2538 Bump vite from 5.4.17 to 5.4.18 (#3426)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-12 12:19:10 -04:00
Chenlei Hu
1c41db75f8 [Type] Enable strict schema type for setting entries (#3425) 2025-04-12 11:34:02 -04:00
Christian Byrne
c7a7397000 [Types] Make more types available directly in @comfyorg/comfyui-frontend-types package (#3418) 2025-04-12 11:33:34 -04:00
Terry Jia
e660e1d678 [3d] add support to output camera state (#3421) 2025-04-12 11:27:05 -04:00
Christian Byrne
fb19752389 [Types] Adds missing settings fields types (#3417) 2025-04-12 11:12:07 -04:00
Christian Byrne
d098d6ae4e [Types] Move enum to types file (#3416) 2025-04-12 11:11:41 -04:00
Christian Byrne
e4a5355f58 [Manager] Fix loading state on uninstall button (#3413) 2025-04-11 22:14:49 -04:00
Comfy Org PR Bot
42c004d41d 1.16.6 (#3410)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-11 20:33:25 -04:00
Benjamin Lu
009c389607 Rename reset keybindings to reset all keybindings (#3411)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-11 20:01:28 -04:00
Christian Byrne
b449dbd26b [Manager] Allowing changing sort field of registry search results (#3409)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-11 18:45:21 -04:00
Christian Byrne
67835edfca [Manager] Preview the individual nodes for packs on the registry (#3408)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-11 16:18:41 -04:00
filtered
60c0ce228a Generate a new workflow id when using "save as" (#3407) 2025-04-11 15:43:10 -04:00
Benjamin Lu
1990f25638 Allow keybind overwriting (#3393)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-11 14:28:36 -04:00
Comfy Org PR Bot
30c473db77 [chore] Update Comfy Registry API types from comfy-api@a28605f (#3405)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-04-11 14:02:37 -04:00
Chenlei Hu
2371288fed [Bug] Fix widgets values migration (#3404) 2025-04-11 13:44:14 -04:00
filtered
2e72031344 [API] Remove deprecated: getAncestors (#919)
Removes unused and deprecated API: LGraph.getAncestors
2025-04-11 17:29:53 +00:00
Christian Byrne
2337fe6f8e [Manager] Fix hot reload after install of missing node pack (#3397)
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-04-11 12:55:02 -04:00
Benjamin Lu
25e6386b2a Do not trigger autosave on workflows that are not persisted (#3400)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-11 12:53:49 -04:00
Chenlei Hu
a03841cb1a [lint] Enable plugin vue recommended rules (#3403) 2025-04-11 12:53:20 -04:00
Chenlei Hu
dc5d7ea1be [lint] Enforce @typescript-eslint/no-floating-promises (#3402) 2025-04-11 12:19:22 -04:00
Christian Byrne
3ba61c7265 Don't log every single node being replaced when node defs refreshed (#918)
Currently, when node defs are refreshed (e.g., by pressing "r"
shortcut), every single node def is logged, which is useless when
there's hundred of nodes and clutters console. This PR changes to only
log those messages when in debug mode.
2025-04-11 09:11:25 -07:00
Christian Byrne
59e20964a0 [Manager] Add fallback to infer node pack when metadata is missing from workflow (#3396) 2025-04-11 09:50:30 -04:00
Comfy Org PR Bot
8f00d8ca6a 1.16.5 (#3394)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-10 21:29:17 -04:00
Christian Byrne
05e0036898 [Manager] Button to open manager from Missing Nodes dialog (#3395) 2025-04-10 21:28:42 -04:00
Benjamin Lu
9e7690405a keep user input on top of selection toolbox (#3389)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-10 20:50:19 -04:00
Christian Byrne
d687ea2cde [Manager] Fix infinite fetch attempts when response is empty (#3392) 2025-04-10 16:39:54 -07:00
Chenlei Hu
c801a0c854 Attach frontend version metadata on workflow export (#3386) 2025-04-10 14:19:54 -04:00
Chenlei Hu
615c183059 Disable reroute migration (2/2) (#3385) 2025-04-10 14:06:09 -04:00
Chenlei Hu
27c8389b9f [Cleanup] Remove ComfyApp.serializeGraph (#3383) 2025-04-10 11:50:27 -04:00
Chenlei Hu
261f671ef0 Disable native reroute migration (#3379)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-10 08:50:07 -04:00
Benjamin Lu
22ae30132c Add tag pi-language icon for Comfy.Locale setting (#3378)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-09 22:47:40 -04:00
Chenlei Hu
7d3bf372b0 [Bug] Apply link fixes regardless of fixed state (#3376) 2025-04-09 20:28:49 -04:00
Comfy Org PR Bot
cd35373c25 1.16.4 (#3372)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-09 19:41:01 -04:00
Chenlei Hu
a500a96c4a [TS] Fix widget GET_CONFIG on loading primitive nodes (#3374) 2025-04-09 17:48:28 -04:00
Chenlei Hu
547fb22398 Update test-comfyui-frontend.yml (#917) 2025-04-09 17:06:38 -04:00
Chenlei Hu
dc9ea44f3a Prevent widget value serialization for media preview widgets (#3370) 2025-04-09 17:01:02 -04:00
Christian Byrne
2dc33b1eb9 [Manager] Remove outdated comment (#3371) 2025-04-09 16:51:16 -04:00
Comfy Org PR Bot
ed8f9a5a4f [chore] Update litegraph to 0.13.1 (#3369)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-09 16:45:31 -04:00
Comfy Org PR Bot
f3fba4007b 0.13.1 (#916)
Patch version increment to 0.13.1

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-09 16:08:31 -04:00
Chenlei Hu
197a6cbae8 Add IBaseWidget.serialize flag (#915)
https://github.com/Comfy-Org/ComfyUI_frontend/pull/3323

Some widgets are only used for display purpose (The preview image
widget), their value shouldn't be serialized into the workflow. This PR
adds a flag to allow widget to skip value serialization.
2025-04-09 16:06:05 -04:00
Chenlei Hu
6e72e1924e Update ComfyUI_devtools version in CI (#3368) 2025-04-09 14:59:07 -04:00
Christian Byrne
f7854a4e0b [Manager] Fix node pack icons not displaying in search results (#3366) 2025-04-09 13:51:47 -04:00
Chenlei Hu
05023b7889 Migrate defaultInput widget option (#3364)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-09 13:51:34 -04:00
Chenlei Hu
609496957b [Cleanup] Remove WidgetOptions.forceInput (#3362) 2025-04-09 11:36:35 -04:00
Chenlei Hu
a879f413bb [Cleanup] Remove WidgetOptions.inputIsOptional (#3361) 2025-04-09 10:45:51 -04:00
filtered
04b4485cc9 Add Disposable interface & polyfill (#914)
Adds the `Disposable` and `AsyncDisposable` interfaces via polyfill.

Implements Disposable interface in `InputIndicator`.

Ref:
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management
2025-04-09 11:05:39 +00:00
filtered
c60e9d8080 [Cleanup] Remove unused code (#913) 2025-04-09 09:35:08 +00:00
filtered
ae4a63c839 [Cleanup] Simplify code (#912)
- Simplifies internal APIs used by private functions
- Prefer param destructuring over manual object re-impl.
2025-04-09 08:54:34 +00:00
filtered
297b557b94 [Refactor] Rename layout method to arrange/measure (#911)
Prefer verb function names.
2025-04-09 07:49:41 +00:00
filtered
05e8e25b6b [Cleanup] Remove redundant code (#906)
Removes a now-redundant workaround from LinkConnector.
2025-04-09 16:28:34 +10:00
filtered
f6ef85e7c3 [Test] Add measure unit tests (#905) 2025-04-09 16:28:05 +10:00
Comfy Org PR Bot
21d679a662 1.16.3 (#3357)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-08 23:05:29 -04:00
Chenlei Hu
34f9603961 [Feature Request]: Add resize keybinding (#3356) (#3358)
Co-authored-by: Emanuel F. <70411130+efrancisworks@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-04-08 23:05:21 -04:00
Christian Byrne
cf27a896f3 [Manager] Handle display of git hash versions for NIGHTLY node packs (#3359) 2025-04-08 23:00:36 -04:00
Chenlei Hu
e9a98161ca [Bug] Fix converted widget compression on export (#3354) 2025-04-08 20:20:19 -04:00
Christian Byrne
fa132e4106 Don't translate 'Stable Zero' (#3352) 2025-04-08 19:51:11 -04:00
Chenlei Hu
a489c19b07 Upstream rgthree's link fixer (#3350) 2025-04-08 18:32:43 -04:00
Comfy Org PR Bot
46af2f03f3 1.16.2 (#3345)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-08 11:08:53 -04:00
Chenlei Hu
3a1c95fb10 [Bug] Fix input link slots (#3349)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-08 11:08:42 -04:00
Comfy Org PR Bot
7a6f0e210e 1.16.1 (#3342)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-07 22:22:45 -04:00
Chenlei Hu
ac3bd7a848 [Test] Add test on dynamically added inputs (#3344)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-07 22:22:32 -04:00
Comfy Org PR Bot
77b5e487cf [chore] Update litegraph to 0.13.0 (#3343)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-07 20:04:18 -04:00
Comfy Org PR Bot
6a3f5271c8 0.13.0 (#909)
Patch version increment to 0.13.0

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-07 19:53:11 -04:00
Chenlei Hu
bf5e3f3c77 [Bug] Fix layout issue caused by absolute positioned slots (#908)
Before:

![image](https://github.com/user-attachments/assets/00bbbf14-a153-4301-b4c4-0c30cb2ebcc7)

After:

![image](https://github.com/user-attachments/assets/2247a0a5-2757-478c-b701-9ceab7a133cc)

Workflow:

[dynamically_added_input.json](https://github.com/user-attachments/files/19640371/dynamically_added_input.json)

This PR also fixes the issue that output slot's `pos` property is not
relative to node pos.
2025-04-07 19:52:58 -04:00
catboxanon
a7a8459e18 Add option to disable workflow persistence (#3341)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-04-07 17:06:41 -04:00
Chenlei Hu
d77100c401 [Refactor] Add LGraphNode.layout (#907)
Moves layout of LGraphNode slot and widget to `LGraphNode.layout`.
Codesearch shows that there is currently no usage on posY arg, so we can
just pass null to it instead.
https://cs.comfy.org/search?q=context:global+drawNodeWidgets&patternType=keyword&sm=0
2025-04-07 15:40:58 -04:00
dependabot[bot]
65c9c264c6 Bump vite from 5.4.16 to 5.4.17 (#3338)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-06 21:37:16 -04:00
Comfy Org PR Bot
8ea070df12 1.16.0 (#3334)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-06 21:37:08 -04:00
Chenlei Hu
2c02d4ebb3 Migrate forceInput widgets_values (#3337)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-06 21:27:42 -04:00
Benjamin Lu
a2b3048b94 Clarify Playwright setup README and add note to .env_example (#3336)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-06 21:00:14 -04:00
Christian Byrne
549a42716f [Manager] Add tab for outdated node packs (has update available) (#3255)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-06 18:49:40 -04:00
Benjamin Lu
fa75614dc3 Add autosave feature (#3330)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-06 18:48:00 -04:00
Chenlei Hu
ac53296b2e Support associated socket for widgets (#3326)
Co-authored-by: github-actions <github-actions@github.com>
2025-04-06 11:50:21 -04:00
Comfy Org PR Bot
24dfbe8b2b 0.13.0-0 (#903)
Preminor version increment to 0.13.0-0

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-06 11:35:49 -04:00
filtered
079a18a391 Reland "Support associated socket for widgets" (#904)
- Reverts Comfy-Org/litegraph.js#896
- Relands #891
2025-04-06 11:35:42 -04:00
Comfy Org PR Bot
6eb2b76621 [chore] Update litegraph to 0.12.0 (#3335)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-06 11:31:42 -04:00
filtered
3815296ab5 Add Disconnect Links option to input slot menu (#901) 2025-04-06 15:22:19 +00:00
Comfy Org PR Bot
0032675e00 0.12.0 (#902)
Patch version increment to 0.12.0

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-06 11:21:38 -04:00
filtered
ed34080e46 Remove auto-generated serialisation data on load (#900)
- Resolves #883
2025-04-06 15:10:08 +00:00
filtered
3b5cc8cd19 Add alt-right-click to delete reroutes (#899)
Alt-right-click to remove, regular right-click to show context menu.
2025-04-06 14:55:17 +00:00
filtered
6cafeeff19 Fix corruption of selected link highlights (#897)
Occurred when deselecting one side of a link when both sides were
selected.
2025-04-06 14:30:22 +00:00
filtered
7360e09172 Standardise right-click behaviour (#894)
- Uses CanvasPointer click to open context menu (formerly occurred on
`pointerdown`)
- Frees up right-click & drag to be used by future features
- Right-clicking a reroute now selects the reroute, using the same
selection logic used for right-clicking nodes
2025-04-06 13:31:09 +00:00
filtered
c77082fe2f Close context menus on any click outside the menu (#895)
Current: Right click in e.g. `textarea` leaves litegraph context menus
open.
Proposed: Any click anywhere outside the context menu (or its sub-menus)
will close all context menus.
2025-04-06 13:30:42 +00:00
filtered
ee625b4112 Revert "Support associated socket for widgets" (#896)
Reverts Comfy-Org/litegraph.js#891

Temporary revert to unblock other PRs (causing test failures; frontend
PR for this has not yet been merged).
2025-04-06 12:38:18 +00:00
Christian Byrne
9dd3b9fff5 [3d] Add translations for material modes controls (#3325)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Terry Jia <terryjia88@gmail.com>
2025-04-05 22:29:46 -04:00
Chenlei Hu
785cad70ba [Cleanup] Remove extra.info from workflow schema (#3332) 2025-04-05 21:43:09 -04:00
Comfy Org PR Bot
026f076b8a 1.15.12 (#3331)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-05 21:22:08 -04:00
dependabot[bot]
981979335e Bump vite from 6.2.0 to 6.2.5 (#893)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite)
from 6.2.0 to 6.2.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.5</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.4</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.4/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.3</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.3/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>create-vite@6.2.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.2.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2><!-- raw HTML omitted -->6.2.5 (2025-04-03)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths (<a
href="fdb196e9f8">fdb196e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19782">#19782</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.4 (2025-03-31)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)
(<a
href="7a4fabab6a">7a4faba</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19761">#19761</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.3 (2025-03-24)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)
(<a
href="f234b5744d">f234b57</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19702">#19702</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.2 (2025-03-14)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: await client buildStart on top level buildStart (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19624">#19624</a>)
(<a
href="b31faab2a8">b31faab</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19624">#19624</a></li>
<li>fix(css): inline css correctly for double quote use strict (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19590">#19590</a>)
(<a
href="d0aa833296">d0aa833</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19590">#19590</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19613">#19613</a>)
(<a
href="363d691b49">363d691</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19613">#19613</a></li>
<li>fix(indexHtml): ensure correct URL when querying module graph (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19601">#19601</a>)
(<a
href="dc5395a27e">dc5395a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19601">#19601</a></li>
<li>fix(preview): use preview https config, not server (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19633">#19633</a>)
(<a
href="98b3160fa5">98b3160</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19633">#19633</a></li>
<li>fix(ssr): use optional chaining to prevent &quot;undefined is not an
object&quot; happening in `ssrRewriteStac (<a
href="43097550a1">4309755</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19612">#19612</a></li>
<li>feat: show friendly error for malformed <code>base</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19616">#19616</a>)
(<a
href="2476391b28">2476391</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19616">#19616</a></li>
<li>feat(worker): show asset filename conflict warning (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19591">#19591</a>)
(<a
href="367d968fbf">367d968</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19591">#19591</a></li>
<li>chore: extend commit hash correctly when ambigious with a non-commit
object (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19600">#19600</a>)
(<a
href="89a6287324">89a6287</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19600">#19600</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.2.1 (2025-03-07)<!-- raw HTML omitted
--></h2>
<ul>
<li>refactor: remove <code>isBuild</code> check from preAliasPlugin (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19587">#19587</a>)
(<a
href="c9e086d35a">c9e086d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19587">#19587</a></li>
<li>refactor: restore endsWith usage (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19554">#19554</a>)
(<a
href="6113a9670c">6113a96</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19554">#19554</a></li>
<li>refactor: use <code>applyToEnvironment</code> in internal plugins
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19588">#19588</a>)
(<a
href="f678442d57">f678442</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19588">#19588</a></li>
<li>fix(css): stabilize css module hashes with lightningcss in dev mode
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19481">#19481</a>)
(<a
href="92125b41e4">92125b4</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19481">#19481</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19555">#19555</a>)
(<a
href="f612e0fdf6">f612e0f</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19555">#19555</a></li>
<li>fix(reporter): fix incorrect bundle size calculation with non-ASCII
characters (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19561">#19561</a>)
(<a
href="437c0ed8ba">437c0ed</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19561">#19561</a></li>
<li>fix(sourcemap): combine sourcemaps with multiple sources without
matched source (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18971">#18971</a>)
(<a
href="e3f6ae14f7">e3f6ae1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18971">#18971</a></li>
<li>fix(ssr): named export should overwrite export all (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19534">#19534</a>)
(<a
href="2fd2fc1107">2fd2fc1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19534">#19534</a></li>
<li>feat: add <code>*?url&amp;no-inline</code> type and warning for
<code>.json?inline</code> / <code>.json?no-inline</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19566">#19566</a>)
(<a
href="c0d36677cd">c0d3667</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19566">#19566</a></li>
<li>test: add glob import test case (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19516">#19516</a>)
(<a
href="aa1d8075cc">aa1d807</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19516">#19516</a></li>
<li>test: convert config playground to unit tests (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19568">#19568</a>)
(<a
href="c0e68da477">c0e68da</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19568">#19568</a></li>
<li>test: convert resolve-config playground to unit tests (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19567">#19567</a>)
(<a
href="db5fb48f5d">db5fb48</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19567">#19567</a></li>
<li>perf: flush compile cache after 10s (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19537">#19537</a>)
(<a
href="6c8a5a27e6">6c8a5a2</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19537">#19537</a></li>
<li>chore(css): move environment destructuring after condition check (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19492">#19492</a>)
(<a
href="c9eda2348c">c9eda23</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19492">#19492</a></li>
<li>chore(html): remove unnecessary value check (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19491">#19491</a>)
(<a
href="797959f01d">797959f</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19491">#19491</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c176acf70a"><code>c176acf</code></a>
release: v6.2.5</li>
<li><a
href="fdb196e9f8"><code>fdb196e</code></a>
fix: backport <a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19782">#19782</a>,
fs check with svg and relative paths</li>
<li><a
href="037f801075"><code>037f801</code></a>
release: v6.2.4</li>
<li><a
href="7a4fabab6a"><code>7a4faba</code></a>
fix: fs check in transform middleware (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19761">#19761</a>)</li>
<li><a
href="16869d7c99"><code>16869d7</code></a>
release: v6.2.3</li>
<li><a
href="f234b5744d"><code>f234b57</code></a>
fix: fs raw query with query separators (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19702">#19702</a>)</li>
<li><a
href="b12911edba"><code>b12911e</code></a>
release: v6.2.2</li>
<li><a
href="98b3160fa5"><code>98b3160</code></a>
fix(preview): use preview https config, not server (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19633">#19633</a>)</li>
<li><a
href="b31faab2a8"><code>b31faab</code></a>
fix: await client buildStart on top level buildStart (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19624">#19624</a>)</li>
<li><a
href="dc5395a27e"><code>dc5395a</code></a>
fix(indexHtml): ensure correct URL when querying module graph (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19601">#19601</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/v6.2.5/packages/vite">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vite&package-manager=npm_and_yarn&previous-version=6.2.0&new-version=6.2.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Comfy-Org/litegraph.js/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-06 10:32:37 +10:00
Christian Byrne
65f1561ec6 Add option to disable reconnecting toasts (#3327) 2025-04-05 18:50:25 -04:00
Comfy Org PR Bot
76d63948b2 0.12.0-0 (#892)
Preminor version increment to 0.12.0-0

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-05 16:29:50 -04:00
Chenlei Hu
1ef4921c0a Support associated socket for widgets (#891)
This PR is the litegraph side change necessary for widget sockets
feature in ComfyUI_frontend. Changes include

- Add readonly `Widget.computedDisabled` property for getting the
computed disabled state. When the associated socket is connected, the
widget is disabled
- Dynamically show the associated socket when
      - the mouse is over the widget
      - the slot is valid during link drop
      - the slot is connected
- Removes the legacy widget drop behavior

Ref: https://github.com/Comfy-Org/rfcs/pull/9
2025-04-05 16:29:37 -04:00
Benjamin Lu
bb094cf0ae Scroll to active offscreen tab when opened (#3320)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-05 16:06:45 -04:00
Christian Byrne
ec684ee6b8 [Manager] Fix primevue severity in status messages (#3324) 2025-04-05 16:04:30 -04:00
filtered
c07176eb08 [Cleanup] Remove redundant code (#890)
- Follow-up on #888
2025-04-05 09:45:43 +00:00
Comfy Org PR Bot
3978613f14 1.15.11 (#3322)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-05 17:56:18 +11:00
Comfy Org PR Bot
0a40e07f7e [chore] Update litegraph to 0.11.10 (#3321)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-05 17:42:24 +11:00
Comfy Org PR Bot
70661ec421 0.11.10 (#889)
Patch version increment to 0.11.10

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-04-05 06:15:10 +00:00
filtered
64c7113440 Fix link corruption (#888)
- Adds link & floating link integrity tests to all LinkConnector
integration tests
- Fixes link changes may be lost when moving floating links
2025-04-05 05:34:55 +00:00
Chenlei Hu
c4373deeea [Test] Add test on moving output links (#887)
Ref: https://github.com/Comfy-Org/litegraph.js/issues/881

Verifies that moving output links does not cause link corruption.
2025-04-04 14:57:19 -04:00
Chenlei Hu
29c923e0e3 [Bug] Fix slot link state corruption on moving link between sockets (#882)
Ref: https://github.com/Comfy-Org/litegraph.js/issues/881

This PR fixes the corrupted link state when moving link from one input
socket to another.
2025-04-04 14:28:41 -04:00
Chenlei Hu
d17b86a6b8 [Test] Validate slot links after each test (#886)
Disable `"Should move input links"` test case as it fails validation.

Ref: https://github.com/Comfy-Org/litegraph.js/issues/881
2025-04-04 14:22:02 -04:00
Comfy Org PR Bot
577af51ff8 1.15.10 (#3319)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-03 22:31:57 -04:00
Chenlei Hu
df7c7383e2 Only show reroute migration dialog when native reroute is not present (#3318) 2025-04-03 22:08:40 -04:00
Comfy Org PR Bot
1279f30f5a [chore] Update litegraph to 0.11.9 (#3316)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-03 14:49:35 -04:00
Benjamin Lu
9ab4b549c0 Enable double clicking keybind row to edit bind (#2924) (#3315)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-04-03 14:04:02 -04:00
Comfy Org PR Bot
f63cf8648e 0.11.9 (#880)
Patch version increment to 0.11.9

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-03 11:24:57 -04:00
Chenlei Hu
8a94232f61 [nit] Remove IDrawOptions.showText (#879)
`showText` is essentially an alias of `!lowQuality`. Removing it from
the interface.
2025-04-03 11:24:51 -04:00
filtered
05b0918915 Support dragging reroutes from floating links (#878)
Allows dragging reroutes from floating links.
2025-04-03 12:08:28 +00:00
Comfy Org PR Bot
10de4e5445 1.15.9 (#3314)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-02 19:35:18 -04:00
Chenlei Hu
30420f2c0a [TS] Add null checks to widgetInputs.ts (#3312) 2025-04-02 15:48:46 -04:00
Chenlei Hu
39c3a57c11 [Cleanup] Remove handling of legacy slot widget config (#3311) 2025-04-02 13:58:06 -04:00
Chenlei Hu
6d09b7165f [TS] Fix event type for executing listener (#3310) 2025-04-02 11:16:36 -04:00
Chenlei Hu
8fc6840434 [Bug] Fix progress bar display on last output node (#3309) 2025-04-02 11:07:25 -04:00
Chenlei Hu
db575425fe [nit] Show error message from response (#3308) 2025-04-02 10:39:10 -04:00
Laurent Erignoux
ccb71bf1a3 Ensures we clean missing local storage comfy UserId (#3289) 2025-04-01 22:42:00 -04:00
Chenlei Hu
733d71aaac [Refactor] Split node constructor logic (#3307) 2025-04-01 20:48:32 -04:00
Comfy Org PR Bot
e059b9b82f 1.15.8 (#3306)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-01 16:47:22 -04:00
Chenlei Hu
cfaf769a65 [TS] Properly type slot widget (#3305) 2025-04-01 15:13:46 -04:00
Comfy Org PR Bot
a4e1b39823 0.11.8 (#877)
Patch version increment to 0.11.8

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-04-01 14:56:51 -04:00
Chenlei Hu
184ba3915a [TS] Properly type slot widget (#876)
INodeSlot.widget is not real widget references at runtime. This PR
narrows the type so that we don't run into unexpected issues.
2025-04-01 14:54:14 -04:00
Chenlei Hu
b80e0e1a3c [Performance] Avoid layout thrashing (#3302) 2025-04-01 14:05:06 -04:00
Chenlei Hu
7b7d9905a7 Expose currently active color palette (#3304) 2025-04-01 14:04:57 -04:00
Chenlei Hu
594fc5945c Fix workflow persistence (#3303) 2025-04-01 13:52:04 -04:00
Chenlei Hu
e5abf765bd [Performance] Avoid per-frame workflow persistence (#3301) 2025-04-01 11:31:28 -04:00
dependabot[bot]
712c127bb5 Bump vite from 5.4.15 to 5.4.16 (#3295)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 00:11:55 -04:00
Chenlei Hu
854501ef27 Show object widget values as string on missing nodes (#3294)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-31 20:55:50 -04:00
Comfy Org PR Bot
aea4493b4d 1.15.7 (#3293)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-31 20:07:19 -04:00
Chenlei Hu
df47226fd4 Add Reroute SplineOffset setting (#3292)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-31 20:05:38 -04:00
Chenlei Hu
f26f5f25bb Add widget to node with missing definition (#3291)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-31 14:23:44 -04:00
Comfy Org PR Bot
284902cabe 1.15.6 (#3287)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-30 21:48:18 -04:00
Chenlei Hu
58dec5ea42 Add reroute migration toast (#3286)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-30 21:48:10 -04:00
Chenlei Hu
7e76665a22 Revert "Migrate legacy reroute to litegraph native reroute (#3151)" (#3285)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-30 21:19:33 -04:00
Chenlei Hu
cb06d96930 [Refactor] Use NodeSlot.hasErrors API (#3284)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-30 20:10:28 -04:00
Benjamin Lu
b01ddb6aff Make entire result image preview clickable (#3279)
Co-authored-by: Benjamin Lu <templu1107@proton.me>
2025-03-30 19:06:29 -04:00
Chenlei Hu
10bed33383 [Refactor] Use LGraphNode.progress API (#3281) 2025-03-30 18:13:31 -04:00
Comfy Org PR Bot
a57e60d60a [chore] Update litegraph to 0.11.7 (#3280)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-30 17:59:20 -04:00
Comfy Org PR Bot
125ca24d13 0.11.7 (#873)
Patch version increment to 0.11.7

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-30 17:49:32 -04:00
Chenlei Hu
df279024c4 Upstream render of slot error (#872)
Upstream slot error rendering from ComfyUI_frontend.


![image](https://github.com/user-attachments/assets/d14b49a1-7943-4249-a20a-8b3d33df8ddb)
2025-03-30 17:40:44 -04:00
Chenlei Hu
30a7f19a64 Upstream progressbar rendering (#871)
Upstreams progress bar rendering from ComfyUI_frontend.
2025-03-30 17:14:09 -04:00
Chenlei Hu
8c789bd05d [Refactor] Use litegraph LGraphNode.strokeStyles API (#3278) 2025-03-30 12:05:45 -04:00
Comfy Org PR Bot
8a9b1c7071 0.11.6 (#870)
Patch version increment to 0.11.6

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-30 11:51:29 -04:00
Chenlei Hu
0eeaf90647 [nit] Rename IDrawBoundingOptions args (#869) 2025-03-30 11:46:45 -04:00
Chenlei Hu
854ac4350f Add LGraphNode.strokeStyles API (#868)
This should allow frontend drop the stroke logic in hijack of
`drawNodeShape`. Example usage:

```ts
node.strokeStyles["executionError"] = (this: LGraphNode) => 
  app.lastNodeErrors?.[this.id] ? { colour: 'red', thickness: 2 } : undefined
```
2025-03-30 11:29:37 -04:00
Chenlei Hu
27a2b785ac [Cleanup] Remove use_legacy_node_error_indicator (#867)
The fallback option was added in
https://github.com/Comfy-Org/litegraph.js/pull/358. So far no code is
using this legacy fallback option. Removing it now.
2025-03-30 10:30:39 -04:00
Chenlei Hu
28def833f9 [TS] Fix node constructor signature (#3276) 2025-03-29 20:55:11 -04:00
Chenlei Hu
fcc22f06ac [Refactor/TS] Simplify node filter logic (#3275) 2025-03-29 13:00:18 -04:00
Chenlei Hu
3922a5882b [Refactor] Extract fuse search class as a separate file (#3274) 2025-03-29 12:04:29 -04:00
Comfy Org PR Bot
4a40e83b98 1.15.5 (#3268)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-28 21:20:27 -04:00
Chenlei Hu
21e0caa1b1 [Bug] Fix undo of colorization via selection toolbox (#3267) 2025-03-28 21:00:43 -04:00
Chenlei Hu
04af8cda4d Use new error dialog for queue prompt errors (#3266)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-28 13:51:00 -04:00
Chenlei Hu
504b717575 [Refactor] Unify error dialog component (#3265)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-28 11:53:29 -04:00
Chenlei Hu
62fdcd4949 [Refactor] Extract error report generation logic (#3263) 2025-03-28 10:50:27 -04:00
Yiximail
cb7adaef9b maskeditor pen input support for windows (#3201) 2025-03-28 13:58:53 +01:00
Comfy Org PR Bot
6aad5222ab 1.15.4 (#3261)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-27 22:23:15 -04:00
Chenlei Hu
690326c374 [Reroute] Migrate floating link (#3260) 2025-03-27 22:13:16 -04:00
Comfy Org PR Bot
25ce267b2e [chore] Update litegraph to 0.11.5 (#3258)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-28 09:09:32 +11:00
Comfy Org PR Bot
ba5809a9b4 0.11.5 (#865)
Patch version increment to 0.11.5

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-28 09:04:53 +11:00
filtered
7b3ea64714 Fix 862 (#864)
- Follow-up on #862
- Corrects issues with floating reroute switch logic
- Updates test expectations
2025-03-28 09:00:58 +11:00
Comfy Org PR Bot
78e3a20773 [chore] Update litegraph to 0.11.4 (#3257)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-27 14:24:19 -04:00
Comfy Org PR Bot
59317bcda7 0.11.4 (#863)
Patch version increment to 0.11.4

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-28 05:21:29 +11:00
filtered
a20bae064f Allow floating reroute switches (#862)
- Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/3247

Bypasses the logic that automatically removed reroutes that had no
remaining links. Reroutes are now always converted to floating whenever
reroutes are reconnected.
2025-03-27 18:18:22 +00:00
Chenlei Hu
56dbcbbd22 [Bug] Fix convert dom widget placeholder render (#3256) 2025-03-27 14:09:30 -04:00
Christian Byrne
4bfc8e9e33 [Manager] Fetch lists of node packs in single request (#3250) 2025-03-27 11:49:05 -04:00
Chenlei Hu
6e72207927 [Bug] Fix this binding in useChainCallback (#3252) 2025-03-27 11:38:52 -04:00
Christian Byrne
71968ae133 Translate action history items (#3249)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-27 11:13:24 -04:00
Comfy Org PR Bot
4702cd18ce 1.15.3 (#3246)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-26 16:33:13 -04:00
Chenlei Hu
00d281c7fa [Test] Add playwright tests (#3245)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-26 16:32:42 -04:00
Chenlei Hu
3e25e08b10 [Bug] Fix broken output link id during reroute migration (#3244) 2025-03-26 16:00:54 -04:00
Comfy Org PR Bot
1d66d6d7d3 [chore] Update litegraph to 0.11.3 (#3242)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-26 15:25:17 -04:00
dependabot[bot]
cae5bbe86f Bump vite from 5.4.14 to 5.4.15 (#3243)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-26 15:25:08 -04:00
Comfy Org PR Bot
332b18bd91 0.11.3 (#861)
Patch version increment to 0.11.3

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-26 15:09:27 -04:00
Chenlei Hu
a6aec4017b [Bug] Fix link drop on widget (#860)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/857
2025-03-26 15:08:04 -04:00
Chenlei Hu
6fd6c60b9f [Bug] Fix drag link from input to output (#859)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/858
2025-03-26 14:53:30 -04:00
Christian Byrne
4d35d937cf [Manager] Fix build env vars (#3238) 2025-03-26 11:03:03 -04:00
Comfy Org PR Bot
60afa5cf6c [chore] Update Comfy Registry API types from comfy-api@d7be0da (#3239)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-03-26 02:48:38 -07:00
Comfy Org PR Bot
a1a33c8c9b 1.15.2 (#3237)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-25 22:07:08 -04:00
Chenlei Hu
9988fb8f1e [Bug] Fix selection toolbox select+drag (#3235)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-25 15:27:25 -04:00
Chenlei Hu
0518b170d3 [i18n] Add spanish translation (#3233)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-25 14:34:44 -04:00
Chenlei Hu
562cd7ea70 [TS] Fix type errors in app.ts (#3232) 2025-03-25 13:02:55 -04:00
Chenlei Hu
d3c64d404b [Bug] Fix selection toolbox position on pasted node (#3231) 2025-03-25 10:51:04 -04:00
Chenlei Hu
808d78169b Early return in LGraphCanvas.deselectAll (#856)
Avoid trigger `onSelectionChange` when nothing is selected.
2025-03-25 10:22:40 -04:00
Chenlei Hu
24dcaa7f72 [i18n] Translate toast messages (#3228)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-24 22:22:17 -04:00
Comfy Org PR Bot
6c18781663 1.15.1 (#3227)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-24 22:01:15 -04:00
Chenlei Hu
b6988e8d5c Report file load error via toast (#3226)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-24 22:01:07 -04:00
Chenlei Hu
ae64721555 Implement load workflow error dialog in Vue (#3225)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-24 21:00:50 -04:00
Terry Jia
abe65e58a0 [3d] add support to upload texture (#3224)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-24 16:58:45 -04:00
Comfy Org PR Bot
a1cfb68116 [chore] Update litegraph to 0.11.2 (#3223)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-03-24 16:09:40 -04:00
Comfy Org PR Bot
27895dac00 0.11.2 (#852)
Patch version increment to 0.11.2

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-24 15:46:40 -04:00
Chenlei Hu
c5db2d8736 [Bug] Fix number widget range not enforced (#850)
Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/3204
2025-03-24 15:37:55 -04:00
filtered
123c46d28b [TS] Add placeholder interfaces for subgraph classes (#851) 2025-03-24 19:23:20 +00:00
MohammadAboulEla
5bee36a73e Enable/Disable the drawing of image size (#3200) 2025-03-24 13:47:55 -04:00
filtered
5662aa3790 [API] Remove unused: LGraph.getSupportedTypes (#849)
Also removes unused `supported_types` static array.
2025-03-24 07:03:07 +00:00
filtered
f0bd360935 [API] Remove unused callbacks (#848)
- Follow-up on #847
- Removes now-redundant callbacks
2025-03-24 06:58:56 +00:00
filtered
28543d7d9d [API] Remove unused LGraph APIs (#847)
Removes unused, outdated helper methods from the original, incomplete
subgraph impl.
2025-03-24 06:24:28 +00:00
filtered
b1462a6274 [API] Add customisation of reroute bezier controls (#846)
Allows globally setting the bezier control point offset from the reroute
centre point. This can be increased to allow larger curves on longer
links, or set to 0 to completely disable the spline on inter-reroute
link segments.
2025-03-24 06:10:57 +00:00
Chenlei Hu
a4b0f5ab5e [Bug] Fix widget placeholder rendering (#3215)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-23 23:02:35 -04:00
filtered
642317f6bd Reroute link styles (#845)
Improves linear & straight link styles to work with native reroutes
2025-03-24 13:31:43 +11:00
filtered
f8a2c90138 Fix drag new link from reroute to widget (#3214) 2025-03-23 22:29:51 -04:00
Chenlei Hu
27c252f74a Render placeholder rect for DOM widgets when zoomed out (#3213)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-23 21:35:58 -04:00
Comfy Org PR Bot
7e26cffb26 [chore] Update litegraph to 0.11.1 (#3212)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-23 21:02:31 -04:00
niboshi
cb8354bfce Show error message on drop error (#3189) 2025-03-23 20:52:55 -04:00
Comfy Org PR Bot
5a67044206 0.11.1 (#844)
Patch version increment to 0.11.1

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-23 20:52:15 -04:00
Chenlei Hu
7fc8f8c897 Add lowQuality param to IWidget.draw (#843)
Currently widget needs to get access to `LGraphCanvas` instance to know
whether the canvas is rendering in low quality (Zoomed out). Usually
canvas object is obtained from `ComfyApp` instance.

This PR passes the lowQuality value to `IWidget.draw` to decouple the
dependency on `LGraphCanvas`.
2025-03-23 20:50:14 -04:00
filtered
c8bd5e43dd Add litegraph input indicator helper class (#842)
Example usage with ComfyUI_frontend, via console / devtools:

```ts
const inputIndicators = new InputIndicators(app.canvas)
// Dispose:
inputIndicators.dispose()
```
2025-03-24 11:43:36 +11:00
Comfy Org PR Bot
d5ebd7b7cb [chore] Update litegraph to 0.11.0 (#3211)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-24 11:36:24 +11:00
Comfy Org PR Bot
361ae2c589 0.11.0 (#840)
Minor version increment to 0.11.0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-24 11:17:29 +11:00
filtered
fd4ffbc1f8 Fix render issues after moving floating input links (#841)
- Fixes floating inputs have invisible segment after moving
- Fixes floating input can be moved onto existing input link, resulting
in the slot having two links
2025-03-24 00:16:06 +00:00
Comfy Org PR Bot
845d045991 1.15.0 (#3210)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-23 19:13:09 -04:00
Chenlei Hu
c3154fe297 [Reroute] Clean floating reroutes in reroute migration (#3209) 2025-03-23 18:40:39 -04:00
filtered
7b8f01f546 [Refactor] Split moving links (#839)
Splits moving links out to separate input and output classes.
2025-03-23 22:11:08 +00:00
Christian Byrne
f90d61fad5 [Style] Remove box shadow on template dialog sidenav (#3208) 2025-03-23 16:14:34 -04:00
filtered
05587d8a19 Fix moving existing links can result in loopback (#838)
Prevents nodes connecting links to themselves when moving existing
links.

If moving multiple links with reroutes, this will instead _reconnect_
any links that would become loopbacks, only without any rereoutes.
2025-03-23 19:00:55 +00:00
Christian Byrne
17834459a1 Fix parsing workflows from 3d outputs on Windows (#3196) 2025-03-23 11:42:57 -07:00
filtered
ff6281c840 Fix cannot shift-drag new link from first link segment (#836)
Fixes issue where new links can only be shift-click dragged from the
link line on link segments *after* a native reroute.
2025-03-23 15:13:06 +00:00
Chenlei Hu
564c4d557f Migrate legacy reroute to litegraph native reroute (#3151)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-22 18:56:35 -04:00
filtered
f852639758 Fix slot types added multiple times (#3194) 2025-03-23 09:01:12 +11:00
filtered
642e73773c [CodeHealth] Improve legibility of renderingBoxColor (#832)
Drastically reduces the cognitive complexity of
`LGraphNode.renderingBoxColor` by impl. early returns.
2025-03-22 21:53:42 +00:00
filtered
a44b8d0581 Fix bypass links on delete gives up after corrupt link (#831)
Bypass links will now continue to attempt to connect other links,
instead of silently giving up on the first corrupt link it finds.
2025-03-22 21:50:18 +00:00
filtered
ba7f870e0f [CodeHealth] Improve code readability (#830) 2025-03-22 21:48:26 +00:00
Comfy Org PR Bot
eae538b08e [chore] Update litegraph to 0.11.0-2 (#3193)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-03-23 08:01:25 +11:00
Comfy Org PR Bot
d3685bc6df 0.11.0-2 (#829)
Prerelease version increment to 0.11.0-2

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-23 07:44:47 +11:00
filtered
b254bae5c5 Allow floating reroutes to be chained when creating new (#828)
- Resolves #827
2025-03-23 07:38:11 +11:00
filtered
2e95ac9a71 Fix minor render issues with links / reroutes (#825)
- Fixes link centre marker highlight drawn over dragged items
- Fixes arrow-style link centre marker drawn twice
- Adds missing centre markers for output floating links
- Adds render sort order for reroutes (more links rendered on top)
2025-03-23 06:36:14 +11:00
filtered
16eddaac5f Render floating links as faded out (#826)
- Resolves #806
- Renders floating links with a faded-out effect
2025-03-23 06:35:58 +11:00
Dr.Lt.Data
d23108433e refine locales/ko (#3185) 2025-03-22 15:06:10 -04:00
Comfy Org PR Bot
e6e7449ece [chore] Update litegraph to 0.11.0-1 (#3190)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-23 03:49:44 +11:00
filtered
5f03d9a3cf Revert "Implement _.pick to simplify serialization (#763)" (#823)
Reason: Performance

- 40x slower slot serialisation using randomised data
- Overall 2-3x slower `graph.serialize()` on a 600 node graph

This reverts commit 77465113cd.
2025-03-23 03:39:15 +11:00
Comfy Org PR Bot
37ab504bdc 0.11.0-1 (#824)
Prerelease version increment to 0.11.0-1

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-23 03:31:34 +11:00
filtered
0dd060a369 [API] Require always-exported node properties be defined (#821)
Now required:

- `type`
- `pos`
- `size`
- `flags`
- `order`
- `mode`
2025-03-23 03:25:57 +11:00
filtered
6380037d1f [API] Add subgraph schema export types (serialisation) (#822)
Adds export / serialisation interfaces to support subgraph impl.
2025-03-22 15:59:01 +00:00
filtered
cd9778bb6c Fix reroutes lost when dropping output links on reroute (#820)
Blocks attempts to drag links from an output onto a reroute in any of
the links.
2025-03-22 13:49:26 +00:00
Comfy Org PR Bot
22a1200bdf [chore] Update litegraph to 0.11.0-0 (#3183)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-03-22 10:08:41 +11:00
Comfy Org PR Bot
b87a671a88 0.11.0-0 (#819)
Preminor version increment to 0.11.0-0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-22 09:25:16 +11:00
filtered
2dbd5f4cf0 Allow creating floating reroutes from new link menu (#818)
Adds an `Add Reroute` option to the new link menu. Creates a new
floating reroute connected to the source slot.
2025-03-22 09:23:20 +11:00
filtered
7c6245ab1c [Test] Add LinkConnector unit & integration tests (#816)
- Follow-up on #817

### Unit tests

Adds tests for:

- LinkConnector
- LGraph

### Integration tests for LinkConnector

- Uses and configures a real graph + LGraph
- Avoids mocks
  - User input is still mocked
- Performs actual tasks as would be called by LGraphCanvas
- A little verbose in places, but _many_ edge cases are caught by these
tests
2025-03-22 06:47:40 +11:00
filtered
850d1b9652 [API] Finalise LinkConnector design, adding reroute logic (#817)
- Splits link connect logic out of `LinkConnector` to individual
`RenderLink` classes
- Add support for connecting / reconnecting reroutes in various
configurations
- Adds support for moving existing floating links from outputs / inputs
- Fixes numerous corruption issues when reconnecting reroutes / moving
links
- Tests in separate PR #816
2025-03-21 19:41:20 +00:00
filtered
87aeab16a0 [API] Fix several floating links issues & add Reroute.totalLinks (#815)
Resolves several issues with floating links.  Highlights:

- Caches floating links on slots, removing some loop checks (inefficient
/ does not scale)
- Simpler APIs
- Adds `Reroute.totalLinks` (regular and floating
2025-03-21 19:17:54 +00:00
filtered
766e69bbf1 Fix regression: shift-drag new link from link line (#814)
- Resolves #375
- Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/2941
2025-03-21 19:10:26 +00:00
filtered
38bbf2fead Add reroute snap highlight (#813)
### Reroute snap highlight

When connecting links, a simple border now helps to indicate that a
connecting link can be dropped on a reroute below the pointer.

### Reroute ID badges

Optionally, intended for debugging purposes, drawing of ID badges can
also be manually enabled via console.
2025-03-21 19:05:09 +00:00
filtered
a043e7a72e [API] Add reroute convenience methods (#812)
Adds `LGraph.getReroute`, which accepts null & undefined IDs. Interface
overloads result in `never` when given a _known_ `undefined` or `null`
value.
2025-03-21 18:58:07 +00:00
filtered
cdbc0fa5e5 Cancel link connection by pressing Esc (#811)
Cancels connecting links if the escape key is pressed.
2025-03-21 18:53:13 +00:00
filtered
4078e3ad8b Improve reroutes - prep for LinkConnector overhaul (#810)
- Fixes TS types
- Various bug fixes for reroute / link (re)connect
- Adds reroute snap circle when connecting links
- Validates reroutes on drop (part of larger work)
- Prevent nodes linking to themselves
2025-03-21 18:47:36 +00:00
Chenlei Hu
ee20b63bc1 Remove unused plugin vite-plugin-static-copy (#3182) 2025-03-21 14:11:01 -04:00
Comfy Org PR Bot
0752e8b986 1.14.5 (#3181)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-21 11:07:21 -04:00
Christian Byrne
b234a68cf8 [Manager] Get node pack info on select (#3177) 2025-03-21 11:05:09 -04:00
Terry Jia
0863fda6a4 [3d] add support to export different formats (#3176)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-21 11:04:39 -04:00
Christian Byrne
8530406c3e [Manager] Set max size on custom node pack icons (#3178) 2025-03-21 11:04:23 -04:00
Christian Byrne
f7bfb6ec57 Fix Workflow Validation error when node pack 'unknown' version (#3179) 2025-03-21 11:04:06 -04:00
Comfy Org PR Bot
830933e78f Update locales for node definitions (#3174)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-20 21:44:46 -04:00
Comfy Org PR Bot
65693ed2be 1.14.4 (#3173)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-20 21:36:22 -04:00
Chenlei Hu
ed153dccd9 [Test] Fix flaky playwright tests (#3170) 2025-03-20 21:33:05 -04:00
Christian Byrne
fc7ed1bf09 Add Hunyuan3d template workflow titles i18 fields (#3171)
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-03-20 21:31:42 -04:00
Christian Byrne
4dad89369a Load workflows from GLTF files (#3169)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-20 20:55:51 -04:00
Chenlei Hu
5b730517a3 [Test] Sync workflow instead of full page reload (#3168) 2025-03-20 20:42:12 -04:00
Chenlei Hu
af0bf05883 [TS] Add null checks to TreeExplorer.vue (#3166) 2025-03-20 13:08:22 -04:00
Chenlei Hu
d9e62ff860 [Vue] Use Vue 3.5 syntax for prop default value (#3165) 2025-03-20 12:40:49 -04:00
Chenlei Hu
d9ae6cb395 [TS] Use custom TreeNode type (#3164) 2025-03-20 12:03:47 -04:00
Chenlei Hu
b162963593 [TS] Fix TreeExplorerNode types (#3163) 2025-03-20 11:47:04 -04:00
Christian Byrne
c34cc301f1 [Manager] Allow cancelling registry requests by route (#3158) 2025-03-20 10:30:00 -04:00
Terry Jia
afdb94f12f [3d] refactor legacy code by using new vue style (#3161) 2025-03-20 10:28:35 -04:00
Dr.Lt.Data
cc8dc3dbfb refine locales/ko (#3162) 2025-03-20 10:27:55 -04:00
filtered
9e64bf7278 [Test] Add LinkConnector tests (#808) 2025-03-20 22:20:11 +11:00
filtered
42d99fc37e Track floating link changes in undo/redo history (#3160) 2025-03-20 22:19:31 +11:00
Comfy Org PR Bot
1f03984d12 1.14.3 (#3155)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-19 22:01:08 -04:00
Terry Jia
d49815fcb4 [3d] add preview 3d for saveGlb (#3156) 2025-03-19 22:00:59 -04:00
Christian Byrne
4899a1d8f6 [Manager] Keep node previews inside info panel bounds (#3140) 2025-03-19 21:22:16 -04:00
Christian Byrne
71444d8c69 [Manager] Allow searching while in 'Missing' node packs tab (#3153) 2025-03-19 20:58:55 -04:00
Chenlei Hu
867ed4c1d7 [Schema] Update zod schema on zVector2 (#3152) 2025-03-19 20:58:13 -04:00
Christian Byrne
0c6957bfd8 [Manager] Use skeleton placeholder when loading (#3150) 2025-03-19 20:18:44 -04:00
Christian Byrne
fffce30e91 [Manager] Allow scrolling info panel while keeping the icon pinned at top (#3139) 2025-03-19 20:05:49 -04:00
Chenlei Hu
c554138887 [Develop] Remove duplicated run of tsc typecheck (#3149) 2025-03-19 14:26:22 -04:00
Chenlei Hu
5bbceea76c Downgrade vitest to 2.0.0 (#3148) 2025-03-19 14:22:44 -04:00
Christian Byrne
0f0601100f [Manager] Re-evaluate search results in installed tab when node packs change (#3144) 2025-03-19 10:34:24 -04:00
Christian Byrne
ff59245a7f [Manager] Use inject for installing button state (#3143) 2025-03-19 10:33:47 -04:00
Christian Byrne
c5af11d1ea [Manager] Remove title hover (#3142) 2025-03-19 10:30:42 -04:00
Christian Byrne
bc3e2e1597 [Manager] Auto scroll logs terminal to bottom (#3141)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-19 10:30:11 -04:00
filtered
e2a8456ff0 Remove yarn packageManager claim from package.json (#3145) 2025-03-19 19:26:35 +11:00
Christian Byrne
361c5ba930 [Manager] Fallback text on info panel (#3138)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-03-19 00:49:04 -07:00
Comfy Org PR Bot
bae47b80b3 1.14.2 (#3137)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-18 22:57:26 -04:00
Chenlei Hu
a049e9ae2d [TS] Enable strict mode (#3136) 2025-03-18 22:57:17 -04:00
Terry Jia
44edec7ad2 [TS] ts-strict for 3D components (#3135) 2025-03-18 22:40:13 -04:00
Chenlei Hu
db43f587a6 [TS] Fix ts-strict errors in Vue components (Part 4) (#3134) 2025-03-18 20:42:32 -04:00
Christian Byrne
8997ff4b2a [Manager] Add 'Missing' and 'In Workflow' tabs (#3133)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-18 20:21:03 -04:00
Chenlei Hu
91a8591249 Add support for webm video from SaveWEBM node (#3132) 2025-03-18 17:46:18 -04:00
Christian Byrne
ef74d7cb01 [Manager] Show node pack's dependencies in info panel (#3130)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-18 16:39:43 -04:00
Christian Byrne
8ab2334270 [Manager] Reset Manager state on reboot (#3129) 2025-03-18 16:38:17 -04:00
Chenlei Hu
59dbcc5261 [TS] Type component ref for 3D components (#3127) 2025-03-18 16:38:04 -04:00
Terry Jia
06488cc811 [3d] performance improve (#3131) 2025-03-18 16:23:32 -04:00
filtered
e65898b9ec [API] Remove unused: LGraph.onAction (#802) 2025-03-18 20:06:46 +00:00
filtered
5a12bf33f3 Add graph ID and revision to schema (#3096) 2025-03-19 07:00:25 +11:00
Chenlei Hu
96ff8a7785 [TS] Fix ts-strict errors in Vue components (Part 3) (#3126) 2025-03-18 11:38:43 -04:00
Christian Byrne
a85a1bf794 [Manager] Add infinite scroll to search results (#3124) 2025-03-18 10:52:32 -04:00
Terry Jia
52bad3d0d1 [3d] support output normal and lineart at once (#3122) 2025-03-18 10:51:53 -04:00
Chenlei Hu
e8997a7653 [TS] Fix ts-strict errors in Vue components (Part 2) (#3123)
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
2025-03-18 10:51:23 -04:00
Comfy Org PR Bot
0a6d3c0231 [chore] Update Comfy Registry API types from comfy-api@e40500f (#3121)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-03-17 19:07:10 -07:00
Chenlei Hu
2db29fc2af [TS] Fix ts-strict errors in Vue components (Part 1) (#3119) 2025-03-17 21:15:00 -04:00
Robin Huang
329bdff677 [Desktop] Add install path validation error messages (#3059)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-17 20:37:11 -04:00
Comfy Org PR Bot
906eb750ad 1.14.1 (#3118)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-17 20:35:26 -04:00
Christian Byrne
1a120adaea [Manager] Adjust node pack card style according to installing or disabled state (#3103) 2025-03-17 17:17:36 -07:00
Christian Byrne
26a7ebdd77 Fix uploaded image not forcing re-render (#3115)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-17 20:13:05 -04:00
Christian Byrne
da415e9d80 [Manager] Always show info panel (#3114)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-17 16:35:34 -07:00
Christian Byrne
384b3f3218 [Manager] Make node pack card dynamically sized (#3112) 2025-03-17 14:51:05 -07:00
Christian Byrne
65cf157958 [Manager] Remove version from footer (#3111) 2025-03-17 16:50:09 -04:00
Chenlei Hu
7af003fcab [TS] Enable noUnusedParameters (#3110) 2025-03-17 16:47:45 -04:00
Chenlei Hu
7e66e99c3a [TS] Enable noUnusedLocals (#3108) 2025-03-17 16:20:56 -04:00
Chenlei Hu
9e9459815d [Refactor] Split menu.spec.ts (#3107) 2025-03-17 15:55:48 -04:00
Christian Byrne
57b93a0007 [Manager] Remove shadows on left nav list (#3106) 2025-03-17 15:38:40 -04:00
Chenlei Hu
8923ec51fd [Refactor] Re-organize browser_tests directory (#3105) 2025-03-17 15:32:14 -04:00
Chenlei Hu
90053058ba [Refactor] Support handleAddFolder in TreeExplorer (#3101) 2025-03-17 14:08:23 -04:00
Chenlei Hu
b36f748a78 [nit] Remove unused provide in TreeExplorer (#3100) 2025-03-17 12:26:35 -04:00
Chenlei Hu
d57d12b426 [Refactor] Handle rename in TreeExplorer (#3099) 2025-03-17 12:26:26 -04:00
Christian Byrne
bd1be28478 [Manager] Add progress queue dialog (#3091)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-17 12:16:36 -04:00
Christian Byrne
891e18af8e [Manager] Improve node pack card header style (#3098) 2025-03-17 12:15:34 -04:00
Chenlei Hu
1610d06cd1 [Refactor] Accept single root node in TreeExplorer (#3088) 2025-03-17 10:52:06 -04:00
Comfy Org PR Bot
e3c7bbf966 1.14.0 (#3097)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-17 10:41:08 -04:00
Christian Byrne
0bfbbe838f [Manager] Remove shadows on version selector list (#3094) 2025-03-17 10:39:44 -04:00
Christian Byrne
c82fe80716 Allow rectangular virtual grid items (#3093) 2025-03-17 10:39:02 -04:00
Christian Byrne
ad98bcb87c [Manager] Fix registry search results flashing screen (#3092) 2025-03-17 10:38:08 -04:00
Christian Byrne
652ea15e8b Allow footer component and position props in dialogs (#3090) 2025-03-17 10:37:19 -04:00
Christian Byrne
a7a8cc633b [Manager] Improve node pack card design (#3089) 2025-03-17 10:36:35 -04:00
filtered
7845be9b15 [TS] TS type fix & nits (#801)
Fixes downstream type specificity issues with UUID template type. No
real benefit from template literal type at present.
2025-03-17 13:52:59 +00:00
filtered
0b4b420445 Add lib export: createUuidv4 (#800) 2025-03-17 13:39:19 +00:00
Comfy Org PR Bot
d23aec4ceb [chore] Update litegraph to 0.10.9 (#3095)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-18 00:21:02 +11:00
Comfy Org PR Bot
1579b5ea71 0.10.9 (#799)
Patch version increment to 0.10.9

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-17 13:06:36 +00:00
filtered
257d4fc7b9 Fix old graph ID kept when configuring new graph (#798)
Prevents ID leakage when using default `LGraph.configure()` settings.
2025-03-17 23:54:44 +11:00
filtered
39a9799db7 [Test] Add unit tests - complex floating links & nodes (#796) 2025-03-17 13:25:57 +11:00
filtered
c1f9745e54 Add cursor rule for unit tests (#795)
- Adds baseline cursor rules to assist agents generating unit tests.
- Ignores CI fro .cursor and other directories
2025-03-17 13:23:39 +11:00
Chenlei Hu
8db088b27a Remove duplicated toolbuttons for workflow sidebar (#3087) 2025-03-16 20:18:24 -04:00
samnyan
7ef6e52f38 [nit] add refresh button to workflow sidebar tab (#3062) 2025-03-16 19:46:13 -04:00
Comfy Org PR Bot
edeefe0883 [chore] Update litegraph to 0.10.8 (#3086)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-16 19:18:49 -04:00
MohammadAboulEla
c6046e47d2 Allowing control over domWidgets margin (#3085) 2025-03-16 19:16:11 -04:00
Comfy Org PR Bot
5821049493 0.10.8 (#794)
Patch version increment to 0.10.8

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-16 19:13:52 -04:00
Chenlei Hu
b71150a939 [Test] Add more tests on reroute (#793) 2025-03-16 19:12:57 -04:00
Chenlei Hu
94b9ecec71 [Bug] Fix remove of floatingLinks (#792)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/791

This PR fixes removal of floating links.

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-03-16 22:13:24 +00:00
filtered
dbc605e4da Add graph ID creation / serialisation (#790)
- Updates UUIDv4 generator
- Adds a unique id & revision support to graphs
- `revision` to be incremented downstream (e.g. on save)
- `id` automatically assigned if not provided
2025-03-16 18:41:08 +00:00
filtered
e8bcccc276 [Test] Update expectation - graph ID (#3083) 2025-03-17 05:29:16 +11:00
Comfy Org PR Bot
7705a09760 1.13.7 (#3082)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-16 11:59:11 -04:00
Christian Byrne
2a860d72b2 [Manager] Wrap manager requests with log wrapper (#3081) 2025-03-16 11:37:17 -04:00
AustinMroz
f583015a14 Fix regression when configuring graph with missing converted input (#3066) 2025-03-16 11:36:42 -04:00
yolain
07f285b05a Fix the litegraph context menu missing prototype after adding translation (#3080) 2025-03-17 01:42:05 +11:00
filtered
3447ea1981 Remove unused code (#789)
'start' and 'finish' do not exist on canvas 2d context.
2025-03-16 04:37:34 +00:00
Christian Byrne
64a0a120b6 Add server logs listener composable (#3074) 2025-03-15 14:42:27 -04:00
Christian Byrne
3956e31810 Fix LoadAudio node (#3065)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-14 21:44:39 -07:00
filtered
9b16144390 [CodeHealth] Standardise & remove deprecated code (#787)
- Removes event.keyCode use (i18n-safe)
- Prefer strict equality for readability
2025-03-15 03:15:38 +00:00
Comfy Org PR Bot
679f2daa8d 1.13.6 (#3063)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-14 21:26:18 -04:00
Christian Byrne
48ae6f7bf2 [Tests] Add Node Pack toggle component test (#3060) 2025-03-14 21:25:32 -04:00
Christian Byrne
cf732974a9 [Manager] Fix enabled/disabled node pack logic (#3061) 2025-03-14 21:25:07 -04:00
Chenlei Hu
e1179aace0 [nit] Add title to show full text in workflow template dialog (#3058) 2025-03-14 16:23:25 -04:00
Chenlei Hu
866d03b9c4 [i18n] Fix Wan i2v label (#3056)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-14 16:02:02 -04:00
Chenlei Hu
aab1dd8698 [Test] Prune disabled tests (#3052)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-14 14:20:36 -04:00
Chenlei Hu
eff68ae7a8 [Test] Only run chromium-2x test for tagged items (#3050) 2025-03-14 13:57:23 -04:00
Christian Byrne
8be25883cd [Manager] Add suggestions to search (#3041) 2025-03-14 13:24:28 -04:00
Comfy Org PR Bot
c6b3e2a0ed Update locales for node definitions (#3048)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-14 12:08:19 -04:00
Chenlei Hu
bde518fa13 [CI] Update i18n-node-defs GH action (#3047) 2025-03-14 12:08:08 -04:00
Chenlei Hu
c34be53f4d [Bug] Handle null return value from createBounds (#3046) 2025-03-14 12:01:37 -04:00
Christian Byrne
412500ea48 Add pointer events back on video preview widget (#3044) 2025-03-14 11:41:48 -04:00
Christian Byrne
d1c53a2eb5 Fix video preview widget computed min height (#3043)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 11:39:54 -04:00
Christian Byrne
af0d0c6e39 Add Wan 2.1 template title translations (#3042)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-14 11:35:54 -04:00
Comfy Org PR Bot
9f0abac57b [chore] Update litegraph to 0.10.7 (#3039)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 16:16:05 +11:00
Comfy Org PR Bot
20dc103aa9 0.10.7 (#786)
Patch version increment to 0.10.7

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 03:24:42 +00:00
filtered
cd65c4bfea Fix regression in #782 undo fails via context menu (#785)
Only breaks when adding reroute via context menu.
2025-03-14 03:09:17 +00:00
filtered
24c2f2b712 [chore] Add test expections for Litegraph 0.10.6 (#3038)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-14 13:29:25 +11:00
Comfy Org PR Bot
7450e61b10 [chore] Update litegraph to 0.10.6 (#3037)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 12:57:58 +11:00
Comfy Org PR Bot
680cf631e0 0.10.6 (#784)
Patch version increment to 0.10.6

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 12:50:51 +11:00
filtered
bd17247b4f Centre reroutes spawned via link context menu (#782)
- Centre reroutes spawned via link context menu
- Fix changeTracker history for reroute context menu
2025-03-14 12:46:40 +11:00
filtered
48483670f5 Fix #781 regression in reconnect floating reroutes (#783)
- Follow-up on #781
- Fixes regression when reconnecting a reroute chain from an input
2025-03-14 01:41:52 +00:00
Christian Byrne
05dd587928 [Manager] Add Algolia search (#3036) 2025-03-13 18:24:38 -07:00
filtered
690f7bdfb3 Improve reroute re-connecting UX (#781)
More intuitive UX when connecting reroutes to each other.
- Remove middle reroutes when connecting around them
- Fix earlier reroutes in chain lost when stitching
- Fix all reroutes removed when stitching in reverse
2025-03-14 01:15:38 +00:00
Chenlei Hu
20d2eca51e [Test] Add playwright test on litegraph native reroute (#3033)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-13 21:06:07 -04:00
Chenlei Hu
3b5634623a [Schema] Add floatingLinks to workflow schema (#3034) 2025-03-13 21:05:45 -04:00
Christian Byrne
8f8b5bdcf4 [Manager] Add filtering nodes/packs by 'Installed' or 'All' (#3031)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-13 20:39:27 -04:00
Terry Jia
0cfd6a487a [3d] apply new vue desige (#3018) 2025-03-13 20:37:54 -04:00
Comfy Org PR Bot
744b5fab68 [chore] Update litegraph to 0.10.5 (#3032)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 11:29:26 +11:00
Comfy Org PR Bot
9dda7e937b 0.10.5 (#780)
Patch version increment to 0.10.5

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 11:19:24 +11:00
filtered
b80e1744be Snap to reroute when connecting links (#778)
Add basic snap to reroute on hover; reuses existing slot visual.
2025-03-14 00:18:17 +00:00
filtered
bb822e999f Fix new link from reroute to canvas does nothing (#779)
Resolves regression - now performs the same action as dropping a link
from an output to canvas.
2025-03-14 11:17:44 +11:00
Comfy Org PR Bot
56cea8047d 1.13.5 (#3030)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-13 19:49:38 -04:00
Christian Byrne
27fe7f89be Add enable/disable toggle to node pack info panel (#3026) 2025-03-13 19:48:22 -04:00
Christian Byrne
116a11bd58 [Manager] Allow multiple queued callbacks in manager task queue hook (#3027) 2025-03-13 19:45:53 -04:00
Christian Byrne
58be9ad4c3 [Manager] Refactor node pack card footer to separate component (#3028) 2025-03-13 19:45:09 -04:00
Christian Byrne
1605a37679 [Manager] Refactor pack enable toggle (#3029) 2025-03-13 19:44:53 -04:00
filtered
9315a8810e Increase slot context menu hit box (#777)
Previously, gap between slots was the same height as the slot itself.

Gap is now entirely removed, bringing it inline with the
previously-modified snap and link connection hit boxes.
2025-03-13 22:30:22 +00:00
filtered
034692120e [Refactor] Replace deprecated getConnectionPos (#776)
Uses `getInputPos` or `getOutputPos` where appropriate.
2025-03-13 22:19:28 +00:00
Comfy Org PR Bot
c1d17b64b0 [chore] Update litegraph to 0.10.4 (#3025)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-14 09:13:53 +11:00
filtered
36f197b34e Fix move links & drop on canvas ignores reroutes (#775)
Moving links onto the canvas re-connects existing reroutes after picking
a new node.
2025-03-13 20:56:07 +00:00
Comfy Org PR Bot
d59cc61a21 0.10.4 (#774)
Patch version increment to 0.10.4

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-14 07:18:07 +11:00
filtered
e6a914117b Add floating reroutes (#773)
### Floating reroutes

Native reroutes can now be kept in a disconnected state.

Link chains may be kept provided they are connected to _either_ an input
or an output. By design, reroutes will be automatically removed if both
sides are disconnected.
2025-03-13 19:56:57 +00:00
Chenlei Hu
46fa50f232 [i18n] Add translation to mask editor. (#3024)
Co-authored-by: samnyan <4137880+samnyan@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
2025-03-13 14:14:50 -04:00
Christian Byrne
a7d3a74daa Fix download gated HF models (#3004) 2025-03-13 13:54:40 -04:00
Christian Byrne
8b69b280fa Add node pack actions: install, uninstall, enable, disable, change version (#3016)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-13 13:53:56 -04:00
drozbay
fe5e4e0d8a Fix name of SaveWEBM node for applying output filename text replacements (#3021)
Co-authored-by: ozbayb <17261091+ozbayb@users.noreply.github.com>
2025-03-13 13:52:16 -04:00
Chenlei Hu
d0e1998415 [TS] Add null-checks for LGraphNode layouts (#772)
Ref: https://github.com/Comfy-Org/litegraph.js/issues/616
Resolves https://github.com/Comfy-Org/litegraph.js/issues/770

This PR adds null-checks to various part of layout code to avoid we get
into irrecoverable state.
2025-03-13 13:50:04 -04:00
filtered
18811f50fc Add serialisation support for floating links (#771)
Adds the serialisation code to support the new floating links impl.
2025-03-13 15:20:14 +00:00
filtered
df36b23db8 [TS] Prefer narrow interface - readonly network (#769)
Uses new readonly link network interface in APIs that do not require
write.
2025-03-13 15:00:57 +00:00
Chenlei Hu
067a0ea376 [Bug] Fix absolute path issue for workflow templates (#3020) 2025-03-13 10:57:21 -04:00
filtered
835e22d754 [Cleanup] Removed unused convenience setter - reroutes (#768)
- New features are making the reroutes convenience setter unmanageable.
- Not currently in use.
- Prefer `configure()`, as it includes validation.
2025-03-13 14:53:26 +00:00
filtered
2e9f877bbd [Cleanup] Reroute and serialisation (#767)
- Fixes root cause of minor in-memory-only corruption when deleting
reroutes from output slots
  - Already automatically corrected via serialisation
- If `reroutes` or `links` are empty arrays, removes them from newer
object-based serialised output entirely
- Minor refactors
- Removes unused code
- Fixes some serialisation types
- Adds `ReadonlyLinkNetwork` interface
2025-03-13 14:40:12 +00:00
Comfy Org PR Bot
661934156c [chore] Update Comfy Registry API types from comfy-api@4b71b92 (#3017)
Co-authored-by: christian-byrne <72887196+christian-byrne@users.noreply.github.com>
2025-03-13 03:37:34 -07:00
Comfy Org PR Bot
e6ccdccce3 1.13.4 (#3012)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-12 21:34:48 -04:00
filtered
bcaeccfc45 Fix #346 last reroute is never deleted (#766)
Clears the reroutes in extras when exporting for serialisation, if none
exist.

- Resolves #346
2025-03-13 00:35:05 +00:00
filtered
486c5ad6c0 [Refactor] Split link render code to private method (#765)
- Enables floating reroutes
- Allows rendering logic for a chain of reroutes to be called without a
real `LLink` connected to an input
- Deprecates unused `visible_links` array
2025-03-13 00:00:52 +00:00
filtered
cca2ac28e0 [Refactor] Prefer for loop over reduce (#764)
- Follow-up on #763
2025-03-13 10:12:04 +11:00
Chenlei Hu
77465113cd Implement _.pick to simplify serialization (#763)
Simplify the serialization code, so that we only write each prop once.
2025-03-12 16:08:54 -04:00
filtered
9dd0ff3eb3 Fix zoom to nodes (#762)
- Resolves #761
2025-03-12 18:53:57 +00:00
Chenlei Hu
e1e8fcf62c [TS] Type various WidgetOption props (#3010) 2025-03-12 14:44:50 -04:00
Comfy Org PR Bot
07d7c533da 0.10.3 (#760)
Patch version increment to 0.10.3

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-13 04:25:19 +11:00
Christian Byrne
d133aeb614 Add Comfy Manager store (#3007) 2025-03-12 12:44:57 -04:00
Christian Byrne
e371880a4e [Style] Remove unused classes (#3005) 2025-03-12 09:36:44 -07:00
Chenlei Hu
bcd76ba49b Vue component multi-select widget (#2987) 2025-03-12 12:03:21 -04:00
dependabot[bot]
aad7ded636 Bump @babel/runtime from 7.24.7 to 7.26.10 (#3002)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 11:00:25 -04:00
Christian Byrne
3e8ef33cbc Fetch model metadata for Civitai models embedded in workflows (#2994) 2025-03-12 10:43:15 -04:00
Christian Byrne
0facb0458b Whitelist RealESRGAN_x4Plus model (#2995) 2025-03-12 10:42:19 -04:00
Christian Byrne
fd6aae141a Rename 'ControlNet' template to 'Scribble ControlNet' (#3000) 2025-03-12 10:42:04 -04:00
Christian Byrne
9be090f929 [Style] Improve error message in missing models dialog (#2997) 2025-03-12 10:41:31 -04:00
Chenlei Hu
313f32b094 Wrap widget value in API format workflow (#2989) 2025-03-12 10:00:05 -04:00
Comfy Org PR Bot
d76391b682 1.13.3 (#2990)
Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-11 21:44:29 -04:00
Chenlei Hu
3c68a1da2c [CI] Directly publish release for main branch release (#2991) 2025-03-11 21:44:14 -04:00
Christian Byrne
3de1ef993e Fix image not shown on PreviewImage (#2988) 2025-03-11 19:30:16 -04:00
filtered
6805643204 Snap to widget - fast widget conversion (#758)
- Initial basic impl.
- Tracking issue for proper impl. #757
2025-03-11 19:28:15 +00:00
filtered
a26a5c9a87 [Refactor] Prefer param destructuring over manual (#756)
- Replaces manual runtime destructuring with built-in param
destructuring
- Standardises naming
- Reorders deprecated code
2025-03-11 18:19:56 +00:00
Comfy Org PR Bot
29df14f477 [chore] Update litegraph to 0.10.2 (#2984)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-12 04:14:55 +11:00
Comfy Org PR Bot
e4e7d53fcc [chore] Update litegraph to 0.10.1 (#2983)
Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-12 03:48:42 +11:00
filtered
fbcf5315f4 [CI] Fix release workflow PR message (#755)
Fixes missing word in PR body.
2025-03-12 03:48:21 +11:00
filtered
27873d0351 [Cleanup] Remove duplicate code (#754)
- Removes null widget skip - this _should_ throw
- Removes widget locator that was on LGraphCanvas - canvas should not
functions that find things in graph space.
2025-03-11 16:41:37 +00:00
Comfy Org PR Bot
b223c60cd0 0.10.2 (#753)
Patch version increment to 0.10.2

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-12 03:32:14 +11:00
filtered
a7f2ff16a9 [TS] Remove optional from widget y and type (#752)
- Fixes widget `type` marked as optional - it is required
- Fixes widget `y` marked as optional - now initialised to 0
2025-03-11 15:46:10 +00:00
filtered
8fa970ffba Standardise widgets - always initialize y to 0 (#2982) 2025-03-11 11:31:03 -04:00
Chenlei Hu
d4c3685326 [TS] Type Clipspace.widgets (#2981) 2025-03-11 10:49:50 -04:00
filtered
f6c605434b Fix fast widget connect indicator (#751)
Remains as visual artifact when pointer leaves widget.
2025-03-11 14:49:19 +00:00
Chenlei Hu
ebb030c401 [Bug] Fix mask editor saving (#2979) 2025-03-11 10:13:18 -04:00
filtered
9981d19b36 Fix connecting link regressions (#750)
- Fix move link creates link bypassing reroutes
- Fix move link creates new link instead of moving
2025-03-11 14:10:42 +00:00
Chenlei Hu
db6a25a092 [Bug] Fix overwriting of hideOnZoom widget option (#2978) 2025-03-11 09:57:57 -04:00
Christian Byrne
a90b6519b5 [Style] Remove underline hover effect in custom nodes manager (#2977) 2025-03-11 09:49:20 -04:00
Christian Byrne
c2006412de Fix custom nodes license parsing logic (#2975) 2025-03-11 09:49:09 -04:00
Christian Byrne
a046e00bc3 Add node pack version selector dropdown (#2973)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-11 09:48:25 -04:00
Christian Byrne
b347693f4d Fix manager info panel metadata text (#2971) 2025-03-11 09:47:47 -04:00
Christian Byrne
c4ca694d1d Add composable to manage ComfyUI-Manager task queue (#2970) 2025-03-11 09:47:29 -04:00
filtered
5ed264ce8e Allow reroutes to be re-connected (#749)
- Resolves #305
- Allows links to be dragged from inputs to reroutes
2025-03-11 13:47:26 +00:00
Christian Byrne
cd7e2d7b91 Add Comfy Manager service (#2968) 2025-03-11 09:46:21 -04:00
Christian Byrne
46029a5ce3 Add ComfyUI-Manager API types (#2967) 2025-03-11 09:45:43 -04:00
Christian Byrne
4123cb611c [Style] Fix registry search filter dropdown style (#2974) 2025-03-11 06:24:56 -07:00
Comfy Org PR Bot
35dd90b6b0 0.10.1 (#748)
Patch version increment to 0.10.1

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-11 13:10:58 +00:00
filtered
314095a3c1 Enable reroutes globally (#747)
Removes the opt-in to enable flag for reroutes, which are now a
permanent feature.
2025-03-11 12:43:59 +00:00
filtered
03bf81cc1b [Cleanup] Remove redundant reroute opt-in setting (#2972)
Co-authored-by: github-actions <github-actions@github.com>
2025-03-11 23:25:16 +11:00
filtered
35ec2a3fa1 [API] Remove unused drag & drop interface (#746)
Not maintained or functional.
2025-03-11 11:46:22 +00:00
filtered
35827b8494 [Refactor] Move animate code to DragAndScale (#745) 2025-03-11 11:31:21 +00:00
filtered
58011e77b6 [Refactor] Simplify & standardise canvas code (#744)
Various clean up & minor refactors / nits.
2025-03-11 10:21:11 +00:00
filtered
8ba671a5eb Fix animate to bounding rect interpolation (#743)
- Resolves #738
2025-03-11 09:41:28 +00:00
Comfy Org PR Bot
5531a884a6 0.10.0 (#742)
version increment to 0.10.0

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-10 14:38:38 -04:00
Chenlei Hu
214defbdb4 [TS] Remove IBaseWidget.element prop (#741)
Remove the prop as it is a impl detail of the frontend.
2025-03-10 14:34:09 -04:00
Chenlei Hu
db680c96ad [Bug] Fix node empty space on converted widget (#740)
Resolves https://github.com/Comfy-Org/litegraph.js/issues/739

This is a temporary measurement to fix the issue. We should probably
consider build a more robust layout mechanism later.
2025-03-10 14:31:50 -04:00
filtered
1a482d750b [TMP] Support downstream output widget in serialisation (#735)
- Ref: https://github.com/Comfy-Org/litegraph.js/pull/732#issuecomment-2710796369
2025-03-10 16:05:06 +00:00
filtered
84dad03f4d Remove static circular dependency workaround (#734)
Workaround originally implemented when converting to ES modules, but is
now redundant.

`DEFAULT_EVENT_LINK_COLOR` confirmed unused in code search (litegraph
events).
2025-03-10 15:29:33 +00:00
filtered
c5cb4cea43 [TS] Clean up serialisation interfaces (#733)
Removes legacy generic & dynamic typing, and standardises TS styles.
2025-03-10 15:07:56 +00:00
filtered
e632f5c69b Fix all unknown slot props are serialised (#732)
Ensures only specified properties are cloned for serialisation.
2025-03-10 12:20:34 +00:00
filtered
4589938ceb [TS] Fix invalid type assertion (#731)
- Follow-up on #728
2025-03-10 08:55:51 +00:00
VeeloxShadow
acdbbd547e Fix downstream extension context menu does not load (#728)
- Adds optional chaining for event target
2025-03-10 19:41:46 +11:00
Comfy Org PR Bot
9c60788948 0.10.0-0 (#727)
version increment to 0.10.0-0

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-09 00:21:06 +00:00
filtered
c0bfe5489f [API] Add LinkConnector - replaces connecting_links (#726)
### LinkConnector

Replaces the minimal-change effort of `connecting_links` with a more
reliable implementation.

- Subscribable, event-based API
- Uses browser-standard `e.preventDefault()` to cancel `before-*` events
- Uses standard `state` POJO - can be proxied without issue
- Structures code and separates concerns out of `LGraphCanvas`
- Link creation calls can now be made from anywhere, without the need
for a rewrite
- New canvas sub-components now live in `src/canvas/`

### Rendering

- Skips link segments by setting a `_dragging` bool flag on the LLink or
Reroute
- Moves some previously nested code to event listeners, configured in
the `LGraphCanvas` constructor

### Deprecation

`LGraphCanvas.connecting_links` is now deprecated and will later be
removed.

Until it is removed, to prevent breaking extensions it will continue to
be set and cleared by a legacy callback. The contents of this property
are ignored; code search revealed no exentsions actually modifying the
array.
2025-03-08 23:48:45 +00:00
filtered
8e59fbfaa2 Prep link connector (#725)
Prepration for LinkConnector replacement

- Simplifies code
- Minor perf improvement
- nits and clean up
2025-03-08 20:43:27 +00:00
filtered
5ab9d9d25c Warn users if calling connectSlots incorrectly (#724)
Prevents silent failures from going unnoticed.
2025-03-08 18:21:10 +00:00
filtered
68945cb54d Remove getTime workaround and Node.js type bleeding (#723)
- Removes legacy timer workaround (redundant on Chrome v6 / Node.js v16)
- Removes old type workarounds
- Improves type inference speed
2025-03-08 13:27:49 +00:00
filtered
7119480f84 [CI] Add pre-release options (#722)
Adds release steps to README.
2025-03-08 16:20:21 +11:00
filtered
8153e65b3b [CI] Pin third party action to SHA (#721)
Pins third party GitHub action to specific SHA. This will need to be
updated, but removes the possibility of any unexpected surprises (new
bugs / security concerns).
2025-03-08 04:35:40 +00:00
Comfy Org PR Bot
a9ace409a4 0.9.9 (#720)
version increment to 0.9.9

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-07 13:22:05 -05:00
Chenlei Hu
c21510773e [Bug] Fix link drop on multi-line string dom widget (#718)
Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/2905
2025-03-07 10:28:07 -05:00
filtered
20bdc47550 [API] Add convenience methods to LGraphNode (#717)
- getInputOnPos
- getOutputOnPos
- getSlotOnPos
- Follow-up on #716 
- Uses more explicit names for class methods moved to module functions
2025-03-07 14:38:55 +00:00
filtered
3e44f6a0c1 [API] Add improved slot locator functions (#716)
- Returns object with slot, index, and pos
- Locate-by-type returns object with slot & index
- Uses standard `undefined` return for concise chaining & validation
- Free 10x perf increase over getConnectionPos (used basic random data
to test, out of curiosity)
2025-03-07 13:18:06 +00:00
filtered
84fad5b8a5 [Perf] Fix unnecessary canvas redraw (null vs undefined) (#715)
Fixes regression added in TS strict conversion. A fallback to `null`
added to match the TS type, however value being stored was actually
uncaught use of `undefined`.

`null` !== `undefined` -> redraw every frame the pointer moves
2025-03-07 11:50:53 +00:00
Comfy Org PR Bot
c1af1e29d2 0.9.8 (#714)
version increment to 0.9.8

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-07 09:31:10 +00:00
filtered
7e2009188d [Refactor] Split functions out to file (#713)
Splits code out from `LGraphCanvas`.
2025-03-07 09:07:38 +00:00
Comfy Org PR Bot
1d31635072 0.9.7 (#712)
version increment to 0.9.7

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-06 15:22:28 -05:00
Chenlei Hu
54f96ca028 Add LGraphCanvas.isNodeVisible (#711)
Add LGraphCanvas.isNodeVisible or more efficient node visibility checks.
2025-03-06 15:20:51 -05:00
filtered
a5c2464c88 [Refactor] Simplify code - getConnectionOnPos (#710)
Improves readability of `LGraphNode.getConnectionOnPos`.
2025-03-06 12:00:51 +00:00
filtered
e62ef2e0aa [Refactor] Prefer undefined over explicit null (#709)
- Ref: #595
2025-03-05 10:22:51 +00:00
filtered
7a2af7008b [Refactor] Rename to connectSlots (#708)
- Follow-up on #703 
- Changes name to match original intent
2025-03-05 19:01:26 +11:00
Comfy Org PR Bot
493e374b7d 0.9.6 (#706)
version increment to 0.9.6

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-04 15:44:29 +00:00
filtered
40137176f3 [chore] Update package - @node/types (#707)
Match node types lib to TypeScript version.
2025-03-04 15:42:50 +00:00
filtered
b63ef93bb7 Update package - TypeScript 5.8 (#705)
Updates to latest TypeScript package.
2025-03-04 15:07:01 +00:00
filtered
68f6f2d2c8 [chore] Update eslint packages (#704)
Use latest packages for eslint, typescript eslint, and stylistic.
2025-03-04 14:42:43 +00:00
filtered
3411ecbc15 [Refactor] Allow bypassing legacy duck-typed API (#703)
`LGraphNode.connect()` has been altered many times and attempts to
handle too many scenarios in a single public call.

- Moves link creation to a separate function
- Allows the legacy duck-typed API to continue functioning as-is
2025-03-04 14:23:53 +00:00
filtered
8a3487a209 Remove redundant code - LGraphNode (#702)
- Removes unreachable and redundant code.
- Fixes TS type
2025-03-05 00:58:02 +11:00
filtered
8bee428375 [API] Remove unused LGraph.onNodeConnectionChange (#701)
Confirmed unused via code search.
2025-03-04 09:18:38 +00:00
filtered
e4a41669f6 Fix moving output links loses subsequent reroutes
Now maintains any level of reroute chain complexity when moving links.
2025-03-04 07:25:10 +11:00
Comfy Org PR Bot
91afd9305e 0.9.5 (#700)
version increment to 0.9.5

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-04 06:21:41 +11:00
filtered
32b6b7eff9 Fix reroutes lost when moving links via outputs (#699)
- Resolves #309

https://github.com/user-attachments/assets/70c8b9ba-b4e6-4293-a254-6ae95930d1f1
2025-03-03 19:16:55 +00:00
Comfy Org PR Bot
10f2f2ca67 0.9.4 (#696)
Patch version increment to 0.9.4

Co-authored-by: webfiltered <176114999+webfiltered@users.noreply.github.com>
2025-03-03 17:54:49 +00:00
filtered
aca81a99c8 Fix regression in legacy search (#698)
- Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/2828
- Issue caused by earlier instantiation of `input` object
2025-03-03 17:42:00 +00:00
filtered
b227eefbdd Improve connecting link logic (#697)
### Current

- Connections are disconnected the moment a link starts being dragged
- Reseating a connection where it came from creates a new connection
- If the process is somehow interrupted, the links are already gone

### Proposed

- Connection is disconnected after a new connection is made
- Rendering is bypassed for the link segment being moved
- Does nothing if dropping a link exactly where it came from
- Adds early return when trying to connect a node to itself
2025-03-03 17:03:31 +00:00
filtered
cef6ab6ced Improve link drag & drop (#380)
- Resolves
https://github.com/Comfy-Org/litegraph.js/issues/309#issuecomment-2508726168
- Output issue still pending
- Splits connecting links `pointerup` handler to separate function,
which can now be called from `CanvasPointer` callbacks
  - Minor refactor; no functional changes

### Behaviour change

When moving existing links from an input slot, the link will not be
disconnected until the drop event occurs.

### Current

Shift + drag


https://github.com/user-attachments/assets/0b98f9bf-3d5f-467e-9a9b-e5695e5a0d0b

### Proposed

Shift + drag

https://github.com/user-attachments/assets/0bc36215-0247-41da-8050-e8df09addf23
2025-03-04 01:26:56 +11:00
filtered
37b9798602 [CI] Rename workflow files (#695)
- Follow-up on #694

Split the file rename out for easier diffs.
2025-03-03 09:47:10 +00:00
filtered
1b10b0b0b6 [CI] Update workflow names & add descriptions (#694)
- Adds descriptions to workflows
- Auto-formats workflows
- Standardises formatting
2025-03-03 20:35:06 +11:00
Comfy Org PR Bot
c128551af5 0.9.3 (#693) 2025-03-03 06:31:14 +00:00
bymyself
83fb246119 Fix Selection Marquee display is offset when DPI < 1 (#692)
Fixes https://github.com/Comfy-Org/ComfyUI_frontend/issues/2481. The
canvas scaling behavior is not consistent with DPI which is the source
of many bugs. To verify, add console log somewhere:
2025-03-03 17:06:15 +11:00
Comfy Org PR Bot
2a12864a67 0.9.2 (#690)
Automated version bump to 0.9.2

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-02 21:25:12 -05:00
Chenlei Hu
4cbf12849e [BugFix] Fix add node via context menu (2) (#689)
https://github.com/Comfy-Org/litegraph.js/pull/647 failed to convert
`return` to `continue` when converting forEach to for-lop.
2025-03-02 21:21:39 -05:00
Chenlei Hu
9af4ee120c Revert "[BugFix] Fix adding node via context menu" (#688)
Reverts Comfy-Org/litegraph.js#682

Reason: Revert improper fix.
2025-03-02 21:15:45 -05:00
Chenlei Hu
1200c0fd91 [CI] Sync workflow_tempaltes fetch (#687)
Sync https://github.com/Comfy-Org/ComfyUI_frontend/pull/2775
2025-03-02 19:12:44 -05:00
Comfy Org PR Bot
ff43f183d1 0.9.1 (#686)
Automated version bump to 0.9.1

Co-authored-by: huchenlei <20929282+huchenlei@users.noreply.github.com>
2025-03-02 18:52:36 -05:00
Chenlei Hu
66a9214de6 [CI] Use pr bot PAT (#685) 2025-03-02 18:52:28 -05:00
Chenlei Hu
1407f1d720 [nit] main -> master (#684) 2025-03-02 18:41:55 -05:00
Chenlei Hu
326670206d [BugFix] Fix adding node via context menu (#682)
Resolves https://github.com/Comfy-Org/ComfyUI_frontend/issues/2814

Culprit: https://github.com/Comfy-Org/litegraph.js/pull/647
2025-03-02 18:38:31 -05:00
Chenlei Hu
017a473f5b [CI] Use gh action to bump version (#683) 2025-03-02 18:38:22 -05:00
filtered
f6653ef45b 0.9.0 (#681)
Automated version bump to 0.9.0
2025-03-02 15:35:12 +00:00
filtered
af7db40fce [chore] Clean up ignores after strict mode enabled (#680)
- Replaces all `ts-ignore` with `ts-expect-error`
- Resolves https://github.com/Comfy-Org/litegraph.js/issues/578
2025-03-02 14:56:15 +00:00
filtered
165cf210d3 Globally enable TypeScript strict mode (#679)
- Enables TypeScript strict mode, repo-wide
- Prevents `tsc` from emitting files
- Removes `typescript-strict-plugin` package
- Removes redundant CI step
2025-03-02 14:45:37 +00:00
filtered
a815ce92a8 Add final refactoring to enable TS strict (#678)
- Removes long-deprecated onMenuNodePin
  - Code search empty
- Fixes TS types
- Minor refactors to ensure type-safety
- Adds explicit throws and null checks
2025-03-02 14:42:24 +00:00
filtered
972527de70 [Refactor] Use strict mode in Add Node menus (#677)
- Improves TS types
- Adds type guards / null checks
2025-03-02 14:17:25 +00:00
filtered
77b274f27f Add link context menu info to replace console error (#676)
Shows a single menu item with an error message when a link is corrupt.
2025-03-02 14:10:43 +00:00
filtered
b1885ebec8 Remove redundant code - onGetInputs / onGetOutputs (#674)
- Removes unused context menu for optional in/outputs
- At the top of the node context menu, greyed out `Inputs` and `Outputs`
- API does not fit with current design
- If required, rewrite would be simpler
2025-03-02 13:47:48 +00:00
filtered
6cb9131035 [TS] Use strict mode in LGraphCanvas (#673)
- Adds remaining TS nullable types
- Adds type guards to allow strict mode
  - Uses explicit throw in places that would throw regardless
- Adds ts-ignore that must be removed later
  * [ ] #578
2025-03-02 13:34:02 +00:00
filtered
41e552b719 0.9.0-alpha.0 (#672)
Pre-release version update to: 0.9.0-alpha.0
2025-03-02 12:45:08 +00:00
filtered
02d991d669 [Refactor] Minor refactors to support strict mode (#671)
- Removes unnecessary `null`-init
- Deprecates unused drag / drop code
- Adds null checks
2025-03-02 09:02:29 +00:00
filtered
1aba15bbca Fix incorrect links highlighted (#670)
Fixes rare issue where incorrect links could be highlighted (and
seemingly remain highlighted).

Requires corrupt links & null coercion.
2025-03-02 08:49:13 +00:00
filtered
78175e2c1b [TS] Add strict nullability to LGraphCanvas (#669)
- Updates typing in copy & paste
- Clean up
2025-03-02 08:34:26 +00:00
filtered
d597271954 Add runtime type guards to search box (#668)
- Prevents unnecessary property access exceptions
- Adds TS strict types
- Removes inline polyfill for `Array.filter`
2025-03-02 08:12:15 +00:00
filtered
9b6a78e7df [Refactor] Prefer createElement over innerHTML (#667)
- Part of TS strict conversion
- Improves type safety of canvas panel / dialog functions
- Removes more instances of pointer event wrapper
2025-03-02 02:47:22 +00:00
filtered
193b09999f [TS] Use strict mode in dialog & panel (#666)
Includes minor refactors to retain inferred types in branches.
2025-03-02 02:27:10 +00:00
filtered
6a42484669 [TS] Use strict nullability in LGraphCanvas (#665)
- Adds runtime null checking
- Converts canvas context to non-nullable
- Adds explicit throws for some edge cases
- Improves TS types
2025-03-01 22:44:34 +00:00
filtered
539fa91b0d [TS] Use strict mode in LGraphCanvas (#664)
- Prefer `undefined` over `null`
- Primarily nullable type updates
2025-03-01 21:58:50 +00:00
filtered
ab25d1fc6e [Cleanup] Remove redundant code (#663)
Removes:

- Unused option from public API `getWidgetAtCursor` - use without params
- Unused workaround impl. for WebGL
- Invalid code (incorrect `tabIndex` casing)
2025-03-01 17:54:35 +00:00
filtered
ecb69a4f1d Update README to reflect repo status (#662)
Rewrites or restructures most of the former README, so that it is
relevant to this fork instead of the original.

- Maintains original contributors, and places original
projects/description under an expanders
- Removes all references to the editor
- Removes information about the removed built-in nodes
- Updates code samples
- Reformats various sections
2025-03-02 03:35:16 +11:00
filtered
7b4bea8e62 Remove deprecated code - webGL (#660)
Removes long-deprecated WebGL code.
2025-03-01 16:33:17 +00:00
filtered
31d3168201 0.8.100 (#661)
Automated version bump to 0.8.100
2025-03-02 03:24:41 +11:00
filtered
ec34498264 Fix compiler warning - incorrect schema order (#658)
Resolves warning about `types` export being loaded last.
2025-03-01 15:18:42 +00:00
Chenlei Hu
1e7897930c [CI] Update frontend install method (#659)
Sync https://github.com/Comfy-Org/ComfyUI_frontend/pull/2783
2025-03-01 10:18:14 -05:00
filtered
177a5a0d54 [CodeHealth] Remove wheel listener & event wrapper (#656)
- Replaces the long-deprecated `mousewheel` and `DOMMouseScroll` event
listeners with `wheel` listener
  - Verified no change in Chromium behaviour (desktop, mouse)
- Removes redundant pointer listener wrapper
- Fixes types
2025-03-01 13:18:15 +00:00
Miguel C
5721b1c27c [Refactor] Fix step calculation in Knob Widget (#651)
Removes a stray console.log and fixes the step calculation.
2025-03-01 23:36:55 +11:00
filtered
c473130499 [TS] Use strict mode in LGraphCanvas (#654)
- Prefer creating HTML elements in JS and `append()` over innerHTML &
`querySelector()`
- Removes redundant code
- Adds/fixes TS types
2025-03-01 11:52:42 +00:00
filtered
bad923a7f0 [Refactor] Remove deprecated mousewheel events (#652)
Prefer "wheel" event (added around Chrome v31).
2025-03-01 11:34:23 +00:00
filtered
5f95dd1853 [CI] Update frontend test to new vitest scripts (#653)
- Ref: https://github.com/Comfy-Org/ComfyUI_frontend/pull/2779/
2025-03-01 11:17:16 +00:00
filtered
b36bf3d4a2 [CodeHealth] Apply modern standards to LGraphCanvas (#650)
- Prefer template string
- Prefer explicit throw to undefined TypeError
- Remove unnecessary `this` assignment
2025-02-28 22:08:23 +00:00
filtered
c4faaf4210 [TS] Fix ContextMenu types (#649)
- No runtime changes
- Drastically improves ContextMenu type accuracy / safety
- Allows TS strict conversion
2025-02-28 14:52:07 +00:00
filtered
b877312336 [Refactor] Fix TS types, remove redundant code (#648)
Minor clean up and graph null deref checks.

Minor runtime change: due to optional chaining, it is possible a
downstream consumer is catching this extremely rare behaviour on purpose
and handling it.
2025-02-28 11:13:23 +00:00
filtered
4365873039 [Refactor] Prefer NullGraphError & standardisation (#647)
- Best effort code search for convert explicit `null` to `undefined`
- Prefer explicit throw over `TypeError`
- Prefer template strings
2025-02-28 20:16:34 +11:00
filtered
b4688e18f9 [Refactor] Prefer includes over indexOf -1 (#646)
Enables ESLint auto-fix rule.
2025-02-28 08:53:29 +00:00
filtered
7b19abf83a [TS] Use strict mode in Canvas: initializers (#645)
- Code search verified no consumers expecting explicit null on callbacks
(best effort)
- Removes redundant code
2025-02-28 08:48:53 +00:00
Chenlei Hu
955d20d8ea 0.8.99 (#644)
Automated version bump to 0.8.99
2025-02-27 16:27:06 -05:00
Chenlei Hu
c66ca2ae66 Remove magic 10% scale on numeric widget step (#643)
There are external code still dependent on the fact that
Widget.options.step is scaled 10x, so the 10x-ed value is still kept
there, while we use the new unscaled step2 within our code now.

Ref:
https://cs.comfy.org/search?q=context:global+%22step+/+10%22&patternType=keyword&sm=0
2025-02-27 16:23:53 -05:00
filtered
0a09ecc7ac [TS] Use strict mode in LGraphNode (#642)
- Adds minor type coercions to resolve type errors
- Deprecates unused public APIs
- 7a0336e3ad7239b7bb588bbbe7912322257e9ae2 works around a bug in the tsc
strict plugin
- Adds ts-ignore that must be removed later
  * [ ] #578
2025-02-27 19:03:42 +00:00
filtered
fab386275c [Refactor] Clean up LGraphNode ahead of TS strict (#641)
Preparation for TS strict conversion. Simplifies code & improves
readability.
2025-02-27 17:55:11 +00:00
filtered
38dd7b7089 [Refactor] Prefer for..of to incremental for loops (#640)
- Converts incremental for loops to for..of loops
- Improves readability
2025-02-27 16:28:10 +00:00
filtered
be8dc6867e [Refactor] Prefer event listeners to callback props (#637)
N.B.: `onerror` replacement is not a `window` or `Element` instance.
2025-02-27 14:50:39 +00:00
filtered
97bf9de83a [Refactor] Standardise code style - modern JS (#636)
Uses unicorn rules to auto-refactor code.  All verified.
2025-02-27 13:13:32 +00:00
filtered
6737828a2b Lint module entry point (#635)
- Adds module entry point tests
- Manually resolved lint rules for module entry point imports / exports
(autofix could not resolve without causing issues)
2025-02-27 12:02:03 +00:00
filtered
984bd8696c [Dev] Reverse unicorn lint config - on by default (#633)
Sets unicorn linter recommended rules on by default, with individual
rules disabled.

- Issue to track removal of these rules: #629
2025-02-27 10:50:10 +00:00
filtered
2d9c811aa9 [Cleanup] Remove downstream type (#632)
Removes group node type. Now exists downstream where it is used.
2025-02-27 10:38:24 +00:00
filtered
0d8e0fce17 [Refactor] Fix assignment of this to const (#631)
Refactors using arrows funcs or storing the once-off requirement as an
action, removing the need to dereference this inside the function.
2025-02-27 10:32:53 +00:00
filtered
2104f2a8a9 [Refactor] Prefer textContent over innerText (#630)
Only setters are used, so getter differences aren't involved. This may
result in a runtime change to consumers passing a Node that isn't
actually a HTMLElement.
2025-02-27 10:11:07 +00:00
filtered
1e8938ceff Add unicorn lint rules - DOM built-in functions (#628)
- Prefer append(), remove(), replaceAll()
- Wrap nested ternaries in parenthesis
2025-02-27 09:18:25 +00:00
filtered
6f51767451 Add ESLint unicorn plugin (#627)
Rules disabled by default to allow incremental integration.
2025-02-27 08:41:51 +00:00
Chenlei Hu
9c8cc571e2 0.8.98 (#626)
Automated version bump to 0.8.98
2025-02-26 19:58:05 -05:00
Chenlei Hu
e8c238b70e Update serialisation.ts (#624)
Update ISerialisedNodeInputSlot.widget type. Overwrite original widget
prop type.
2025-02-26 16:40:36 -05:00
Miguel C
fbcc396880 Knob (#600)
Resolved issues with history due to merges, opened a new pull request.
A more visual widget that the usual number/slider. Differentiates itself
from the functionality of a slider by not setting the value on click,
only stepping, emulating an actual knob.

- Left/Right takes 1 step at a time
- Up/Down moves 1% or 1 step, whichever is larger
- Move + Shift moves by 10% or 1 step, whichever is larger

This also includes a fixes to some size logic.
- [x] ~~Still missing being able to drag the knob itself, as the
clicking of the widget is not recognized if it's outside of where a
normal height widget would be.~~

![knob-node](https://github.com/user-attachments/assets/9d0ce70d-a220-49d0-987f-8dcef2b1d299)
2025-02-26 15:07:32 -05:00
Chenlei Hu
963e4b0904 [Type] Mark name as required prop for IBaseWidget (#623) 2025-02-26 15:03:31 -05:00
Chenlei Hu
d20aab757c Serialize NodeInputSlot.widget (#622)
Serialize linked widget on node input slot properly according to current
save format in
76818b54e6/src/extensions/core/widgetInputs.ts
2025-02-26 14:15:31 -05:00
filtered
c166a34fd8 Add ESLint rules to enforce existing lib style (#621)
Adds a few rules that enforce consistency across the repo.

Only change is one top-level const arrow function is now a function
definition.
2025-02-26 18:12:26 +00:00
Miguel C
7e6b64f216 Fix widget sizing logic in LGraphCanvas and LGraphNode (#609)
This fixes an issue with widget heights not coinciding with actual
computed heights.
<img
src="https://github.com/user-attachments/assets/50b4b86c-8de8-4844-9a17-6f18d32e7f5e"
height="128" alt="old">old
<img
src="https://github.com/user-attachments/assets/c34e432a-6941-469e-99cd-df15c0a527de"
height="256" alt="new">new
2025-02-26 10:56:30 -05:00
Chenlei Hu
939e9c0a2f Update devtools ref (#620)
Sync https://github.com/Comfy-Org/ComfyUI_frontend/pull/2733
2025-02-26 10:56:19 -05:00
filtered
0e9b8b03b7 Enforce curly braces in multi-line if statements (#619)
Removes formatters' ability to print code that goes to a new line, but
uses no braces to delineate.

It becomes more difficult to follow when using JS-style indents (two
spaces).

No effort required - braces added by auto-fixer.
2025-02-26 15:08:23 +00:00
filtered
a43109d58a [TS] Use strict mode in ContextMenu (#618)
- Adds minor type coercions to resolve type errors
- Uses the same type-coercion behaviour of the target DOM object
properties
- Resolves a long-standing type issue in context menu interfaces
(converts to generic - `unknown` by default)
- Fixes several incorrect types
- Adds ts-ignore that must be removed later
2025-02-26 14:29:45 +00:00
filtered
3040924d76 [TS] Use strict mode in CanvasPointer, measure, and polyfills (#617)
- Adds runtime type guard
- Adds ts-ignore that must be removed later
  * [ ] #578
2025-02-26 13:05:40 +00:00
filtered
0b59c00597 [API] Remove deprecated: DragAndScale mouse (#615)
Removed unused public methods (unmaintained, non-functional):
- bindEvents
- onMouse

`onredraw` is in use by extension authors.

This file now passes TS strict checks.
2025-02-26 11:59:12 +00:00
filtered
6224d2dc06 [Cleanup] Update ESLint rules with stricter auto-fixes (#614)
Stylistic plugin falls short in a few areas when it comes to consistent
lists and chaining. Replaced some key rules with antfu's personal
variants.

`eslint` can now be run repo-wide without params.
2025-02-26 11:12:03 +00:00
filtered
867b9ed316 [nit] Add consistent method chaining linter (#613)
Enforces that chained accessed should **either** all be on one line, or
all on individual lines (same as imports).
2025-02-26 10:11:11 +00:00
filtered
5cdd0581fa Add import / export sort rules (#612)
- Adds ESLint package
- Applies import/export rules to all files
- Uses newline delineated grouping, with type-only imports first
2025-02-26 09:21:33 +00:00
filtered
9ded97d189 [Doc] Add JSDoc linter & general comment clean up (#611)
- Prefer comments above lines over end-of-line comments
  - Makes auto-formatting easier
  - Subjective, but it is generally easier to read in JS
- Standardises JSdoc format
- Auto-fixes for many issues (applies on save w/ESLint extension)
2025-02-26 08:54:18 +00:00
filtered
d849fcd00c [Dev] Make it easier to toggle strict mode (#610)
nit: Allows uncomment instead of typing true every time.
2025-02-26 06:16:56 +00:00
Chenlei Hu
7fab99b362 0.8.97 (#608)
Automated version bump to 0.8.97
2025-02-25 21:26:49 -05:00
Chenlei Hu
953ae434ea Type serialized NodeSlot (#605) 2025-02-25 19:38:14 -05:00
Chenlei Hu
dbe016b934 Move widget prop to INodeInputSlot (#606)
Ref: https://github.com/Comfy-Org/ComfyUI_frontend/pull/2728
2025-02-25 19:37:40 -05:00
Chenlei Hu
cdbd0899e2 [Reland][TS] Use strict mode in LGraphNode - part 2 (#604)
Reverts Comfy-Org/litegraph.js#603
2025-02-25 16:39:31 -05:00
Chenlei Hu
67d8c3177a Revert "[TS] Use strict mode in LGraphNode - part 2" (#603)
Reverts Comfy-Org/litegraph.js#601

Reason: breaks legacy reroute

On inserting a workflow with legacy reroute node
```
Uncaught (in promise) NullGraphError: Attempted to access LGraph reference that was null or undefined.
    at RerouteNode.removeOutput (LGraphNode.ts:1425:28)
    at RerouteNode.clone (rerouteNode.ts:215:18)
    at LGraphCanvas.copyToClipboard (LGraphCanvas.ts:3331:29)
    at Object.insertWorkflow (workflowService.ts:350:12)
```
2025-02-25 14:10:27 -05:00
filtered
67ee55ede1 [TS] Use strict mode in LGraphNode - part 2 (#601)
- Guards against nullish `graph`
- [Fix regression in return type -
getInputLink](143ca5f3f2)
- long-standing, so no impact apparently
- Resolves some potential null dereferencing
2025-02-25 13:40:50 -05:00
filtered
f39e1d96e8 [TS] Use strict mode in LLink & Reroute (#602)
- Adds fallback colour if reroute colour is somehow nullish
2025-02-25 18:00:33 +00:00
filtered
4636367de2 [TS] Use strict mode in LGraphNode - initial (#598)
- Part of effort to convert LGraphNode to TS strict
- Adds some small runtime changes - no impact expected, but it is
possible
- Runtime changes are in separate commits from compile-time type changes
- Risk of downstream impact is low
2025-02-25 17:19:27 +00:00
filtered
0b84ca83d8 [TS] Use strict mode in LGraphGroup (#599)
- Adds `NullGraphError` to reduce boilerplate null check code
- Prefer optional `undefined` to explicit `null`
  - Related: https://github.com/Comfy-Org/litegraph.js/issues/595
- Adds strict types
2025-02-25 17:15:48 +00:00
filtered
477d498d6b [API] Remove unused: optional_inputs & outputs (#597)
Code search shows zero usage. If kept, typing properly would require
effort.

Removed:
- `LGraphNode.optional_inputs`
- `LGraphNode.optional_outputs`
2025-02-25 16:33:21 +00:00
dependabot[bot]
fa13b3b240 Bump esbuild, vite and vitest (#596)
Bumps [esbuild](https://github.com/evanw/esbuild) to 0.25.0 and updates
ancestor dependencies [esbuild](https://github.com/evanw/esbuild),
[vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) and
[vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).
These dependencies need to be updated together.

Updates `esbuild` from 0.21.5 to 0.25.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/evanw/esbuild/releases">esbuild's
releases</a>.</em></p>
<blockquote>
<h2>v0.25.0</h2>
<p><strong>This release deliberately contains backwards-incompatible
changes.</strong> To avoid automatically picking up releases like this,
you should either be pinning the exact version of <code>esbuild</code>
in your <code>package.json</code> file (recommended) or be using a
version range syntax that only accepts patch upgrades such as
<code>^0.24.0</code> or <code>~0.24.0</code>. See npm's documentation
about <a
href="https://docs.npmjs.com/cli/v6/using-npm/semver/">semver</a> for
more information.</p>
<ul>
<li>
<p>Restrict access to esbuild's development server (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99">GHSA-67mh-4wv8-2f99</a>)</p>
<p>This change addresses esbuild's first security vulnerability report.
Previously esbuild set the <code>Access-Control-Allow-Origin</code>
header to <code>*</code> to allow esbuild's development server to be
flexible in how it's used for development. However, this allows the
websites you visit to make HTTP requests to esbuild's local development
server, which gives read-only access to your source code if the website
were to fetch your source code's specific URL. You can read more
information in <a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-67mh-4wv8-2f99">the
report</a>.</p>
<p>Starting with this release, <a
href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS">CORS</a>
will now be disabled, and requests will now be denied if the host does
not match the one provided to <code>--serve=</code>. The default host is
<code>0.0.0.0</code>, which refers to all of the IP addresses that
represent the local machine (e.g. both <code>127.0.0.1</code> and
<code>192.168.0.1</code>). If you want to customize anything about
esbuild's development server, you can <a
href="https://esbuild.github.io/api/#serve-proxy">put a proxy in front
of esbuild</a> and modify the incoming and/or outgoing requests.</p>
<p>In addition, the <code>serve()</code> API call has been changed to
return an array of <code>hosts</code> instead of a single
<code>host</code> string. This makes it possible to determine all of the
hosts that esbuild's development server will accept.</p>
<p>Thanks to <a
href="https://github.com/sapphi-red"><code>@​sapphi-red</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Delete output files when a build fails in watch mode (<a
href="https://redirect.github.com/evanw/esbuild/issues/3643">#3643</a>)</p>
<p>It has been requested for esbuild to delete files when a build fails
in watch mode. Previously esbuild left the old files in place, which
could cause people to not immediately realize that the most recent build
failed. With this release, esbuild will now delete all output files if a
rebuild fails. Fixing the build error and triggering another rebuild
will restore all output files again.</p>
</li>
<li>
<p>Fix correctness issues with the CSS nesting transform (<a
href="https://redirect.github.com/evanw/esbuild/issues/3620">#3620</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/3877">#3877</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/3933">#3933</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/3997">#3997</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/4005">#4005</a>,
<a href="https://redirect.github.com/evanw/esbuild/pull/4037">#4037</a>,
<a
href="https://redirect.github.com/evanw/esbuild/pull/4038">#4038</a>)</p>
<p>This release fixes the following problems:</p>
<ul>
<li>
<p>Naive expansion of CSS nesting can result in an exponential blow-up
of generated CSS if each nesting level has multiple selectors.
Previously esbuild sometimes collapsed individual nesting levels using
<code>:is()</code> to limit expansion. However, this collapsing wasn't
correct in some cases, so it has been removed to fix correctness
issues.</p>
<pre lang="css"><code>/* Original code */
.parent {
  &gt; .a,
  &gt; .b1 &gt; .b2 {
    color: red;
  }
}
<p>/* Old output (with --supported:nesting=false) */<br />
.parent &gt; :is(.a, .b1 &gt; .b2) {<br />
color: red;<br />
}</p>
<p>/* New output (with --supported:nesting=false) */<br />
.parent &gt; .a,<br />
.parent &gt; .b1 &gt; .b2 {<br />
color: red;<br />
}<br />
</code></pre></p>
<p>Thanks to <a
href="https://github.com/tim-we"><code>@​tim-we</code></a> for working
on a fix.</p>
</li>
<li>
<p>The <code>&amp;</code> CSS nesting selector can be repeated multiple
times to increase CSS specificity. Previously esbuild ignored this
possibility and incorrectly considered <code>&amp;&amp;</code> to have
the same specificity as <code>&amp;</code>. With this release, this
should now work correctly:</p>
<pre lang="css"><code>/* Original code (color should be red) */
</code></pre>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/evanw/esbuild/blob/main/CHANGELOG-2024.md">esbuild's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog: 2024</h1>
<p>This changelog documents all esbuild versions published in the year
2024 (versions 0.19.12 through 0.24.2).</p>
<h2>0.24.2</h2>
<ul>
<li>
<p>Fix regression with <code>--define</code> and
<code>import.meta</code> (<a
href="https://redirect.github.com/evanw/esbuild/issues/4010">#4010</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/4012">#4012</a>,
<a
href="https://redirect.github.com/evanw/esbuild/pull/4013">#4013</a>)</p>
<p>The previous change in version 0.24.1 to use a more expression-like
parser for <code>define</code> values to allow quoted property names
introduced a regression that removed the ability to use
<code>--define:import.meta=...</code>. Even though <code>import</code>
is normally a keyword that can't be used as an identifier, ES modules
special-case the <code>import.meta</code> expression to behave like an
identifier anyway. This change fixes the regression.</p>
<p>This fix was contributed by <a
href="https://github.com/sapphi-red"><code>@​sapphi-red</code></a>.</p>
</li>
</ul>
<h2>0.24.1</h2>
<ul>
<li>
<p>Allow <code>es2024</code> as a target in <code>tsconfig.json</code>
(<a
href="https://redirect.github.com/evanw/esbuild/issues/4004">#4004</a>)</p>
<p>TypeScript recently <a
href="https://devblogs.microsoft.com/typescript/announcing-typescript-5-7/#support-for---target-es2024-and---lib-es2024">added
<code>es2024</code></a> as a compilation target, so esbuild now supports
this in the <code>target</code> field of <code>tsconfig.json</code>
files, such as in the following configuration file:</p>
<pre lang="json"><code>{
  &quot;compilerOptions&quot;: {
    &quot;target&quot;: &quot;ES2024&quot;
  }
}
</code></pre>
<p>As a reminder, the only thing that esbuild uses this field for is
determining whether or not to use legacy TypeScript behavior for class
fields. You can read more in <a
href="https://esbuild.github.io/content-types/#tsconfig-json">the
documentation</a>.</p>
<p>This fix was contributed by <a
href="https://github.com/billyjanitsch"><code>@​billyjanitsch</code></a>.</p>
</li>
<li>
<p>Allow automatic semicolon insertion after
<code>get</code>/<code>set</code></p>
<p>This change fixes a grammar bug in the parser that incorrectly
treated the following code as a syntax error:</p>
<pre lang="ts"><code>class Foo {
  get
  *x() {}
  set
  *y() {}
}
</code></pre>
<p>The above code will be considered valid starting with this release.
This change to esbuild follows a <a
href="https://redirect.github.com/microsoft/TypeScript/pull/60225">similar
change to TypeScript</a> which will allow this syntax starting with
TypeScript 5.7.</p>
</li>
<li>
<p>Allow quoted property names in <code>--define</code> and
<code>--pure</code> (<a
href="https://redirect.github.com/evanw/esbuild/issues/4008">#4008</a>)</p>
<p>The <code>define</code> and <code>pure</code> API options now accept
identifier expressions containing quoted property names. Previously all
identifiers in the identifier expression had to be bare identifiers.
This change now makes <code>--define</code> and <code>--pure</code>
consistent with <code>--global-name</code>, which already supported
quoted property names. For example, the following is now possible:</p>
<pre lang="js"><code></code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e9174d671b"><code>e9174d6</code></a>
publish 0.25.0 to npm</li>
<li><a
href="c27dbebb9e"><code>c27dbeb</code></a>
fix <code>hosts</code> in <code>plugin-tests.js</code></li>
<li><a
href="6794f602a4"><code>6794f60</code></a>
fix <code>hosts</code> in <code>node-unref-tests.js</code></li>
<li><a
href="de85afd65e"><code>de85afd</code></a>
Merge commit from fork</li>
<li><a
href="da1de1bf77"><code>da1de1b</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4065">#4065</a>:
bitwise operators can return bigints</li>
<li><a
href="f4e9d19fb2"><code>f4e9d19</code></a>
switch case liveness: <code>default</code> is always last</li>
<li><a
href="7aa47c3e77"><code>7aa47c3</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4028">#4028</a>:
minify live/dead <code>switch</code> cases better</li>
<li><a
href="22ecd30619"><code>22ecd30</code></a>
minify: more constant folding for strict equality</li>
<li><a
href="4cdf03c036"><code>4cdf03c</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4053">#4053</a>:
reordering of <code>.tsx</code> in <code>node_modules</code></li>
<li><a
href="dc719775b7"><code>dc71977</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/3692">#3692</a>:
<code>0</code> now picks a random ephemeral port</li>
<li>Additional commits viewable in <a
href="https://github.com/evanw/esbuild/compare/v0.21.5...v0.25.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite` from 5.4.14 to 6.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/releases">vite's
releases</a>.</em></p>
<blockquote>
<h2>create-vite@6.2.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.2.0/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.0-beta.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.0-beta.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.2.0-beta.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.2.0-beta.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>create-vite@6.1.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.1.1/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.1.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.1.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>create-vite@6.1.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/create-vite@6.1.0/packages/create-vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.1.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.1.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.1.0-beta.2</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.1.0-beta.2/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.1.0-beta.1</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.1.0-beta.1/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.1.0-beta.0</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.1.0-beta.0/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.11</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.11/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.10</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.10/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.9</h2>
<p>This version contains a breaking change due to security fixes. See <a
href="https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6">https://github.com/vitejs/vite/security/advisories/GHSA-vg6x-rcgg-rjx6</a>
for more details.</p>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.9/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.8</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.8/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<h2>v6.0.7</h2>
<p>Please refer to <a
href="https://github.com/vitejs/vite/blob/v6.0.7/packages/vite/CHANGELOG.md">CHANGELOG.md</a>
for details.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md">vite's
changelog</a>.</em></p>
<blockquote>
<h2>6.2.0 (2025-02-25)</h2>
<ul>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19501">#19501</a>)
(<a
href="c94c9e0521">c94c9e0</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19501">#19501</a></li>
<li>fix(worker): string interpolation in dynamic worker options (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19476">#19476</a>)
(<a
href="07091a1e80">07091a1</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19476">#19476</a></li>
<li>chore: use unicode cross icon instead of x (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19497">#19497</a>)
(<a
href="5c70296ffb">5c70296</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19497">#19497</a></li>
</ul>
<h2>6.2.0-beta.1 (2025-02-21)</h2>
<ul>
<li>fix(css): temporary add <code>?.</code> after
<code>this.getModuleInfo</code> in <code>vite:css-post</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19478">#19478</a>)
(<a
href="12b0b8a953">12b0b8a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19478">#19478</a></li>
</ul>
<h2>6.2.0-beta.0 (2025-02-21)</h2>
<ul>
<li>feat: show <code>mode</code> on server start and add env debugger
(<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18808">#18808</a>)
(<a
href="c575b82559">c575b82</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18808">#18808</a></li>
<li>feat: use host url to open browser (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19414">#19414</a>)
(<a
href="f6926caa1f">f6926ca</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19414">#19414</a></li>
<li>feat(css): allow scoping css to importers exports (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19418">#19418</a>)
(<a
href="3ebd83833f">3ebd838</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19418">#19418</a></li>
<li>chore: bump esbuild to 0.25.0 (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19389">#19389</a>)
(<a
href="73987f22ec">73987f2</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19389">#19389</a></li>
</ul>
<h2><!-- raw HTML omitted -->6.1.1 (2025-02-19)<!-- raw HTML omitted
--></h2>
<ul>
<li>fix: ensure <code>.[cm]?[tj]sx?</code> static assets are JS mime (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19453">#19453</a>)
(<a
href="e7ba55e7d5">e7ba55e</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19453">#19453</a></li>
<li>fix: ignore <code>*.ipv4</code> address in cert (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19416">#19416</a>)
(<a
href="973283bf84">973283b</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19416">#19416</a></li>
<li>fix(css): run rewrite plugin if postcss plugin exists (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19371">#19371</a>)
(<a
href="bcdb51a1ac">bcdb51a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19371">#19371</a></li>
<li>fix(deps): bump tsconfck (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19375">#19375</a>)
(<a
href="746a583d42">746a583</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19375">#19375</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19392">#19392</a>)
(<a
href="60456a54fe">60456a5</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19392">#19392</a></li>
<li>fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19440">#19440</a>)
(<a
href="ccac73d9d0">ccac73d</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19440">#19440</a></li>
<li>fix(html): ignore malformed src attrs (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19397">#19397</a>)
(<a
href="aff7812f0a">aff7812</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19397">#19397</a></li>
<li>fix(worker): fix web worker type detection (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19462">#19462</a>)
(<a
href="edc65eafa3">edc65ea</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19462">#19462</a></li>
<li>refactor: remove custom .jxl mime (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19457">#19457</a>)
(<a
href="0c854645bd">0c85464</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19457">#19457</a></li>
<li>feat: add support for injecting debug IDs (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18763">#18763</a>)
(<a
href="0ff556a6d9">0ff556a</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18763">#18763</a></li>
<li>chore: update 6.1.0 changelog (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19363">#19363</a>)
(<a
href="fa7c211bf3">fa7c211</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19363">#19363</a></li>
</ul>
<h2>6.1.0 (2025-02-05)</h2>
<h3>Features</h3>
<ul>
<li>feat: show hosts in cert in CLI (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19317">#19317</a>)
(<a
href="a5e306f2fc">a5e306f</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19317">#19317</a></li>
<li>feat: support for env var for defining allowed hosts (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19325">#19325</a>)
(<a
href="4d88f6c939">4d88f6c</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19325">#19325</a></li>
<li>feat: use native runtime to import the config (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19178">#19178</a>)
(<a
href="7c2a7942cc">7c2a794</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19178">#19178</a></li>
<li>feat: print <code>port</code> in the logged error message after
failed WS connection with <code>EADDRINUSE</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19212">#19212</a>)
(<a
href="14027b0f2a">14027b0</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19212">#19212</a></li>
<li>perf(css): only run postcss when needed (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19061">#19061</a>)
(<a
href="30194fa1e4">30194fa</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/19061">#19061</a></li>
<li>feat: add support for <code>.jxl</code> (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/18855">#18855</a>)
(<a
href="57b397c4aa">57b397c</a>),
closes <a
href="https://redirect.github.com/vitejs/vite/issues/18855">#18855</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fa7c211bf3"><code>fa7c211</code></a>
chore: update 6.1.0 changelog (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19363">#19363</a>)</li>
<li><a
href="051370a332"><code>051370a</code></a>
release: v6.1.0</li>
<li><a
href="6e0e3c0b99"><code>6e0e3c0</code></a>
refactor: deprecate <code>vite optimize</code> command (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19348">#19348</a>)</li>
<li><a
href="7c2a7942cc"><code>7c2a794</code></a>
feat: use native runtime to import the config (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19178">#19178</a>)</li>
<li><a
href="fcd578587b"><code>fcd5785</code></a>
fix(build): fix stale build manifest on watch rebuild (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19361">#19361</a>)</li>
<li><a
href="a5e306f2fc"><code>a5e306f</code></a>
feat: show hosts in cert in CLI (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19317">#19317</a>)</li>
<li><a
href="4d88f6c939"><code>4d88f6c</code></a>
feat: support for env var for defining allowed hosts (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19325">#19325</a>)</li>
<li><a
href="fdb36e0769"><code>fdb36e0</code></a>
fix: avoid builtStart during vite optimize (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19356">#19356</a>)</li>
<li><a
href="5ce7443462"><code>5ce7443</code></a>
release: v6.1.0-beta.2</li>
<li><a
href="e7b4ba37f9"><code>e7b4ba3</code></a>
fix(html): fix css disorder when building multiple entry html (<a
href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/19143">#19143</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite/commits/create-vite@6.2.0/packages/vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `vitest` from 2.1.9 to 3.0.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitest-dev/vitest/releases">vitest's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.7</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li><strong>browser</strong>: Support webdriverio 9  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7553">vitest-dev/vitest#7553</a>
<a href="https://github.com/vitest-dev/vitest/commit/b1949c97"><!-- raw
HTML omitted -->(b1949)<!-- raw HTML omitted --></a></li>
<li><strong>deps</strong>: Update all non-major dependencies  -  in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7543">vitest-dev/vitest#7543</a>
<a href="https://github.com/vitest-dev/vitest/commit/365ffe6b"><!-- raw
HTML omitted -->(365ff)<!-- raw HTML omitted --></a></li>
<li><strong>expect</strong>: Correct generic MatchersObject this type in
expect.extend  -  by <a
href="https://github.com/Workingstiff-s"><code>@​Workingstiff-s</code></a>
in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7526">vitest-dev/vitest#7526</a>
<a href="https://github.com/vitest-dev/vitest/commit/d5765f71"><!-- raw
HTML omitted -->(d5765)<!-- raw HTML omitted --></a></li>
<li><strong>mocker</strong>: Include more modules to prefix-only module
list  -  by <a href="https://github.com/btea"><code>@​btea</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7524">vitest-dev/vitest#7524</a>
<a href="https://github.com/vitest-dev/vitest/commit/a12ec008"><!-- raw
HTML omitted -->(a12ec)<!-- raw HTML omitted --></a></li>
<li><strong>spy</strong>: Clear/reset/restore mocks in stack order  - 
by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7499">vitest-dev/vitest#7499</a>
<a href="https://github.com/vitest-dev/vitest/commit/f71004ff"><!-- raw
HTML omitted -->(f7100)<!-- raw HTML omitted --></a></li>
</ul>
<h3>   🏎 Performance</h3>
<ul>
<li><strong>browser</strong>: Do wdio context switching only once per
file  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7549">vitest-dev/vitest#7549</a>
<a href="https://github.com/vitest-dev/vitest/commit/aaa58556"><!-- raw
HTML omitted -->(aaa58)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/vitest-dev/vitest/compare/v3.0.6...v3.0.7">View
changes on GitHub</a></h5>
<h2>v3.0.6</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Fix <code>getMockedSystemTime</code> for <code>useFakeTimer</code>
 -  by <a href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a>
in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7405">vitest-dev/vitest#7405</a>
<a href="https://github.com/vitest-dev/vitest/commit/03912b43"><!-- raw
HTML omitted -->(03912)<!-- raw HTML omitted --></a></li>
<li>Compat for jest-image-snapshot  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7390">vitest-dev/vitest#7390</a>
<a href="https://github.com/vitest-dev/vitest/commit/9542b699"><!-- raw
HTML omitted -->(9542b)<!-- raw HTML omitted --></a></li>
<li>Ensure project names are readable in dark terminals  -  by <a
href="https://github.com/rgrove"><code>@​rgrove</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7371">vitest-dev/vitest#7371</a>
<a href="https://github.com/vitest-dev/vitest/commit/bb94c19f"><!-- raw
HTML omitted -->(bb94c)<!-- raw HTML omitted --></a></li>
<li>Exclude <code>queueMicrotask</code> from default fake timers to not
break node fetch  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7505">vitest-dev/vitest#7505</a>
<a href="https://github.com/vitest-dev/vitest/commit/167a98d7"><!-- raw
HTML omitted -->(167a9)<!-- raw HTML omitted --></a></li>
<li><strong>browser</strong>:
<ul>
<li>Fix mocking modules out of root  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7415">vitest-dev/vitest#7415</a>
<a href="https://github.com/vitest-dev/vitest/commit/d3acbd8b"><!-- raw
HTML omitted -->(d3acb)<!-- raw HTML omitted --></a></li>
<li>Fix <code>toHaveClass</code> typing  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7383">vitest-dev/vitest#7383</a>
<a href="https://github.com/vitest-dev/vitest/commit/7ef238c0"><!-- raw
HTML omitted -->(7ef23)<!-- raw HTML omitted --></a></li>
<li>Relax locator selectors methods  -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7422">vitest-dev/vitest#7422</a>
<a href="https://github.com/vitest-dev/vitest/commit/1b8c5c9e"><!-- raw
HTML omitted -->(1b8c5)<!-- raw HTML omitted --></a></li>
<li>Resolve thread count from <code>maxWorkers</code>  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7483">vitest-dev/vitest#7483</a>
<a href="https://github.com/vitest-dev/vitest/commit/adbb25ab"><!-- raw
HTML omitted -->(adbb2)<!-- raw HTML omitted --></a></li>
<li>Cleanup timeout on resolve and give more information in the error
 -  by <a
href="https://github.com/sheremet-va"><code>@​sheremet-va</code></a> in
<a
href="https://redirect.github.com/vitest-dev/vitest/issues/7487">vitest-dev/vitest#7487</a>
<a href="https://github.com/vitest-dev/vitest/commit/5a45a7ca"><!-- raw
HTML omitted -->(5a45a)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>coverage</strong>:
<ul>
<li><code>vite-node</code> to pass correct execution wrapper offset  - 
by <a href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a>
in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7417">vitest-dev/vitest#7417</a>
<a href="https://github.com/vitest-dev/vitest/commit/1f2e5552"><!-- raw
HTML omitted -->(1f2e5)<!-- raw HTML omitted --></a></li>
<li>Preserve moduleExecutionInfo in non-isolated runs  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7486">vitest-dev/vitest#7486</a>
<a href="https://github.com/vitest-dev/vitest/commit/f31a07bb"><!-- raw
HTML omitted -->(f31a0)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>deps</strong>:
<ul>
<li>Update all non-major dependencies  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7363">vitest-dev/vitest#7363</a>
<a href="https://github.com/vitest-dev/vitest/commit/e348bd4c"><!-- raw
HTML omitted -->(e348b)<!-- raw HTML omitted --></a></li>
<li>Update all non-major dependencies  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7507">vitest-dev/vitest#7507</a>
<a href="https://github.com/vitest-dev/vitest/commit/6cc408d6"><!-- raw
HTML omitted -->(6cc40)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>init</strong>:
<ul>
<li>Invalid browser config  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7475">vitest-dev/vitest#7475</a>
<a href="https://github.com/vitest-dev/vitest/commit/8fe641b4"><!-- raw
HTML omitted -->(8fe64)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>reporters</strong>:
<ul>
<li>Render tasks in tree when in TTY  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7503">vitest-dev/vitest#7503</a>
<a href="https://github.com/vitest-dev/vitest/commit/027ce9bb"><!-- raw
HTML omitted -->(027ce)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>vite-node</strong>:
<ul>
<li>Remove fake first line mapping on Vite 6  -  by <a
href="https://github.com/hi-ogawa"><code>@​hi-ogawa</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7124">vitest-dev/vitest#7124</a>
<a href="https://github.com/vitest-dev/vitest/commit/b997355b"><!-- raw
HTML omitted -->(b9973)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>watch</strong>:
<ul>
<li>Properly remove cache after removing existing test files  -  by <a
href="https://github.com/soc221b"><code>@​soc221b</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7399">vitest-dev/vitest#7399</a>
<a href="https://github.com/vitest-dev/vitest/commit/01a59721"><!-- raw
HTML omitted -->(01a59)<!-- raw HTML omitted --></a></li>
</ul>
</li>
<li><strong>workspace</strong>:
<ul>
<li>Forward <code>inspect</code> related cli options  -  by <a
href="https://github.com/AriPerkkio"><code>@​AriPerkkio</code></a> in <a
href="https://redirect.github.com/vitest-dev/vitest/issues/7373">vitest-dev/vitest#7373</a>
<a href="https://github.com/vitest-dev/vitest/commit/ed15b5b3"><!-- raw
HTML omitted -->(ed15b)<!-- raw HTML omitted --></a></li>
</ul>
</li>
</ul>
<h5>    <a
href="https://github.com/vitest-dev/vitest/compare/v3.0.5...v3.0.6">View
changes on GitHub</a></h5>
<h2>v3.0.5</h2>
<p>This release includes security patches for:</p>
<ul>
<li><a
href="https://github.com/vitest-dev/vitest/security/advisories/GHSA-9crc-q9x8-hgqq">Remote
Code Execution when accessing a malicious website while Vitest API
server is listening | CVE-2025-24964</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="358cccfb8f"><code>358cccf</code></a>
chore: release v3.0.7</li>
<li><a
href="365ffe6b4c"><code>365ffe6</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7543">#7543</a>)</li>
<li><a
href="aaa58556e6"><code>aaa5855</code></a>
perf(browser): do wdio context switching only once per file (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7549">#7549</a>)</li>
<li><a
href="f71004ffa3"><code>f71004f</code></a>
fix(spy): clear/reset/restore mocks in stack order (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7499">#7499</a>)</li>
<li><a
href="9584be337f"><code>9584be3</code></a>
chore: release v3.0.6</li>
<li><a
href="027ce9bbf7"><code>027ce9b</code></a>
fix(reporters): render tasks in tree when in TTY (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7503">#7503</a>)</li>
<li><a
href="b62ac2280e"><code>b62ac22</code></a>
chore: use <code>tinyglobby</code> instead of <code>fast-glob</code> in
Vitest (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7504">#7504</a>)</li>
<li><a
href="167a98d77c"><code>167a98d</code></a>
fix: exclude <code>queueMicrotask</code> from default fake timers to not
break node fetc...</li>
<li><a
href="6cc408d664"><code>6cc408d</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7507">#7507</a>)</li>
<li><a
href="8f138257ba"><code>8f13825</code></a>
docs: fix <code>sequence.hooks: 'stack'</code> as default (<a
href="https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest/issues/7492">#7492</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitest-dev/vitest/commits/v3.0.7/packages/vitest">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/Comfy-Org/litegraph.js/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-25 16:14:06 +00:00
filtered
4920e10f0c [TS] Use strict mode in LiteGraphGlobal (#593)
- Adds minor type coercions to resolve type errors
- Adds ts-ignore that must be removed later
2025-02-25 11:59:39 +00:00
filtered
6bd151c91e [API] Remove LiteGraph.searchbox_extras (#592)
- Unused, loose typing
- Code search shows usage is limited to code copy & paste of litegraph
code
- So long as the `searchbox_extras` property exists and is empty, there
is no change to downstream consumers
2025-02-25 09:16:49 +00:00
filtered
2c3535c983 [Test] Add integration test: LGraph snapshot (#591)
- Runs basic Litegraph init before performing the snapshot
- Allows a significantly more useful verification of the public API
2025-02-25 08:58:29 +00:00
filtered
a4b9704a80 Remove entry point import, merge modules (#590)
* Remove unused import in lib entry point

* [Refactor] Merge type util modules
2025-02-25 01:25:42 +00:00
filtered
ad8dd7a9d8 Export enum (#589)
* Revert "Export enum (#587)"

This reverts commit cf8565eb13.

* Export enums
2025-02-25 01:08:04 +00:00
Chenlei Hu
a8b6f1e1ec 0.8.96 (#588) 2025-02-24 19:37:43 -05:00
Chenlei Hu
cf8565eb13 Export enum (#587) 2025-02-24 19:37:18 -05:00
Chenlei Hu
fdc693204c 0.8.95 (#586) 2025-02-24 19:29:29 -05:00
Chenlei Hu
fadece7fdf Type LGraphNode.addInput/Output (#585) 2025-02-24 19:29:04 -05:00
Chenlei Hu
59dea644f2 Move marker property from BaseWidget to SliderWidget (#584)
* Move marker property from BaseWidget to SliderWidget

* nit
2025-02-24 16:35:34 -05:00
Chenlei Hu
170341db73 Type ButtonWidget (#583)
* Type ButtonWidget

* nit
2025-02-24 16:30:04 -05:00
filtered
630fd00086 [API] Remove unused LiteGraph APIs (#582)
* [API] Remove unused LiteGraph APIs

These features have not been maintained, and would require refactoring / rewrites. As code search revealed them to be unused, they are being removed.

- addNodeMethod
- compareObjects
- auto_sort_node_types

* Udpate API.md
2025-02-24 12:04:07 +00:00
filtered
c8ffacf172 [TS] Use strict mode in LGraph (#579)
* [TS] Undefined is not a valid object key

* Deprecate unused code

Adds ts-expect-error to TS strict issues on unmaintained public interfaces.

* [TS] Fix nullability: asSerialisable return type

* nit - Remove outdated comment

* [TS] Strict mode: LGraph

- Adds minor coercion changes; would need extremely specific hacks performed to result in runtime change

* [TMP] Work around typescript-strict-plugin

Must be reverted once plugin removed.
See #578
2025-02-24 11:12:46 +00:00
filtered
9d6c867607 [TS] Strict mode: CurveEditor (#580)
- Converts `CurveEditor` to ts strict
- Two runtime changes: explicit throws instead of `TypeError` on following line
2025-02-24 10:21:35 +00:00
filtered
bcd5a77837 [TS] Strict initializers - LGraph (#573)
Duplicates values from clear() to property initializers.
2025-02-24 03:30:20 +00:00
filtered
f3b51a534e [Test] Standardise unit test infrastructure (#572)
* [Test] Revert custom name for test context

- Removes "lgTest", replaces with default "test"

* nit - Rename test extensions file

* Split test graphs out to separate file
2025-02-24 01:56:22 +00:00
Chenlei Hu
b0a1ce8290 0.8.94 (#571) 2025-02-23 18:44:01 -05:00
filtered
1800d31a5a [Refactor] Prefer modern for..of loops 2 (#569)
* [Refactor] Prefer for..of

* [Refactor] Prefer for..of - manual refactoring

* Partially revert change - potential conflict

Not worth time investment to fix - reverted.
2025-02-23 16:36:52 -05:00
Chenlei Hu
f300e37a89 Remove NodeSlot.pos when serializing WidgetInputSlot (#570) 2025-02-23 16:11:56 -05:00
filtered
4add6c3211 [Cleanup] Follow-up on #566 - fix style (#568) 2025-02-23 20:20:44 +00:00
filtered
46535409c8 [CI] Fix existing lint warnings & disallow in future (#567)
* Fix lint warnings

* [CI] Fail lint checks instead of warning

* [CI] Fail stylistic lint checks instead of warning
2025-02-23 20:12:04 +00:00
filtered
4163cb04b8 [Refactor] Prefer modern for..of loops (#566)
- Replaces traditional incrementing `for` loops and `forEach()` calls with modern `for..of` syntax
- Improves readability
- Semantic checking used; not expecting issues to arise from this portion
2025-02-23 19:59:41 +00:00
Chenlei Hu
de5ea39c71 0.8.93 (#565) 2025-02-23 13:07:09 -05:00
Chenlei Hu
86f823b7d5 [nit] Move isColorable out of interfaces.ts (#564) 2025-02-23 13:06:03 -05:00
bymyself
d17e7f567d type LGraphNode.addWidget (#562)
* type addWidget

* help out ts compiler

* Update LGraphNode.ts

---------

Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2025-02-23 13:01:17 -05:00
Chenlei Hu
e1ea72eb89 0.8.92 (#561) 2025-02-21 09:25:43 -05:00
Chenlei Hu
dc9a76200b [BugFix] Call LGraphCanvas.deleteSelected on context menu remove (#560) 2025-02-20 15:22:53 -05:00
Chenlei Hu
4dc971383f 0.8.91 (#559) 2025-02-20 13:55:34 -05:00
Chenlei Hu
c8385657db Add LGraphNode.expandToFitContent (#558) 2025-02-20 13:55:02 -05:00
Chenlei Hu
d0ab5e07c9 0.8.90 (#557) 2025-02-20 13:06:17 -05:00
Chenlei Hu
dcac6dba80 [BugFix] Auto grow node if widgets need more space (#556) 2025-02-20 12:45:31 -05:00
filtered
1dee497e40 Fix drag event throws introduced in #554 (#555) 2025-02-20 16:30:38 +11:00
filtered
b67f34e7f3 [Cleanup] Remove lint bypass, remove unused vars (#554) 2025-02-20 11:17:35 +11:00
filtered
485bfd1628 [Cleanup] Remove unused code (#553) 2025-02-20 10:54:24 +11:00
Chenlei Hu
31e16b6748 0.8.89 (#552) 2025-02-19 14:57:53 -05:00
Chenlei Hu
7bab620986 Fix IColorable.getColorOption (#551)
* Fix IColorable.getColorOption

* nit
2025-02-19 14:57:29 -05:00
Chenlei Hu
8b1b8d2a76 0.8.88 (#550) 2025-02-19 13:56:55 -05:00
Chenlei Hu
6b1e40a011 Add IColorable interface (#549)
* Add IColorable interface

* Set color option

* nit

* nit

* nit
2025-02-19 13:56:08 -05:00
Chenlei Hu
2592c18790 0.8.87 (#548) 2025-02-18 19:32:53 -05:00
Chenlei Hu
d27ced7cf3 [BugFix] Fix unknown node with converted widgets (#547) 2025-02-18 19:32:06 -05:00
Chenlei Hu
026437e1a9 0.8.86 (#546) 2025-02-18 16:51:50 -05:00
Chenlei Hu
6703a1f1fa [Type] Mark LGraphGroup.color as optional (#545)
* [Type] Mark LGraphGroup.color as optional

* nit
2025-02-18 16:51:17 -05:00
Chenlei Hu
aafd7202c2 0.8.85 (#544) 2025-02-18 11:49:32 -05:00
Chenlei Hu
196645ce7e Clear selectedItems on canvas clear (#543) 2025-02-18 11:49:06 -05:00
bymyself
e800eeb202 type selected_nodes (#541) 2025-02-18 11:48:54 -05:00
Chenlei Hu
f010180b79 0.8.84 (#540) 2025-02-17 17:23:03 -05:00
Chenlei Hu
9288709497 Trigger onSelectionChange on deleteSelected (#539) 2025-02-17 17:22:32 -05:00
Chenlei Hu
8c6979223d 0.8.83 (#538) 2025-02-16 20:25:29 -05:00
Chenlei Hu
28e86820d6 Trigger LGraphCanvas.onSelectionChange on drag-select (#537) 2025-02-16 20:24:59 -05:00
Chenlei Hu
7d97a6e505 0.8.82 (#536) 2025-02-16 11:38:28 -05:00
Chenlei Hu
1e71da9a38 Show widget input inplace (#535)
* Show widget input inplace

* nit

* nit
2025-02-16 11:37:47 -05:00
Chenlei Hu
52a96a14d6 0.8.81 (#534) 2025-02-15 14:36:25 -05:00
Chenlei Hu
7a25899ecc Reverse computeSize and computeLayoutSize priority (#533) 2025-02-15 14:35:09 -05:00
Chenlei Hu
62254c1d4d 0.8.80 (#532) 2025-02-14 19:27:28 -05:00
Chenlei Hu
d23a320f9f Upstream frontend widgets layout logic (#531)
* Upstream frontend widgets layout logic

* Add back LGraphNode.freeWidgetSpace

* nit

* update expectations
2025-02-14 19:22:37 -05:00
Chenlei Hu
5bed4fbb70 0.8.79 (#530) 2025-02-14 14:16:54 -05:00
Chenlei Hu
a5c89c0152 [Performance] Avoid double measure on node rendering (#529)
* [Performance] Avoid double measure on node rendering

* Move _collapsed_width calc

* nit

* nit

* nit

* nit

* nit
2025-02-14 14:15:40 -05:00
Chenlei Hu
de10bf0c3a [Cleanup] Remove LGraphCanvas.adjustNodesSize (#528) 2025-02-14 11:10:40 -05:00
Chenlei Hu
75267957d5 Use LGraphNode.setSize (#527) 2025-02-14 11:06:49 -05:00
Chenlei Hu
ce44cea409 Split layout and draw for slots (#524)
* Split layout and draw for slots

* nit

* nit

* Fix serialization

* Move effect (highlight/invalid) to layout calculation

* nit

* Fix type issue

* Resolve review comments
2025-02-13 20:20:57 -05:00
Chenlei Hu
5d03f4477e 0.8.78 (#523) 2025-02-12 15:53:12 -05:00
Chenlei Hu
361a1a76ef Add LGraphNode.getExtraSlotMenuOptions hook (#522) 2025-02-12 15:52:27 -05:00
Chenlei Hu
9abcf0fd32 Remove LGraphNode.horizontal (#521)
* Remove LGraphNode.horizontal

* nit
2025-02-12 15:11:59 -05:00
Chenlei Hu
aa25db1dfd Update test-comfyui-frontend.yml (#520)
Update devtools ref
2025-02-12 11:40:13 -05:00
Chenlei Hu
550a65bf7a 0.8.77 (#519) 2025-02-12 11:07:15 -05:00
Chenlei Hu
7813e5207a Revert "Revert "Convert i/o slot to class in LGraphNode.configure"" (#518)
* Revert "Revert "Convert i/o slot to class in LGraphNode.configure (#506)" (#511)"

This reverts commit d029bd8924.

* nit
2025-02-12 11:06:35 -05:00
Chenlei Hu
e87b17fb27 0.8.76 (#515) 2025-02-10 14:38:00 -05:00
Chenlei Hu
f0eca030c4 [BugFix] Trigger IWidget.callback on widget drag (#514) 2025-02-10 14:37:16 -05:00
Chenlei Hu
adff23bb84 Add ISerialisedNode.widgets_values documentation (#513) 2025-02-10 11:17:09 -05:00
Chenlei Hu
38ef72cd90 0.8.75 (#512) 2025-02-09 23:36:59 -05:00
Chenlei Hu
d029bd8924 Revert "Convert i/o slot to class in LGraphNode.configure (#506)" (#511)
This reverts commit c75157e86e.
2025-02-09 23:35:40 -05:00
Chenlei Hu
6dd93a54a6 0.8.74 (#509) 2025-02-09 20:22:47 -05:00
Chenlei Hu
c75157e86e Convert i/o slot to class in LGraphNode.configure (#506) 2025-02-09 15:23:38 -05:00
Chenlei Hu
997d673bd9 [Refactor] LgraphNode.drawSlots (#503)
* wip

* nit
2025-02-09 12:53:41 -05:00
Chenlei Hu
62adcf7184 [CI] Update ComfyUI_devtools (#504) 2025-02-09 12:42:38 -05:00
Chenlei Hu
048fa5bb88 [Refactor] NodeSlot.isValidTarget (#501) 2025-02-09 11:59:52 -05:00
Chenlei Hu
a5ee5bfbad Fix ComfyUI_devtools ref (#502)
* Fix ComfyUI_devtools_ref

* nit
2025-02-09 11:59:41 -05:00
Chenlei Hu
120c606f07 [Refactor] LGraphNode.drawCollapsedSlots (#500) 2025-02-09 11:02:20 -05:00
Chenlei Hu
01b8ae5bb8 [Refactor] LGraphNode.drawWidgets (#499) 2025-02-08 23:41:01 -05:00
Chenlei Hu
f26807f931 [Refactor] NodeSlot.drawCollapsed (#498) 2025-02-08 23:00:58 -05:00
Chenlei Hu
7472d1d9a1 [nit] Move labelPosition to NodeSlot.draw (#497) 2025-02-08 22:39:32 -05:00
Chenlei Hu
64fddc078c [nit] Simplifiy node i/o slot loop (#496) 2025-02-08 22:35:18 -05:00
Chenlei Hu
7e76fd58a1 [nit] Use void return type on LGraphCanvas.drawNodeWidgets (#495) 2025-02-08 22:07:13 -05:00
Chenlei Hu
0d5f7d79bd [CI] Add lint/format/typecheck to ci (#494) 2025-02-08 21:24:06 -05:00
Chenlei Hu
de74d8a08c [Lint] Lint unused imports (#493) 2025-02-08 21:20:39 -05:00
Chenlei Hu
12f8d33b78 [Cleanup] Remove unused param on LGraphCanvas.drawWidgets (#492) 2025-02-08 19:30:16 -05:00
Chenlei Hu
4d36369cd8 Refactor widget switch statement (#491) 2025-02-08 19:28:38 -05:00
Chenlei Hu
64365acf7d Revert "Revert "[Refactor] Update style (#473)" (#487)" (#490)
This reverts commit aa358403ac.
2025-02-08 18:29:54 -05:00
Chenlei Hu
92b0783a9b Prevent modification on zooming_center arg in DragAndScale (#489) 2025-02-08 18:29:45 -05:00
Chenlei Hu
51144e956c 0.8.73 (#488) 2025-02-08 17:52:32 -05:00
Chenlei Hu
aa358403ac Revert "[Refactor] Update style (#473)" (#487)
This reverts commit c9f6b5ece8.
2025-02-08 17:51:50 -05:00
Chenlei Hu
8ca184c0f8 0.8.72 (#486) 2025-02-08 17:29:33 -05:00
Chenlei Hu
cdaceebcaa Implement SliderWidget (#485) 2025-02-08 17:28:25 -05:00
Chenlei Hu
2d688a896d Implement TextWidget (#484) 2025-02-08 17:01:54 -05:00
Chenlei Hu
ab14827f87 Implement ButtonWidget (#483) 2025-02-08 16:50:02 -05:00
Chenlei Hu
dd1dae7d2f [Cleanup] Remove LiteGraph.fetchFile (#482) 2025-02-08 16:30:40 -05:00
Chenlei Hu
63f9f30eec Implement NumberWidget (#481) 2025-02-08 15:45:23 -05:00
Chenlei Hu
c781053bd2 Implement ComboWidget (#480)
* wip

* Implement onClick
2025-02-08 15:16:15 -05:00
Chenlei Hu
fcc09c075d Implement BooleanWidget.onClick (#479) 2025-02-08 12:45:51 -05:00
Chenlei Hu
9b29860f47 0.8.71 (#478) 2025-02-08 11:53:29 -05:00
Chenlei Hu
790aac89f0 [Refactor] Move drawSlot to NodeSlot (#477)
* [Refactor] Move drawSlot to NodeSlot

* nit
2025-02-07 18:06:25 -05:00
Chenlei Hu
608b5f8342 Implement NodeSlot (#476)
* Implement NodeSlot

* nit
2025-02-07 17:13:32 -05:00
Chenlei Hu
75f067dbb3 Implement BooleanWidget (#466)
* Implement BooleanWidget

* Merge function of addWidget

* Class conversion

* nit
2025-02-07 17:10:30 -05:00
Chenlei Hu
024ede680d 0.8.70 (#475) 2025-02-07 14:29:59 -05:00
Chenlei Hu
a0d275f223 Type widget (#474)
* Type INodeSlot.widget

* nit
2025-02-07 14:29:42 -05:00
filtered
c9f6b5ece8 [Refactor] Update style (#473)
* Update #471 to use Point convention

* Prefer camel case var names
2025-02-07 07:38:28 +11:00
Chenlei Hu
47e9abd4ea 0.8.69 (#472) 2025-02-06 14:37:04 -05:00
dependabot[bot]
82c88a003a Bump vite from 5.4.10 to 5.4.14 (#470)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.10 to 5.4.14.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.14/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.14/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-06 14:36:13 -05:00
Chenlei Hu
be03fcc7d1 Upstream drag zoom feature from ComfyUI_frontend (#471) 2025-02-06 14:36:02 -05:00
Chenlei Hu
9d5e94859e 0.8.68 (#469) 2025-02-05 16:35:18 -05:00
Chenlei Hu
316efd6666 Support override of paste position on LGraphCanvas.pasteFromClipboard (#468) 2025-02-05 16:33:52 -05:00
Chenlei Hu
d6a5e417c2 0.8.67 (#467) 2025-02-04 19:29:35 -05:00
Chenlei Hu
1728e4c6f0 [Test] Disable Chromium2x tests (#465) 2025-02-04 17:16:12 -05:00
dependabot[bot]
a5a9ce223d Bump vitest from 2.1.4 to 2.1.9 (#464)
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 2.1.4 to 2.1.9.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v2.1.9/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 08:50:05 +11:00
Chenlei Hu
c900df750e Simplify LGraphNode.onDrawBackground signature (#463) 2025-02-05 03:53:49 +11:00
Chenlei Hu
5acb656b15 [Refactor] Add LGraphCanvas.drawTitleText (#462) 2025-02-04 11:19:49 -05:00
Chenlei Hu
530fa874b0 [Refactor] Add LGraphNode.drawTitleBox (#461)
* [Refactor] Add LGraphNode.drawTitleBox

* nit
2025-02-04 10:57:50 -05:00
Chenlei Hu
7ea9a8405d [Reland][Refactor] Move node title background draw logic to LGraphNode (#459)
* [Refactor] Move node title background draw logic to LGraphNode (#452)

* Fix collapsed
2025-02-04 00:33:19 -05:00
Chenlei Hu
f69f8a4f38 Add back accidental removed css rule (#460) 2025-02-03 23:57:01 -05:00
Chenlei Hu
9b5f67aadf [Cleanup] Remove remaining legacy subgraph content (#458) 2025-02-03 23:45:17 -05:00
Chenlei Hu
a3fa551a17 Remove unused LGraphCanvas.onMenuNodeToSubgraph (#457) 2025-02-03 23:39:28 -05:00
Chenlei Hu
3cd08e9e0c Remove LGraph._subgraph_node (Legacy subgraph) (#456) 2025-02-03 23:36:38 -05:00
Chenlei Hu
dc24c6617f Revert "[Refactor] Move node title background draw logic to LGraphNode (#452)" (#455)
This reverts commit 047bf68dc9.
2025-02-03 23:34:46 -05:00
Chenlei Hu
f2fada0eab Remove LGraphCanvas._graph_stack (legacy subgraph) (#454) 2025-02-03 23:32:22 -05:00
Chenlei Hu
b3dbc41368 Remove LGraphNode.subgraph (Legacy subgraph) (#453)
* Remove LGraphNode.subgraph (Legacy subgraph)

* Update snapshot
2025-02-03 23:27:11 -05:00
Chenlei Hu
047bf68dc9 [Refactor] Move node title background draw logic to LGraphNode (#452) 2025-02-03 23:20:51 -05:00
Chenlei Hu
9a1c322490 Remove unnecessary getter/setter register on LGraphNode.shape (#450) 2025-02-03 23:02:55 -05:00
Chenlei Hu
6cf1f2d627 [Refactor] Move shape fallback from LGraphCanvas to LGraphNode (#451)
* [Refactor] Move shape fallback from LGraphCanvas to LGraphNode

* nit
2025-02-03 23:02:42 -05:00
Chenlei Hu
610ebd6ffe 0.8.66 (#449) 2025-02-03 20:27:20 -05:00
Chenlei Hu
9d8e49b8f8 Remove LGraphNode.supported_extensions (#448) 2025-02-03 20:26:37 -05:00
Chenlei Hu
0500d77665 Replace zoom scale check with low_quality flag check (#447)
* Replace zoom scale check with low_quality flag check

* nit
2025-02-03 20:07:27 -05:00
filtered
108af616d8 Remove unused code - wrapFunctionAsNode (#445) 2025-02-03 17:33:55 -05:00
Chenlei Hu
f7db430da8 0.8.65 (#446) 2025-02-03 17:33:35 -05:00
Chenlei Hu
1da2c8a914 [Refactor] Move node color fallback from LGraphCanvas to LGraphNode (#444)
* [Refactor] Move node color fallback from LGraphCanvas to LGraphNode

* nit
2025-02-03 16:51:01 -05:00
Chenlei Hu
4844311f3b Add ts-strict-ignore plugin (#443)
* Add ts-strict-ignore plugin

* nit
2025-02-03 15:49:58 -05:00
Chenlei Hu
0ee671843b Use consistent low_quality threshold in LGraphCanvas (#442)
* Use consistent low_quality threshold in LGraphCanvas

* Add LGraphCanvas.low_quality_zoom_threshold
2025-02-03 15:04:04 -05:00
Chenlei Hu
682f4c624f 0.8.64 (#441) 2025-02-03 14:15:36 -05:00
Chenlei Hu
5ba6472c70 Remove LGraphCanvas.render_title_colored (#440)
* Remove LGraphCanvas.render_title_colored

* Simplify logic
2025-02-03 14:12:04 -05:00
Chenlei Hu
3e133b71e6 [Refactor] Add LGraphNode.title_mode (#439) 2025-02-03 13:57:14 -05:00
Chenlei Hu
00de6ae960 Fix LGraphNode.height (#438)
* Fix LGraphNode.height

* nit
2025-02-03 12:42:27 -05:00
Chenlei Hu
eb47a3aab2 0.8.63 (#437) 2025-02-02 23:04:02 -05:00
Chenlei Hu
655ddfd1df Fix strokeShape default option values (#436)
* Move comments

* Fix strokeShape default values
2025-02-02 23:03:42 -05:00
Chenlei Hu
817214e6da [Refactor] Move strokeShape from LGraphCanvas to draw (#435)
* [Refactor] Move strokeShape from LGraphCanvas to draw

* Fix round radius

* nit

* nit

* nit
2025-02-02 22:29:26 -05:00
Chenlei Hu
a4791f6e6b Remove unused LGraphCanvas.onConnectingChange (#434) 2025-01-30 15:40:55 -08:00
filtered
33d41a452e 0.8.62 (#433) 2025-01-27 19:41:49 +11:00
bymyself
9a8c3dff89 Remove scaling of context menus (#431)
* remove scaling of context menus based on graph scale

* deprecate scale in interface

* Add option to restore old context scaling behaviour

Revert "remove scaling of context menus based on graph scale"

This reverts commit d91ecaa86c671aea272844c3900a18da1af7bf01.

* Update test expectations

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-01-27 19:41:08 +11:00
Chenlei Hu
f48cbb6a82 0.8.61 (#429) 2025-01-20 14:03:11 -05:00
filtered
604a3e651c Fix TS types - Widgets (#428)
* Remove downstream types

These optional type definitions were test code and should not have been upstreamed.

* Remove unnecessary workaround

Build workaround TS conversion; no longer relevant.

* Fix TS type - widget size callback
2025-01-20 14:02:37 -05:00
Chenlei Hu
76ebabb2e2 0.8.60 (#425) 2025-01-04 20:28:56 -05:00
christian-byrne
b1f8afea2f fix nullish condition 2025-01-04 20:27:42 -05:00
bymyself
06b6da1353 Update src/LGraphCanvas.ts
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2025-01-04 20:27:42 -05:00
christian-byrne
6c037ca629 Fix dragging behavior in LGraphCanvas to depend on pointer state 2025-01-04 20:27:42 -05:00
huchenlei
34eb1c2add 0.8.59 2025-01-03 11:12:18 -05:00
filtered
a548a72f66 Fix selection box is always a square 2025-01-03 11:11:11 -05:00
huchenlei
318c4e27a2 0.8.58 2025-01-02 16:47:58 -05:00
huchenlei
459e0909a5 0.8.57 2025-01-02 15:53:12 -05:00
Chenlei Hu
f2d257a469 0.8.56 (#416) 2025-01-02 15:51:42 -05:00
Chenlei Hu
c480dca814 0.8.55 (#415) 2025-01-02 15:46:27 -05:00
bymyself
bee9c18a31 Enhance context menu scrolling behavior (#414) 2025-01-02 14:57:05 -05:00
Chenlei Hu
b308a81e38 0.8.54 (#413) 2025-01-01 19:35:30 -05:00
filtered
c64c81882c Add workaround for Firefox pointer events (#412)
* Add workaround for Firefox pointer events

Co-Authored-By: catboxanon <122327233+catboxanon@users.noreply.github.com>

* nit

---------

Co-authored-by: catboxanon <122327233+catboxanon@users.noreply.github.com>
Co-authored-by: huchenlei <huchenlei@proton.me>
2025-01-01 19:34:58 -05:00
Chenlei Hu
e11e7f8052 0.8.53 (#410) 2024-12-30 00:20:33 -05:00
Chenlei Hu
edaf2933e1 Track LGraphState.draggingCanvas (#409)
* Track LGraphState.draggingCanvas

* nit
2024-12-30 00:20:01 -05:00
Chenlei Hu
3579436817 0.8.52 (#408) 2024-12-30 00:11:08 -05:00
Chenlei Hu
7d77fceffa Properly update cursor style on mouse/keyboard events (#407)
* Properly update cursor style on mouse/keyboard events

* nit
2024-12-30 00:10:26 -05:00
Chenlei Hu
757560f6e2 0.8.51 (#406) 2024-12-29 23:40:02 -05:00
Chenlei Hu
8856983597 Upstream cursor style (#405) 2024-12-29 23:39:23 -05:00
Chenlei Hu
1c6d34e948 Update test-comfyui-frontend (#404) 2024-12-29 16:40:01 -05:00
Chenlei Hu
6396e246f8 0.8.50 (#402) 2024-12-27 13:53:34 -05:00
filtered
802e734657 Fix deeply nested context menus remain open (#399)
* nit - Remove redundant workaround

* Fix deeply nested context menus remain open
2024-12-27 13:52:35 -05:00
filtered
0b161c1195 Fix scaled font blurriness in context menus (#400)
Requires that fonts scale in increments of 0.25.
2024-12-27 13:51:53 -05:00
Chenlei Hu
54d7292d24 Stricter return value check on LGraphCanvas.getExtraMenuOptions (#401) 2024-12-27 13:51:31 -05:00
Chenlei Hu
c7ce89e10f 0.8.49 (#398) 2024-12-25 23:17:37 -05:00
filtered
e6efff040d Resolve #395 - thick selection rectangle (#397) 2024-12-25 21:25:37 -05:00
bymyself
57dd8392db Don't process hidden links or reroutes (#396) 2024-12-25 21:25:15 -05:00
Chenlei Hu
bc72e3f59f 0.8.48 (#390) 2024-12-23 20:05:07 -05:00
Chenlei Hu
11ce8e0f7b Fix NODE_DEFAULT_SHAPE (#389)
* Fix NODE_DEFAULT_SHAPE

* update snapshot
2024-12-23 20:04:32 -05:00
Chenlei Hu
c8796f8c93 Auto generate github release on version change (#387) 2024-12-23 14:41:19 -05:00
Chenlei Hu
063c1d704d 0.8.47 (#384) 2024-12-19 16:37:57 -08:00
Chenlei Hu
e442732a09 Emit node-double-click event (#383)
* Emit node-double-click event

* nit
2024-12-19 16:37:29 -08:00
Chenlei Hu
6165709fce 0.8.46 (#382) 2024-12-15 12:48:57 -08:00
Chenlei Hu
7f0c3b02fb Fix slider value display when widget.label is present (#381) 2024-12-15 12:47:53 -08:00
filtered
6956973be1 Fix reroutes ignore change in radius (#379) 2024-12-15 10:55:46 -08:00
filtered
71f8a1decf Export Reroute class the same as other similar classes (#378)
* Export Reroute class the same as other similar classes

* Update test expectations
2024-12-15 10:54:50 -08:00
Chenlei Hu
8e21d44f5d 0.8.45 (#377) 2024-12-13 12:01:57 -08:00
Chenlei Hu
0048b5a0fe [i18n] Add INodeSlot.localized_name field (#376)
* [i18n] Add INodeSlot.localized_name field

* nit
2024-12-13 12:01:21 -08:00
filtered
1c1241bdb1 Optimise positionableItems / empty getters (#373)
* Optimise LGraph.empty() getter

* Optimise positionableItems getters

- No change to internal functionality
- Replaces forced spread of all items on every property access with generator function
- Consumers that require an array can very cleanly spread into one
2024-12-07 00:00:29 -05:00
Chenlei Hu
a7be883b97 0.8.44 (#372) 2024-12-06 17:53:43 -05:00
Chenlei Hu
a9940da05f Add LGraph.empty (#371) 2024-12-06 17:49:50 -05:00
Chenlei Hu
0d0dfafc5b 0.8.43 (#370) 2024-12-05 11:34:01 -05:00
filtered
1238f83728 Prevent distortion of area select rectangle (#368) 2024-12-05 11:33:51 -05:00
Chenlei Hu
c69bbdfb10 Export LGraphEventMode (#369) 2024-12-05 11:32:08 -05:00
Chenlei Hu
38227a9c96 0.8.42 (#365) 2024-12-01 20:32:35 -05:00
filtered
8cda1ac48a Add CanvasPointer callback for node widgets (#363)
* Add CanvasPointer callback for node widgets

* Add API documentation

* nit - Docs
2024-12-01 20:31:48 -05:00
pythongosssss
a0b50dcf15 Fix cloning pinned nodes (#364) 2024-12-01 20:31:12 -05:00
Chenlei Hu
2d6adf46e5 0.8.41 (#361) 2024-11-29 16:27:11 -05:00
filtered
91077aa20b Redesign invalid node indicator (#358)
* nit

* Remove unused code

Gradient can (and should) be impl. directly by caching a CanvasGradient.

* nit

* nit - Refactor

* Remove redundant code

* Add line width & colour options to shape stroke

* Rename drawSelectionBounding to strokeShape

* nit - Doc

* Fix rounded corners not scaling with padding

* Optimise node badge draw

* Redesign invalid node visual indication

Customisable boundary indicator now used, replacing red background.

* Update snapshot

---------

Co-authored-by: huchenlei <huchenlei@proton.me>
2024-11-29 16:26:25 -05:00
filtered
2a39b21578 Fix Zoom Centre (#135) 2024-11-28 11:54:09 -05:00
Chenlei Hu
eb54546ac9 0.8.40 (#357) 2024-11-28 09:50:29 -05:00
filtered
24db9e2572 Add maximum FPS feature (#356) 2024-11-28 09:45:59 -05:00
Chenlei Hu
16aea169ef 0.8.39 (#355) 2024-11-27 23:59:46 -05:00
Chenlei Hu
83ba7a8df7 Export ISerialisedGraph for frontend repo DTS (#354) 2024-11-27 23:50:16 -05:00
Chenlei Hu
e981fa01a0 Export types for frontend repo DTS (#353) 2024-11-27 22:13:59 -05:00
Chenlei Hu
8c0a868c9b 0.8.38 (#352) 2024-11-27 19:20:21 -05:00
filtered
304e229dc2 Fix custom widget pointerup receives NaN pos (#351) 2024-11-27 12:40:39 -05:00
Chenlei Hu
b8dbca529d 0.8.37 (#350) 2024-11-26 13:06:35 -05:00
filtered
f6e885f015 Ensure click_time is available to custom widgets (#349) 2024-11-26 13:05:47 -05:00
filtered
ffa2a24cb1 Fix slider regression caused by CanvasPointer (#347) 2024-11-26 13:05:24 -05:00
Chenlei Hu
c61b08af8f 0.8.36 (#344) 2024-11-25 11:06:40 -05:00
filtered
e35748faa4 Fix widget.mouse callback does not receive pointerup events (#342)
* Provide pointerup events to widget.mouse callback

* Fix regression in widget mouse cb

pointerup events are now sent to mouse() callback regardless of CanvasPointer state.
2024-11-25 11:05:50 -05:00
filtered
a95d8ebc87 Fix invalid callback return value preventing canvas redraw (#343)
* Fix invalid callback prevents redraw

When widget.mouse() is incorrectly implemented (no return value), it evaluates as falsy and prevents canvas redraw.

Changes default behaviour to ignore the return value when nullish.

* Fix pointermove for custom widget outside nodes

Events are now also sent when the pointer moves outside the bounds of the node.
2024-11-25 10:43:28 -05:00
Chenlei Hu
2fae2fa0c0 0.8.35 (#340) 2024-11-23 17:45:17 -05:00
filtered
696b8b2c63 Fix custom widget mouseover (#339) 2024-11-23 17:44:13 -05:00
Chenlei Hu
5807c90161 0.8.34 (#336) 2024-11-22 10:59:14 -05:00
filtered
2d69a87419 Use device scaling for drag-from-link checks (#334) 2024-11-22 10:57:37 -05:00
filtered
a6c3f5c1c7 Fix widget changed callback not called (#333) 2024-11-22 10:48:35 -05:00
filtered
ae6422bad1 Fix custom widgets not receiving pointermove events (#335) 2024-11-22 10:45:39 -05:00
Chenlei Hu
1f572b41f1 0.8.33 (#332) 2024-11-21 14:13:04 -05:00
filtered
75960485d3 Snapsize (#331)
* Improve group resize UX

Removes the teleport of the group corner to the pointer, on the first move event.

* Select groups when clicking titles

* Add snap to grid for groups

* Apply new group resize UX to nodes
2024-11-21 14:11:38 -05:00
Chenlei Hu
db8e1731c1 0.8.32 (#330) 2024-11-21 10:20:00 -05:00
filtered
ee45593558 Move Snap to Grid control to LiteGraphGlobal (#329)
* Fix snap to grid - now toggled at app level

Was impl. as per workflow.

* Update test expectations
2024-11-21 10:19:00 -05:00
filtered
f79133659f Clean up JSDoc (#327)
* Convert comments to JSDoc

* Clean JSdoc

* nit

* Clean up all JSDoc & ESLint warnings

Disables max-len for now
Removes redundant JSDoc tags (empty, same name, wrong name, etc)
2024-11-21 10:11:53 -05:00
Chenlei Hu
0263704c6c Disable slow jest tests (#328) 2024-11-21 09:43:32 -05:00
filtered
5469bfdd52 Add ESLint, pre-commit hook & format all files (#319)
* Add ESLint config

* Add ESLint packages

* Add prettier config

* Fix ESLint package version

* Format all files

* Format static assets

* Format project root config

* Add pre-commit code formatting

Formats .css & .js files automatically.  If any .ts or .mts files are staged, the entire project is type-checked.

Packages:
- lint-staged
- husky
- prettier
2024-11-20 21:50:58 -05:00
Chenlei Hu
69b1c86278 0.8.31 (#325) 2024-11-20 09:29:30 -05:00
filtered
b4b68c7e75 Fix fast widget conversion (#323) 2024-11-20 09:28:33 -05:00
Chenlei Hu
62955441a0 0.8.30 (#322) 2024-11-19 19:50:21 -05:00
filtered
ecb7fa4f0b Fix widget not updating on combo click (#321) 2024-11-19 18:26:36 -05:00
filtered
31c25b4ea1 Fixes pinned group contents moving (#316) 2024-11-18 13:17:24 -05:00
pythongosssss
1bec315427 Adds highlight to advanced widgets (#317)
* Adds highlight to advanced widgets

* Update snapshot
2024-11-18 13:16:52 -05:00
Chenlei Hu
a23da8eb17 0.8.29 (#318) 2024-11-18 10:13:05 -05:00
filtered
c0e8b33716 Snap everything to grid (#315)
* Implement snap to grid

- Moves positioning logic to LGraph
- Simplifies code
- Adds Pointer API to alt-clone node
- Removes always_round_positions, replaced by always snap to grid (default size is 1 when always snapping)

Fix refator error

* Fix group items snapped without group

* Allow snapping of all items

- Add snapToGrid to Positionable
- Impl. on all types
- Deprecated: alignToGrid is now a wrapper

* Fix test import alias, update expectations

* Prevent desync of before / after change events

Adds ability to perform late binding of finally() during drag start.

* nit - Refactor

* Fix unwanted snap on node/group add

* nit - Doc

* Add shift key state tracking for snap to grid

Private impl., no state API as yet.

* Add snap guides rendering

Nodes, reroutes

* Optimisation - reroute rendering

 Fixes exponential redraw

* Add snap guidelines for groups
2024-11-18 10:12:20 -05:00
Chenlei Hu
3e50941ce3 0.8.28 (#313) 2024-11-16 18:46:08 -05:00
Chenlei Hu
8345b980f6 Add DragAndScaleState for external proxy (#311) 2024-11-16 18:34:49 -05:00
filtered
b29a32c1ae Add CanvasPointer API (#308)
* Add position rounding feature

Replaces previous impls. which only worked on some items, and were triggered when unexpected e.g. clicking a node that hadn't been moved.

Update test expectations

* Narrow TS types - readonly

* nit - Clean up, Doc

* nit - Clean up legacy accessors

Marks as deprecated

* Fix TS type - IContextMenuOptions.scale

* [Refactor] dist2 for use in pointer API

* Add CanvasPointer - API for pointer events

Add TS strict types
Add final click drag distance math
Add option to retain events

* nit - Rename

* nit

* Remove Subgraph - unused & not maintained

* Remove live_mode

Unused, not maintained.

* Update README

Remove live_mode reference

* Update delete selected - include reroutes & groups

* Bypass link menu if alt/shift pressed

* Remove old dragged_node interface

Incomplete impl. - unused.
Superceded by selectedItems

* Fix top/left edge of rectangles not in hitbox

* [Refactor] Match function names to interface names

* Add interface to find widgets by Point

LGraphNode.getWidgetOnPos

* Add widget search param - includeDisabled

* nit - Doc

* Rewrite canvas mouse handling

- Rewrites most pointer handling to use CanvasPointer callbacks
- All callbacks are declared ahead of time during the initial pointerdown event, logically grouped together
- Drastically simplifies the alteration or creation of new click / drag interactions
- Click events are all clicks, rather than some processed on mouse down, others on mouse up

- Functions return instead of setting and repeatedly checking multiple state vars
- Removes all lines that needed THIRTEEN tab indents

* Split middle click out from processMouseDown

* Use pointer API for link menus

* Narrow canvas event interfaces

* Fix canvas event types

Replaces original workarounds with final types

* Refactor - deprecated isInsideRectangle

* Add canvas hovering over state

- Centralises cursor set behaviour
- Provides simple downstream override

* nit

* [Refactor] Use measure functions

* Add double-click API to CanvasPointer

a

* nit - Doc

* Allow larger gap between double click events

* Rewrite double-click into CanvasPointer actions

* Improve double-click UX

Prefer down events over up events

* Add production defaults

* Add middle-click handling

* Remove debug code

* Remove redundant code

* Fix add reroute alt-click adds two undo steps

* Fix click on connected input disconnects

Old behaviour was to disconnect, then recreate a new link on drop.

* Add module export: CanvasPointer
2024-11-16 17:35:30 -05:00
Chenlei Hu
f26f7dbe2c Revert "Add canvas update events (#297)" (#310)
This reverts commit 0e8f02f32f.
2024-11-16 17:32:53 -05:00
ArtificialLab
0e8f02f32f Add canvas update events (#297)
* (add) onNodeUpdated, onPositionChanged and onZoomChanged

* (fix) onPositionChanged

* (add) onNodeWidgetChanged callback
2024-11-16 07:01:59 +04:00
Chenlei Hu
68d9e7107e 0.8.27 (#307) 2024-11-14 17:17:27 -05:00
filtered
cc084811d9 Copy & Paste all items (#302)
* Add copy & paste of groups & reroutes

Complete rewrite of copy & paste
Fixes a bug where failure to clone a node would corrupt all subsequent nodes
No longer mutates nodes when copying

* Fix name collision

* Fix cannot copy specified nodes to clipboard

* Allow mapping of original IDs to pasted clones
2024-11-13 10:21:23 -05:00
Chenlei Hu
4c0c05ee6d 0.8.26 (#306) 2024-11-12 11:19:36 -05:00
filtered
3d6adf0225 Add Reroutes (#301)
* Add Reroute

- Initial Reroute implementation
- LLink and Reroute both implement the new LinkSegment interface
- LinkSegments can have a parentId, which always points to a Reroute

* Narrow TS type of schema v0.4 extras

* Add reroutes to schema 0.4

Use extras.reroutes to store additional data

* Add Reroute POC to LLink

* Add Reroute rendering

* Add Reroute context menu - Delete Reroute

* Update delete selected - include reroutes & groups

* Add Reroute select & move

* Include reroutes in area-select

* Move disconnect link logic to LLink

* Add Reroute connect

* nit

* Add Reroute support - connecting links

* Add Add Reroute from link menu (menu)

* nit

* Add shift-drag from reroute to add new link

* Prevent Reroutes from disappearing

Add keepReroutes option to prevent Reroute GC

* Add fourth param to connectInputToOutput

* Allow both connecting in/out to be null

* Move ConnectingLink start pos to Reroute

* Add link render options

* Refactor renderLink - spline / bezier

* Refactor renderLink - linear, straight

* Fix centre points on all link types

Improves link render time

* [Refactor] Generic recursive interface / flat set

* nit

* Allow Reroutes to be members of groups

* Start links from the closest reroute

For the "shift-click drag link from link" feature

* Add Reroutes using alt-click on link paths

* nit - Refactor

* nit - Refactor

* Fix reroute deselect UX

Temporary workaround

* Add Reroute link centre-marker handling

* Add optional link arrow markers

Add enum for link markers
-> Pointing the way forward ->
Set default centre marker to arrow

* Add module export: LinkMarkerShape

* Add link arrow direction for all link types

* Add Reroute auto-swivel with custom curves

* Add state switch to disable reroutes

Works at root of all canvas interactions, should leave existing reroutes untouched but invisible until e.g. links are edited / changed.

* Fix cannot deselect when reroutes disabled

* Include reroutes in select-all
2024-11-12 11:18:48 -05:00
Chenlei Hu
c6d7a446f2 0.8.25 (#299) 2024-11-10 09:56:51 -05:00
Chenlei Hu
75678ee43c Fix NODE_TEXT_SIZE style option (#298) 2024-11-10 09:54:07 -05:00
filtered
ca8e31c695 Emit only one change when deleting nodes (#296) 2024-11-10 09:40:36 -05:00
Chenlei Hu
9aa5bb69e8 0.8.24 (#293) 2024-11-08 14:22:43 -05:00
Chenlei Hu
34f8d3408b Add LGraphCavnas.fitViewToSelectionAnimated (#292) 2024-11-08 14:22:18 -05:00
Chenlei Hu
ca7192b1ba 0.8.23 (#291) 2024-11-08 13:50:17 -05:00
Chenlei Hu
c7d5c863ec Move createBounds to measure.ts (#290)
* nit

* Move createBounds to measure

* Export createBounds
2024-11-08 13:49:30 -05:00
Zoltán Dócs
6ad864bc20 Animate view to multiple nodes (#282)
* animateToNodes
- modify existing animation method to support passing multiple nodes, in which case the view is fit to the bounding box around them

* animateToBounds

* amend

* format

* amend
2024-11-08 13:40:15 -05:00
filtered
87c6d59546 Keep links connected when deleting nodes (#288)
* Allow node delete to keep more links connected

* Allow node delete to match every link

* Add config for connectInputToOutput
2024-11-08 11:13:14 -05:00
filtered
3e28ec5981 Update tests for schema v1 (#289) 2024-11-08 11:12:09 -05:00
Chenlei Hu
0f1c54081f 0.8.22 (#287) 2024-11-07 18:34:30 -05:00
filtered
fc0b8087db Graph serialisation update - Links & Reroutes (#279)
* nit

* Add LGraph state POCO

Moves last_link_id, last_node_id and creates same for group and reroute

fix import

* Add new serialisation to LGraph

Add LGraph schema 1
Remove reroute from old serialised graph
Remove brittle inherited types
Ensure stale links are not kept when clearing graph

* Add serialisable exports

* Ensure valid LGraph.state during deserialise
2024-11-07 18:33:54 -05:00
filtered
1c40aad87c Fix pin not respected by multi-select move (#284) 2024-11-07 15:58:49 -05:00
Chenlei Hu
80cbe491f8 0.8.21 (#283) 2024-11-06 21:47:31 -05:00
filtered
e1aac5cf61 Improve hitbox for group resize (#277)
Now the same as the visual area

Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2024-11-06 19:35:56 -05:00
filtered
7e21b00cc7 Replace test framework: jest -> vitest (#281)
* Replace test framework: jest -> vitest

* nit - remove deprecated npm scripts

* Add vitest config

* Add a few basic tests

* Update actions with vitest params

* Add correct expectations

* Remove jest config
2024-11-06 17:27:32 -05:00
Chenlei Hu
93c26ac99e 0.8.20 (#280) 2024-11-05 18:36:37 -05:00
filtered
2ba048de52 Remove hard-coded modifications to nodes (#247)
* Remove arbitrary 5 graph unit margin around nodes

* Remove arbitrary +1 pixel added to node width

---------

Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2024-11-05 18:35:59 -05:00
filtered
e6961f1c5a Code cleanup, docs, TS types (#278)
* Fix test TS types

Prefer relative imports over @imports

* Add tuple names SerialisedLLinkArray

* nit

* [Refactor] LGraphCanvas.computeConnectionPoint

* [Refactor] Add LGraphCanvas.#dirty()

* Remove string LLink IDs

No downstream support for strings at present.

* nit - Rename

* nit

* nit

* nit - Remove unused code

* nit - Doc

* nit

* nit - Remove redundant code

* Remove unused: LGraphCanvas.isOverNodeBox

* Optimise - remove 2d context save/restore

* [Refactor] Move node collapsed check to class

* Add minor code change to support stricter types

* Revert accidental deletion in 0f2d04d

0f2d04d09e5e8a27a6d46d8c910dc077ed2d9071
2024-11-04 21:08:59 -05:00
Chenlei Hu
e1a118a70f 0.8.19 (#276) 2024-11-04 15:10:16 -05:00
Chenlei Hu
5edfc185c5 Unify pin/unpin interface between LGraphNode and LGraphGroup (#274) 2024-11-04 15:09:17 -05:00
Chenlei Hu
b663f86c9e Serialize to node pos/size to plain array (#273) 2024-11-04 14:08:09 -05:00
Chenlei Hu
6c60045208 0.8.18 (#272) 2024-11-03 18:31:45 -05:00
filtered
ba52402851 Replace canvas "action" magic strings (#271) 2024-11-03 18:30:19 -05:00
filtered
ce8d39f650 Group update - titlebar, resize, config (#270)
* Backport group header from frontend

* nit - TS types & redundant code

* Refactor - simplify group resize

* Fix group resize can be inverted

* Move group resize check to group class

* Add config for group padding & default colour

* nit - Remove redundant code
2024-11-03 18:27:41 -05:00
filtered
3be1937c41 Update delete selected (#269)
* Standardise naming - deleteSelected

Renamed from deleteSelectedItems

* nit - Refactor to match future state
2024-11-03 18:10:46 -05:00
Chenlei Hu
d874493405 0.8.17 (#267) 2024-11-03 17:28:43 -05:00
Chenlei Hu
88edf11068 Create unique branch name [skip ci] (#266) 2024-11-03 17:26:05 -05:00
Chenlei Hu
6180f5ef55 Backspace delete selected (Nodes + Groups) (#265)
* Backspace delete selected (Nodes + Groups)

* nit

* nit
2024-11-03 17:22:08 -05:00
Chenlei Hu
62bc1ecd9f Ctrl+a select all items (Group + Node) (#264)
* Ctrl+a select all items (Group + Node)

* refactor

* nit
2024-11-03 17:16:11 -05:00
Chenlei Hu
30642850cb 0.8.16 (#263)
* Checkout new branch on release script run

* 0.8.16

* nit
2024-11-03 16:26:07 -05:00
filtered
1b110a62cf Add multi select & group nesting (#262)
* Add multi-select all canvas items (groups, nodes)

* Add Feat: Group & Node Multi-Select / Nesting

- Groups can now contain groups
- Nested groups re-order on top of parent groups
- Groups can be added / removed from selection
- Uses new Positionable interface - easily extensible to new types

* Enhance add / remove from selection UX

More in line with normal desktop UX.  Structured for keys to be customisable (if impl. later).

* Fix regression in link highlight

Legacy selection code still in use

* Allow nested groups to align perfectly on edges

* Remove group-move position rounding

Did not work under all circumstances, and resulted in misalignment more often than it helped.
2024-11-03 16:21:21 -05:00
filtered
e661decddc Positionable: Common interface for canvas items (#256)
* Add Positionable interface to canvas elements

* Add group resizeTo children

Refactor out duplicated code from Node

* Remove redundant "is_selected" check

* Improve measure pass - interface, caching

Node bounds once per render
Cached results

* Use cached bounds for repeat canvas calls

- Removes margin param from getNodeOnPos
- Removes margin param from getGroupOnPos
- Hitboxes now uniform for render / mouse features
- Simplifies code

* nit - Refactor

* Fix top-left edge of hitbox missing

* Add ID to groups
2024-11-03 11:12:21 -05:00
Chenlei Hu
d9efeb819d 0.8.15 (#260) 2024-11-03 10:47:54 -05:00
Chenlei Hu
6200aa8602 Reland animateToNode (#259)
* Reland animateToNode

* nit
2024-11-03 10:45:42 -05:00
Chenlei Hu
4dc3dc97f8 [Reland][skip ci] (add) watch to package.json scripts
Co-authored-by: dmx <vincent.f@intp.com>
2024-11-03 09:51:00 -05:00
Chenlei Hu
7c0240857c Revert branch to cb6e80a645 (#257) 2024-11-03 09:12:47 -05:00
dmx
9b0f572ca1 (feature) animateToNode method 2024-11-03 17:18:34 +04:00
dmx
11fe365983 (add) onPositionChanged and onZoomChanged events 2024-11-03 17:03:30 +04:00
dmx
13c8c80509 (add) watch to package.json scripts 2024-11-03 17:02:37 +04:00
dmx
78426148ac fix TS error 'Timeout' is not assignable to type 'number' 2024-11-03 10:00:38 +04:00
dmx
c8bac1aa40 add onNodeUpdated event in LGraph 2024-11-03 09:44:48 +04:00
dmx
79c53e0095 (prettier formatting) 2024-11-03 09:20:57 +04:00
dmx
cb6e80a645 update gitignore 2024-11-03 06:57:25 +04:00
Chenlei Hu
9ec17c04a9 Update test ci action (#255) 2024-11-02 13:11:32 -04:00
filtered
1dfe824239 Shared measure functions (#254)
* Add findPointOnCurve function

* Add measure functions: contains centre/rect

* Improve measure interfaces (ReadOnlyPoint/Rect)

* nit - Doc

* Add TS strict types

* Add TS strict types

* Add TS strict types

* Add TS type
2024-11-02 10:35:36 -04:00
filtered
c0217dbb7e Remove _ctor pattern from Node & Group (#248)
Convert to initializers
2024-11-01 23:12:03 -04:00
filtered
94f1ca4279 Remove future test (#249) 2024-11-01 19:00:02 -04:00
Chenlei Hu
d3f1b9b125 0.8.14 (#253) 2024-10-31 21:57:13 -04:00
Chenlei Hu
ca5a4f37c6 Add release script (#252) 2024-10-31 21:56:26 -04:00
filtered
020c912a8d Convert Links to ES6 Map & LLink Serialisation (#246)
* Fix intermittent links bug - graph.links Map()

Replaces graph.links with Map()
Adds a Proxy to provide for...in and indexer access
Temporarily uses merged Map+Record type, to ease downstream migration

* nit - Remove redundant code

* nit - Remove redundant null checks

* Add Serializable interface, used in LLink

Allows LLink to be serialised as an object rather than an array, bringing it inline with the rest of LiteGraph.
2024-10-31 21:53:00 -04:00
pythongosssss
eaaa0a4c39 Support for hidden & advanced widgets (#250) 2024-10-31 21:41:31 -04:00
filtered
d9d0837423 Code clean up (#244)
* Replace global var with enums

* Remove unused interface

* Add TS types

* Remove unused code

* nit - Clean up

* Add TS types

* nit - Refactor / clean up

* nit - Add TS types, clean up

* nit - Doc

* nit

* nit

* nit

* nit - Doc

* nit

* nit

* nit - let/const

* nit - Remove redundant code
2024-10-31 14:17:13 -04:00
filtered
002c955bf3 Minor bug fixes & refactors (#245)
* Fix TS errors - use correct property

* Fix graph version bumped without change

* Fix onDrawForeground callback has wrong area

* Move node pos getter/setter to class decl
2024-10-31 14:16:24 -04:00
Chenlei Hu
c444ee2c44 0.8.13 (#243) 2024-10-30 19:49:47 -04:00
filtered
2bea13443d Fix types not resolving through '@/imports' (#215) 2024-10-30 19:49:02 -04:00
filtered
b74662fbad Fix group order unexpectedly reversing (#242) 2024-10-30 19:48:48 -04:00
filtered
116b21e8f5 Add / fix canvas TS strict types, doc (#237)
* Fix circular depdency in global

* Add TS type guard private function

* Add TS type

* Add TS types & doc

* Add TS type initialisers

* Add NullableProperties type

* Add TS types

* Split node arrange code out to separate file
2024-10-30 14:32:55 -04:00
Chenlei Hu
e163724e64 0.8.12 (#241) 2024-10-30 12:05:14 -04:00
filtered
95af20c1c4 Snaps for Comfy 🫰 (#239)
* Add Snaps for Comfy

* Add snap visual effects

* Update node measure to work everywhere

* Fix findConnectByTypeSlot does not work for "*"

* Fix regression in fast widget conversion
2024-10-30 12:02:41 -04:00
filtered
94223b2846 Fix minor debug log spam when dragging link (#238) 2024-10-29 22:08:47 -04:00
Chenlei Hu
4ae80c6f79 0.8.11 (#240) 2024-10-29 21:40:54 -04:00
filtered
0b174adfeb Move canvas state to plain object (#233)
* Move canvas state to plain object

POCO that can be proxied without side-effects.
LGraphCanvasState interface added to package exports

* Add item dragging to canvas state
2024-10-29 21:39:46 -04:00
Chenlei Hu
a2c705897f 0.8.10 (#236) 2024-10-28 19:19:39 -04:00
filtered
21b9cb6089 Multi-link drag keeps links bundled properly (#224) 2024-10-28 19:00:08 -04:00
filtered
5070866299 Add / improve Node interfaces: Find slots & before connect callback (#226)
* Add connectByType wrappers

Can find slots without actually connecting.  Will be used for link snapping.

* Refactor - generic find free slot

* Fix link/links TS types - should not be undefined

* Fix / add TS types, docs

* Refactor - fix overloads TS types

* Refactor - optional chaining

* Extend node before-connect callback

The callback can now determine if connection is to a specific input, or just trying to connect any valid slot on the node.

* Add TS types - finish IOptionalInputsData
2024-10-28 18:59:43 -04:00
Chenlei Hu
4c6e6adce1 0.8.9 (#232) 2024-10-27 21:39:46 -04:00
filtered
83cb795301 Fix group deselected on title click (#230) 2024-10-27 21:10:08 -04:00
Chenlei Hu
92ac193640 0.8.8 (#228) 2024-10-27 16:59:10 -04:00
filtered
748d35b610 Add hover highlight and link dragging features (#222)
* Add new hover highlight and link dragging features

- Hovering effects added for node inputs and outputs
- Adds "mouseout" handler to properly clear node state when mousing off a node
- Fixes bug that causes outputs to always be dimmed out when connecting from inputs
- Slight performance improvement

* Add node highlight text colour option

* Add slot highlight colour fallback
2024-10-27 16:57:41 -04:00
Chenlei Hu
e27bbb1e71 0.8.7 (#227) 2024-10-26 18:18:26 -04:00
filtered
d3e0582c52 Add multi-group select & drag (#225) 2024-10-26 18:12:38 -04:00
Chenlei Hu
fa35fe4f7c 0.8.6 (#223) 2024-10-26 13:17:59 -04:00
filtered
3f5499f955 Canvas refactors - standardising (#221)
* Add distribute nodes

* Fix node alt-clone does not work like copy/paste

* Impl. emitEvent across LGraphCanvas

- Create TS types and union for all events
- Replaces all relevant dispatchEvent calls with emitEvent()

* Remove unused code

- showShowGraphOptionsPanel throws an exception when run.  Safe to assume this function not in use.
- Remove old commented code

* Refactor - minor changes to clear TS errors

* Add TS types

* nit - ts-expect-error, comments

* Remove legacy hook

* Refactor - prefer typeof / instanceof / isArray

* Refactor - TS type narrowing

* nit
2024-10-26 13:13:42 -04:00
filtered
70edfe2a33 Fix node shape not set by menu / setter (#214) 2024-10-25 21:07:26 -04:00
filtered
b86d40d8ad Update npm packages: TypeScript, DTS, audit fix (#218) 2024-10-25 20:17:55 -04:00
filtered
955daac9e6 Fix circular dependency (#219)
* Fix circular dependency - LGraphCanvas static init

* Remove dependency workaround
2024-10-25 20:17:31 -04:00
Chenlei Hu
86fb5339e8 0.8.5 (#217) 2024-10-25 07:54:31 -04:00
filtered
eb98a36d47 Typescript LiteGraphGlobal (#210)
* nit - Format

* Refactor - prefer typeof over constructor check

* Fix initialisers

* Add TS types

* nit - auto const/let

* nit - manual const/let

* nit

* Add TS types

* nit - Remove redundant JSDoc

* nit

* Use enums in LiteGraph global

* Fix TS type - node shape

* Add TS types

* Remove unused vars

* nit - Refactor / format

* nit - Refactor

* Refactor - optional chaining
2024-10-24 20:00:29 -04:00
filtered
c0afb1306e Convert CurveEditor to TypeScript (#211) 2024-10-24 19:59:36 -04:00
filtered
dd8cda7862 Typescript DragAndScale (#212)
* nit - Format

* Add TS types

* nit - auto const/let

* nit

* nit - Refactor / format

* Refactor - optional chaining
2024-10-24 18:41:21 -04:00
filtered
4d87476905 Typescript ContextMenu (#206)
* Format only

* Refactor TS narrowing & coercion

* nit - Refactor

* nit - Refactor

* Refactor optional chaining

* Add TS narrowing

* nit - Add base interface

* Add TS types

* Refactor - TS type narrowing

* Convert to arrow funcs for this ref
2024-10-12 11:00:50 -04:00
Chenlei Hu
9ba292da4a 0.8.4 (#209) 2024-10-12 10:59:17 -04:00
filtered
c34299f1d7 Typescript LGraphGroup (#208)
* nit - Format

* nit - auto const/let

* nit - Refactor / format

* Add TS types

* Replace dynamic getter/setter with class decls

* Make group move nodes param optional
2024-10-12 10:57:45 -04:00
filtered
96866e8624 Typescript LGraphNode (#207)
* nit - Fix whitespace

* nit - Remove outdated comments

* nit - Remove redundant jsdoc tag

* Format only

* Add TS types

* nit - Auto let/const

* Convert special-case vars

* nit - Redeclared params / vars

* nit - const/let

* Refactor - minor logic change

* Add TS types - overloads w/workaround

* Refactor - prefer typeof over constructor check

* Add TS types

* Remove unused params

* nit - Refactor

* Refactor LGraphNode.findSlotByType

* nit - Refactor / format

* Refactor - optional chaining

* Fix TS type - node shape
2024-10-12 10:53:25 -04:00
Chenlei Hu
f1bb7153da 0.8.3 (#205) 2024-10-11 12:22:56 -04:00
filtered
d69a2ae9b0 Typescript LGraphCanvas (#202)
* Format only

* Revert accidental change

* Fix redundant falsy check - uninit. var

* nit - Refactor const/let

* nit - Refactor const/let (manual)

* nit - Redeclared params

* Add TS types & minor refactor only

* Refactor - Clean up / reformat

- Add strings.ts helper functions
- Remove unused vars & local function params
- Simplifies code
- Rename vars for clarity
- Add TODOs and other comments
- Add ts-expect-error

* Redirect draw.ts enums to global file (temp.)

Should be revisited after TS merge complete
Corrects import of types from draw.ts into interfaces

* Add measure.ts - move util funcs from Global

* Add all imports required for TS conversion

* Refactor - TS narrowing

* nit - TS types & minor refactor

* Add missing types from recent PRs

Removes duplicate declarations
Fixes some type mismatches

* nit - Refactor recent PRs

* Revert incorrect decls backported

* Remove unused params

* Add TS types only

* Fix minor TS type coercion issues

Also removes redundant code

* nit - Refactor

* Remove @ts-nocheck

* Fix refactor regression - drag link to output

Issue was the result of fixing var declared outside of closure

* Restore original logic

---------

Co-authored-by: huchenlei <huchenlei@proton.me>
2024-10-11 12:21:10 -04:00
filtered
edfa5e70f2 ES2022 Output & whitespace-only minification (#201)
* Change vite output to ES2022

* Add whitespace-only minify using default esbuild

Does not work for .es.js output - limitation of vite.
Workaround for .es.js involves adding terser & a plugin.

* Remove @ts-expect-error from tests

* Update vite.config.mts

---------

Co-authored-by: Chenlei Hu <huchenlei@proton.me>
2024-10-10 21:00:45 -04:00
Chenlei Hu
1ddb80d291 0.8.2 (#204) 2024-10-10 17:46:05 -04:00
filtered
64518a300b Typescript LLink (#199)
* Format only

* Refactor array check, add TS types
2024-10-10 17:45:13 -04:00
Chenlei Hu
76e6f9366d 0.8.1 (#203) 2024-10-10 09:43:23 -04:00
filtered
9d0e06ac01 Typescript LGraph (#200)
* Format only

* nit - Refactor

* Refactor & reformat only

* Refactor TS narrowing & coercion

* Remove ts-nocheck

* Fix downstream break when node id is string
2024-10-08 16:36:39 -04:00
filtered
5d510cd674 Revert "Format all code with prettier (#197)" (#198)
This reverts commit 28382b7e45.
2024-10-08 13:14:36 -04:00
Chenlei Hu
28382b7e45 Format all code with prettier (#197)
* Add formatter support

* Format all code

* Fix moved @ts-expect-error
2024-10-07 14:06:44 -04:00
Chenlei Hu
8418c884c0 Remove unused test file (#196) 2024-10-07 13:24:14 -04:00
Chenlei Hu
7839969994 0.8.0 (#195) 2024-10-07 11:16:49 -04:00
Chenlei Hu
142c22ea41 Typescript conversion 0.7.84 (#194)
* Convert litegraph.js to TS

* Overhaul static litegraph.d.ts with updated types

* Fix rename oversights and revert fix unused param

- Some functions were broken by merging updated TS function signatures which included param renames
- Removal of unused params does not belong in the TS conversion PR, and has been reverted

* Remove legacy static .d.ts file

* Add callback decl from #180

Support allowing links to widgets (#180)
c23e610c11

* Convert NodeId to string | number

Results in significantly less downstream changes, despite being a change from the old static file.

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-10-07 11:15:29 -04:00
Chenlei Hu
36a8b1fea0 Don't draw badges when zoomed out (#192) 2024-10-04 08:34:46 -04:00
Chenlei Hu
a7e149304e 0.7.84 (#191) 2024-10-02 14:46:21 -04:00
Chenlei Hu
8ffb29d1a5 Add hidden link enum (#190) 2024-10-02 14:45:21 -04:00
bymyself
955dec36f2 Fix adding node to selection with ctrl click on mac (#189) 2024-10-02 10:41:41 -04:00
Chenlei Hu
596d6ecefa 0.7.83 (#187) 2024-10-01 11:08:44 -04:00
pythongosssss
c23e610c11 Support allowing links to widgets (#180)
* Add support for dragging links to widgets

* whitespace
2024-10-01 11:03:36 -04:00
Chenlei Hu
b3c785da4d 0.7.82 (#186) 2024-10-01 10:30:27 -04:00
Chenlei Hu
bb95a109e4 Allow panning when dragging a link (#185) 2024-10-01 10:29:34 -04:00
Chenlei Hu
dac886ae25 0.7.81 (#184) 2024-09-30 19:53:03 -04:00
Chenlei Hu
1574c16918 Canvas panning mode (#183)
* nit

* Read-only on holding space

* Expose dragging events
2024-09-30 19:52:52 -04:00
filtered
18600f48f9 Clean litegraph module entry file (#171)
* Move LiteGraph global class props, fix duplicates

* Split polyfills out to separate file

* Move prototype modifications to class decl
2024-09-30 16:31:18 -04:00
bymyself
21d0f6c149 Fix drag-select on Mac (#182)
* Drag selection work with meta key

* Apply to dragging rectangle
2024-09-30 16:28:48 -04:00
Chenlei Hu
2a5e846145 0.7.80 (#179) 2024-09-27 14:43:14 +09:00
pythongosssss
1c6f04f1db Add event when readonly changes (#160)
* Add even when readonly is changed

* Swap to ts private instead of es
2024-09-27 14:41:10 +09:00
huchenlei
70ca8b7c21 0.7.79 2024-09-27 10:45:06 +09:00
huchenlei
96f62f8f93 Revert accidental changes 2024-09-27 10:43:53 +09:00
huchenlei
0652de8e66 Change cursor shape to grab on dragging 2024-09-27 10:43:53 +09:00
filtered
7c11409881 Split CurveEditor out to TS file 2024-09-27 09:56:19 +09:00
filtered
c71b86da1f Split ContextMenu out to TS file 2024-09-27 09:56:19 +09:00
filtered
4a109deb8a Split LGraphCanvas out to TS file
Fixes circular dependency
2024-09-27 09:56:19 +09:00
filtered
86d232e939 Split DragAndScale out to TS file 2024-09-27 09:56:19 +09:00
filtered
d7c8a52351 Split LGraphGroup out to TS file 2024-09-27 09:56:19 +09:00
filtered
1c835b04dc Split LGraphNode out to TS file 2024-09-27 09:56:19 +09:00
filtered
f13b7c8818 Split LLink out to TS file 2024-09-27 09:56:19 +09:00
Chenlei Hu
1bb0dab67f Split LGraph out to TS file (#175)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-09-27 09:45:43 +09:00
filtered
6ee95f1201 TypeScript conversion groundwork (#163)
* ContextMenu ES6 class conversion

* Fix compat with extensions

* CurveEditor ES6 class conversion

* Split most of the LiteGraph global out to a class

* Move remainder of LiteGraph global to class file

* Remove IIFE wrapper

* Fix jest tests throwing due to type narrowing
2024-09-27 08:20:30 +09:00
Chenlei Hu
8a0adc55d8 0.7.78 (#174) 2024-09-26 15:08:16 +09:00
filtered
1404dd6ffe CurveEditor ES6 class conversion (#162) 2024-09-25 19:23:56 +09:00
filtered
6f5fcc0899 Context menu ES6 class conversion (#161)
* ContextMenu ES6 class conversion

* Fix compat with extensions
2024-09-25 19:23:12 +09:00
pythongosssss
bfe7c18e18 Add change events, to use instead of litegraph change methods. (#158)
* Add change events, to use instead of litegraph change methods.

* Move to wrapper function
2024-09-24 15:39:57 +09:00
pythongosssss
7ab8ad2cd3 Allow shift+click on input to create new link from origin (#153) 2024-09-24 12:11:28 +09:00
Chenlei Hu
5d5d1c3e38 0.7.77 (#157) 2024-09-22 15:25:01 +09:00
Chenlei Hu
dd0f0d2890 Restyle hollow circle node slot (#156) 2024-09-22 15:23:54 +09:00
Chenlei Hu
0a86c3347c 0.7.76 (#155) 2024-09-22 11:49:40 +09:00
Chenlei Hu
1ecf5e0a0f Support hollow circle slot shape (#154)
* Support hollow circle slot shape

* Fix stroke
2024-09-22 10:06:46 +09:00
Chenlei Hu
cd1d5d16bc 0.7.75 (#149) 2024-09-16 10:17:44 +09:00
pythongosssss
ba5cffb5b8 Allow link creation from another link by shift+clicking (#148) 2024-09-16 10:15:29 +09:00
Chenlei Hu
fb561983bc 0.7.74 (#146) 2024-09-15 11:01:12 +09:00
Chenlei Hu
3a626f4596 Add getter of nodes on LGraphGroup (#145) 2024-09-15 11:00:32 +09:00
Chenlei Hu
c6b7716211 0.7.73 (#144) 2024-09-14 17:03:17 +09:00
Chenlei Hu
574a4ee440 Fix configure trying to write to getter field (#143)
* Fix configure trying to write to getter field

* Only add getter for nodes and groups
2024-09-14 17:02:22 +09:00
Chenlei Hu
09ee00b92a 0.7.72 (#142) 2024-09-14 16:14:47 +09:00
Chenlei Hu
4c67692e62 Add getters to LGraph private fields (#141) 2024-09-14 16:13:56 +09:00
Chenlei Hu
0f1b72ce94 Version (#140)
* Proper node width/height calculation

* 0.7.71
2024-09-12 17:00:13 +09:00
Chenlei Hu
7dbe6400bb 0.7.70 (#139)
* setDirty

* 0.7.70
2024-09-12 14:27:04 +09:00
Chenlei Hu
1aa2b21551 0.7.69 (#138) 2024-09-12 14:14:34 +09:00
Chenlei Hu
56d3e084af Pin/Unpin all selected nodes on context menu (#136) 2024-09-12 14:09:24 +09:00
Chenlei Hu
a452beb916 0.7.68 (#137) 2024-09-12 13:59:47 +09:00
filtered
32740cc811 Add export ContextMenu (and clamp because why not) (#134) 2024-09-12 10:49:11 +09:00
Chenlei Hu
0ade87b674 0.7.67 (#133) 2024-09-11 18:42:14 +09:00
Chenlei Hu
b1367403b7 Fix badge width when invisble (#132) 2024-09-11 18:40:17 +09:00
Chenlei Hu
87ec5cc104 0.7.66 (#131) 2024-09-11 17:44:07 +09:00
Chenlei Hu
526ba6d8b3 Add LGraphBadge support on node (#130)
* Add badge

* Add badge support
2024-09-11 17:42:43 +09:00
Chenlei Hu
28570fdd24 0.7.65 (#129) 2024-09-09 16:06:14 +09:00
bymyself
6f121fc245 Fix legacy searchbox focus on Firefox (#127) 2024-09-07 18:17:36 +09:00
filtered
009ef1c84b Fix collapsed regression in #114 (#126) 2024-09-06 08:02:10 -04:00
Cesaryuan
49944a0745 Fix blurry links on HiDPI screen (#116) 2024-09-05 11:09:29 -04:00
Chenlei Hu
79d81ec990 0.7.64 (#125) 2024-09-05 10:59:13 -04:00
Chenlei Hu
8a5b165a5b [skip ci] fix getNodeById arg type (#124) 2024-09-05 10:58:33 -04:00
Chenlei Hu
adb8ff335c 0.7.63 (#122) 2024-09-04 18:39:51 -04:00
Chenlei Hu
99d0de239c Fix collapse and resize (#121) 2024-09-04 15:45:22 -04:00
Chenlei Hu
67f486fff7 Add pin icon to end of title (#120) 2024-09-04 15:13:10 -04:00
Chenlei Hu
6636f9869b 0.7.62 (#119) 2024-09-04 13:48:39 -04:00
Chenlei Hu
05ce780cee Fix group title detect (#118) 2024-09-04 12:37:53 -04:00
Chenlei Hu
7897ffdaba Support group pinning and show pin icon on pinned node & group (#117)
* Add locking mechanism

* Add group locking

* Lock move/resize

* Move group menu options

* Rename locked to pinned

* Disable resize on pinned nodes

* nit
2024-09-04 12:33:59 -04:00
Chenlei Hu
22e671df7d 0.7.61 (#115) 2024-09-03 15:32:44 -04:00
Chenlei Hu
74345f27f7 Add selected group bound highlight (#114)
* Add drawSelectionBounding function

* Add selected group highlight

* nit
2024-09-03 15:30:11 -04:00
Chenlei Hu
5338a147ee Refactor LGraphGroup.draw (#113) 2024-09-03 14:11:56 -04:00
Chenlei Hu
658f60a241 0.7.60 (#112) 2024-09-03 13:08:19 -04:00
Chenlei Hu
85076881c8 showConnectionMenu with searchbox options (#111)
* showConnectionMenu with searchbox options

* nit
2024-09-03 13:07:38 -04:00
Chenlei Hu
bcd3c6b30f 0.7.59 (#110) 2024-09-02 17:45:06 -04:00
Chenlei Hu
48c669626b Add litegraph:group-double-click event (#109) 2024-09-02 17:44:19 -04:00
Chenlei Hu
a93a1e1a21 0.7.58 (#108) 2024-09-02 14:32:44 -04:00
Chenlei Hu
e25c21026c Fix LGraphNode.pos serialization (#107) 2024-09-02 14:31:05 -04:00
Chenlei Hu
8a8ebb4906 0.7.57 (#106) 2024-08-29 11:46:47 -04:00
Chenlei Hu
626095b6e9 Fix prompt dialog dismiss (#105) 2024-08-29 11:46:07 -04:00
Chenlei Hu
a86d293ff2 0.7.56 (#104) 2024-08-29 11:38:22 -04:00
Chenlei Hu
e0bd271897 LGraphCanvas ES6 class conversion (#103)
* LGraphCanvas ES6 class conversion

* nit

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-29 11:36:46 -04:00
Chenlei Hu
6f71d9a441 Convert static canvas vars to private static fields (#102)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-29 10:43:09 -04:00
Chenlei Hu
af99640aa9 DragAndScale ES6 class conversion (#101)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-29 10:40:28 -04:00
Chenlei Hu
26cccd656d LGraphGroup ES6 class conversion (#100)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-29 10:35:02 -04:00
Chenlei Hu
643b2a3e44 0.7.55 (#99) 2024-08-28 15:42:49 -04:00
Chenlei Hu
4f51edefef Revert "Revert "LGraphNode ES6 class conversion (#68)" (#72)" (#98)
This reverts commit e327b5fe62.
2024-08-28 15:41:25 -04:00
Chenlei Hu
8db34c8476 0.7.54 (#97) 2024-08-28 11:01:41 -04:00
Chenlei Hu
0b19a039eb Fix group ref (#96) 2024-08-28 11:01:03 -04:00
Chenlei Hu
85245e44bd 0.7.53 (#95) 2024-08-28 10:58:26 -04:00
Chenlei Hu
b419b53bd5 Add LGraphGroup.addNodes (#94) 2024-08-28 10:57:42 -04:00
Chenlei Hu
2e8d96eb1d 0.7.52 (#93) 2024-08-27 11:08:56 -04:00
Chenlei Hu
48613a3539 Fix not title click cond (#92) 2024-08-27 11:08:08 -04:00
Chenlei Hu
540519cfa2 0.7.51 (#91) 2024-08-27 10:43:17 -04:00
Chenlei Hu
9fe28f4826 Fix hook on undefined (#90) 2024-08-27 10:42:31 -04:00
Chenlei Hu
8e0494abd2 0.7.50 (#89) 2024-08-26 22:31:45 -04:00
Chenlei Hu
fecb7d6707 Add onNodeTitleDblClick hook (#88)
* Add onNodeTitleDblClick hook

* nit
2024-08-26 22:30:46 -04:00
bymyself
41ab07747a Add zoom_speed to LGraphCanvas type def (#83) 2024-08-26 22:30:33 -04:00
Chenlei Hu
1aa711d593 0.7.49 (#87) 2024-08-25 15:04:06 -04:00
bymyself
227541c265 Increase timeout on prompt dialog dismiss (#86)
* Increase timeout on prompt dialog dismiss

* Add devtools node to test wf
2024-08-25 15:01:23 -04:00
Chenlei Hu
3387e164e5 0.7.48 (#82) 2024-08-21 13:01:19 -04:00
bymyself
f351b1d87a Clock prompt dialog input on canvas click (#80) 2024-08-21 11:47:00 -04:00
bymyself
86d9391807 Expose zoom speed option (#19)
* Expose zoom speed option

* Avoid unnecessary operations
2024-08-21 11:44:55 -04:00
Chenlei Hu
652fcb6fb5 0.7.47 (#77) 2024-08-17 23:03:59 -04:00
Chenlei Hu
1cbb74b1b6 Make node id serialization optional (#76) 2024-08-17 23:03:11 -04:00
bymyself
effa21653a Fix truncating non-strings (#74) 2024-08-17 23:01:25 -04:00
Chenlei Hu
182e934e47 0.7.46 (#73) 2024-08-16 11:07:39 -04:00
Chenlei Hu
e327b5fe62 Revert "LGraphNode ES6 class conversion (#68)" (#72)
This reverts commit fcca975cbd.
2024-08-16 11:06:54 -04:00
Chenlei Hu
cd66fa4711 0.7.45 (#71) 2024-08-16 10:54:23 -04:00
Chenlei Hu
5e0517f390 Avoid sort nodes in place (#70) 2024-08-16 10:53:29 -04:00
Chenlei Hu
f913d66c46 0.7.44 (#69) 2024-08-11 10:09:20 -04:00
Chenlei Hu
fcca975cbd LGraphNode ES6 class conversion (#68)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-11 10:06:46 -04:00
Chenlei Hu
f00b6b1b59 LLink ES6 class conversion (#67)
Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-09 13:25:46 -04:00
Chenlei Hu
b0bcb0e062 Remove unnecessary compatibility layer (#66) 2024-08-09 13:18:51 -04:00
Chenlei Hu
c5b0327cfe 0.7.43 (#65) 2024-08-09 11:33:43 -04:00
Chenlei Hu
d531f8c4ae Add npm publish action (#64) 2024-08-09 11:32:18 -04:00
Chenlei Hu
16a3d384b6 ES6 class convertion of LGraph (#63)
* LGraph ES6 class conversion

* Add compatibility to prototype extension

* Add jest test action

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-08-09 11:20:05 -04:00
bymyself
9b229220a3 centerOnNode use DPI (#49) 2024-08-06 13:36:08 -04:00
Chenlei Hu
73857f1930 Add GitHub action CI test (#59)
* Add GitHub action CI test

* Update package lock
2024-08-06 12:41:56 -04:00
Chenlei Hu
704b8e291e Remove legacy unused files (#57) 2024-08-06 11:50:35 -04:00
Chenlei Hu
dbbd072b43 Remove unused files (#56) 2024-08-06 11:38:35 -04:00
filtered
f937ff5ec5 Fix deselect delete (#51)
* Fix deselect per-node always fails silently

* Fix shift + drag node relying on broken deselect
2024-08-06 11:32:04 -04:00
Chenlei Hu
d2ef32fcb5 Fix Vite build (#55)
* Fix build output

* 0.7.37

* Fix type export

* 0.7.38

* Adjust build

* 0.7.39

* Add css to package declaration

* 0.7.40

* ESM style named export

* 0.7.41

* Fix style export for unit test

* 0.7.42
2024-08-06 10:56:57 -04:00
Chenlei Hu
25a2a6c5c9 0.7.36 (#54) 2024-08-06 09:36:53 -04:00
filtered
ddd1ac4f99 Add vite build (#53)
* Add vite build - baseline

* Fix build output folder structure

Matches pre-vite output

* Fix litegraph errors introduced by vite process

- Remove pre-written encapsulating iife (one is injected by vite)
- Replace all references to the global "this" with globalThis
2024-08-06 09:14:17 -04:00
filtered
d2c72243f8 Increase node input & output slot hitboxes (#45)
* Fix render bug - invalid slot shown as valid

* Increase hitbox of input/output slots

Improves UX by making wiring nodes easier.

* Add variable input hitbox width
2024-08-05 10:30:15 -04:00
filtered
c981b93084 Fix events not properly removed (#46)
Minor fix: someone forgot to finish their copy/paste, apparently.
2024-08-03 09:11:29 -04:00
Chenlei Hu
dbb174b083 0.7.35 (#43) 2024-07-31 10:58:15 -04:00
filtered
f88fe82445 Remove extremely inefficient test code (#42)
With this change, when moving the mouse in circles on empty ComfyUI background, CPU use and calls to drawNode are _significantly_ reduced.
2024-07-31 10:06:33 -04:00
bymyself
c2c4160af0 Use group font size from user (#41) 2024-07-30 20:33:49 -04:00
Chenlei Hu
daa33fad94 0.7.34 (#40)
* 0.7.33

* Fix types

* 0.7.34

* Update readme
2024-07-30 16:09:07 -04:00
Chenlei Hu
52bcf71e44 Relands #31 and #32 (#39)
* Add node disconnect shortcuts (#31)

* Fix loop break missing

* Fix logic - cannot reconnect AND disconnect

* Add ctrl + alt + click to disconnect nodes

Adds disconnect feature and very minor bug fixes (in separate commits):
- Ctrl + Alt + Click: Disconnect an input or output
- Ctrl + Alt + Click & Drag: Rewire any input/output to another node with a single click
- Added LiteGraph setting, on by default.

6036: skip_action = true

Not sure why skip_action was set to true, here.  It prevents disconnect and drag to a new output on the same click, so I've included it in the main commit.  Ideally, this should be controlled by a consumer hook, e.g. onDisconnectInput.

* Add output multi-link move using shift-click (#32)

When an output connects to multiple inputs, and you'd like to move all of those links to another node, you are currently required to drag each new link one by one.

This commit adds the ability to move everything at once, using Shift + Click (and drag).

It -does not- currently work with the drop to blank space + search for new node.  It will j ust rewire the first.  This can probably be fixed easily enough.

It -does- function with reroute nodes, however it requires that they are dropped onto the new output directly, not just anywhere on the node.  This is expected, really.

* Update empty-release event protocol

---------

Co-authored-by: filtered <176114999+webfiltered@users.noreply.github.com>
2024-07-30 15:11:13 -04:00
Chenlei Hu
6126ebc8dc Revert "Add node disconnect shortcuts (#31)" (#38)
This reverts commit 053caa4ccb.
2024-07-30 08:47:32 -04:00
Chenlei Hu
5bec26f4f2 Revert "Add output multi-link move using shift-click (#32)" (#37)
This reverts commit 3175828350.
2024-07-30 08:46:45 -04:00
Chenlei Hu
58c1f6ea32 0.7.32 (#36) 2024-07-29 21:36:27 -04:00
filtered
3175828350 Add output multi-link move using shift-click (#32)
When an output connects to multiple inputs, and you'd like to move all of those links to another node, you are currently required to drag each new link one by one.

This commit adds the ability to move everything at once, using Shift + Click (and drag).

It -does not- currently work with the drop to blank space + search for new node.  It will j ust rewire the first.  This can probably be fixed easily enough.

It -does- function with reroute nodes, however it requires that they are dropped onto the new output directly, not just anywhere on the node.  This is expected, really.
2024-07-28 21:15:13 -04:00
filtered
053caa4ccb Add node disconnect shortcuts (#31)
* Fix loop break missing

* Fix logic - cannot reconnect AND disconnect

* Add ctrl + alt + click to disconnect nodes

Adds disconnect feature and very minor bug fixes (in separate commits):
- Ctrl + Alt + Click: Disconnect an input or output
- Ctrl + Alt + Click & Drag: Rewire any input/output to another node with a single click
- Added LiteGraph setting, on by default.

6036: skip_action = true

Not sure why skip_action was set to true, here.  It prevents disconnect and drag to a new output on the same click, so I've included it in the main commit.  Ideally, this should be controlled by a consumer hook, e.g. onDisconnectInput.
2024-07-28 21:14:46 -04:00
Chenlei Hu
2c087519d7 0.7.31 (#35) 2024-07-28 14:06:31 -04:00
bymyself
299b9fbe95 Add ARIA attributes to contextmenu (#30) 2024-07-28 13:51:05 -04:00
bymyself
7504f3e017 Make node pin option text reactive (#29) 2024-07-28 13:50:27 -04:00
Chenlei Hu
8742788747 0.7.30 (#34) 2024-07-28 13:25:46 -04:00
Chenlei Hu
ea8a9effe5 Fix undefined var 'cloned' (#33) 2024-07-28 13:19:03 -04:00
Chenlei Hu
a86d8797c5 0.7.29 (#28) 2024-07-23 11:16:45 -04:00
Chenlei Hu
04946a6fc9 0.7.28 (#27) 2024-07-23 11:08:11 -04:00
Chenlei Hu
d746f04431 Fix var declaration (#26) 2024-07-23 11:06:36 -04:00
Chenlei Hu
6280fbf2c7 0.7.27 (#25)
* Update README

* 0.7.27
2024-07-23 10:50:56 -04:00
filtered
ee0b8a07b6 Fix empty input not used when connecting links (#24)
When dragging a link onto a node, it will always replace the first matching input type, unless you drop in the (respectively tiny) input hit box.

This commit fixes that, honouring the intended behaviour (preferFreeSlot is true in internal calls).
2024-07-21 11:09:17 -04:00
Chenlei Hu
10a30604f4 0.7.26 (#22)
* 0.7.26

* README update
2024-07-18 15:51:51 -04:00
Chenlei Hu
12fe34cf10 Sort node on serialization (#21) 2024-07-18 15:46:54 -04:00
bymyself
1fdf49fe85 Truncate overflowing combo widget text (#17)
* Truncate overflowing combo widget text

* Avoid uneccessary calls to

* Use unicode ellipsis

* Only measure first 3 chars
2024-07-18 15:46:01 -04:00
Chenlei Hu
ac8cb33ac1 0.7.25 (#15) 2024-07-07 23:22:02 -04:00
Chenlei Hu
1592ea97b4 Update types (#14) 2024-07-07 23:20:52 -04:00
Chenlei Hu
9b28af1800 0.7.24 (#13) 2024-07-07 18:35:57 -04:00
Chenlei Hu
6231ff5dcd Fix event content (#12) 2024-07-07 18:35:03 -04:00
Chenlei Hu
8e9a0898e5 Revert ESM change (#11) 2024-07-06 18:39:59 -04:00
Chenlei Hu
e361b39f36 Emit searchbox triggering canvas events (#10)
* Emit canvas event

* Update version
2024-07-06 18:13:26 -04:00
Chenlei Hu
2a935df408 Use ESM style export (#9)
* ESM style export

* Update version
2024-07-06 17:49:57 -04:00
Chenlei Hu
ebb0d19da1 Update README.md 2024-07-05 20:00:53 -04:00
Chenlei Hu
989aa51270 Update README.md 2024-07-05 20:00:05 -04:00
Chenlei Hu
7d211fa4d1 Update version (#8) 2024-07-05 19:51:13 -04:00
Chenlei Hu
ce7d0a67cd Fix zoom (#7) 2024-07-05 19:49:41 -04:00
Chenlei Hu
1933526a61 Distribute src/litegraph.js (#6)
* Use most-up-to-date src/litegraph.js as index

* Update version

* nit
2024-07-05 18:35:32 -04:00
Chenlei Hu
8f1d91f952 Make necessary type def changes for TS repo (#3)
* Make necessary type def changes for TS repo

* Revert unwanted changes

* Revert more accidental changes

* Update version
2024-07-05 15:48:20 -04:00
Chenlei Hu
716180540f Change main to litegraph.core.js (#5) 2024-07-05 15:27:49 -04:00
Chenlei Hu
721c4a9556 Only publish litegraph.core.js (#4)
* Only publish litegraph.core.js

* Update version
2024-07-05 15:24:27 -04:00
Chenlei Hu
a59f6e8001 Update repo info (#2) 2024-07-05 12:33:46 -04:00
Chenlei Hu
97e9f6ceb6 Merge pull request #1 from Comfy-Org/comfyui
Comfy UI custom changes
2024-07-05 11:47:28 -04:00
comfyanonymous
c608227c3c Fix links sometimes not being correct when copy pasting nodes. 2024-04-05 15:25:59 -04:00
pythongosssss
49a3e31402 Fix using enter to select item (#6) 2024-02-06 12:27:29 -05:00
pythongosssss
5925961fa1 Show node title in search and also search title (#5)
Fix long types overflowing dialog
2024-01-30 22:24:37 -05:00
pythongosssss
208eb2d006 Support custom hide timeout on node search dialog (#4) 2024-01-23 19:48:42 -05:00
comfyanonymous
eec3575df5 Auto select value in prompt. 2023-12-21 13:18:52 -05:00
comfyanonymous
6a0e012475 Increase maximum number of nodes to 10k. 2023-12-21 13:18:23 -05:00
comfyanonymous
a9d6ff977f Fix group loading. 2023-12-21 13:08:53 -05:00
pythongosssss
f71e6f3106 allow nodes to be specified when copying (#3) 2023-12-21 13:08:53 -05:00
comfyanonymous
3a3a51cfcd Lower search timeout. 2023-12-21 13:05:43 -05:00
comfyanonymous
fb126fff4f Fix middle mouse drag. 2023-12-21 13:05:43 -05:00
comfyanonymous
a525552030 Fix litegraph button being black on light theme. 2023-12-21 13:05:43 -05:00
comfyanonymous
864d0f1270 Add back roundRect so firefox ESR can work again. 2023-12-21 13:05:43 -05:00
comfyanonymous
41050752dd Fix for high DPI. 2023-12-21 13:05:43 -05:00
comfyanonymous
8e6be3c8de Put PR #386 in right file. 2023-12-21 13:05:43 -05:00
comfyanonymous
adbbc53fa4 Move properties panel from double click to menu option. 2023-12-21 13:05:43 -05:00
comfyanonymous
8cc3cd39d9 Make nodes easier to resize. 2023-12-21 13:05:43 -05:00
comfyanonymous
59192b8a58 enable new CTRL-SHIFT-V 2023-12-21 13:05:43 -05:00
comfyanonymous
4e0670ffb1 litegraph dev forgot to remove the title height from the collision if it's hidden 2023-12-21 13:05:43 -05:00
comfyanonymous
db34e87d6c Allow dragging again. 2023-12-21 13:05:43 -05:00
comfyanonymous
6c746ab5fc ComfyUI fixes for mobile stuff. 2023-12-21 13:05:43 -05:00
Javi Agenjo
b3862e9ae3 Merge pull request #431 from felixniemeyer/patch-1
add comfyUI to README paragraph "projects using it"
2023-12-05 12:09:29 +01:00
fairlix
519b9bb14f add comfyUI to projects using it 2023-12-04 14:47:12 +01:00
Javi Agenjo
2a1b25f850 Merge pull request #405 from M1kep/fix/group-drag
fix: Correct bounding box calculation
2023-11-28 08:19:08 +01:00
Javi Agenjo
015547db2e Update base.js 2023-10-27 10:28:34 +02:00
Javi Agenjo
3acdcee1fd Update network.js 2023-10-26 20:36:33 +02:00
Javi Agenjo
2bc9fd9e41 Update network.js 2023-10-26 20:31:10 +02:00
Javi Agenjo
fbdd6aeab3 Merge pull request #421 from OptrixAU/master
Fixes issue with restoring serialised graphs with widgets set to 0.
2023-10-05 11:08:44 +02:00
tamat
2d83d6e62c fixed bug in operator 2023-10-05 10:54:37 +02:00
tamat
a729b07744 fixed 2023-10-05 10:52:49 +02:00
Steven Harding
e3cde7f66e Fixes issue with restoring serialised graphs with widgets set to 0. 2023-10-05 09:03:07 +11:00
Javi Agenjo
44e49acaaa Merge pull request #418 from dotJack/master
Fix typeof compared to undefined and not "undefined"
2023-09-25 12:07:39 +02:00
Kristjan Pärt
8e08c77c42 fix typeof implementations not actually checking for typeof undefined 2023-09-25 11:10:55 +03:00
Javi Agenjo
2693f187b4 Merge pull request #414 from bcq028/master
Fix LGraphGroup node serialize error
2023-09-18 10:25:54 +02:00
Javi Agenjo
8c4a1debe3 Merge pull request #415 from 0xlws/0xlws-patch-1
refactor: remove '!' from server url
2023-09-18 10:25:19 +02:00
0xlws
4dca96c9d7 refactor: remove '!' from server url 2023-09-15 09:30:54 +02:00
bcq
bc0254f77f Fix LGraphGroup node serialize error 2023-09-09 20:15:32 +08:00
Javi Agenjo
21bdba60a4 Merge pull request #413 from Lerc/master
Middle mouse drag (even when over nodes)
2023-08-17 12:01:43 +02:00
Neil Graham
9b24af3b65 Middle mouse drag (even when over nodes) when middle_click_slot_add_default_node is false 2023-08-17 17:42:39 +12:00
Michael Poutre
a60e26c7b7 refactor: Optimize getBounding 2023-07-31 19:42:48 -07:00
Javi Agenjo
7e9518fd7e Merge pull request #410 from Guillaume-Fgt/slider_precision
replacing slider precision harcoded value
2023-07-31 12:01:10 +02:00
Guillaume Faguet
8785006770 typo 2023-07-31 11:08:09 +02:00
Guillaume Faguet
6687056387 changed precision check from undefined to null 2023-07-31 10:18:53 +02:00
Guillaume Faguet
994114160b replacing slider precision harcoded value 2023-07-31 09:43:58 +02:00
Michael Poutre
beee147000 fix: Update node.getBounding box to support collapsed nodes and shadows 2023-07-28 20:22:12 -07:00
tamat
551643839a build 2023-07-17 11:21:38 +02:00
Javi Agenjo
31d7f900dd Merge pull request #403 from jnyfil/master
Fix auto-open bug in context menu
2023-07-17 11:18:22 +02:00
jnyfil
cf3d2d1f71 Fix auto-open bug in context menu 2023-07-11 19:56:28 +09:00
Javi Agenjo
23c300b7ac Merge pull request #401 from moritz89/master
Remove extending the Javascript builtin objects
2023-06-30 13:47:11 +02:00
Moritz Ulmer
aec5d622a9 Remove extending the Javascript builtin objects
- Remove extending the Math & CanvasRenderingContext2D classes.
  - It was messing up the typescript 4.9+
  - Using the built-in roundRect function
  - Adding global clamp function
- Add some type corrections in litegraph.d.ts
- Fix a couple of build issues

Co-authored-by: Ranuka Perera <premium@sawrc.com>
Co-authored-by: Moritz Ulmer <moritz.ulmer@posteo.de>
2023-06-30 13:45:43 +02:00
Javi Agenjo
0a4bd193a3 Merge pull request #389 from ltdrdata/Main
block node dragging if node is 'pinned'
2023-06-30 09:31:59 +02:00
Javi Agenjo
2970a8263e Merge pull request #400 from KaruroChori/master
Fixed exports for rollup bundler
2023-06-26 08:32:13 +02:00
karurochari
55f39024e9 Fixed exports for rollup bundler 2023-06-23 14:07:50 +00:00
Dr.Lt.Data
51df6ed35f Merge branch 'comfyanonymous:master' into Main 2023-06-12 10:41:50 +09:00
Javi Agenjo
2e95dd1e6c Merge pull request #396 from space-nuko/use-uuids
Option to use UUIDs instead of integers for node IDs
2023-06-04 19:23:30 +02:00
space-nuko
acb3a4a1f4 Untabify 2023-06-01 17:18:51 -05:00
space-nuko
51b2bd612c Don't copy non-clonable nodes 2023-06-01 17:07:05 -05:00
space-nuko
43aa627d34 Fix clonable test 2023-06-01 17:04:04 -05:00
space-nuko
6d86865d7b Reassign IDs of cloned subgraphs 2023-06-01 17:00:07 -05:00
space-nuko
77360a6e71 Option to use UUIDs instead of integers for node IDs 2023-06-01 14:23:51 -05:00
Javi Agenjo
0f2a905a07 Merge pull request #393 from lucklyisgood/master
Fix issue with subgraph inputs and outputs not being clickable in custom canvas size
2023-05-19 16:29:46 +02:00
lucklyisgood
9936e3de5d Refactor LGraphCanvas drawButton click logic(2) 2023-05-19 13:04:37 +00:00
lucklyisgood
676bb3617a Refactor LGraphCanvas drawButton click logic 2023-05-19 12:33:51 +00:00
lucklyisgood
bdde19b014 fix mouse pos detection in LGraphCanvas.drawButton 2023-05-19 09:45:57 +00:00
lucklyisgood
16c294e062 Fix issue with subgraph inputs and outputs not being clickable in custom canvas size 2023-05-19 14:07:17 +08:00
Dr.Lt.Data
312de8567b Merge branch 'comfyanonymous:master' into Main 2023-05-17 11:39:40 +09:00
Javi Agenjo
888173a02e Merge pull request #390 from pythongosssss/widget-label
Render widget label in preference to name
2023-05-16 11:48:51 +02:00
pythongosssss
863c373d3b Render widget label in preference to name 2023-05-15 18:30:32 +01:00
Dr.Lt.Data
0dcfdc6a50 Merge branch 'comfyanonymous:master' into Main 2023-05-15 11:28:27 +09:00
Dr.Lt.Data
b5a4ce8f4f allow other actions.
Just block dragging node.
2023-05-12 17:00:41 +09:00
Dr.Lt.Data
fd104e91d5 don't screw up group because pinned feature 2023-05-12 16:46:14 +09:00
Dr.Lt.Data
67fc5d79c5 bugfix: pinned working 2023-05-12 16:40:25 +09:00
Javi Agenjo
42fc7cd52e Merge pull request #388 from M1kep/alignment-no-whitespace-changes
Add ability to align selected nodes
2023-05-01 21:19:39 +02:00
Javi Agenjo
802dfaa93c Merge pull request #386 from MarcMeszaros/simplified-allow-interaction-override
Simplify the allow_interaction override to only use node flags
2023-05-01 21:17:21 +02:00
Michael Poutre
e466b5edc8 refactor: Update startup message for example app to include URL
Allows clicking the URL to launch example app, this also allows some IDEs such as WebStorm to launch integrated debugger far more easily
2023-04-30 23:26:31 -07:00
Michael Poutre
cfc64dfe52 feat: Target alignment when right clicking a specific node 2023-04-30 23:26:27 -07:00
Michael Poutre
9f3245d9f0 refactor: Only show Align options if more than one node is selected 2023-04-30 23:26:19 -07:00
Michael Poutre
badf134f12 feat: Add alignment for selected node 2023-04-30 23:26:12 -07:00
Marc Meszaros
044b29c614 Simplify the allow_interaction override to use node flags
Remove the need to use 'drag_mode' on the graph cavas and instead use a
similarly name flag on the node 'allow_interaction' to allow per node
interaction when the global 'allow_interaction' flag is set to false.
2023-04-30 10:38:14 -07:00
Javi Agenjo
e27ecd1d78 Merge pull request #384 from MarcMeszaros/guide-number-widget-precision
Update documentation to mention 'precision' as widget option
2023-04-28 11:16:52 +02:00
Javi Agenjo
976ba6f4f4 Merge pull request #385 from MarcMeszaros/moveable-interaction-off
Allow interactions per node override
2023-04-28 11:16:08 +02:00
Marc Meszaros
1dc167044e Allow dragging and interacting with nodes with graph being read-only 2023-04-26 10:55:39 -07:00
Marc Meszaros
b80209f7da Update documentation to mention 'precision' as widget option 2023-04-26 10:30:41 -07:00
Javi Agenjo
7ab10b5c10 Merge pull request #297 from mcejp/patch-slider-property
Fix: inner_value_change not called on slider interaction
2023-04-23 20:39:05 +02:00
Javi Agenjo
2047cfa772 Merge pull request #381 from pythongosssss/evaluate-decimals
Add support for decimal evaluation
2023-04-23 20:38:38 +02:00
Javi Agenjo
ecbde50d1b Merge pull request #378 from comfyanonymous/remapped_keyboard_fix
Fix CTRL-C, CTRL-V not working on remapped keyboards.
2023-04-21 18:35:38 +02:00
pythongosssss
efdc798c1c Add support for number[dot]number in the validation regex 2023-04-15 11:13:19 +01:00
comfyanonymous
9b92f5b647 Fix CTRL-C, CTRL-V not working on remapped keyboards. 2023-04-12 18:13:58 -04:00
Javi Agenjo
0970a40e7d Merge pull request #374 from tianlang0704/master
Add global switch for ctrl+shift+v to maintain old behavior in lib.
2023-04-11 10:40:21 +02:00
Javi Agenjo
d47fdde066 Merge pull request #366 from fsmorygo/master
Add some missing `var`s
2023-04-11 10:39:26 +02:00
tamat
9c404cbb1b added clear_background_color to clear, prior it was using the css bg color of the container 2023-04-11 10:08:14 +02:00
tamat
8ae1e5568d Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2023-04-11 08:58:01 +02:00
tamat
42cbc5838c just changing modes 2023-04-11 08:57:53 +02:00
CMonk
f0eb76005e Update guide with canvas shortcut information 2023-04-11 11:05:02 +08:00
CMonk
cf5f917bdc Add example and simple manual test for copy paste 2023-04-11 11:05:01 +08:00
CMonk
c2460e2c4e Add ctrl+shift+v global switch 2023-04-11 11:05:01 +08:00
Javi Agenjo
684a5459fb Merge pull request #371 from lathanbritz/missing-vars
missing var inX
2023-04-10 20:19:41 +02:00
lathan britz
a026a1ec8d miggins vrs inX 2023-04-10 14:18:37 -04:00
Javi Agenjo
bb382a83bb Merge pull request #367 from moritz89/fix-duplicate-slot-node-types
Fix duplicate slot node types
2023-04-10 19:00:16 +02:00
Javi Agenjo
d8ee77d140 Merge pull request #370 from tianlang0704/master
Add Ctrl+Shift+V to paste with unselected nodes connected
2023-04-10 18:55:35 +02:00
Moritz Ulmer
c3f0d587a5 Use older Jest for Node.js 12
Why:

- Allow tests to run on oldest targeted ECMAScript version

This change addresses the need by:

- Add script to run tests against older JS versions
2023-04-10 15:12:03 +02:00
CMonk
01f6e15d92 Add Ctrl+Shift+V to paste with connected nodes
Update litegraph.js
2023-04-10 15:11:22 +08:00
Moritz Ulmer
8eb76138d0 Fix duplicate slot node types
Why:

- If a node has multiple of the same slot types, it is duplicated

This change addresses the need by:

- Checking if the node type has been added for a slot type
- Adding tests
- Improve legibility
2023-04-08 20:59:38 +02:00
Filipp Smorygo
bd6c500764 Add some missing vars 2023-04-08 01:56:25 +02:00
Javi Agenjo
9be2c84205 Merge pull request #358 from omar92/allow-equations-in-number-inputs
try solve the numbers equations
2023-04-07 19:23:20 +02:00
Javi Agenjo
ca1d7548ba Merge branch 'master' into allow-equations-in-number-inputs 2023-04-07 19:23:09 +02:00
Javi Agenjo
492b7a507c Merge pull request #364 from atlasan/contrib
missing var
2023-04-07 19:14:36 +02:00
Javi Agenjo
8c0a561c70 Merge pull request #359 from omar92/organize-inner_value_change
organize reciving input  from prompt dialog
2023-04-07 18:51:49 +02:00
Javi Agenjo
7f98966597 Merge pull request #362 from baldurg/widgetmods
Little updates to the slider widget
2023-04-07 18:50:31 +02:00
atlamede
b0302a253c missing var 2023-04-06 22:08:55 +02:00
Baldur Gislason
bc6c4948d8 Moving options 2023-04-05 15:46:23 +00:00
Baldur Gislason
7675741f1a renamed option 2023-04-05 15:42:01 +00:00
Baldur Gislason
d2c46d3e6d Moved properties to the right place. 2023-04-05 15:41:07 +00:00
Baldur Gislason
f55bbacf02 Made it possible for sliders to be read only 2023-04-05 15:30:49 +00:00
Baldur Gislason
b3c8427232 Make the marker also stay within the designated area 2023-04-05 15:27:09 +00:00
Baldur Gislason
66e899643c Made slider colours configurable 2023-04-05 15:26:22 +00:00
Baldur Gislason
cb8c35c760 Preventing slider from rendering outside its designated area if value it is based on is outside the expected range. 2023-04-05 15:21:17 +00:00
omar abdelzaher sleam
fb882aefb4 organize reciving input from prompt dialog 2023-04-05 03:45:12 +00:00
omar abdelzaher sleam
2a7f8d4fff remove duplicated line 2023-04-05 05:20:29 +02:00
omar abdelzaher sleam
b0f0eb9ea9 secure eval 2023-04-05 05:19:33 +02:00
omar abdelzaher sleam
7dc24f14ed try solve the numbers equations 2023-04-04 17:20:09 +00:00
Javi Agenjo
8bd5315ba6 Merge pull request #354 from moritz89/master
Add tests for registerNodeType
2023-04-02 18:39:38 +02:00
Javi Agenjo
adb6962459 Merge pull request #355 from ernestp/mr-hdpi-scale
Scale canvas on HiPPI screens
2023-04-02 18:35:46 +02:00
Ernest Poletaev
3ef215cf11 Scale canvas on HiPPI screens 2023-04-02 13:08:06 +07:00
Moritz Ulmer
c18df08a74 Add tests for registerNodeType
Why:

- Ensure that the function works as expected

This change addresses the need by:

- Add tests
- Remove duplicate logic
2023-03-31 15:04:49 +02:00
Javi Agenjo
9dad6b0a0b Merge pull request #349 from moritz89/master
Add initial unit test
2023-03-21 12:56:55 +01:00
Moritz Ulmer
f64bb7ba6b Replace deprecated function 2023-03-21 09:41:08 +01:00
Moritz Ulmer
6366f9132b Add first test
Why:

- Every journey starts with a first step

This change addresses the need by:

- Adding jest and a test
- Resolve ESLint warnings/errors in the tested function
2023-03-20 16:08:50 +01:00
Javi Agenjo
de997aca7e Merge pull request #348 from atlasan/contrib
fix undefined def_options
2023-03-20 11:40:39 +01:00
Javi Agenjo
412e83360e Merge pull request #347 from moritz89/master
Proposed variable type update
2023-03-20 11:38:14 +01:00
atlasan
31ec9567e0 fix undefined def_options
https://github.com/jagenjo/litegraph.js/issues/346
2023-03-20 11:00:23 +01:00
Moritz Ulmer
47ac1b7612 Proposed variable type update
Why:

- Reduces scope to required / expected of variables

This change addresses the need by:

- Using let / const instead of global / var
- Update ESlint configurtation
2023-03-20 10:54:38 +01:00
Javi Agenjo
10cd9b7ded Merge pull request #345 from KaruroChori/master
Fix panel not defined.
2023-03-20 10:24:36 +01:00
KaruroChori
23e81adc8e Update litegraph.js
Prevent error since panel is not defined.
2023-03-18 18:07:05 +00:00
Javi Agenjo
930375b2e2 Update README.md 2023-03-05 20:32:28 +01:00
Javi Agenjo
8bdab2eb3c Merge pull request #340 from timgates42/bugfix_typos
docs: Fix a few typos
2023-03-05 20:29:26 +01:00
Tim Gates
4177923d1d docs: Fix a few typos
There are small typos in:
- editor/js/defaults.js
- editor/js/defaults_mobile.js
- src/litegraph.js
- src/nodes/geometry.js
- src/nodes/gltextures.js

Fixes:
- Should read `sequentially` rather than `sequentually`.
- Should read `default` rather than `deafult`.
- Should read `visually` rather than `visualy`.
- Should read `offscreen` rather than `offscren`.
- Should read `dichotomic` rather than `dichotimic`.

Signed-off-by: Tim Gates <tim.gates@iress.com>
2023-03-05 11:51:27 +11:00
Javi Agenjo
c72d1097e5 Merge pull request #338 from mohsen-karami/master
Prevent the blocks from becoming unselected when the user double-clicks or drags them.
2023-03-03 13:45:27 +01:00
Mohsen Karami
d7c118987e Prevent the blocks from becoming unselected as the user drags them. 2023-03-03 10:50:55 +03:30
Mohsen Karami
b57885e3d7 Prevent unselecting blocks if the user double-clicks on them. 2023-03-03 10:33:42 +03:30
Javi Agenjo
1312de64a7 Merge pull request #329 from mohsen-karami/master
Add the ability to select multi nodes/blocks without pressing extra keys (shift/Ctrl)
2023-03-02 11:52:17 +01:00
Javi Agenjo
cfc5d4eb2a Merge pull request #337 from astrot1988/fix_subgraph
fix: subgraph remove output
2023-03-02 11:47:21 +01:00
astrot1988
acf058a730 fix: subgraph remove output 2023-03-02 13:09:46 +03:00
tamat
29fc1a3929 fix in widget 2023-02-28 14:05:51 +01:00
tamat
4252b513de Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2023-02-28 13:29:00 +01:00
tamat
54c2c1c5f7 fixes 2023-02-28 13:28:57 +01:00
Javi Agenjo
5dde4d6fac Merge pull request #334 from astrot1988/patch-1
fix: declare var
2023-02-28 13:27:07 +01:00
astrot1988
f6920f4699 fix: declare var 2023-02-03 20:05:32 +03:00
Mohsen Karami
f62b33d95a Add the ability to deselect the selected blocks in multi-select mode 2022-12-06 23:27:33 +03:30
Mohsen Karami
6762f1f339 Allow selecting multi nodes without pressing extra keys 2022-11-30 16:00:34 +03:30
Javi Agenjo
f87fb7d137 Merge pull request #328 from ClaasJG/master
Fix NodeScript description
2022-11-17 11:01:05 +01:00
ClaasJG
b1cc66aa3e Fix NodeScript description
Change the description of NodeScript nodes to contain the correct number of allowed characters.
2022-11-17 09:45:33 +01:00
Javi Agenjo
ab9ca1afe2 Merge pull request #287 from sha-N/patch-6
Shouldn't update Event.deltaX as it is read-only property
2022-10-24 14:59:59 +02:00
Javi Agenjo
8ebbcfac47 Merge pull request #321 from tsbits/patch-1
Update README.md
2022-10-24 11:49:23 +02:00
Javi Agenjo
ab1c2378cf Merge pull request #324 from SRChiP/add-set-property
Add setProperty to typescript definition
2022-10-24 11:49:00 +02:00
Ranuka Perera
8cc0cd39ff Add setProperty to typescript definition 2022-10-24 14:31:54 +05:30
Olivier Destenay
afdebc1dc2 Update README.md
Just adding a missing "}".
2022-09-28 23:23:48 +02:00
Martin Cejp
537993e79d Fix: inner_value_change not called on slider interaction 2022-02-26 15:24:56 +01:00
Shan M
fd5e8610da Shouldn't update Event.deltaX as it is read-only property
As far as I can tell removing those lines doesn't have any issues. It solves typescripts error for e.deltaX having only getter.
2022-01-16 14:26:28 +03:00
tamat
376f6434e8 fixes to launch onInputAdded or onOutputAdded when configuring node 2021-12-22 18:09:59 +01:00
tamat
b6fb7de636 fix in grapg\/output 2021-12-07 10:50:28 +01:00
tamat
8c073dcb10 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-12-02 13:12:20 +01:00
tamat
919007f741 fixes 2021-12-02 13:12:16 +01:00
Javi Agenjo
8959e1569e Merge pull request #162 from jitendra-kumawat/master
Updated arrange method to support vertical layout of nodes
2021-12-02 13:11:37 +01:00
tamat
2401cec699 fix in searchbox retenting the focus 2021-11-25 16:49:22 +01:00
tamat
af19af2c51 fixes in mouse events 2021-11-18 19:29:10 +01:00
tamat
f3f60fcd34 merge 2021-11-16 17:05:47 +01:00
tamat
d082927648 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-11-16 17:04:45 +01:00
tamat
fc7045d71f default to drag inputs to disconnect 2021-11-16 17:04:40 +01:00
Javi Agenjo
894f590bac Merge pull request #273 from gausszhou/master
fix: issues #272
2021-11-15 11:30:49 +01:00
Gauss Zhou
c0ec1ce0a8 fix: issues #272
We should avoid using undeclared variables
2021-11-14 00:19:12 +08:00
tamat
9853fc2958 fixes 2021-11-10 11:55:31 +01:00
tamat
07ee12dae7 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-11-09 13:29:50 +01:00
tamat
528fd96d42 fixes 2021-11-09 13:29:45 +01:00
Javi Agenjo
c87b1ad80d Merge pull request #269 from atlasan/pulls
Changed default value for pointerevents_method property
2021-11-09 12:57:49 +01:00
atlasan
e3b6044431 Changed default value for pointerevents_method property 2021-11-09 12:37:38 +01:00
tamat
9d6fd61032 fix sequencer 2021-11-03 10:10:12 +01:00
tamat
d33c600347 events sequencer renamed as sequence 2021-11-03 10:06:01 +01:00
Javi Agenjo
702d8dd373 Merge pull request #264 from atlasan/pulls
Pack
2021-11-03 10:03:54 +01:00
Javi Agenjo
7f9edcb4f2 Merge pull request #256 from Eikeike/widgetFix
make y pos of widgets customizable
2021-11-03 10:02:18 +01:00
Javi Agenjo
98688a514f Merge pull request #267 from timgates42/bugfix_typos
docs: Fix a few typos
2021-11-03 09:58:44 +01:00
Tim Gates
0cfa580dfd docs: Fix a few typos
There are small typos in:
- CONTRIBUTING.md
- guides/README.md
- src/nodes/midi.js

Fixes:
- Should read `syntax` rather than `sintax`.
- Should read `outputs` rather than `otputs`.
- Should read `dragging` rather than `draging`.
- Should read `build` rather than `bulid`.
- Should read `assume` rather than `asume`.
2021-10-31 23:55:29 +11:00
atlasan
cb70928146 tiny fix 2021-10-25 12:02:13 +02:00
atlasan
fc605e0171 Fixes
Autoconnect: allows generic types *

Touches, they should be evaluated when pointerEvents are not available?
first glimpse
2021-10-22 16:09:08 +02:00
atlasan
1d118d95ac MultiActions for context menu
- right click node menu actions will be applied to all selected nodes
(mode, resize, collapse, colors, shapes, clone, remove)

- can add to selection with both cntrl and shift, and dragging new rects
with cntr+shift

- TODO apply to alt-drag clone, properties(?), ..
2021-10-15 16:37:25 +02:00
atlasan
d842c98e21 Fix and refactor 2021-10-15 02:27:46 +02:00
atlasan
84ff381c46 Small fix and new features
- nodes_executing, nodes_actioning initial set
- slot_types_default (in and out) helps in having defaults nodes for
specific slot_types
- slot_types_default are filled as an example in src/nodes/others.js
- middle_click_slot_add_default_node allows auto-placing defaults nodes
next to a slot
- release_link_on_empty_shows_menu conditions having
realease-in-empty-space functionality
- keypress for slot name
- do include new js/defaults.js in editor and leave the Lib with new
functionalities off by default

- new html with mobile editor (working on)
	- separate defaults
	- optional thirdy-party html console
2021-10-14 18:42:57 +02:00
atlasan
dfa7a2a71a Change new options to disabled, fix retrocompatibility
- currently testing with webglstudio
2021-10-11 14:53:34 +02:00
atlasan
cbbdd38eab ctx.roundRect re-Apply modern way for [radius] 2021-10-11 11:51:51 +02:00
atlasan
edfcc5ccbf Fixes and cleaning
- broken missing LGraph.nodes_executing and nodes_actioning

- fix detect location for in out buttons in subgraph

- clean debugs
2021-10-09 18:48:45 +02:00
atlasan
95e10bd80e some cleaning 2021-10-09 12:42:46 +02:00
atlasan
662817ecbd Cleaning and LOST CHANGES 2021-10-09 12:34:56 +02:00
atlasan
275e55eff1 Styles: Integrations and fixes 2021-10-09 11:52:22 +02:00
atlasan
719a74a0d8 Integration and Fixes
- few new nodes
- onAction, onExecute, onTrigger has the third parameters for additional
options
- onAction has to refresh the getInputData values for future behaviours
- prefer 0 or "*" for slot type instead of empty string ""
2021-10-09 11:51:07 +02:00
atlasan
b337cd07ef Many improvements and implementations, TEST EM
- allow connecting from IN to OUT (drag an IN slot to create a link to
OUT slots)

- dim (opacity) uncompatible slots while creating a link

- filter in the searchbox for types (slotsIn, slotsOut), autofilter when
chaining

- drag-shift a slot to search and connect a new node

- code widget re-enabled

- properties panel improvements

- paste will use mouse coordinates


:: properties and methods ::
- additional shape GRID_SHAPE intended for slot arrays
- NODE_MODES_COLORS array of colors based on the node modes

node_box_coloured_by_mode: false, // [true!] nodebox colored on node
mode, visual feedback
node_box_coloured_when_on: false, // [true!] this make the nodes box
(top left circle) coloured when triggered (execute/action), visual
feedback

dialog_close_on_mouse_leave: true, // better true if not touch device
dialog_close_on_mouse_leave_delay: 500,

shift_click_do_break_link_from: false, // [false!] prefer false if
results too easy to break links - TODO custom keys
click_do_break_link_to: false, // [false!] prefer false, way too easy to
break links

search_hide_on_mouse_leave: true, // better true if not touch device
search_filter_enabled: true, // [true!] enable filtering slots type in
the search widget, !requires auto_load_slot_types
search_show_all_on_open: true, // [true!] opens the results list when
opening the search widget

auto_load_slot_types: true, // [if want false, use true, run, get vars
values to be statically set, than disable] nodes types and nodeclass
association with node types need to be calculated, if dont want this,
calculate once and set registered_slot_[in/out]_types and
slot_types_[in/out]
- this will create (without adding it) a node for each class when they
are registered. This allows for slots checking. Could raise errors in
case some node miss something: somehow nice.


alt_drag_do_clone_nodes: false, // [true!] very handy, ALT click to
clone and drag the new node

do_add_triggers_slots: false, // [true!] will create and connect event
slots when using action/events connections, !WILL CHANGE node mode when
using onTrigger (enable mode colors), onExecuted does not need this

allowMultiOutputForEvents: true, // [false!] being events, it is
strongly reccomended to use them sequentually, one by one


- find(Input/Output)Slot functions can return the object instead

- connectByType - allow connecting a node slot to a target node using an
auto-slot mode that looks for the right types

- onNodeCreated - new callback

- addOnTriggerInput, addOnExecutedOutput - creates action slots
(triggerIn, executedOut) when needed (changing mode, dragging events
onto the node)

- doExecute and doAction - wraps the onExecute and onAction node
functions with helpers and checks

- onAfterExecuteNode - new callback

- onBeforeConnectInput - new callback, can change slot while connecting
(or create a new one)

- onConnectOutput - new callback, similar to onConnectInput

- onNodeInputAdd, onNodeOutputAdd - new callbacks

- isOverNodeOutput - similar to isOverNodeInput

- helpers findInput, findOutput, findInputSlotFree, findOutputSlotFree,
findSlotByType

- canvas default_connection_color_byType[Off] allows custom colors type
based

- ESC will close panels

- showConnectionMenu will show the "Add menu" while dragging, to connect
after creation
2021-10-09 11:34:33 +02:00
atlasan
a3055c7fcb Couple implementations
- matrix shape (enabled for array slots)
- dim opacity on incompatibile slots when dragging
2021-10-06 17:43:48 +02:00
Javi Agenjo
ef8b86bd37 Merge pull request #261 from atlasan/pulls
Touch events - alpha version
2021-10-04 16:33:53 +02:00
atlasan
ad9611ce4f Helper pointerListener(Add/Remove)
- moved from LGCanvas to LiteGraph to allow contextmenu and others to
access it easily
2021-10-03 20:29:09 +02:00
atlasan
4c9c1c60bb FIX: css touch-action
ensure to put this to make touch working
2021-10-03 18:12:46 +02:00
atlasan
8d302bd4f9 Simulate right click by multiple fingers 2021-10-02 16:33:50 +02:00
atlasan
b793e5c1d5 remove console.log for pointerevents 2021-10-02 14:29:38 +02:00
atlasan
a66d822e2a PointerEvents: from mouse events to pointer events v1
added LiteGraph.pointerevents_method with default "pointer"
replaced EventListeners with pointerevents_method+"down", "up", etc..
replaced e.localX (and Y) for e.clientX (Y)
fixed e.clientX is not writable

TODO: finish checks and clean
version with console.log("pointerevents..) enabled
alpha working for mobile, touch enabled
2021-10-02 14:26:15 +02:00
atlasan
d3d2586039 First easy fix to touch integration: 2021-10-01 17:02:11 +02:00
tamat
9ad6301101 make removable slots only the ones created from editor 2021-09-16 11:25:32 +02:00
Eike Michel Wobken
3c9ea1cc0a make y pos of widgets customizable 2021-09-15 13:48:57 +02:00
tamat
c2f7e389b9 little fix 2021-08-25 13:46:36 +02:00
tamat
fcf37260ad added semaphore node 2021-08-25 12:59:54 +02:00
tamat
9cab33f33c Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-08-17 10:29:21 +02:00
tamat
136c627c3c fixes with roundrect 2021-08-17 10:00:09 +02:00
Javi Agenjo
88aeee4e15 Update README.md 2021-08-17 09:13:03 +02:00
Javi Agenjo
d0e8e41390 Merge pull request #242 from turkron/master
changed the auto sort function to make the function es5 compliant as …
2021-08-16 17:12:08 +02:00
Javi Agenjo
334868c84d Merge pull request #247 from Eikeike/RenderTitleFix
Add functionality for title mode NO_TITLE
2021-08-16 17:11:02 +02:00
Javi Agenjo
91c9ffbca3 Merge pull request #248 from kiddoinpyjamas/warning_even_with_debug_disabled
Fix to only show console warn if debug is enabled
2021-08-16 17:08:51 +02:00
tamat
f71aad4450 fixes' 2021-08-16 17:00:48 +02:00
tamat
667b04f62a replaced old roundRect function 2021-08-16 16:45:36 +02:00
Lucas do Nascimento
4942990424 Fix to only show console warn if debug is enabled 2021-08-06 22:30:10 -03:00
Eike Michel Wobken
1a10cce69d Add functionality for title mode NO_TITLE 2021-07-30 18:49:04 +02:00
Javi Agenjo
bf9034362d Merge pull request #245 from Eikeike/RenderTitleFix
Separator only drawn when title is drawn
2021-07-30 13:17:47 +02:00
Eike Michel Wobken
0f55726252 Separator only drawn when title is drawn 2021-07-30 13:02:44 +02:00
Javi Agenjo
6f00e44e6a Merge pull request #244 from gausszhou/master
Hi i fixed subgraph the problem of the subgraph
2021-07-29 11:27:47 +02:00
Gauss Zhou
b97b40cf3d Update litegraph.css 2021-07-29 11:57:39 +08:00
周存根
94ee0d57d0 Merge branch 'master' of github.com:gausszhou/litegraph.js into master 2021-07-29 11:41:24 +08:00
周存根
3f4666b4e6 fixed subgraph 2021-07-29 11:39:30 +08:00
Nathan Kendall
7ccd907f71 changed the auto sort function to make the function es5 compliant as the rest of the project is already 2021-07-26 10:23:09 +01:00
tamat
0a21262238 build 2021-07-12 17:03:12 +02:00
tamat
998de17038 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-07-12 17:02:29 +02:00
tamat
18e53d8788 minor fix 2021-07-12 17:02:22 +02:00
Javi Agenjo
4e524ac3ae Merge pull request #235 from Eikeike/arrow_shape_fix
Highlight arrow shape when connecting slots with arrow shape
2021-07-08 18:19:13 +02:00
Eike Michel Wobken
3eb9533ad2 Highlight arrow shape when connecting slots with arrow shape 2021-07-08 17:05:37 +02:00
tamat
bdad111eb0 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-07-02 17:11:08 +02:00
tamat
63d1506efa fixed touch 2021-07-02 17:10:49 +02:00
Javi Agenjo
bfaafe9526 Merge pull request #232 from sfranzyshen/git-address
Update README.md
2021-06-21 13:19:27 +02:00
Javi Agenjo
6e8dd97bf1 Merge pull request #230 from RobTheFiveNine/bugfix/buttons-register-two-clicks
Fix widget buttons registering clicks twice
2021-06-21 13:18:18 +02:00
Scotty Franzyshen
7d7f5dc8bd Update README.md
Update Git Address
2021-06-15 10:05:32 -07:00
RobTheFiveNine
d0eedf7232 Fix widget buttons registering clicks twice 2021-06-15 14:37:17 +01:00
Javi Agenjo
40907189f3 Merge pull request #229 from RobTheFiveNine/bugfix/incorrect-property-editor-labels
Fix incorrect property editor labels + build improvements
2021-06-14 16:42:41 +02:00
RobTheFiveNine
7017bd31ed Fix bug causing property labels not to be used when creating widgets 2021-06-14 14:42:58 +01:00
RobTheFiveNine
5717013478 Add a build target that includes only the core library 2021-06-14 14:41:26 +01:00
RobTheFiveNine
042379fdff Change builder to use the compiler local to the repo 2021-06-14 14:40:46 +01:00
Javi Agenjo
781f9ae049 Merge pull request #200 from ralphwetzel/master
Fix type definitions
2021-06-14 12:26:55 +02:00
Javi Agenjo
b54c8ae7bd Merge pull request #187 from atlasan/pulls
WebCamNodeFix
2021-06-14 12:26:37 +02:00
Javi Agenjo
4b9fad23ee Merge pull request #223 from j2l/master
updated converter input
2021-06-14 12:26:23 +02:00
Javi Agenjo
9bf26dbf26 Merge pull request #228 from RobTheFiveNine/bugfix/property-dialog-context-menu
Fix property dialog box incorrectly showing context menus for non combo widget types
2021-06-14 12:26:01 +02:00
Javi Agenjo
36e4a20612 Merge pull request #201 from RobTheFiveNine/fix/auto_sort_value
Fix node types incorrectly sorted in minified code
2021-06-14 12:25:18 +02:00
RobTheFiveNine
bc4ac4724f Add missing brackets that cause context menu bug 2021-06-11 20:12:51 +01:00
RobTheFiveNine
8866144656 Rebuild 2021-06-11 20:06:50 +01:00
RobTheFiveNine
e6af69c887 Merge remote-tracking branch 'upstream/master' into fix/auto_sort_value 2021-06-11 19:59:04 +01:00
tamat
07c2e6e172 merge 2021-06-11 13:40:14 +02:00
tamat
143bd0789a Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-06-11 13:39:49 +02:00
tamat
e4e48ff583 mini version 2021-06-11 13:39:43 +02:00
Javi Agenjo
b6fc571324 Merge pull request #227 from liradb2000/upstream_master
Fix Boundary and collapsed issue
2021-05-20 13:56:30 +02:00
kdb621
75bf136797 Fix Boundary and collapsed issue
* If you collapse a node with a widget after loading the graph, it cannot be expanded.
* Compute Collapsed Nodes boundary is incorrect
2021-05-20 13:26:58 +09:00
PM
cb543cceb3 updated converter input 2021-04-06 18:30:25 +02:00
Javi Agenjo
813bf57599 Merge pull request #222 from j2l/master
an output for converter?
2021-04-06 16:23:42 +02:00
PM
980baed1eb back to basic 2021-04-06 15:56:06 +02:00
PM
039ad19372 Added an output to Converter
I hope I didn't misunderstood the converter node, it needs an output right?
2021-04-06 15:52:38 +02:00
PM
292013b6cf data_store to events menu
I guess events.js manages events menu and not basic one :)
If I'm wrong, please let me know with a quick explanation and drop it.
2021-04-06 15:20:43 +02:00
tamat
4b47ed9056 added viewport rendering 2021-03-19 20:56:14 +01:00
tamat
0eae390b43 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-03-12 16:28:10 +01:00
tamat
41f779c3f8 align to grid in canvas 2021-03-12 16:27:55 +01:00
RobTheFiveNine
875726d396 Fix node types incorrectly sorted in minified code 2021-02-13 15:45:01 +00:00
ralphwetzel
6198a41972 Update litegraph.d.ts
Fix type definitions:
- LGraph.beforeChange
- LGraph.afterChange
2021-02-13 14:54:36 +01:00
ralphwetzel
3cb6e4586d Update litegraph.d.ts
Fix type definitions:
- LGraph.beforeChange
- LGraph.afterChange
2021-02-13 14:53:06 +01:00
ralphwetzel
5a680b9ac9 Update litegraph.d.ts
Fix type definitions:
- ContextMenu.constructor
2021-02-13 12:55:37 +01:00
ralphwetzel
0ad6104661 Update litegraph.d.ts
Fix type definition:

- LGraph.filter
2021-02-13 12:36:16 +01:00
ralphwetzel
139f9f8b8a Update litegraph.d.ts
Fix type definitions:
- LiteGraph.active_graph
- LGraphCanvas.getNodeTypesInCategory
- LGraphCanvas.getNodeTypesCategories
2021-02-13 12:27:23 +01:00
ralphwetzel
24bc28730e Merge pull request #1 from jagenjo/master
Rebase
2021-02-13 11:43:59 +01:00
Javi Agenjo
00c4d8d908 Merge pull request #194 from xuekai-china/master
Pref: ts support about LGraphNode.mouseOver.
2021-01-29 10:51:03 +01:00
Javi Agenjo
a4c6ccd74f Merge pull request #198 from Kidoncio/ts_disconnect_output
TS support about LGraphNode.disconnectOutput
2021-01-29 10:50:38 +01:00
Javi Agenjo
348f5a2e6c Merge pull request #197 from Kidoncio/ts_on_property_changed
TS support about LGraphNode.onPropertyChanged
2021-01-29 10:50:27 +01:00
Javi Agenjo
c6e2ec9f6a Merge pull request #196 from Kidoncio/ts_has_errors
TS support about LGraphNode.has_errors
2021-01-29 10:50:07 +01:00
Lucas Nascimento
effe937e14 TS support about LGraphNode.onPropertyChanged 2021-01-28 00:25:11 -03:00
Lucas Nascimento
efb5d60283 TS support about LGraphNode.disconnectOutput 2021-01-28 00:10:57 -03:00
Lucas Nascimento
2958f443c2 TS support about LGraphNode.has_errors 2021-01-28 00:09:40 -03:00
xuekai-china
ba762d5b38 Pref: ts support about LGraphNode.mouseOver. 2021-01-21 19:17:10 +08:00
Javi Agenjo
e6147b7217 Merge pull request #190 from benhar-dev/multi-level-add-node-context-menu
multi-level context menus
2021-01-12 10:47:39 +01:00
Ben
b3502d385c working multi-level context menus
working multi-level context menu
2021-01-12 10:14:49 +11:00
atlasan
6b2eaa1054 webcamnode 2021-01-05 21:43:45 +01:00
atlasan
ef67b4cf9c Merging with (the)Master and nodeWebcam_Fix 2021-01-05 21:39:08 +01:00
tamat
82485c92f4 added beforeChange and afterChange to graph.remove( node ) 2021-01-05 18:08:44 +01:00
tamat
f44aeb8b4e 0.7.9 2021-01-05 17:35:27 +01:00
tamat
441b3a6a91 build 2021-01-05 17:34:07 +01:00
tamat
3c66255cfd Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2021-01-05 17:33:46 +01:00
tamat
a1a51ef056 added multiline support for widgets 2021-01-05 17:33:26 +01:00
Javi Agenjo
1020176bc2 Merge pull request #165 from ilyabesk/node_connect_hooks
Remade lost changes from pull request #154
2021-01-04 13:20:30 +01:00
tamat
2fe197bb8b build 2020-12-28 10:36:06 +01:00
tamat
f682b3e42a added set array and set object nodes 2020-12-28 10:35:10 +01:00
atlasan
b91263cf72 Webcam node fix 2020-12-16 13:07:18 +01:00
Javi Agenjo
00add7f89a Merge pull request #180 from RobTheFiveNine/enhancement/property-descriptors
Change property descriptor terminology + bug fix
2020-10-06 22:40:25 +02:00
RobTheFiveNine
88994e1843 Change terminology for property descriptors to 'labels' 2020-10-05 18:08:02 +01:00
RobTheFiveNine
95b68079f5 Merge remote-tracking branch 'upstream/master' into enhancement/property-descriptors 2020-10-05 18:04:56 +01:00
RobTheFiveNine
66a7a5cf78 Fix serialisation bug when editing string properties 2020-10-05 18:02:31 +01:00
Javi Agenjo
ca4b6904d9 Merge pull request #179 from RobTheFiveNine/enhancement/property-descriptors
Add option to stylise property names
2020-10-05 19:01:58 +02:00
RobTheFiveNine
99b7e93f2d Add ability to control property display name via the 'descriptor' of the property info 2020-10-05 17:45:06 +01:00
Javi Agenjo
e9fd6af6a9 Merge pull request #177 from RobTheFiveNine/fix/belated-build
Build changes from PR #176
2020-10-05 18:07:50 +02:00
RobTheFiveNine
d28a70584e Build changes from PR #176 2020-10-02 19:21:03 +01:00
Javi Agenjo
4f4d170f3d Merge pull request #176 from RobTheFiveNine/enhancement/node-menu-sorting
Add ability to automatically sort node types / categories in the context menu
2020-10-01 19:11:01 +02:00
RobTheFiveNine
3d7bea5c51 Add ability to automatically sort node types / categories in the context menu 2020-10-01 18:00:58 +01:00
Javi Agenjo
91bf5b4c6a Update README.md 2020-10-01 18:59:00 +02:00
Javi Agenjo
4041898ed9 Merge pull request #175 from RobTheFiveNine/documentation/link-tooltips
Add documentation on customising link tooltips
2020-10-01 18:57:11 +02:00
RobTheFiveNine
48d07e8736 Add documentation on customising link tooltips 2020-10-01 17:44:54 +01:00
Javi Agenjo
3948314fe0 Merge pull request #174 from mateuswetah/master
Adds NODE_SELECTED_TITLE_COLOR and NODE_BOX_OUTLINE_COLOR
2020-09-25 14:40:11 +02:00
mateuswetah
835210cd54 Fixes new constants value for hex color string. 2020-09-25 00:34:27 -03:00
mateuswetah
b9bb66e3e9 Fixes new constants value for hex color string. 2020-09-25 00:34:03 -03:00
mateuswetah
04cc7bac7b Adds NODE_SELECTED_TITLE_COLOR and NODE_SELECTED_TITLE_COLOR for better theme customization. 2020-09-25 00:29:36 -03:00
tamat
49d34fd5b3 added support to load from file 2020-09-09 17:53:41 +02:00
tamat
8a4af6821c Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-09-09 10:12:02 +02:00
tamat
b195108e15 fix on Trigger 2020-09-09 10:11:47 +02:00
Javi Agenjo
5361f33f55 Merge pull request #169 from fadookie/master
Fix demo/editor links and local server directory
2020-08-31 11:06:53 +02:00
Javi Agenjo
fd194028fe Update README.md 2020-08-31 11:06:32 +02:00
Eliot Lash
111befa86f Fix demo/editor links and local server directory 2020-08-30 20:09:16 -07:00
ilya
4cff2863b4 Remade lost changes 2020-08-13 01:18:50 +03:00
Javi Agenjo
14cbb3f9b6 Merge pull request #160 from SarahThePanda/master
Bug fixing
2020-08-12 23:44:29 +02:00
tamat
a6105af416 fixes in gltextures 2020-08-12 12:19:33 +02:00
Jitendra Kumawat
b5aab00329 added semicolon 2020-07-28 17:02:40 +05:30
jitendra kumawat
5365cd1af7 Updated arrange method to support vertical layouting of nodes 2020-07-28 12:56:49 +05:30
tamat
d46bc11816 merge and build? 2020-07-25 22:08:57 +02:00
tamat
0b5b1adb16 lil fixes 2020-07-25 22:08:16 +02:00
Javi Agenjo
ec83621e9e Merge pull request #161 from mercurio/master
Replaces for .. in loops with C-style loops for arrays
2020-07-25 22:07:56 +02:00
Phil Mercurio
4a729cc6e0 Merge branch 'master' of https://github.com/mercurio/litegraph.js 2020-07-25 12:07:32 -07:00
Phil Mercurio
c3aa3b3dd1 Merge remote-tracking branch 'upstream/master'
Catching up to external updates and checking in
array fix (this time without build artifacts).
2020-07-25 12:04:21 -07:00
sallie
5b273f901f Bug fixing 2020-07-25 00:05:30 +00:00
Phil Mercurio
97bbeeed60 Delete litegraph.min.js 2020-07-24 16:35:01 -07:00
Phil Mercurio
861346673b Delete litegraph.js 2020-07-24 16:33:55 -07:00
tamat
baed06fa37 minor fixes 2020-07-25 01:09:14 +02:00
tamat
f9d006c0df fixes in subgraph 2020-07-20 15:32:39 +02:00
tamat
55ad1b281e build 2020-07-17 19:21:59 +02:00
tamat
c74d8760b1 variable class works better\nFixes in panels\nBetter shader generation. 2020-07-17 19:21:07 +02:00
tamat
d40ad5a0d5 btw, I forgot, demo is now called editor 2020-07-15 21:24:20 +02:00
tamat
b6c28399f8 shader nodes 2020-07-15 21:22:32 +02:00
Javi Agenjo
eb953a0a4e Update README.md 2020-07-15 21:06:24 +02:00
Javi Agenjo
66cacbe67c Merge pull request #158 from ilyabesk/patch-1
Create CONTRIBUTING.md
2020-07-15 21:04:58 +02:00
Javi Agenjo
66b8e3a09b Merge pull request #157 from ilyabesk/typedef_updates_and_fixes
Typedef updates and fixes
2020-07-15 21:04:28 +02:00
ilya
d0b4489966 Create CONTRIBUTING.md 2020-07-14 02:16:22 +03:00
ilya
5fdce48481 Fixed broken connect method 2020-07-13 20:10:30 +03:00
ilya
802156e5a0 TypeDef updates and fix of method declaration 2020-07-13 19:54:24 +03:00
Javi Agenjo
e64363d928 Merge pull request #155 from ilyabesk/typings_fix_and_build
Added typings for slot shape and replaced built files
2020-07-10 12:21:04 +02:00
ilya
ea63884c83 Added typings for slot shape and replaced built files 2020-07-10 12:23:43 +03:00
Javi Agenjo
628c6c15a7 Merge pull request #151 from ilyabesk/clear_registered_types
Added function to clear all previously registered node types
2020-07-10 09:38:09 +02:00
Javi Agenjo
5df80e1648 Merge pull request #154 from ilyabesk/replace_connection_improvements
Cheanges to allow ability to automatically create inputs if required.
2020-07-10 09:37:44 +02:00
Javi Agenjo
a9163a476d Merge pull request #150 from ilyabesk/types_fixes
Fixed typings and documentation
2020-07-10 09:36:28 +02:00
ilya
0238a5dcae Chenges to allow ability to automatically create inputs if required. 2020-07-08 21:14:36 +03:00
Javi Agenjo
6fbfb22444 Merge pull request #153 from ilyabesk/draw_slot_graphic_extracted
Extracted function to draw slot graphics and modified shape selection
2020-07-08 18:24:51 +02:00
ilya
cfdfbf929b Extracted fucntion to draw slot graphics and modified shape selection to allow custom action/event slot shape 2020-07-08 18:57:22 +03:00
ilyabeskrovniy
44f58d03e1 Added function to clear all previously registered node types 2020-07-07 10:32:28 +03:00
ilyabeskrovniy
115b647bf6 Fixed typings and documentation 2020-07-07 10:27:22 +03:00
tamat
2f9c67295f shader graph support 2020-07-02 00:00:53 +02:00
Javi Agenjo
6ac6948609 Update README.md 2020-07-01 09:51:41 +02:00
Javi Agenjo
d8b3778136 Merge pull request #146 from altarfinch/master
Widgets with custom size function don't overflow anymore
2020-06-18 16:19:13 +02:00
altarfinch
1763ff1a87 Forgot to call the updated computeSize() function 2020-06-18 15:33:56 +02:00
altarfinch
319a80dd04 Widgets with custom size function don't overflow anymore 2020-06-18 14:51:31 +02:00
tamat
ab7bc960a0 math node supports array and objects as A 2020-06-11 17:07:47 +02:00
Javi Agenjo
532206c88f Merge pull request #142 from GotthardtZ/master
Fixed typos in guides/README.md
2020-06-02 15:58:59 +02:00
Zoltán Gotthardt
5d7e1af147 Update package.json 2020-06-02 15:56:51 +02:00
Zoltán Gotthardt
7847e4e08e Update package.json 2020-06-02 15:29:01 +02:00
Zoltán Gotthardt
752533fb1e Update README.md 2020-06-02 14:37:05 +02:00
tamat
0718641bc7 merge 2020-05-24 00:02:32 +02:00
tamat
e34b079908 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-05-24 00:02:04 +02:00
tamat
e6c5474155 better disabled display 2020-05-24 00:01:42 +02:00
Javi Agenjo
c41b801ec6 Merge pull request #141 from harshadchavan/patch-1
fixed this pointer in the code
2020-05-19 09:12:08 +02:00
harshadchavan
e6bb688e3f fixed this pointer in the code
Getting continuous errors in a loop, because of this error. It says catch_errors of undefined
2020-05-18 22:16:42 -07:00
tamat
94f657a401 build 2020-05-15 12:16:26 +02:00
tamat
4cb1d9c0e5 fixes 2020-05-15 12:15:33 +02:00
Javi Agenjo
4ec609ab48 Merge pull request #134 from altarfinch/master
Support custom height for custom widget
2020-05-15 12:14:58 +02:00
altarfinch
058e6ea03c fixed enableWebGL missing declarations 2020-05-15 11:14:25 +02:00
altarfinch
93ba405a23 fixed enableWebGL missing declarations 2020-05-15 10:57:17 +02:00
altarfinch
4fe32687d2 fixed mouse function for custom widget : take custom height into account 2020-05-15 01:36:32 +02:00
altarfinch
7ba41d1d75 custom widget custom size support 2020-05-15 01:36:31 +02:00
Javi Agenjo
9fcc6c4975 Merge pull request #139 from sha-N/patch-4
fixes typedef for onDrawBackground and onDrawForeground
2020-05-11 12:54:01 +02:00
Javi Agenjo
6c41bfb425 Merge pull request #138 from sha-N/patch-3
added type def for callback onNodeAdded
2020-05-11 12:53:35 +02:00
Shan M
c2f92e62aa fixes typedef for onDrawBackground and onDrawForeground
fixes the issue #131
2020-05-11 13:49:59 +03:00
Shan M
0a2f8a1d6d added type def for callback onNodeAdded 2020-05-11 13:44:52 +03:00
altarfinch
11a1026074 fixed mouse function for custom widget : take custom height into account 2020-05-08 01:40:15 +02:00
altarfinch
706b65a8f6 custom widget custom size support 2020-05-07 19:45:36 +02:00
Javi Agenjo
240cee0209 Merge pull request #124 from sker65/master
Added hook for slot context menu
2020-05-06 10:02:00 +02:00
Javi Agenjo
f8d73a0898 Merge pull request #133 from sha-N/patch-2
Error correction in type definition
2020-05-06 10:01:15 +02:00
Shan M
626a69fec4 Error correction in type definition 2020-05-06 09:33:55 +03:00
Javi Agenjo
ea5c156cd7 Merge pull request #130 from sha-N/patch-1
Update for missing type definitions
2020-05-05 17:09:28 +02:00
Shan M
dbb4391099 Update for missing type definitions
Updated onConnectInput to match current function definition

Added missing definitions for

LGraphCanvas.onDrawLinkTooltip
LGraphCanvas.onNodeMoved
LGraphCanvas.onSelectionChange
LGraphCanvas.onNodeSelected
LGraphCanvas.onNodeDeselected
LGraphCanvas.onShowNodePanel
LGraphCanvas.onNodeDblClicked

LGraphNode.onConnectionsChange

Can close #127
2020-05-05 18:07:39 +03:00
tamat
a1c312fab9 fix on onConnectInput to have more info 2020-05-05 12:57:59 +02:00
tamat
3087acad00 0.7.8 2020-05-03 13:47:49 +02:00
tamat
26a72a0a44 added onResize event to nodes 2020-05-03 13:47:12 +02:00
tamat
30e78c5d10 0.7.7 2020-04-27 00:22:46 +02:00
tamat
22190622b4 fix in roundRect 2020-04-27 00:22:24 +02:00
tamat
c54e6ca3bb 0.7.6 2020-04-26 23:57:02 +02:00
Stefan Rinke
ac1d8f8f71 - added hook for slot context menu 2020-04-23 00:07:18 +02:00
tamat
6ff8bb700d fix in roundRect 2020-04-21 12:38:54 +02:00
tamat
815b6e3602 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-04-21 12:35:09 +02:00
tamat
78e55db0b1 fix in widgets 2020-04-21 12:35:02 +02:00
Javi Agenjo
6b95b47421 Merge pull request #119 from sha-N/patch-5
nodes attribute in selectNodes function is optional
2020-04-20 18:25:34 +02:00
Shan M
df5a042099 nodes attribute in selectNodes function is optional 2020-04-20 16:50:53 +03:00
Javi Agenjo
bb1ce7b899 Merge pull request #98 from amfl/websocket-fixes
Websocket node bugfixes
2020-04-15 10:51:00 +02:00
Javi Agenjo
e4c4d8acb3 Merge pull request #110 from DiegoBM/patch-1
Documentation mismatch
2020-04-15 10:49:22 +02:00
Javi Agenjo
738004f460 Merge pull request #118 from sha-N/patch-4
Fixes type definition for renderInfo()
2020-04-15 10:48:59 +02:00
Javi Agenjo
a027c0eb87 Merge pull request #113 from sha-N/patch-1
fixes type error in function wrapFunctionAsNode
2020-04-15 10:48:42 +02:00
Shan M
6607593471 fix typo 2020-04-15 11:45:25 +03:00
Shan M
9b6ff21e00 Fixes type definition for renderInfo() 2020-04-15 11:41:43 +03:00
tamat
e2fce11afc Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-04-08 17:15:01 +02:00
tamat
28c0eec6c2 fix 2020-04-08 17:14:32 +02:00
Javi Agenjo
e2b55738c9 Merge pull request #116 from sha-N/patch-3
adds missing type unregisterNodeType
2020-04-06 12:04:37 +02:00
tamat
99e1d85f4f 0.7.5 2020-04-06 12:03:37 +02:00
Shan M
03408f13df adds missing type unregisterNodeType 2020-04-06 12:06:36 +03:00
tamat
2158aff0b0 added setValue to some nodes 2020-04-03 17:45:05 +02:00
Javi Agenjo
52b82f23ca Merge pull request #114 from sha-N/patch-2
Adds missing type for showMenuNodeOptionalOutputs
2020-03-31 16:58:35 +02:00
Shan M
6ef31c8c3a Adds missing type for showMenuNodeOptionalOutputs 2020-03-31 17:21:53 +03:00
Javi Agenjo
e9e7c8df21 Update README.md 2020-03-29 20:50:20 +02:00
Shan M
d86b463d5e fixes type error in function wrapFunctionAsNode 2020-03-28 10:59:57 +03:00
tamat
e8eda9d30f fixes in audio 2020-03-25 13:13:58 +01:00
DiegoBM
f541bb412e Documentation mismatch
Some method names didn't match the actual method names, rendering the automatically generated documentation misleading
2020-03-24 23:39:17 +01:00
Javi Agenjo
6c98476cd5 Merge pull request #108 from smarthug/patch-2
resolve "TypeError: Cannot redefine property: shape" issue
2020-03-19 09:01:17 +01:00
tamat
45856c9785 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-03-19 08:57:46 +01:00
tamat
7f4e5b8d79 fix 2020-03-19 08:57:36 +01:00
smarthug
d9cdf4ec13 resolve "TypeError: Cannot redefine property: shape" issue
When same node registered twice. It gives error.
ex:
LiteGraph.registerNodeType("basic/test", MyAddNode);
LiteGraph.registerNodeType("basic/test", MyAddNode);

To redefine an object property with "Object.defineProperty" method, configurable property should be set on true ( default is false)
ex : Object.defineProperty( '...' , '...' , {configurable: true})
2020-03-19 15:41:19 +09:00
Javi Agenjo
540d3474d0 Update README.md 2020-03-18 14:14:02 +01:00
Javi Agenjo
585692b3ae Update README.md 2020-03-04 18:38:39 +01:00
Javi Agenjo
811721bb2c updated 2020-03-04 18:26:15 +01:00
Phil Mercurio
6e4525c7a5 Revises loops on arrays 2020-02-28 17:21:36 -08:00
tamat
b550042709 fix 2020-02-15 01:45:16 +01:00
tamat
5cef341c29 added combo widget 2020-02-04 15:13:32 +01:00
amfl
d134ab73f0 bugfix: Websocket checks parsed payload data
We parse the JSON payload, but then it wasn't being referred to when we
were checking the data type, which could lead to looking at the `type`
attribute of a string.
2020-01-14 14:31:34 +13:00
amfl
40e09fe294 bugfix: Correct reference to websocket room name
When inside the onmessage function, `this` no longer refers to the
websocket node. It needs to be accessed with `that`, which is where we
stored it previously.
2020-01-14 14:31:23 +13:00
tamat
469e3d964c Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2020-01-13 18:41:16 +01:00
tamat
918b8599ae tiny fixes 2020-01-13 18:40:59 +01:00
Javi Agenjo
3c389266f9 Update README.md 2019-12-03 20:52:11 +01:00
Javi Agenjo
98684e444e Merge pull request #95 from julien-moreau/master
Fixed DTS for registered_node_types, node_types_by_file_extension, an…
2019-12-03 18:20:54 +00:00
Julien MOREAU-MATHIS
cfe7cc1bdb Fixed DTS for registered_node_types, node_types_by_file_extension, and Nodes in LiteGraph to properly take LGraphNodeConstructor instead of LGraphNode. 2019-12-03 18:17:27 +01:00
Javi Agenjo
4e47b90197 Update README.md 2019-12-02 12:15:01 +01:00
Javi Agenjo
bd672f0877 Update README.md 2019-11-27 09:28:53 +01:00
Javi Agenjo
9cdef701a0 Update README.md 2019-11-27 09:26:22 +01:00
Javi Agenjo
2589992573 Update README.md 2019-11-27 09:24:47 +01:00
Javi Agenjo
72093f58b1 Update README.md 2019-11-27 09:23:43 +01:00
Javi Agenjo
82e4f34e8a Update README.md 2019-11-27 09:13:37 +01:00
Javi Agenjo
b2279b611b Update README.md 2019-11-27 09:12:16 +01:00
tamat
337982ebfe optimization when rendering from far away 2019-11-14 14:25:46 +01:00
tamat
82c0ef837c better scroll in searchbox 2019-11-13 16:02:07 +01:00
tamat
514000aa81 fixes in scroll of searchbox 2019-11-13 16:00:06 +01:00
tamat
eb327547cc fix 2019-11-11 16:51:11 +01:00
tamat
a4352d5624 fix in onNodeDeselected 2019-11-11 16:30:04 +01:00
tamat
64a0109d87 fix in searchbox 2019-11-05 11:36:52 +01:00
Javi Agenjo
44e3723c47 Merge pull request #90 from liradb2000/master
Resolve "'LGraph' is not defined" issue
2019-11-04 15:50:39 +01:00
DABEOM KIM
6d9fa8a41d Resolve "'LGraph' is not defined" issue
Resolve Unable to use SubGraph node with webpack.
2019-11-04 23:47:33 +09:00
Javi Agenjo
8c30237c57 Merge pull request #88 from liradb2000/master
Support Microsoft Edge browser
2019-11-04 14:25:52 +01:00
DABEOM KIM
02f76a57df Support Microsoft Edge browser
event constructor type => pointerevent in MS Edge
2019-11-04 22:20:06 +09:00
tamat
775b714861 fixed bug in copy 2019-10-29 10:40:33 +01:00
tamat
ea6c909894 fixed bug in allow_searchbox 2019-10-23 10:04:58 +02:00
tamat
67ba69a14f fixed bug in context menu when fullscreen 2019-10-21 16:35:52 +02:00
tamat
be678adc0e fix in property editor 2019-10-21 13:20:53 +02:00
Javi Agenjo
44161ce0a9 Update README.md 2019-10-14 16:52:02 +02:00
tamat
883bc0e002 build 2019-09-02 23:34:16 +02:00
tamat
91d082cace fixes in replicated nodes 2019-09-02 23:33:59 +02:00
tamat
c80a66eb8a build 2019-08-16 21:15:43 +02:00
tamat
3bb18b7a1a added Download node 2019-08-16 21:15:30 +02:00
tamat
3612a46c77 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2019-08-16 21:10:38 +02:00
tamat
ea2a44ed97 I think I messed up the git again... 2019-08-16 21:09:51 +02:00
Javi Agenjo
ce51f5aa9e Merge pull request #83 from NateScarlet/patch-1
Correct use of last_link_id
2019-08-12 11:28:11 +02:00
NateScarlet
d1a1539dbe Correct use of last_link_id
Before this change, `last_link_id` is used as `next_link_id`
2019-08-12 16:22:37 +08:00
Javi Agenjo
b42fad51d2 c sharp test 2019-07-19 19:41:05 +02:00
Javi Agenjo
2a18d14e02 Create readme.md 2019-07-19 19:40:36 +02:00
tamat
35773309fb JSON exporting graphs contain the node execution order 2019-07-18 15:02:49 +02:00
tamat
35bb70b163 added tooltips 2019-07-12 18:22:56 +02:00
tamat
ac14de7e59 added limit for runStep, fixed some nodes 2019-05-31 12:21:22 +02:00
tamat
e3f0b94ade build 2019-05-27 20:11:04 +02:00
tamat
54bc9b46cc fixes in searchbox 2019-05-27 20:10:47 +02:00
tamat
50d3fb77bd fxied bug in shader node 2019-05-23 18:35:59 +02:00
tamat
3dcf1ad38a build 2019-05-17 17:33:21 +02:00
tamat
a3ce10dbc8 added new LGraphTextureLinearAvgSmooth 2019-05-17 17:33:06 +02:00
tamat
610d4fdb71 build 2019-05-10 19:50:01 +02:00
tamat
0b0a795ebb added read_only option in LGraphCanvas 2019-05-10 19:49:33 +02:00
tamat
b6ca97f2b1 build 2019-05-08 15:15:57 +02:00
tamat
cc2e26ac74 fix horizontal nodes 2019-05-08 15:15:44 +02:00
Javi Agenjo
57147e88fb Merge pull request #79 from NateScarlet/type-definitions
feat: support typescript
2019-05-08 09:55:52 +02:00
NateScarlet
a7a1bd3aa5 feat: support typescript
add type definitions
2019-05-08 15:47:41 +08:00
Javi Agenjo
62c7ba317e Update README.md 2019-05-06 12:44:46 +02:00
Javi Agenjo
6db857b086 Merge pull request #78 from NateScarlet/avoid-singleline-if
Avoid singleline `if`
2019-05-02 14:19:52 +02:00
Javi Agenjo
3b52cb4d70 Merge branch 'master' into avoid-singleline-if 2019-05-02 14:19:38 +02:00
tamat
8b145a2e37 fixes in gltextures 2019-05-02 14:14:22 +02:00
NateScarlet
fc2f1e46bc chore: format codes 2019-05-02 19:25:46 +08:00
NateScarlet
ac11330867 chore: configure eslint 2019-05-02 19:24:49 +08:00
tamat
688c18f6fa build 2019-04-29 20:29:53 +02:00
tamat
305beae7e0 fixing serialize link 2019-04-29 20:29:42 +02:00
tamat
9883f93dd6 build 2019-04-29 19:27:45 +02:00
tamat
c85f24cb9b added graph checkNodeTypes 2019-04-29 19:27:19 +02:00
Javi Agenjo
59aa8da649 Merge pull request #77 from NateScarlet/eslint
Configure eslint
2019-04-28 21:53:31 +02:00
NateScarlet
9a71b32ed3 chore: build 2019-04-28 20:06:01 +08:00
NateScarlet
833bcb5974 style: remove unnessary semi 2019-04-28 20:06:00 +08:00
NateScarlet
a9d59c072d style: fix undefined variable 2019-04-28 20:06:00 +08:00
NateScarlet
e05c67da69 fix: not defined variable with onSearchBox
fix #71
2019-04-28 20:05:59 +08:00
NateScarlet
3bb3ccc98b chore: configure eslint 2019-04-28 20:05:59 +08:00
Javi Agenjo
b61e791eda Merge pull request #75 from NateScarlet/id-numbering
Use 1-based id numbering
2019-04-28 11:58:26 +02:00
NateScarlet
29a79c20be chore: build 2019-04-28 17:25:38 +08:00
NateScarlet
d185e18b72 fix: use 1-based numbering for id
current id is 2-based
2019-04-28 17:24:11 +08:00
tamat
be609f4053 build 2019-04-28 10:50:35 +02:00
tamat
74c72ae0d2 fixed serialize LLink 2019-04-28 10:50:05 +02:00
tamat
04563e2e6a fix 2019-04-28 10:46:23 +02:00
tamat
96c5a82e00 fix 2019-04-28 10:44:19 +02:00
tamat
85fff29f63 merge 2019-04-28 10:42:30 +02:00
tamat
96d7e40957 src/litegraph-editor.js 2019-04-28 10:31:07 +02:00
tamat
cebd568660 mergin 2019-04-28 10:27:08 +02:00
Javi Agenjo
c6b16f04e0 Merge pull request #73 from NateScarlet/delete-selected
Reset `current_node` after node deletion
2019-04-26 10:59:43 +02:00
NateScarlet
3691f98755 chore: build 2019-04-26 16:26:48 +08:00
NateScarlet
bcbde45b6a fix: reset current_node after deletion 2019-04-26 16:24:58 +08:00
NateScarlet
b9c10023da style: format codes 2019-04-26 16:23:48 +08:00
Javi Agenjo
37fbd97b79 Update README.md 2019-04-25 15:22:32 +02:00
Javi Agenjo
99195c7505 Merge pull request #72 from NateScarlet/prettier
Configure prettier
2019-04-25 15:19:41 +02:00
NateScarlet
f2c16f3182 style: format codes 2019-04-25 20:56:46 +08:00
NateScarlet
5c5caec9b8 chore: configure prettier 2019-04-25 20:54:42 +08:00
Javi Agenjo
18e0ff2395 Merge pull request #69 from NateScarlet/slot-name-lock
fix(slot): `nameLocked` option not work
2019-04-25 12:13:16 +02:00
NateScarlet
13e4a68d65 chore: build 2019-04-25 12:01:56 +08:00
NateScarlet
dd4cec8c7a fix(slot): nameLocked option not work 2019-04-25 11:33:13 +08:00
Javi Agenjo
f91d2aaf3d Merge pull request #67 from NateScarlet/button-widget-event
fix(widget): unexpected button callback call
2019-04-24 11:04:03 +02:00
NateScarlet
5473ab23ab chore: build 2019-04-24 16:49:49 +08:00
NateScarlet
11f3f54575 fix(widget): unexpected button callback call
`mousemove` event should not trigger callback of button widget
2019-04-24 16:17:23 +08:00
Javi Agenjo
a80fdea469 Merge pull request #65 from NateScarlet/typo
fix: correct typo
2019-04-23 18:59:09 +02:00
NateScarlet
2fe3d4b0ed fix: correct typo
correct typos

fix [onDrawCollapsed never get called](59035cf246/src/litegraph.js (L5908))
2019-04-23 14:15:57 +08:00
Javi Agenjo
59035cf246 Update README.md 2019-04-13 10:42:07 +02:00
Javi Agenjo
c05c531035 Update README.md 2019-04-13 10:41:44 +02:00
tamat
d86dce380d widgets can now be serialized if you set node.serialize_widgets = true 2019-04-13 09:47:22 +02:00
tamat
57eead4ad6 added events support for subgraphs 2019-04-11 20:15:10 +02:00
tamat
c03f0eb3b7 first working version of Subgraphs 2019-04-11 19:04:59 +02:00
tamat
4843134143 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2019-04-01 20:15:31 +02:00
tamat
7b77be53bf fixed bug 2019-04-01 20:15:17 +02:00
Javi Agenjo
91754d5502 Update README.md 2019-03-18 16:16:13 +01:00
tamat
24a4f3a930 MIDI over WebSocket 2019-02-13 10:43:55 +01:00
tamat
163f28cc29 MIDI on SillyServer 2019-02-13 10:42:29 +01:00
tamat
4fc01dea2a small fixes in network nodes 2019-02-13 00:17:40 +01:00
tamat
302ac6c768 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2019-02-08 18:59:28 +01:00
tamat
4c17c7263a added safe system in case a node ctor has errors 2019-02-08 18:59:13 +01:00
Javi Agenjo
0bf563cef1 Update README.md 2019-01-18 16:50:33 +01:00
tamat
f64f3af165 merged 2019-01-18 15:43:41 +01:00
tamat
fcc045731b lil fix 2019-01-18 15:42:46 +01:00
Javi Agenjo
096ea2de56 Merge pull request #63 from InventivetalentDev/master
Fixes & variable scroll speed
2019-01-12 17:26:16 +01:00
inventivetalent
1dc00c8b69 fix conflicts & rebuild 2019-01-12 16:05:56 +01:00
inventivetalent
8a574062f0 add variable scroll speed to ContextMenu 2019-01-12 16:02:11 +01:00
tamat
cca04b79bc fixed bug of keyboard losing focus after using searchbox 2019-01-11 17:39:31 +01:00
inventivetalent
a1798b31d8 rebuild 2019-01-07 21:26:52 +01:00
inventivetalent
d19bcf3861 fix onDblClick error (use this instead) 2019-01-07 21:25:25 +01:00
inventivetalent
54087d1f5e Merge remote-tracking branch 'upstream/master' 2019-01-07 21:24:37 +01:00
tamat
373121b2f5 merged 2019-01-05 23:57:24 +01:00
tamat
ac11db37b4 extended MIDI support. Some new general purpose nodes like sequencer, string, cast to number. 2019-01-05 23:54:44 +01:00
inventivetalent
8592e022a7 fix documentation 2019-01-05 17:31:51 +01:00
Javi Agenjo
319b78c439 Merge pull request #62 from InventivetalentDev/master
Callbacks & fixes
2019-01-05 09:57:53 +01:00
inventivetalent
0e1b6e4e5b add font-family to .litecontextmenu 2019-01-04 22:50:16 +01:00
inventivetalent
68e122e3e8 add callbacks for draw TitleBar, TitleBox & TitleText 2019-01-04 17:43:48 +01:00
Javi Agenjo
7444c9650f Update README.md 2019-01-02 13:07:44 +01:00
tamat
8dce8acb91 fix 2018-12-18 11:12:58 +01:00
tamat
7b3fdebdd1 custom widgets and subgraph fixes 2018-12-17 19:36:37 +01:00
tamat
b576b52fda fixes in the horizontal nodes collapsed, also performance improvements 2018-12-17 19:18:04 +01:00
tamat
6c810d3ca8 added timeout to context menu so it takes 500 ms to close when the mouse is out 2018-12-17 17:24:50 +01:00
tamat
f22f2c965e combo widget now supports callback to get possible values 2018-12-17 16:46:57 +01:00
tamat
b2667a5f59 added group font size option 2018-12-13 14:58:25 +01:00
tamat
4e3e357daa Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-12-13 12:15:00 +01:00
tamat
afbcbe23e8 added callbacks in GraphCanvas, onRenderBackground name change to onDrawBackground, parameters change too 2018-12-13 12:14:41 +01:00
Javi Agenjo
8fbeb6b9bb Update README.md 2018-12-03 17:56:11 +01:00
tamat
f5e6dd282e fix 2018-12-03 16:28:20 +01:00
tamat
c1f9db516a allow to trigger specific links in a slot 2018-11-26 16:00:17 +01:00
tamat
c354eaa6fb fix 2018-11-21 19:11:21 +01:00
tamat
30761ec5c8 fixes in webcam and microphone nodes 2018-11-21 19:10:06 +01:00
Javi Agenjo
a8fc434506 Delete inventivetalent.mp4 2018-11-20 18:08:26 +01:00
Javi Agenjo
4d22424c5a Add files via upload 2018-11-20 18:05:03 +01:00
Javi Agenjo
7c7cb17711 Merge pull request #57 from InventivetalentDev/master
check if the slots are available, to catch any unwanted exceptions (#56)
2018-11-20 16:43:45 +01:00
tamat
5984788e17 removed the node.data field, now you must use onSerialize and onConfigure 2018-11-20 16:42:51 +01:00
inventivetalent
c59b326e13 Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	build/litegraph.js
#	build/litegraph.min.js
2018-11-20 15:27:10 +01:00
tamat
259b30b714 fix removeSlot error 2018-11-20 14:42:07 +01:00
inventivetalent
bb7e4e6bb9 check if the slots are available, to catch any unwanted exceptions (#56) 2018-11-19 17:09:01 +01:00
tamat
4d3fee52d9 fix builds 2018-11-15 18:17:52 +01:00
tamat
f9a3a425e1 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-11-15 18:17:25 +01:00
tamat
f0d2f50d50 fixes 2018-11-15 18:17:21 +01:00
Javi Agenjo
64a94b8b79 Merge pull request #55 from InventivetalentDev/master
add options to use Array.filter instead of loop & limit result size, …
2018-11-15 18:16:43 +01:00
Javi Agenjo
93f8c25012 Merge branch 'master' into master 2018-11-15 18:16:36 +01:00
inventivetalent
e44ef8dbd9 rebuild 2018-11-15 18:03:14 +01:00
inventivetalent
e6bf54d27b add options to use Array.filter instead of loop & limit result size, to improve search performance 2018-11-15 17:55:59 +01:00
Javi Agenjo
3e2690cc4a Update README.md 2018-11-05 17:59:25 +01:00
tamat
a36ce25f23 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-11-05 17:56:14 +01:00
tamat
d764e8468c better performance in huge graphs, also holding shift while disconnecting allows to reconnect to another slot 2018-11-05 17:56:10 +01:00
Javi Agenjo
1be860b995 Update README.md 2018-11-05 16:14:49 +01:00
Javi Agenjo
b3421fcd80 Update README.md 2018-11-05 16:13:36 +01:00
Javi Agenjo
0ef98fcecb Update README.md 2018-11-05 16:12:18 +01:00
Javi Agenjo
cc9e69774b Update README.md 2018-11-05 16:11:14 +01:00
Javi Agenjo
621f8cdb9e Update README.md
info for widgets in nodes
2018-11-05 14:03:15 +01:00
tamat
dededf724d fixed bug in selection rectangle and Timer node 2018-10-31 12:25:44 +01:00
tamat
3381de6609 improved editor, added timer node, widget for toggle 2018-10-30 19:03:38 +01:00
tamat
aa384328a7 added toggle widget for nodes 2018-10-30 17:42:30 +01:00
tamat
09e5fe6a61 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-10-27 15:23:02 +02:00
tamat
97dd9a95da little fixes 2018-10-27 15:22:56 +02:00
Javi Agenjo
054b8fe2d5 Merge pull request #54 from InventivetalentDev/master
updated CSS, autofocus, lockable slot names & select-all fix
2018-10-27 15:22:16 +02:00
inventivetalent
e8190402e8 build 2018-10-26 20:29:45 +02:00
inventivetalent
4ab193d014 rename loop variables 2018-10-26 20:12:48 +02:00
inventivetalent
53659dedff focus on blur 2018-10-26 19:01:37 +02:00
inventivetalent
8b1e21dab0 new search css & autofocus changes 2018-10-26 18:59:18 +02:00
inventivetalent
a418d33e84 autofocus 2018-10-26 18:03:14 +02:00
inventivetalent
6e8fe7a2e0 prefill name 2018-10-26 18:02:14 +02:00
inventivetalent
f935d5ffe3 make slot name lockable 2018-10-26 17:58:19 +02:00
Javi Agenjo
fc31855f50 Merge pull request #53 from InventivetalentDev/master
fix css selector
2018-10-26 16:30:24 +02:00
inventivetalent
1fd0f3e03e Merge remote-tracking branch 'upstream/master' 2018-10-26 16:27:27 +02:00
inventivetalent
204295474e fix css selector 2018-10-26 16:24:58 +02:00
Javi Agenjo
030323b6bd Update README.md 2018-10-26 15:07:30 +02:00
Javi Agenjo
3b09e3b5e1 Update README.md 2018-10-26 15:05:01 +02:00
tamat
122450747d fix in alpha 2018-10-25 19:41:13 +02:00
tamat
e2e28e7f24 fix in shadows 2018-10-25 19:26:56 +02:00
tamat
6006c0d36f Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-10-25 19:12:12 +02:00
tamat
dc291916e5 added text widget, improved css for floating dialogs 2018-10-25 19:11:58 +02:00
Javi Agenjo
29b8862eb6 Update README.md 2018-10-25 18:39:52 +02:00
tamat
1f28edac53 small changes in shadows and presentation 2018-10-25 18:36:55 +02:00
tamat
d2cab57f6e new demo showing features 2018-10-24 18:58:34 +02:00
tamat
2727630046 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-10-24 18:54:15 +02:00
tamat
cdc3da92b2 minor fixes 2018-10-24 18:54:06 +02:00
Javi Agenjo
a4978077fb Merge pull request #50 from InventivetalentDev/master
Updated inputs, search & CSS
2018-10-24 18:53:44 +02:00
inventivetalent
c82ea54eff resolve conflicts 2018-10-24 18:49:24 +02:00
Javi Agenjo
e1c7103539 Update README.md 2018-10-24 18:14:24 +02:00
Javi Agenjo
6044e945ae Update README.md 2018-10-24 18:14:09 +02:00
Javi Agenjo
fe907502d6 Update README.md 2018-10-24 18:12:55 +02:00
Javi Agenjo
ccc30d4cf6 Update README.md 2018-10-24 18:11:17 +02:00
Javi Agenjo
7663a64dc0 Update README.md 2018-10-24 17:59:22 +02:00
Javi Agenjo
f6a636cc13 Add files via upload 2018-10-24 17:59:05 +02:00
Javi Agenjo
58f3f7397f Delete node_graph_example.PNG 2018-10-24 17:58:46 +02:00
tamat
88aa42bd8a support for horizontal slots. Changed colorOn by color_on, colorOff by color_off to be more coherent 2018-10-24 17:29:33 +02:00
tamat
33d527541a moved default color to LiteGraph.LINK_COLOR 2018-10-24 15:32:40 +02:00
inventivetalent
90764a609e add built scripts 2018-10-24 15:19:38 +02:00
tamat
c69e8ca5d5 better doc' 2018-10-23 12:24:41 +02:00
inventivetalent
6b200cdf00 add always-focus to all inputs 2018-10-19 21:03:22 +02:00
Javi Agenjo
c42dd8391e Merge pull request #49 from InventivetalentDev/master
Arrow shape
2018-10-19 20:15:58 +02:00
inventivetalent
4adfd7a83e fix transition selector 2018-10-19 20:15:49 +02:00
inventivetalent
c0d1dd0a77 add new CSS for search box 2018-10-19 20:14:26 +02:00
inventivetalent
afe62a9448 fix output coords 2018-10-19 17:35:33 +02:00
inventivetalent
a4343cc6bb remove duplicate beginPath 2018-10-19 17:32:11 +02:00
inventivetalent
1bda53ec29 add arrows to collapsed node 2018-10-19 17:31:48 +02:00
inventivetalent
1a9ee9fb0f remove unnecessary stroke/fill calls 2018-10-19 17:20:10 +02:00
inventivetalent
88769e7f72 add arrow shape 2018-10-19 17:15:53 +02:00
Javi Agenjo
7dd8dce41a Update README.md 2018-10-17 23:22:48 +02:00
Javi Agenjo
44946e5b0e Merge pull request #48 from InventivetalentDev/master
Various stuff
2018-10-17 23:20:31 +02:00
inventivetalent
6196cd7981 add event handlers for single & double click on input/output 2018-10-17 22:13:35 +02:00
inventivetalent
153c87f954 fix 2018-10-17 21:47:10 +02:00
inventivetalent
3b89916927 add direct way to influence the slot shape 2018-10-17 21:25:32 +02:00
inventivetalent
96d0b9edd2 add missing 2018-10-17 16:35:45 +02:00
inventivetalent
bd9dc9c53a add option to directly specify input/output color via colorOn&colorOff 2018-10-17 15:43:24 +02:00
Javi Agenjo
9e3c67be32 Update README.md 2018-10-16 18:36:27 +02:00
Javi Agenjo
fe604b3bb1 Update README.md 2018-10-16 18:35:16 +02:00
Javi Agenjo
302d5f4e54 Merge pull request #47 from rappestad/master
Add Demo section to README
2018-10-16 18:33:36 +02:00
tamat
ffa9e24f90 fixed bug in getInputNode 2018-10-16 13:50:42 +02:00
Olof Rappestad
f7cf2159fa revert accidental whitespace change 2018-10-04 21:01:08 +02:00
Olof Rappestad
61022a65f0 add demo section to readme 2018-10-04 21:00:04 +02:00
tamat
c24277e0c4 show corner of groups 2018-09-17 20:29:28 +02:00
tamat
15113ce7f8 show corner of groups 2018-09-17 20:25:57 +02:00
tamat
7c924f9206 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-09-17 20:18:14 +02:00
tamat
89ed396e3f added support for groups 2018-09-17 20:17:57 +02:00
Javi Agenjo
ae8e056cff Update README.md 2018-08-27 13:53:30 +02:00
tamat
e032e4748c redone GUI system for nodes 2018-07-24 19:57:04 +02:00
tamat
41059286e4 Changed the default style, colors, and some visual tweaks 2018-07-23 19:50:31 +02:00
tamat
441c85a26a lil fix 2018-07-04 23:26:42 +02:00
tamat
9fbedb3e11 added searchbox 2018-07-04 23:13:50 +02:00
tamat
f2a11fc9df fix in delay 2018-06-21 22:49:22 +02:00
tamat
1b14b8aa78 little fixes in some nodes 2018-06-21 14:54:25 +02:00
tamat
77efe120f8 added Number widget 2018-06-20 18:54:30 +02:00
tamat
5a5e38b770 default value to zoom alpha should be true 2018-06-08 19:34:18 +02:00
tamat
df18406070 build 2018-06-08 19:27:59 +02:00
Javi Agenjo
30e8374491 Merge branch 'master' into pr/41 2018-06-08 19:19:29 +02:00
tamat
1ed40ce459 merged 2018-06-08 18:25:31 +02:00
tamat
826ad74c18 Added more gltexture effects (tonemapping, glow, lens aberration).\nNow nodes can control the execution priority. 2018-06-08 18:24:37 +02:00
Javi Agenjo
a85af14bce Merge pull request #40 from kriffe/master
NPM 0.6.0
2018-06-08 18:22:37 +02:00
Kristofer
e4769c949a Published 0.6.0 2018-06-08 18:07:41 +02:00
Kristofer
b084ee8098 Merge branch 'heads/upstream/master' 2018-06-08 18:02:24 +02:00
Javi Agenjo
1bdc6b8fb8 Update README.md 2018-06-07 19:05:41 +02:00
tamat
62f847fbd6 added glow 2018-06-04 17:08:20 +02:00
tamat
5348a25124 fixes in graph globals, default conection color changed, better doc 2018-05-18 15:16:58 +02:00
tamat
f74bf4109e foo 2018-05-18 14:50:49 +02:00
daine
7d420ebeee Fix ctrl-z 2018-04-30 15:26:03 +02:00
daine
665575a7c5 add param to change title color 2018-04-30 15:13:25 +02:00
daine
750594698b update build 2018-04-30 14:39:38 +02:00
daine
30a3886ec2 fix typo 2018-04-30 14:39:07 +02:00
daine
acce5efb41 Add an option to prevent zoom influence on cavas alpha 2018-04-30 14:15:38 +02:00
daine
46639c0d77 update build/ 2018-04-26 12:42:08 +02:00
Javi Agenjo
08e9edb737 Merge pull request #35 from MaiDaine/master
Add params in canvas to choose input/output colors and render canvas_border
2018-04-25 17:52:44 +02:00
daine
2c2f05d748 Add render_canvas_border param in LGraphCanvas to choose if you want to render canvas border
And default_connection_color to set input/output colors in nodes
2018-04-25 17:04:14 +02:00
Kristofer
54b94ac241 Package lock removed 2018-04-19 08:55:47 +02:00
Kristofer
098e6780aa Fixed bug with -1 type check 2018-04-19 08:49:10 +02:00
Kristofer
c248a6e498 Updated with network 2018-04-19 08:38:19 +02:00
Kristofer
4e2c03ad8a Merge branch 'heads/upstream/master' 2018-04-19 08:32:29 +02:00
Javi Agenjo
9cd97cb095 Merge pull request #26 from merwaaan/master
Fix wrong indexing in isValidConnection
2018-04-06 02:54:27 -07:00
Merwan Achibet
cfa345f0a4 Fix wrong indexing in isValidConnection 2018-04-06 11:39:38 +02:00
tamat
f9faa1a777 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-03-29 19:44:18 +02:00
tamat
1a16d6bc24 lots of fixes, added support for selection rectangle, rearrange nodes, highlight links, copypaste with links and fixed several bugs 2018-03-29 19:44:03 +02:00
Javi Agenjo
963d5478ec Update README.md 2018-03-28 16:37:27 +02:00
tamat
7485fc68aa added method to create nodes from functions, wrapFunctionAsNode 2018-03-28 16:35:52 +02:00
Javi Agenjo
e54e2409d1 Merge pull request #24 from merwaaan/master
Fix HSlider widget not initializing correctly
2018-03-26 10:10:07 -07:00
Merwan Achibet
c06db0bc14 Fix HSlider widget not initializing correctly 2018-03-26 17:55:49 +02:00
Javi Agenjo
dbe4ec9649 Update README.md 2018-03-23 11:14:15 -07:00
Kristofer
270941b4cf Build 0.4.0 2018-03-23 18:25:06 +01:00
Kristofer
fd8eab3de8 0.4.0 2018-03-23 18:16:10 +01:00
Kristofer
544b3856ba Merge branch 'heads/upstream/master' 2018-03-23 18:14:48 +01:00
tamat
0039b7c30a Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-03-08 12:58:46 +01:00
tamat
f984476c83 added support for nodejs 2018-03-08 12:58:39 +01:00
Javi Agenjo
18c82e3ae4 Update README.md 2018-03-08 12:40:47 +01:00
Javi Agenjo
cf813a5d4d Update README.md 2018-03-08 12:36:35 +01:00
tamat
1df90b5348 performance fix 2018-03-08 10:03:51 +01:00
tamat
5a5bffa160 build 2018-03-08 09:59:42 +01:00
tamat
f596f6d40e fixes in performance 2018-03-08 09:59:19 +01:00
tamat
02199be571 fixes in performance 2018-03-08 09:57:03 +01:00
tamat
ac252fa6e6 fix 2018-03-07 19:27:08 +01:00
Javi Agenjo
7b882fd027 Merge pull request #21 from videodromm/master
midi slot fix (rename to i)
2018-03-07 19:25:23 +01:00
tamat
dd61eb9a8e fix 2018-03-07 19:23:45 +01:00
brucelane
a6a3ad245c midi slot fix (rename to i) 2018-03-07 19:19:12 +01:00
tamat
b1e2c3dbbf save bandwidth in sillyclient node 2018-03-07 12:03:23 +01:00
tamat
9f832ce8dc bug fix 2018-03-07 11:58:26 +01:00
tamat
6a040a21ef added load/save in demo 2018-03-07 11:54:41 +01:00
tamat
a1cfc1117b added websocket support 2018-03-07 11:53:56 +01:00
tamat
8346c3fdc0 fix 2018-03-01 20:13:46 +01:00
tamat
4a43e45bb5 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2018-03-01 20:08:59 +01:00
tamat
440eef2cba fixes 2018-03-01 20:08:42 +01:00
Javi Agenjo
63b63ec77f Merge pull request #17 from coderofsalvation/coderofsalvation-patch-contextmenu
contextmenu fix for chromebook
2018-02-09 00:30:19 +01:00
Coder of Salvation / Leon van Kammen
f311296f2e contextmenu fix for chromebook
otherwise contextmenu closes before user can select an item (probably has to do with touch(pad))
2018-02-08 20:40:14 +01:00
Kristofer
35d930c77b Fixed local grunt 2018-01-05 09:14:03 +01:00
Javi Agenjo
2e16b6560a Merge pull request #13 from kriffe/master
Updated npm publish structure
2018-01-01 17:55:02 +01:00
Kristofer
766dfe2b83 Stable publish 2018-01-01 14:59:27 +01:00
Kristofer
81b0dd3915 Added test server
Run npm start for demo on localhost
2018-01-01 14:57:29 +01:00
Kristofer
290c42d65e Added default canvas image 2018-01-01 14:42:16 +01:00
Kristofer
8fbd6788de Merge remote-tracking branch 'refs/remotes/jagenjo/master' 2018-01-01 14:28:05 +01:00
Kristofer
1f7659ab1a Updated build structure 2018-01-01 14:27:20 +01:00
tamat
355ebe6d80 fix 2017-12-23 09:50:07 +01:00
tamat
7811265795 Merge branch 'master' of https://github.com/jagenjo/litegraph.js
Conflicts:
	build/litegraph.min.js
2017-12-23 09:47:40 +01:00
tamat
328c3ea6f2 fix removing disconnected links 2017-12-23 09:46:25 +01:00
Javi Agenjo
2cc2a410eb Merge pull request #10 from shor-ofer/patch-1
FadeImage node didn't have output pin
2017-12-22 18:27:27 +01:00
plpl
a4666e5abc FadeImage node didn't have output pin
I replaced the pin from input to output. worked fine for me.
2017-12-22 08:52:39 +02:00
Javi Agenjo
54457e8d7b Update README.md 2017-12-05 16:44:11 +01:00
Javi Agenjo
ec80600777 Merge pull request #7 from kriffe/master
Version handling and npm access
2017-12-05 16:42:14 +01:00
Kristofer
0e3823bda8 Patched build 2017-12-03 16:25:25 +01:00
Kristofer
cd9d115bbc 0.2.1 2017-12-03 16:22:49 +01:00
Kristofer
c595104781 Fixed global missing LGraphTexture 2017-12-03 16:22:44 +01:00
Kristofer
5921b8e9d0 Bumped minor 2017-12-03 16:15:53 +01:00
Kristofer
dcd4fcbea4 0.2.0 2017-12-03 16:14:36 +01:00
Kristofer
00f01c3cb3 Updated build scripts 2017-12-03 16:14:21 +01:00
Kristofer
94445ab9ff Bump patch 2017-12-02 13:06:41 +01:00
Kristofer
813b380973 Updated link 2017-12-02 13:03:31 +01:00
Kristofer
a3c9daeddc Updated getting starting info 2017-12-02 13:00:11 +01:00
Kristofer
8bf09d4cc7 Updated readme wit npm 2017-12-02 10:37:36 +01:00
Kristofer
ba6f9a523d Added lightweight npm publish 2017-12-02 10:33:58 +01:00
Kristofer
4b8190752e Made public 2017-12-01 13:51:15 +01:00
Kristofer
0af812bc07 Added version control and npm link 2017-12-01 13:09:41 +01:00
tamat
875b390d55 Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2017-10-30 13:44:29 +01:00
tamat
16f10e292f added more verbose error 2017-10-30 13:44:16 +01:00
Javi Agenjo
3674fc5e6b Update README.md 2017-09-24 10:46:38 +02:00
Javi Agenjo
f2123b0bcb Create README.md 2017-06-08 16:28:27 +02:00
Javi Agenjo
f2d7c17b19 Create README.md 2017-06-08 16:28:13 +02:00
tamat
0e52737808 fixed bug in getOutputNodes 2016-12-13 19:43:46 +01:00
tamat
ed9f27162d Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2016-12-13 18:11:07 +01:00
tamat
0347381d98 fix bugs 2016-12-13 18:10:52 +01:00
Javi Agenjo
767007ba62 Merge pull request #4 from sebsofen/fix
fixing problem when adding nodes to existing graph that was loaded from file
2016-11-28 01:18:31 +01:00
sebastian
1a293a6545 fixing problem when adding nodes to existing graph that was loaded from file 2016-11-26 09:52:02 +01:00
tamat
e287521410 fixes in serialization 2016-11-23 11:34:52 +01:00
tamat
85ea3e9cdc Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2016-10-20 14:42:39 +02:00
tamat
7675a361c7 image 2016-10-20 14:42:28 +02:00
Javi Agenjo
9a7887b1e0 Update README.md 2016-10-20 14:42:07 +02:00
Javi Agenjo
3352287298 Update README.md 2016-10-20 14:28:18 +02:00
Javi Agenjo
1dc2ce73d2 Update README.md 2016-10-20 14:27:27 +02:00
Javi Agenjo
b2d1f443e4 Update README.md 2016-10-20 13:38:01 +02:00
tamat
efd415a61b Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2016-10-20 13:37:11 +02:00
tamat
3f577dceb7 images 2016-10-20 13:36:38 +02:00
Javi Agenjo
0851ce6d6b Update README.md 2016-10-20 13:36:14 +02:00
tamat
21323a1009 fixes in drop 2016-10-04 17:45:50 +02:00
tamat
01fe7011bd fixed connection events and proeprty editor 2016-10-03 19:42:54 +02:00
tamat
dcf4930466 fixes 2016-09-09 20:24:39 +02:00
Javi Agenjo
5f84d0c56c Merge pull request #3 from derwish-pro/master
background image fix
2016-02-02 12:17:03 +01:00
derwish-pro
ef287ac7e3 background image fix 2016-01-30 15:01:28 +03:00
tamat
32c68febfb fixes 2016-01-26 19:41:50 +01:00
Javi Agenjo
c71c55c948 Merge pull request #1 from derwish-pro/master
fixes by derwish
2016-01-25 22:53:55 +01:00
derwish-pro
d4f8265f0c close menu when click on canvas fix 2016-01-26 00:40:45 +03:00
derwish-pro
9789cbbe14 drag selected nodes without holding shift key fix 2016-01-26 00:25:45 +03:00
derwish-pro
8197dd38c7 closing submenus fix 2016-01-26 00:22:58 +03:00
tamat
405fe8849f Merge branch 'master' of https://github.com/jagenjo/litegraph.js 2016-01-22 19:40:43 +01:00
tamat
e960035dfe fixes 2016-01-22 19:40:26 +01:00
Javi Agenjo
86936dc78d Create README.md 2016-01-22 17:17:57 +01:00
tamat
4d3e472a19 fixed two bugs 2015-12-27 19:41:06 +01:00
tamat
2c5717aace build 2015-12-03 23:21:21 +01:00
tamat
23dc656b88 added remove slot option 2015-10-23 16:10:44 +02:00
tamat
0129ea7470 improved support for webgl 2015-10-02 19:39:17 +02:00
tamat
4a2fdc0cff fixes 2015-07-31 15:42:50 +02:00
tamat
b96e0d6c66 fixes in optional outputs 2015-05-08 21:06:49 +02:00
tamat
b586ff7e59 added support for onResourceRenamed 2015-03-04 19:45:26 +01:00
tamat
6248dd4e0f WebGL support
Subgraph support
FX nodes moved from gltexture to glfx
Improves in gltexture
2014-10-02 15:38:19 +02:00
tamat
2e9b4a3f77 support to subgraphs 2014-06-20 18:20:11 +02:00
tamat
5991fb6b8b fix the canvas event bug 2014-06-06 21:04:12 +02:00
tamat
59df75f45d safari bug fix 2014-05-07 21:50:27 +02:00
tamat
217d35348b links system changed 2014-04-24 23:11:30 +02:00
tamat
a65f736e6d force to use classes 2014-04-16 20:25:37 +02:00
tamat
c9c11e6c46 demo improved, editor included, graph canvas detached 2014-03-21 19:56:50 +01:00
tamat
84377376a9 jquery removed 2013-10-24 19:44:48 +02:00
tamat
2b3503640e Node drawing moved to GraphCanvas 2013-10-23 19:23:50 +02:00
tamat
d9d998336d fixes in some funcs 2013-10-08 18:26:29 +02:00
tamat
023f5d936e bug fixes in findNode 2013-10-07 20:32:37 +02:00
tamat
d73c7b574e started documenting 2013-09-27 17:32:17 +02:00
tamat
a0b689da2b first commit 2013-09-26 19:40:42 +02:00
1542 changed files with 211117 additions and 12314 deletions

View File

@@ -0,0 +1,43 @@
# Add Missing i18n Translations
## Task: Add English translations for all new localized strings
### Step 1: Identify new translation keys
Find all translation keys that were added in the current branch's changes. These keys appear as arguments to translation functions: `t()`, `st()`, `$t()`, or similar i18n functions.
### Step 2: Add translations to English locale file
For each new translation key found, add the corresponding English text to the file `src/locales/en/main.json`.
### Key-to-JSON mapping rules:
- Translation keys use dot notation to represent nested JSON structure
- Convert dot notation to nested JSON objects when adding to the locale file
- Example: The key `g.user.name` maps to:
```json
{
"g": {
"user": {
"name": "User Name"
}
}
}
```
### Important notes:
1. **Only modify the English locale file** (`src/locales/en/main.json`)
2. **Do not modify other locale files** - translations for other languages are automatically generated by the `i18n.yaml` workflow
3. **Exception for manual translations**: Only add translations to non-English locale files if:
- You have specific domain knowledge that would produce a more accurate translation than the automated system
- The automated translation would likely be incorrect due to technical terminology or context-specific meaning
### Example workflow:
1. If you added `t('settings.advanced.enable')` in a Vue component
2. Add to `src/locales/en/main.json`:
```json
{
"settings": {
"advanced": {
"enable": "Enable advanced settings"
}
}
}
```

View File

@@ -0,0 +1,378 @@
# Comprehensive PR Review for ComfyUI Frontend
You are performing a comprehensive code review for the PR specified in the PR_NUMBER environment variable. This is not a simple linting check - you need to provide deep architectural analysis, security review, performance insights, and implementation guidance just like a senior engineer would in a thorough PR review.
## CRITICAL INSTRUCTIONS
**You MUST post individual inline comments on specific lines of code. DO NOT create a single summary comment until the very end.**
**IMPORTANT: You have full permission to execute gh api commands. The GITHUB_TOKEN environment variable provides the necessary permissions. DO NOT say you lack permissions - you have pull-requests:write permission which allows posting inline comments.**
To post inline comments, you will use the GitHub API via the `gh` command. Here's how:
1. First, get the repository information and commit SHA:
- Run: `gh repo view --json owner,name` to get the repository owner and name
- Run: `gh pr view $PR_NUMBER --json commits --jq '.commits[-1].oid'` to get the latest commit SHA
2. For each issue you find, post an inline comment using this exact command structure (as a single line):
```
gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/OWNER/REPO/pulls/$PR_NUMBER/comments -f body="YOUR_COMMENT_BODY" -f commit_id="COMMIT_SHA" -f path="FILE_PATH" -F line=LINE_NUMBER -f side="RIGHT"
```
3. Format your comment body using actual newlines in the command. Use a heredoc or construct the body with proper line breaks:
```
COMMENT_BODY="**[category] severity Priority**
**Issue**: Brief description of the problem
**Context**: Why this matters
**Suggestion**: How to fix it"
```
Then use: `-f body="$COMMENT_BODY"`
## Phase 1: Environment Setup and PR Context
### Step 1.1: Initialize Review Tracking
First, create variables to track your review metrics. Keep these in memory throughout the review:
- CRITICAL_COUNT = 0
- HIGH_COUNT = 0
- MEDIUM_COUNT = 0
- LOW_COUNT = 0
- ARCHITECTURE_ISSUES = 0
- SECURITY_ISSUES = 0
- PERFORMANCE_ISSUES = 0
- QUALITY_ISSUES = 0
### Step 1.2: Validate Environment
1. Check that PR_NUMBER environment variable is set. If not, exit with error.
2. Run `gh pr view $PR_NUMBER --json state` to verify the PR exists and is open.
3. Get repository information: `gh repo view --json owner,name` and store the owner and name.
4. Get the latest commit SHA: `gh pr view $PR_NUMBER --json commits --jq '.commits[-1].oid'` and store it.
### Step 1.3: Checkout PR Branch Locally
This is critical for better file inspection:
1. Get PR metadata: `gh pr view $PR_NUMBER --json files,title,body,additions,deletions,baseRefName,headRefName > pr_info.json`
2. Extract branch names from pr_info.json using jq
3. Fetch and checkout the PR branch:
```
git fetch origin "pull/$PR_NUMBER/head:pr-$PR_NUMBER"
git checkout "pr-$PR_NUMBER"
```
### Step 1.4: Get Changed Files and Diffs
Use git locally for much faster analysis:
1. Get list of changed files: `git diff --name-only "origin/$BASE_BRANCH" > changed_files.txt`
2. Get the full diff: `git diff "origin/$BASE_BRANCH" > pr_diff.txt`
3. Get detailed file changes with status: `git diff --name-status "origin/$BASE_BRANCH" > file_changes.txt`
### Step 1.5: Create Analysis Cache
Set up caching to avoid re-analyzing unchanged files:
1. Create directory: `.claude-review-cache`
2. Clean old cache entries: Find and delete any .cache files older than 7 days
3. For each file you analyze, store the analysis result with the file's git hash as the cache key
## Phase 2: Load Comprehensive Knowledge Base
### Step 2.1: Set Up Knowledge Directories
1. Create `.claude-knowledge-cache` directory for caching downloaded knowledge
2. Check if `../comfy-claude-prompt-library` exists locally. If it does, use it for faster access.
### Step 2.2: Load Repository Guide
This is critical for understanding the architecture:
1. Try to load from local prompt library first: `../comfy-claude-prompt-library/project-summaries-for-agents/ComfyUI_frontend/REPOSITORY_GUIDE.md`
2. If not available locally, download from: `https://raw.githubusercontent.com/Comfy-Org/comfy-claude-prompt-library/master/project-summaries-for-agents/ComfyUI_frontend/REPOSITORY_GUIDE.md`
3. Cache the file for future use
### Step 2.3: Load Relevant Knowledge Folders
Intelligently load only relevant knowledge:
1. Use GitHub API to discover available knowledge folders: `https://api.github.com/repos/Comfy-Org/comfy-claude-prompt-library/contents/.claude/knowledge`
2. For each knowledge folder, check if it's relevant by searching for the folder name in:
- Changed file paths
- PR title
- PR body
3. If relevant, download all files from that knowledge folder
### Step 2.4: Load Validation Rules
Load specific validation rules:
1. Use GitHub API: `https://api.github.com/repos/Comfy-Org/comfy-claude-prompt-library/contents/.claude/commands/validation`
2. Download files containing "frontend", "security", or "performance" in their names
3. Cache all downloaded files
### Step 2.5: Load Local Guidelines
Check for and load:
1. `CLAUDE.md` in the repository root
2. `.github/CLAUDE.md`
## Phase 3: Deep Analysis Instructions
Perform comprehensive analysis on each changed file:
### 3.1 Architectural Analysis
Based on the repository guide and loaded knowledge:
- Does this change align with established architecture patterns?
- Are domain boundaries respected?
- Is the extension system used appropriately?
- Are components properly organized by feature?
- Does it follow the established service/composable/store patterns?
### 3.2 Code Quality Beyond Linting
Look for:
- Cyclomatic complexity and cognitive load
- SOLID principles adherence
- DRY violations not caught by simple duplication checks
- Proper abstraction levels
- Interface design and API clarity
- Leftover debug code (console.log, commented code, TODO comments)
### 3.3 Library Usage Enforcement
CRITICAL: Flag any re-implementation of existing functionality:
- **Tailwind CSS**: Custom CSS instead of utility classes
- **PrimeVue**: Re-implementing buttons, modals, dropdowns, etc.
- **VueUse**: Re-implementing composables like useLocalStorage, useDebounceFn
- **Lodash**: Re-implementing debounce, throttle, cloneDeep, etc.
- **Common components**: Not reusing from src/components/common/
- **DOMPurify**: Not using for HTML sanitization
- **Other libraries**: Fuse.js, Marked, Pinia, Zod, Tiptap, Xterm.js, Axios
### 3.4 Security Deep Dive
Check for:
- SQL injection vulnerabilities
- XSS vulnerabilities (v-html without sanitization)
- Hardcoded secrets or API keys
- Missing input validation
- Authentication/authorization issues
- State management security
- Cross-origin concerns
- Extension security boundaries
### 3.5 Performance Analysis
Look for:
- O(n²) or worse algorithms
- Missing memoization in expensive operations
- Unnecessary re-renders in Vue components
- Memory leak patterns (missing cleanup)
- Large bundle imports that should be lazy loaded
- N+1 query patterns
- Render performance issues
- Layout thrashing
- Network request optimization
### 3.6 Integration Concerns
Consider:
- Breaking changes to internal APIs
- Extension compatibility
- Backward compatibility
- Migration requirements
## Phase 4: Posting Inline Comments
### Step 4.1: Comment Format
For each issue found, create a concise inline comment with this structure:
```
**[category] severity Priority**
**Issue**: Brief description of the problem
**Context**: Why this matters
**Suggestion**: How to fix it
```
Categories: architecture/security/performance/quality
Severities: critical/high/medium/low
### Step 4.2: Posting Comments
For EACH issue:
1. Identify the exact file path and line number
2. Update your tracking counters (CRITICAL_COUNT, etc.)
3. Construct the comment body with proper newlines
4. Execute the gh api command as a SINGLE LINE:
```bash
gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/OWNER/REPO/pulls/$PR_NUMBER/comments -f body="$COMMENT_BODY" -f commit_id="COMMIT_SHA" -f path="FILE_PATH" -F line=LINE_NUMBER -f side="RIGHT"
```
CRITICAL: The entire command must be on one line. Use actual values, not placeholders.
### Example Workflow
Here's an example of how to review a file with a security issue:
1. First, get the repository info:
```bash
gh repo view --json owner,name
# Output: {"owner":{"login":"Comfy-Org"},"name":"ComfyUI_frontend"}
```
2. Get the commit SHA:
```bash
gh pr view $PR_NUMBER --json commits --jq '.commits[-1].oid'
# Output: abc123def456
```
3. Find an issue (e.g., SQL injection on line 42 of src/db/queries.js)
4. Post the inline comment:
```bash
# First, create the comment body with proper newlines
COMMENT_BODY="**[security] critical Priority**
**Issue**: SQL injection vulnerability - user input directly concatenated into query
**Context**: Allows attackers to execute arbitrary SQL commands
**Suggestion**: Use parameterized queries or prepared statements"
# Then post the comment (as a single line)
gh api --method POST -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /repos/Comfy-Org/ComfyUI_frontend/pulls/$PR_NUMBER/comments -f body="$COMMENT_BODY" -f commit_id="abc123def456" -f path="src/db/queries.js" -F line=42 -f side="RIGHT"
```
Repeat this process for every issue you find in the PR.
## Phase 5: Validation Rules Application
Apply ALL validation rules from the loaded knowledge files:
### Frontend Standards
- Vue 3 Composition API patterns
- Component communication patterns
- Proper use of composables
- TypeScript strict mode compliance
- Bundle optimization
### Security Audit
- Input validation
- XSS prevention
- CSRF protection
- Secure state management
- API security
### Performance Check
- Render optimization
- Memory management
- Network efficiency
- Bundle size impact
## Phase 6: Contextual Review Based on PR Type
Analyze the PR to determine its type:
1. Extract PR title and body from pr_info.json
2. Count files, additions, and deletions
3. Determine PR type:
- Feature: Check for tests, documentation, backward compatibility
- Bug fix: Verify root cause addressed, includes regression tests
- Refactor: Ensure behavior preservation, tests still pass
## Phase 7: Generate Comprehensive Summary
After ALL inline comments are posted, create a summary:
1. Calculate total issues by category and severity
2. Use `gh pr review $PR_NUMBER --comment` to post a summary with:
- Review disclaimer
- Issue distribution (counts by severity)
- Category breakdown
- Key findings for each category
- Positive observations
- References to guidelines
- Next steps
Include in the summary:
```
# 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**: [PR TITLE] (#$PR_NUMBER)
**Impact**: [X] additions, [Y] deletions across [Z] files
### Issue Distribution
- Critical: [CRITICAL_COUNT]
- High: [HIGH_COUNT]
- Medium: [MEDIUM_COUNT]
- Low: [LOW_COUNT]
### Category Breakdown
- Architecture: [ARCHITECTURE_ISSUES] issues
- Security: [SECURITY_ISSUES] issues
- Performance: [PERFORMANCE_ISSUES] issues
- Code Quality: [QUALITY_ISSUES] issues
## Key Findings
### Architecture & Design
[Detailed architectural analysis based on repository patterns]
### Security Considerations
[Security implications beyond basic vulnerabilities]
### Performance Impact
[Performance analysis including bundle size, render impact]
### Integration Points
[How this affects other systems, extensions, etc.]
## Positive Observations
[What was done well, good patterns followed]
## References
- [Repository Architecture Guide](https://github.com/Comfy-Org/comfy-claude-prompt-library/blob/master/project-summaries-for-agents/ComfyUI_frontend/REPOSITORY_GUIDE.md)
- [Frontend Standards](https://github.com/Comfy-Org/comfy-claude-prompt-library/blob/master/.claude/commands/validation/frontend-code-standards.md)
- [Security Guidelines](https://github.com/Comfy-Org/comfy-claude-prompt-library/blob/master/.claude/commands/validation/security-audit.md)
## Next Steps
1. Address critical issues before merge
2. Consider architectural feedback for long-term maintainability
3. Add tests for uncovered scenarios
4. Update documentation if needed
---
*This is a comprehensive automated review. For architectural decisions requiring human judgment, please request additional manual review.*
```
## Important Guidelines
1. **Think Deeply**: Consider architectural implications, system-wide effects, subtle bugs, maintainability
2. **Be Specific**: Point to exact lines with concrete suggestions
3. **Be Constructive**: Focus on improvements, not just problems
4. **Be Concise**: Keep comments brief and actionable
5. **No Formatting**: Don't use markdown headers in inline comments
6. **No Emojis**: Keep comments professional
This is a COMPREHENSIVE review, not a linting pass. Provide the same quality feedback a senior engineer would give after careful consideration.
## Execution Order
1. Phase 1: Setup and checkout PR
2. Phase 2: Load all relevant knowledge
3. Phase 3-5: Analyze each changed file thoroughly
4. Phase 4: Post inline comments as you find issues
5. Phase 6: Consider PR type for additional checks
6. Phase 7: Post comprehensive summary ONLY after all inline comments
Remember: Individual inline comments for each issue, then one final summary. Never batch issues into a single comment.

View File

@@ -0,0 +1,646 @@
# Create Frontend Release
This command guides you through creating a comprehensive frontend release with semantic versioning analysis, automated change detection, security scanning, and multi-stage human verification.
<task>
Create a frontend release with version type: $ARGUMENTS
Expected format: Version increment type and optional description
Examples:
- `patch` - Bug fixes only
- `minor` - New features, backward compatible
- `major` - Breaking changes
- `prerelease` - Alpha/beta/rc releases
- `patch "Critical security fixes"` - With custom description
- `minor --skip-changelog` - Skip automated changelog generation
- `minor --dry-run` - Simulate release without executing
If no arguments provided, the command will always perform prerelease if the current version is prerelease, or patch in other cases. This command will never perform minor or major releases without explicit direction.
</task>
## Prerequisites
Before starting, ensure:
- You have push access to the repository
- GitHub CLI (`gh`) is authenticated
- You're on a clean main branch working tree
- All intended changes are merged to main
- You understand the scope of changes being released
## Critical Checks Before Starting
### 1. Check Current Version Status
```bash
# Get current version and check if it's a pre-release
CURRENT_VERSION=$(node -p "require('./package.json').version")
if [[ "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+- ]]; then
echo "⚠️ Current version $CURRENT_VERSION is a pre-release"
echo "Consider releasing stable (e.g., 1.24.0-1 → 1.24.0) first"
fi
```
### 2. Find Last Stable Release
```bash
# Get last stable release tag (no pre-release suffix)
LAST_STABLE=$(git tag -l "v*" | grep -v "\-" | sort -V | tail -1)
echo "Last stable release: $LAST_STABLE"
```
## Configuration Options
**Environment Variables:**
- `RELEASE_SKIP_SECURITY_SCAN=true` - Skip security audit
- `RELEASE_AUTO_APPROVE=true` - Skip some confirmation prompts
- `RELEASE_DRY_RUN=true` - Simulate release without executing
## Release Process
### Step 1: Environment Safety Check
1. Verify clean working directory:
```bash
git status --porcelain
```
2. Confirm on main branch:
```bash
git branch --show-current
```
3. Pull latest changes:
```bash
git pull origin main
```
4. Check GitHub CLI authentication:
```bash
gh auth status
```
5. Verify npm/PyPI publishing access (dry run)
6. **CONFIRMATION REQUIRED**: Environment ready for release?
### Step 2: Analyze Recent Changes
1. Get current version from package.json
2. **IMPORTANT**: Determine correct base for comparison:
```bash
# If current version is pre-release, use last stable release
if [[ "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+- ]]; then
BASE_TAG=$LAST_STABLE
else
BASE_TAG=$(git describe --tags --abbrev=0)
fi
```
3. Find commits since base release (CRITICAL: use --first-parent):
```bash
git log ${BASE_TAG}..HEAD --oneline --no-merges --first-parent
```
4. Count total commits:
```bash
COMMIT_COUNT=$(git log ${BASE_TAG}..HEAD --oneline --no-merges --first-parent | wc -l)
echo "Found $COMMIT_COUNT commits since $BASE_TAG"
```
5. Analyze commits for:
- Breaking changes (BREAKING CHANGE, !, feat())
- New features (feat:, feature:)
- Bug fixes (fix:, bugfix:)
- Documentation changes (docs:)
- Dependency updates
6. **VERIFY PR TARGET BRANCHES**:
```bash
# Get merged PRs and verify they were merged to main
gh pr list --state merged --limit 50 --json number,title,baseRefName,mergedAt | \
jq -r '.[] | select(.baseRefName == "main") | "\(.number): \(.title)"'
```
7. **HUMAN ANALYSIS**: Review change summary and verify scope
### Step 3: Version Preview
**Version Preview:**
- Current: `${CURRENT_VERSION}`
- Proposed: Show exact version number
- **CONFIRMATION REQUIRED**: Proceed with version `X.Y.Z`?
### Step 4: Security and Dependency Audit
1. Run security audit:
```bash
npm audit --audit-level moderate
```
2. Check for known vulnerabilities in dependencies
3. Scan for hardcoded secrets or credentials:
```bash
git log -p ${BASE_TAG}..HEAD | grep -iE "(password|key|secret|token)" || echo "No sensitive data found"
```
4. Verify no sensitive data in recent commits
5. **SECURITY REVIEW**: Address any critical findings before proceeding?
### Step 5: Pre-Release Testing
1. Run complete test suite:
```bash
npm run test:unit
npm run test:component
```
2. Run type checking:
```bash
npm run typecheck
```
3. Run linting (may have issues with missing packages):
```bash
npm run lint || echo "Lint issues - verify if critical"
```
4. Test build process:
```bash
npm run build
npm run build:types
```
5. **QUALITY GATE**: All tests and builds passing?
### Step 6: Breaking Change Analysis
1. Analyze API changes in:
- Public TypeScript interfaces
- Extension APIs
- Component props
- CLAUDE.md guidelines
2. Check for:
- Removed public functions/classes
- Changed function signatures
- Deprecated feature removals
- Configuration changes
3. Generate breaking change summary
4. **COMPATIBILITY REVIEW**: Breaking changes documented and justified?
### Step 7: Analyze Dependency Updates
1. **Check significant dependency updates:**
```bash
# Extract all dependency changes for major version bumps
OTHER_DEP_CHANGES=""
# Compare major dependency versions (you can extend this list)
MAJOR_DEPS=("vue" "vite" "@vitejs/plugin-vue" "typescript" "pinia")
for dep in "${MAJOR_DEPS[@]}"; do
PREV_VER=$(echo "$PREV_PACKAGE_JSON" | grep -o "\"$dep\": \"[^\"]*\"" | grep -o '[0-9][^"]*' | head -1 || echo "")
CURR_VER=$(echo "$CURRENT_PACKAGE_JSON" | grep -o "\"$dep\": \"[^\"]*\"" | grep -o '[0-9][^"]*' | head -1 || echo "")
if [ "$PREV_VER" != "$CURR_VER" ] && [ -n "$PREV_VER" ] && [ -n "$CURR_VER" ]; then
# Check if it's a major version change
PREV_MAJOR=$(echo "$PREV_VER" | cut -d. -f1 | sed 's/[^0-9]//g')
CURR_MAJOR=$(echo "$CURR_VER" | cut -d. -f1 | sed 's/[^0-9]//g')
if [ "$PREV_MAJOR" != "$CURR_MAJOR" ]; then
OTHER_DEP_CHANGES="${OTHER_DEP_CHANGES}\n- **${dep}**: ${PREV_VER} → ${CURR_VER} (Major version change)"
fi
fi
done
```
### Step 8: Generate Comprehensive Release Notes
1. Extract commit messages since base release:
```bash
git log ${BASE_TAG}..HEAD --oneline --no-merges --first-parent > commits.txt
```
2. **CRITICAL**: Verify PR inclusion by checking merge location:
```bash
# For each significant PR mentioned, verify it's on main
for PR in ${SIGNIFICANT_PRS}; do
COMMIT=$(gh pr view $PR --json mergeCommit -q .mergeCommit.oid)
git branch -r --contains $COMMIT | grep -q "origin/main" || \
echo "WARNING: PR #$PR not on main branch!"
done
```
3. Create comprehensive release notes including:
- **Version Change**: Show version bump details
- **Changelog** grouped by type:
- 🚀 **Features** (feat:)
- 🐛 **Bug Fixes** (fix:)
- 💥 **Breaking Changes** (BREAKING CHANGE)
- 📚 **Documentation** (docs:)
- 🔧 **Maintenance** (chore:, refactor:)
- ⬆️ **Dependencies** (deps:, dependency updates)
- **Litegraph Changes** (if version updated):
- 🚀 Features: ${LITEGRAPH_FEATURES}
- 🐛 Bug Fixes: ${LITEGRAPH_FIXES}
- 💥 Breaking Changes: ${LITEGRAPH_BREAKING}
- 🔧 Other Changes: ${LITEGRAPH_OTHER}
- **Other Major Dependencies**: ${OTHER_DEP_CHANGES}
- Include PR numbers and links
- Add issue references (Fixes #123)
4. **Save release notes:**
```bash
# Save release notes for PR and GitHub release
echo "$RELEASE_NOTES" > release-notes-${NEW_VERSION}.md
```
5. **CONTENT REVIEW**: Release notes clear and comprehensive with dependency details?
### Step 9: Create Version Bump PR
**For standard version bumps (patch/minor/major):**
```bash
# Trigger the workflow
gh workflow run version-bump.yaml -f version_type=${VERSION_TYPE}
# Workflow runs quickly - usually creates PR within 30 seconds
echo "Workflow triggered. Waiting for PR creation..."
```
**For releasing a stable version:**
1. Must manually create branch and update version:
```bash
git checkout -b version-bump-${NEW_VERSION}
# Edit package.json to remove pre-release suffix
git add package.json
git commit -m "${NEW_VERSION}"
git push origin version-bump-${NEW_VERSION}
```
2. Wait for PR creation (if using workflow) or create manually:
```bash
# For workflow-created PRs - wait and find it
sleep 30
# Look for PR from comfy-pr-bot (not github-actions)
PR_NUMBER=$(gh pr list --author comfy-pr-bot --limit 1 --json number --jq '.[0].number')
# Verify we got the PR
if [ -z "$PR_NUMBER" ]; then
echo "PR not found yet. Checking recent PRs..."
gh pr list --limit 5 --json number,title,author
fi
# For manual PRs
gh pr create --title "${NEW_VERSION}" \
--body-file release-notes-${NEW_VERSION}.md \
--label "Release"
```
3. **Add required sections to PR body:**
```bash
# Create PR body with release notes plus required sections
cat > pr-body.md << EOF
${RELEASE_NOTES}
## Breaking Changes
${BREAKING_CHANGES:-None}
## Testing Performed
- ✅ Full test suite (unit, component)
- ✅ TypeScript compilation
- ✅ Linting checks
- ✅ Build verification
- ✅ Security audit
## Distribution Channels
- GitHub Release (with dist.zip)
- PyPI Package (comfyui-frontend-package)
- npm Package (@comfyorg/comfyui-frontend-types)
## Post-Release Tasks
- [ ] Verify all distribution channels
- [ ] Update external documentation
- [ ] Monitor for issues
EOF
```
4. Update PR with enhanced description:
```bash
gh pr edit ${PR_NUMBER} --body-file pr-body.md
```
5. **PR REVIEW**: Version bump PR created and enhanced correctly?
### Step 10: Critical Release PR Verification
1. **CRITICAL**: Verify PR has "Release" label:
```bash
gh pr view ${PR_NUMBER} --json labels | jq -r '.labels[].name' | grep -q "Release" || \
echo "ERROR: Release label missing! Add it immediately!"
```
2. Check for update-locales commits:
```bash
# WARNING: update-locales may add [skip ci] which blocks release workflow!
gh pr view ${PR_NUMBER} --json commits | grep -q "skip ci" && \
echo "WARNING: [skip ci] detected - release workflow may not trigger!"
```
3. Verify version number in package.json
4. Review all changed files
5. Ensure no unintended changes included
6. Wait for required PR checks:
```bash
gh pr checks ${PR_NUMBER} --watch
```
7. **FINAL CODE REVIEW**: Release label present and no [skip ci]?
### Step 11: Pre-Merge Validation
1. **Review Requirements**: Release PRs require approval
2. Monitor CI checks - watch for update-locales
3. **CRITICAL WARNING**: If update-locales adds [skip ci], the release workflow won't trigger!
4. Check no new commits to main since PR creation
5. **DEPLOYMENT READINESS**: Ready to merge?
### Step 12: Execute Release
1. **FINAL CONFIRMATION**: Merge PR to trigger release?
2. Merge the Release PR:
```bash
gh pr merge ${PR_NUMBER} --merge
```
3. **IMMEDIATELY CHECK**: Did release workflow trigger?
```bash
sleep 10
gh run list --workflow=release.yaml --limit=1
```
4. **For Minor/Major Version Releases**: The create-release-candidate-branch workflow will automatically:
- Create a `core/x.yy` branch for the PREVIOUS minor version
- Apply branch protection rules
- Document the feature freeze policy
```bash
# Monitor branch creation (for minor/major releases)
gh run list --workflow=create-release-candidate-branch.yaml --limit=1
```
4. If workflow didn't trigger due to [skip ci]:
```bash
echo "ERROR: Release workflow didn't trigger!"
echo "Options:"
echo "1. Create patch release (e.g., 1.24.1) to trigger workflow"
echo "2. Investigate manual release options"
```
5. If workflow triggered, monitor execution:
```bash
WORKFLOW_RUN_ID=$(gh run list --workflow=release.yaml --limit=1 --json databaseId --jq '.[0].databaseId')
gh run watch ${WORKFLOW_RUN_ID}
```
### Step 13: Enhance GitHub Release
1. Wait for automatic release creation:
```bash
# Wait for release to be created
while ! gh release view v${NEW_VERSION} >/dev/null 2>&1; do
echo "Waiting for release creation..."
sleep 10
done
```
2. **Enhance the GitHub release:**
```bash
# Update release with our release notes
gh release edit v${NEW_VERSION} \
--title "🚀 ComfyUI Frontend v${NEW_VERSION}" \
--notes-file release-notes-${NEW_VERSION}.md \
--latest
# Add any additional assets if needed
# gh release upload v${NEW_VERSION} additional-assets.zip
```
3. **Verify release details:**
```bash
gh release view v${NEW_VERSION}
```
### Step 14: Verify Multi-Channel Distribution
1. **GitHub Release:**
```bash
gh release view v${NEW_VERSION} --json assets,body,createdAt,tagName
```
- ✅ Check release notes
- ✅ Verify dist.zip attachment
- ✅ Confirm release marked as latest (for main branch)
2. **PyPI Package:**
```bash
# Check PyPI availability (may take a few minutes)
for i in {1..10}; do
if curl -s https://pypi.org/pypi/comfyui-frontend-package/json | jq -r '.releases | keys[]' | grep -q ${NEW_VERSION}; then
echo "✅ PyPI package available"
break
fi
echo "⏳ Waiting for PyPI package... (attempt $i/10)"
sleep 30
done
```
3. **npm Package:**
```bash
# Check npm availability
for i in {1..10}; do
if npm view @comfyorg/comfyui-frontend-types@${NEW_VERSION} version >/dev/null 2>&1; then
echo "✅ npm package available"
break
fi
echo "⏳ Waiting for npm package... (attempt $i/10)"
sleep 30
done
```
4. **DISTRIBUTION VERIFICATION**: All channels published successfully?
### Step 15: Post-Release Monitoring Setup
1. **Monitor immediate release health:**
```bash
# Check for immediate issues
gh issue list --label "bug" --state open --limit 5 --json title,number,createdAt
# Monitor download metrics (if accessible)
gh release view v${NEW_VERSION} --json assets --jq '.assets[].downloadCount'
```
2. **Update documentation tracking:**
```bash
cat > post-release-checklist.md << EOF
# Post-Release Checklist for v${NEW_VERSION}
## Immediate Tasks (Next 24 hours)
- [ ] Monitor error rates and user feedback
- [ ] Watch for critical issues
- [ ] Verify documentation is up to date
- [ ] Check community channels for questions
## Short-term Tasks (Next week)
- [ ] Update external integration guides
- [ ] Monitor adoption metrics
- [ ] Gather user feedback
- [ ] Plan next release cycle
## Long-term Tasks
- [ ] Analyze release process improvements
- [ ] Update release templates based on learnings
- [ ] Document any new patterns discovered
## Key Metrics to Track
- Download counts: GitHub, PyPI, npm
- Issue reports related to v${NEW_VERSION}
- Community feedback and adoption
- Performance impact measurements
EOF
```
3. **Create release summary:**
```bash
cat > release-summary-${NEW_VERSION}.md << EOF
# Release Summary: ComfyUI Frontend v${NEW_VERSION}
**Released:** $(date)
**Type:** ${VERSION_TYPE}
**Duration:** ~${RELEASE_DURATION} minutes
**Release Commit:** ${RELEASE_COMMIT}
## Metrics
- **Commits Included:** ${COMMITS_COUNT}
- **Contributors:** ${CONTRIBUTORS_COUNT}
- **Files Changed:** ${FILES_CHANGED}
- **Lines Added/Removed:** +${LINES_ADDED}/-${LINES_REMOVED}
## Distribution Status
- ✅ GitHub Release: Published
- ✅ PyPI Package: Available
- ✅ npm Types: Available
## Next Steps
- Monitor for 24-48 hours
- Address any critical issues immediately
- Plan next release cycle
## Files Generated
- \`release-notes-${NEW_VERSION}.md\` - Comprehensive release notes
- \`post-release-checklist.md\` - Follow-up tasks
EOF
```
4. **RELEASE COMPLETION**: All post-release setup completed?
## Advanced Safety Features
### Rollback Procedures
**Pre-Merge Rollback:**
```bash
# Close version bump PR and reset
gh pr close ${PR_NUMBER}
git reset --hard origin/main
git clean -fd
```
**Post-Merge Rollback:**
```bash
# Create immediate patch release with reverts
git revert ${RELEASE_COMMIT}
# Follow this command again with patch version
```
**Emergency Procedures:**
```bash
# Document incident
cat > release-incident-${NEW_VERSION}.md << EOF
# Release Incident Report
**Version:** ${NEW_VERSION}
**Issue:** [Describe the problem]
**Impact:** [Severity and scope]
**Resolution:** [Steps taken]
**Prevention:** [Future improvements]
EOF
# Contact package registries for critical issues
echo "For critical security issues, consider:"
echo "- PyPI: Contact support for package yanking"
echo "- npm: Use 'npm unpublish' within 72 hours"
echo "- GitHub: Update release with warning notes"
```
### Quality Gates Summary
The command implements multiple quality gates:
1. **🔒 Security Gate**: Vulnerability scanning, secret detection
2. **🧪 Quality Gate**: Unit and component tests, linting, type checking
3. **📋 Content Gate**: Changelog accuracy, release notes quality
4. **🔄 Process Gate**: Release timing verification
5. **✅ Verification Gate**: Multi-channel publishing confirmation
6. **📊 Monitoring Gate**: Post-release health tracking
## Common Scenarios
### Scenario 1: Regular Feature Release
```bash
/project:create-frontend-release minor
```
- Analyzes features since last release
- Generates changelog automatically
- Creates comprehensive release notes
### Scenario 2: Critical Security Patch
```bash
/project:create-frontend-release patch "Security fixes for CVE-2024-XXXX"
```
- Expedited security scanning
- Enhanced monitoring setup
### Scenario 3: Major Version with Breaking Changes
```bash
/project:create-frontend-release major
```
- Comprehensive breaking change analysis
- Migration guide generation
### Scenario 4: Pre-release Testing
```bash
/project:create-frontend-release prerelease
```
- Creates alpha/beta/rc versions
- Draft release status
- Python package specs require that prereleases use alpha/beta/rc as the preid
## Common Issues and Solutions
### Issue: Pre-release Version Confusion
**Problem**: Not sure whether to promote pre-release or create new version
**Solution**:
- Follow semver standards: a prerelease version is followed by a normal release. It should have the same major, minor, and patch versions as the prerelease.
### Issue: Wrong Commit Count
**Problem**: Changelog includes commits from other branches
**Solution**: Always use `--first-parent` flag with git log
**Update**: Sometimes update-locales doesn't add [skip ci] - always verify!
### Issue: Missing PRs in Changelog
**Problem**: PR was merged to different branch
**Solution**: Verify PR merge target with:
```bash
gh pr view ${PR_NUMBER} --json baseRefName
```
### Issue: Incomplete Dependency Changelog
**Problem**: Litegraph or other dependency updates only show version bump, not actual changes
**Solution**: The command now automatically:
- Detects litegraph version changes between releases
- Clones the litegraph repository temporarily
- Extracts and categorizes changes between versions
- Includes detailed litegraph changelog in release notes
- Cleans up temporary files after analysis
### Issue: Release Failed Due to [skip ci]
**Problem**: Release workflow didn't trigger after merge
**Prevention**: Always avoid this scenario
- Ensure that `[skip ci]` or similar flags are NOT in the `HEAD` commit message of the PR
- Push a new, empty commit to the PR
- Always double-check this immediately before merging
**Recovery Strategy**:
1. Revert version in a new PR (e.g., 1.24.0 → 1.24.0-1)
2. Merge the revert PR
3. Run version bump workflow again
4. This creates a fresh PR without [skip ci]
Benefits: Cleaner than creating extra version numbers
## Key Learnings & Notes
1. **PR Author**: Version bump PRs are created by `comfy-pr-bot`, not `github-actions`
2. **Workflow Speed**: Version bump workflow typically completes in ~20-30 seconds
3. **Update-locales Behavior**: Inconsistent - sometimes adds [skip ci], sometimes doesn't
4. **Recovery Options**: Reverting version is cleaner than creating extra versions
5. **Dependency Tracking**: Command now automatically includes litegraph and major dependency changes in changelogs
6. **Litegraph Integration**: Temporary cloning of litegraph repo provides detailed change analysis between versions

View File

@@ -0,0 +1,222 @@
# Create Hotfix Release
This command guides you through creating a patch/hotfix release for ComfyUI Frontend with comprehensive safety checks and human confirmations at each step.
<task>
Create a hotfix release by cherry-picking commits or PR commits from main to a core branch: $ARGUMENTS
Expected format: Comma-separated list of commits or PR numbers
Examples:
- `abc123,def456,ghi789` (commits)
- `#1234,#5678` (PRs)
- `abc123,#1234,def456` (mixed)
If no arguments provided, the command will help identify the correct core branch and guide you through selecting commits/PRs.
</task>
## Prerequisites
Before starting, ensure:
- You have push access to the repository
- GitHub CLI (`gh`) is authenticated
- You're on a clean working tree
- You understand the commits/PRs you're cherry-picking
## Hotfix Release Process
### Step 1: Identify Target Core Branch
1. Fetch the current ComfyUI requirements.txt from master branch:
```bash
curl -s https://raw.githubusercontent.com/comfyanonymous/ComfyUI/master/requirements.txt | grep "comfyui-frontend-package"
```
2. Extract the `comfyui-frontend-package` version (e.g., `comfyui-frontend-package==1.23.4`)
3. Parse version to get major.minor (e.g., `1.23.4` → `1.23`)
4. Determine core branch: `core/<major>.<minor>` (e.g., `core/1.23`)
5. Verify the core branch exists: `git ls-remote origin refs/heads/core/*`
6. **CONFIRMATION REQUIRED**: Is `core/X.Y` the correct target branch?
### Step 2: Parse and Validate Arguments
1. Parse the comma-separated list of commits/PRs
2. For each item:
- If starts with `#`: Treat as PR number
- Otherwise: Treat as commit hash
3. For PR numbers:
- Fetch PR details using `gh pr view <number>`
- Extract the merge commit if PR is merged
- If PR has multiple commits, list them all
- **CONFIRMATION REQUIRED**: Use merge commit or cherry-pick individual commits?
4. Validate all commit hashes exist in the repository
### Step 3: Analyze Target Changes
1. For each commit/PR to cherry-pick:
- Display commit hash, author, date
- Show PR title and number (if applicable)
- Display commit message
- Show files changed and diff statistics
- Check if already in core branch: `git branch --contains <commit>`
2. Identify potential conflicts by checking changed files
3. **CONFIRMATION REQUIRED**: Proceed with these commits?
### Step 4: Create Hotfix Branch
1. Checkout the core branch (e.g., `core/1.23`)
2. Pull latest changes: `git pull origin core/X.Y`
3. Display current version from package.json
4. Create hotfix branch: `hotfix/<version>-<timestamp>`
- Example: `hotfix/1.23.4-20241120`
5. **CONFIRMATION REQUIRED**: Created branch correctly?
### Step 5: Cherry-pick Changes
For each commit:
1. Attempt cherry-pick: `git cherry-pick <commit>`
2. If conflicts occur:
- Display conflict details
- Show conflicting sections
- Provide resolution guidance
- **CONFIRMATION REQUIRED**: Conflicts resolved correctly?
3. After successful cherry-pick:
- Show the changes: `git show HEAD`
- Run validation: `npm run typecheck && npm run lint`
4. **CONFIRMATION REQUIRED**: Cherry-pick successful and valid?
### Step 6: Create PR to Core Branch
1. Push the hotfix branch: `git push origin hotfix/<version>-<timestamp>`
2. Create PR using gh CLI:
```bash
gh pr create --base core/X.Y --head hotfix/<version>-<timestamp> \
--title "[Hotfix] Cherry-pick fixes to core/X.Y" \
--body "Cherry-picked commits: ..."
```
3. Add appropriate labels (but NOT "Release" yet)
4. PR body should include:
- List of cherry-picked commits/PRs
- Original issue references
- Testing instructions
- Impact assessment
5. **CONFIRMATION REQUIRED**: PR created correctly?
### Step 7: Wait for Tests
1. Monitor PR checks: `gh pr checks`
2. Display test results as they complete
3. If any tests fail:
- Show failure details
- Analyze if related to cherry-picks
- **DECISION REQUIRED**: Fix and continue, or abort?
4. Wait for all required checks to pass
5. **CONFIRMATION REQUIRED**: All tests passing?
### Step 8: Merge Hotfix PR
1. Verify all checks have passed
2. Check for required approvals
3. Merge the PR: `gh pr merge --merge`
4. Delete the hotfix branch
5. **CONFIRMATION REQUIRED**: PR merged successfully?
### Step 9: Create Version Bump
1. Checkout the core branch: `git checkout core/X.Y`
2. Pull latest changes: `git pull origin core/X.Y`
3. Read current version from package.json
4. Determine patch version increment:
- Current: `1.23.4` → New: `1.23.5`
5. Create release branch named with new version: `release/1.23.5`
6. Update version in package.json to `1.23.5`
7. Commit: `git commit -m "[release] Bump version to 1.23.5"`
8. **CONFIRMATION REQUIRED**: Version bump correct?
### Step 10: Create Release PR
1. Push release branch: `git push origin release/1.23.5`
2. Create PR with Release label:
```bash
gh pr create --base core/X.Y --head release/1.23.5 \
--title "[Release] v1.23.5" \
--body "..." \
--label "Release"
```
3. **CRITICAL**: Verify "Release" label is added
4. PR description should include:
- Version: `1.23.4` → `1.23.5`
- Included fixes (link to previous PR)
- Release notes for users
5. **CONFIRMATION REQUIRED**: Release PR has "Release" label?
### Step 11: Monitor Release Process
1. Wait for PR checks to pass
2. **FINAL CONFIRMATION**: Ready to trigger release by merging?
3. Merge the PR: `gh pr merge --merge`
4. Monitor release workflow:
```bash
gh run list --workflow=release.yaml --limit=1
gh run watch
```
5. Track progress:
- GitHub release draft/publication
- PyPI upload
- npm types publication
### Step 12: Post-Release Verification
1. Verify GitHub release:
```bash
gh release view v1.23.5
```
2. Check PyPI package:
```bash
pip index versions comfyui-frontend-package | grep 1.23.5
```
3. Verify npm package:
```bash
npm view @comfyorg/comfyui-frontend-types@1.23.5
```
4. Generate release summary with:
- Version released
- Commits included
- Issues fixed
- Distribution status
5. **CONFIRMATION REQUIRED**: Release completed successfully?
## Safety Checks
Throughout the process:
- Always verify core branch matches ComfyUI's requirements.txt
- For PRs: Ensure using correct commits (merge vs individual)
- Check version numbers follow semantic versioning
- **Critical**: "Release" label must be on version bump PR
- Validate cherry-picks don't break core branch stability
- Keep audit trail of all operations
## Rollback Procedures
If something goes wrong:
- Before push: `git reset --hard origin/core/X.Y`
- After PR creation: Close PR and start over
- After failed release: Create new patch version with fixes
- Document any issues for future reference
## Important Notes
- Core branch version will be behind main - this is expected
- The "Release" label triggers the PyPI/npm publication
- PR numbers must include the `#` prefix
- Mixed commits/PRs are supported but review carefully
- Always wait for full test suite before proceeding
## Expected Timeline
- Step 1-3: ~10 minutes (analysis)
- Steps 4-6: ~15-30 minutes (cherry-picking)
- Step 7: ~10-20 minutes (tests)
- Steps 8-10: ~10 minutes (version bump)
- Step 11-12: ~15-20 minutes (release)
- Total: ~60-90 minutes
This process ensures a safe, verified hotfix release with multiple confirmation points and clear tracking of what changes are being released.

View File

@@ -0,0 +1,57 @@
Your task is to perform visual verification of our recent changes to ensure they display correctly in the browser. This verification is critical for catching visual regressions, layout issues, and ensuring our UI changes render properly for end users.
<instructions>
Follow these steps systematically to verify our changes:
1. **Server Setup**
- Check if the dev server is running on port 5173 using browser navigation or port checking
- If not running, start it with `npm run dev` from the root directory
- If the server fails to start, provide detailed troubleshooting steps by reading package.json and README.md for accurate instructions
- Wait for the server to be fully ready before proceeding
2. **Visual Testing Process**
- Navigate to http://localhost:5173/
- For each target page (specified in arguments or recently changed files):
* Navigate to the page using direct URL or site navigation
* Take a high-quality screenshot
* Analyze the screenshot for the specific changes we implemented
* Document any visual issues or improvements needed
3. **Quality Verification**
Check each page for:
- Content accuracy and completeness
- Proper styling and layout alignment
- Responsive design elements
- Navigation functionality
- Image loading and display
- Typography and readability
- Color scheme consistency
- Interactive elements (buttons, links, forms)
</instructions>
<examples>
Common issues to watch for:
- Broken layouts or overlapping elements
- Missing images or broken image links
- Inconsistent styling or spacing
- Navigation menu problems
- Mobile responsiveness issues
- Text overflow or truncation
- Color contrast problems
</examples>
<reporting>
For each page tested, provide:
1. Page URL and screenshot
2. Confirmation that changes display correctly OR detailed description of issues found
3. Any design improvement suggestions
4. Overall assessment of visual quality
If you find issues, be specific about:
- Exact location of the problem
- Expected vs actual behavior
- Severity level (critical, important, minor)
- Suggested fix if obvious
</reporting>
Remember: Take your time with each screenshot and analysis. Visual quality directly impacts user experience and our project's professional appearance.

View File

@@ -0,0 +1,21 @@
---
description: Creating unit tests
globs:
alwaysApply: false
---
# Creating unit tests
- This project uses `vitest` for unit testing
- Tests are stored in the `test/` directory
- Tests should be cross-platform compatible; able to run on Windows, macOS, and linux
- e.g. the use of `path.resolve`, or `path.join` and `path.sep` to ensure that tests work the same on all platforms
- Tests should be mocked properly
- Mocks should be cleanly written and easy to understand
- Mocks should be re-usable where possible
## Unit test style
- Prefer the use of `test.extend` over loose variables
- To achieve this, import `test as baseTest` from `vitest`
- Never use `it`; `test` should be used in place of this

View File

@@ -1,17 +1,25 @@
// Vue 3 Composition API .cursorrules
# Vue 3 Composition API Project Rules
// Vue 3 Composition API best practices
const vue3CompositionApiBestPractices = [
"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",
]
## Vue 3 Composition API Best Practices
- 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. Example:
// Folder structure
const folderStructure = `
```typescript
const { nodes, showTotal = true } = defineProps<{
nodes: ApiNodeCost[]
showTotal?: boolean
}>()
```
- Organize vue component in <template> <script> <style> order
## Project Structure
```
src/
components/
constants/
@@ -21,16 +29,25 @@ src/
services/
App.vue
main.ts
`;
```
// Tailwind CSS best practices
const tailwindCssBestPractices = [
"Use Tailwind CSS for styling",
"Implement responsive design with Tailwind CSS",
]
## Styling Guidelines
- Use Tailwind CSS for styling
- Implement responsive design with Tailwind CSS
// Additional instructions
const additionalInstructions = `
## PrimeVue Component Guidelines
DO NOT use deprecated PrimeVue components. Use these replacements instead:
- Dropdown → Use Select (import from 'primevue/select')
- OverlayPanel → Use Popover (import from 'primevue/popover')
- Calendar → Use DatePicker (import from 'primevue/datepicker')
- InputSwitch → Use ToggleSwitch (import from 'primevue/toggleswitch')
- Sidebar → Use Drawer (import from 'primevue/drawer')
- Chips → Use AutoComplete with multiple enabled and typeahead disabled
- TabMenu → Use Tabs without panels
- Steps → Use Stepper without panels
- InlineMessage → Use Message component
## Development Guidelines
1. Leverage VueUse functions for performance-enhancing styles
2. Use lodash for utility functions
3. Use TypeScript for type safety
@@ -40,4 +57,5 @@ const additionalInstructions = `
7. Implement proper error handling
8. Follow Vue 3 style guide and naming conventions
9. Use Vite for fast development and building
`;
10. Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.json
11. Never use deprecated PrimeVue components listed above

View File

@@ -1,4 +1,5 @@
# Local development playwright target
# Note: Don't add a trailing / after the port
PLAYWRIGHT_TEST_URL=http://localhost:5173
# PLAYWRIGHT_TEST_URL=http://localhost:8188
@@ -17,3 +18,18 @@ TEST_COMFYUI_DIR=/home/ComfyUI
# Whether to enable minification of the frontend code.
ENABLE_MINIFY=true
# Whether to disable proxying the `/templates` route. If true, allows you to
# serve templates from the ComfyUI_frontend/public/templates folder (for
# locally testing changes to templates). When false or nonexistent, the
# templates are served via the normal method from the server's python site
# packages.
DISABLE_TEMPLATES_PROXY=false
# If playwright tests are being run via vite dev server, Vue plugins will
# invalidate screenshots. When `true`, vite plugins will not be loaded.
DISABLE_VUE_PLUGINS=false
# Algolia credentials required for developing with the new custom node manager.
ALGOLIA_APP_ID=4E0RO38HS8
ALGOLIA_API_KEY=684d998c36b67a9a9fce8fc2d8860579

4
.gitattributes vendored
View File

@@ -5,3 +5,7 @@
*.ts text eol=lf
*.vue text eol=lf
*.js text eol=lf
# Generated files
src/types/comfyRegistryTypes.ts linguist-generated=true
src/types/generatedManagerTypes.ts linguist-generated=true

36
.github/CLAUDE.md vendored Normal file
View File

@@ -0,0 +1,36 @@
# ComfyUI Frontend - Claude Review Context
This file provides additional context for the automated PR review system.
## Quick Reference
### PrimeVue Component Migrations
When reviewing, flag these deprecated components:
- `Dropdown` → Use `Select` from 'primevue/select'
- `OverlayPanel` → Use `Popover` from 'primevue/popover'
- `Calendar` → Use `DatePicker` from 'primevue/datepicker'
- `InputSwitch` → Use `ToggleSwitch` from 'primevue/toggleswitch'
- `Sidebar` → Use `Drawer` from 'primevue/drawer'
- `Chips` → Use `AutoComplete` with multiple enabled and typeahead disabled
- `TabMenu` → Use `Tabs` without panels
- `Steps` → Use `Stepper` without panels
- `InlineMessage` → Use `Message` component
### API Utilities Reference
- `api.apiURL()` - Backend API calls (/prompt, /queue, /view, etc.)
- `api.fileURL()` - Static file access (templates, extensions)
- `$t()` / `i18n.global.t()` - Internationalization
- `DOMPurify.sanitize()` - HTML sanitization
## Review Scope
This automated review performs comprehensive analysis including:
- Architecture and design patterns
- Security vulnerabilities
- Performance implications
- Code quality and maintainability
- Integration concerns
For implementation details, see `.claude/commands/comprehensive-pr-review.md`.

View File

@@ -1,90 +1,106 @@
name: Bug Report
description: "Something is not behaving as expected."
title: "[Bug]: "
description: 'Report something that is not working correctly'
title: '[Bug]: '
labels: ['Potential Bug']
type: Bug
body:
- type: checkboxes
attributes:
label: Prerequisites
options:
- label: I am running the latest version of ComfyUI
required: true
- label: I have searched existing issues to make sure this isn't a duplicate
required: true
- label: I have tested with all custom nodes disabled ([see how](https://docs.comfy.org/troubleshooting/custom-node-issues#step-1%3A-test-with-all-custom-nodes-disabled))
required: true
- type: textarea
id: description
attributes:
label: What happened?
description: A clear and concise description of the bug. Include screenshots or videos if helpful.
placeholder: |
Example: "When I connect a VAE Decode node to a KSampler, the connection line appears but the workflow fails to execute with an error message..."
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to Reproduce
description: How can we reproduce this issue? Please attach your workflow (JSON or PNG).
placeholder: |
1. Add a KSampler node
2. Connect it to...
3. Click Queue Prompt
4. See error
value: |
1.
2.
3.
validations:
required: true
- type: dropdown
id: severity
attributes:
label: How is this affecting you?
options:
- Crashes ComfyUI completely
- Workflow won't execute
- Feature doesn't work as expected
- Visual/UI issue only
- Minor inconvenience
validations:
required: true
- type: input
id: version
attributes:
label: ComfyUI Frontend Version
description: Found in Settings > About (e.g., "1.3.45")
placeholder: "1.3.45"
validations:
required: true
- type: dropdown
id: browser
attributes:
label: Browser
description: Which browser are you using?
options:
- Chrome/Chromium
- Firefox
- Safari
- Edge
- Other
validations:
required: true
- type: markdown
attributes:
value: |
Before submitting a **Bug Report**, please ensure the following:
- **1:** You are running the latest version of ComfyUI.
- **2:** You have looked at the existing bug reports and made sure this isn't already reported.
- **3:** You confirmed that the bug is not caused by a custom node. You can disable all custom nodes by passing
`--disable-all-custom-nodes` command line argument.
## Additional Information (Optional)
*The following fields help us debug complex issues but are not required for most bug reports.*
- type: textarea
id: console-errors
attributes:
label: Frontend Version
description: |
What is the frontend version you are using? You can check this in the settings dialog.
label: Console Errors
description: If you see red error messages in the browser console (F12), paste them here
render: javascript
<details>
- type: textarea
id: logs
attributes:
label: Logs
description: If relevant, paste any terminal/server logs here
render: shell
<summary>Click to show where to find the version</summary>
Open the setting by clicking the cog icon in the bottom-left of the screen, then click `About`.
![Frontend version](https://github.com/user-attachments/assets/561fb7c3-3012-457c-a494-9bdc1ff035c0)
</details>
validations:
required: true
- type: textarea
id: additional
attributes:
label: Expected Behavior
description: 'What you expected to happen.'
validations:
required: true
- type: textarea
attributes:
label: Actual Behavior
description: 'What actually happened. Please include a screenshot / video clip of the issue if possible.'
validations:
required: true
- type: textarea
attributes:
label: Steps to Reproduce
description: "Describe how to reproduce the issue. Please be sure to attach a workflow JSON or PNG, ideally one that doesn't require custom nodes to test. If the bug open happens when certain custom nodes are used, most likely that custom node is what has the bug rather than ComfyUI, in which case it should be reported to the node's author."
validations:
required: true
- type: textarea
attributes:
label: Debug Logs
description: 'Please copy the output from your terminal logs here.'
render: powershell
validations:
required: true
- type: textarea
attributes:
label: Browser Logs
description: 'Please copy the output from your browser logs here. You can access this by pressing F12 to toggle the developer tools, then navigating to the Console tab.'
validations:
required: true
- type: textarea
attributes:
label: Setting JSON
description: 'Please upload the setting file here. The setting file is located at `user/default/comfy.settings.json`'
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers do you use to access the UI ?
multiple: true
options:
- Mozilla Firefox
- Google Chrome
- Brave
- Apple Safari
- Microsoft Edge
- Android
- iOS
- Other
- type: textarea
attributes:
label: Other Information
description: 'Any other context, details, or screenshots that might help solve the issue.'
placeholder: 'Add any other relevant information here...'
validations:
required: false
label: Additional Context
description: Any other information that might help (OS, GPU, specific nodes involved, etc.)

View File

@@ -1,40 +1,81 @@
name: Feature Request
description: Suggest an idea for this project
title: "[Feature Request]: "
labels: ["enhancement"]
description: Report a problem or limitation you're experiencing
title: '[Feature]: '
labels: ['enhancement']
type: Feature
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the feature you want, and that it's not implemented in a recent build/commit.
description: Please search to see if an issue already exists for the problem you're experiencing, and that it's not addressed in a recent build/commit.
options:
- label: I have searched the existing issues and checked the recent builds/commits
required: true
- type: markdown
attributes:
value: |
*Please fill this form with as much information as possible, provide screenshots and/or illustrations of the feature if possible*
*Please focus on describing the problem you're experiencing rather than proposing specific solutions. This helps us design the best possible solution for you and other users.*
- type: textarea
id: feature
id: problem
attributes:
label: What would your feature do ?
description: Tell us about your feature in a very clear and simple way, and what problem it would solve
label: What problem are you experiencing?
description: Describe the issue or limitation you're facing in your workflow
placeholder: |
Example: "I frequently lose work when switching between different projects because there's no way to save my current workspace state"
NOT: "Add a save button that exports the workspace"
validations:
required: true
- type: textarea
id: workflow
id: context
attributes:
label: Proposed workflow
description: Please provide us with step by step information on how you'd like the feature to be accessed and used
value: |
1. Go to ....
2. Press ....
3. ...
label: When does this problem occur?
description: Describe the specific situations or workflows where you encounter this issue
placeholder: |
- When working with large node graphs...
- During batch processing workflows...
- While collaborating with team members...
validations:
required: true
- type: dropdown
id: frequency
attributes:
label: How often do you encounter this problem?
options:
- Multiple times per day
- Daily
- Several times per week
- Weekly
- Occasionally
- Rarely
validations:
required: true
- type: dropdown
id: impact
attributes:
label: How much does this problem affect your workflow?
description: Help us understand the severity of this issue for you
options:
- Blocks me from completing tasks
- Significantly slows down my work
- Causes moderate inconvenience
- Minor annoyance
validations:
required: true
- type: textarea
id: misc
id: workaround
attributes:
label: Additional information
description: Add any other context or screenshots about the feature request here.
label: Current workarounds
description: How do you currently deal with this problem, if at all?
placeholder: |
Example: "I manually export and reimport nodes between projects, which takes 10-15 minutes each time"
- type: textarea
id: ideas
attributes:
label: Ideas for solutions (Optional)
description: If you have thoughts on potential solutions, feel free to share them here. However, we'll explore all possible options to find the best approach.
- type: textarea
id: additional
attributes:
label: Additional context
description: Add any other context, screenshots, or examples that help illustrate the problem.

37
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,37 @@
Use the Vue 3 Composition API instead of the Options API when writing Vue components. An exception is when overriding or extending a PrimeVue component for compatibility, you may use the Options API.
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
Leverage VueUse functions for performance-enhancing styles
Use lodash for utility functions
Use TypeScript for type safety
Implement proper props and emits definitions
Utilize Vue 3's Teleport component when needed
Use Suspense for async components
Implement proper error handling
Follow Vue 3 style guide and naming conventions
Use Vite for fast development and building
Use vue-i18n in composition API for any string literals. Place new translation entries in src/locales/en/main.json.

165
.github/workflows/backport.yaml vendored Normal file
View File

@@ -0,0 +1,165 @@
name: Auto Backport
on:
pull_request_target:
types: [closed]
branches: [main]
jobs:
backport:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'needs-backport')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Extract version labels
id: versions
run: |
# Extract version labels (e.g., "1.24", "1.22")
VERSIONS=""
LABELS='${{ toJSON(github.event.pull_request.labels) }}'
for label in $(echo "$LABELS" | jq -r '.[].name'); do
# Match version labels like "1.24" (major.minor only)
if [[ "$label" =~ ^[0-9]+\.[0-9]+$ ]]; then
# Validate the branch exists before adding to list
if git ls-remote --exit-code origin "core/${label}" >/dev/null 2>&1; then
VERSIONS="${VERSIONS}${label} "
else
echo "::warning::Label '${label}' found but branch 'core/${label}' does not exist"
fi
fi
done
if [ -z "$VERSIONS" ]; then
echo "::error::No version labels found (e.g., 1.24, 1.22)"
exit 1
fi
echo "versions=${VERSIONS}" >> $GITHUB_OUTPUT
echo "Found version labels: ${VERSIONS}"
- name: Backport commits
id: backport
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_TITLE: ${{ github.event.pull_request.title }}
MERGE_COMMIT: ${{ github.event.pull_request.merge_commit_sha }}
run: |
FAILED=""
SUCCESS=""
for version in ${{ steps.versions.outputs.versions }}; do
echo "::group::Backporting to core/${version}"
TARGET_BRANCH="core/${version}"
BACKPORT_BRANCH="backport-${PR_NUMBER}-to-${version}"
# Fetch target branch (fail if doesn't exist)
if ! git fetch origin "${TARGET_BRANCH}"; then
echo "::error::Target branch ${TARGET_BRANCH} does not exist"
FAILED="${FAILED}${version}:branch-missing "
echo "::endgroup::"
continue
fi
# Create backport branch
git checkout -b "${BACKPORT_BRANCH}" "origin/${TARGET_BRANCH}"
# Try cherry-pick
if git cherry-pick "${MERGE_COMMIT}"; then
git push origin "${BACKPORT_BRANCH}"
SUCCESS="${SUCCESS}${version}:${BACKPORT_BRANCH} "
echo "Successfully created backport branch: ${BACKPORT_BRANCH}"
# Return to main (keep the branch, we need it for PR)
git checkout main
else
# Get conflict info
CONFLICTS=$(git diff --name-only --diff-filter=U | tr '\n' ',')
git cherry-pick --abort
echo "::error::Cherry-pick failed due to conflicts"
FAILED="${FAILED}${version}:conflicts:${CONFLICTS} "
# Clean up the failed branch
git checkout main
git branch -D "${BACKPORT_BRANCH}"
fi
echo "::endgroup::"
done
echo "success=${SUCCESS}" >> $GITHUB_OUTPUT
echo "failed=${FAILED}" >> $GITHUB_OUTPUT
if [ -n "${FAILED}" ]; then
exit 1
fi
- name: Create PR for each successful backport
if: steps.backport.outputs.success
env:
GH_TOKEN: ${{ secrets.PR_GH_TOKEN }}
run: |
PR_TITLE="${{ github.event.pull_request.title }}"
PR_NUMBER="${{ github.event.pull_request.number }}"
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
for backport in ${{ steps.backport.outputs.success }}; do
IFS=':' read -r version branch <<< "${backport}"
if PR_URL=$(gh pr create \
--base "core/${version}" \
--head "${branch}" \
--title "[backport ${version}] ${PR_TITLE}" \
--body "Backport of #${PR_NUMBER} to \`core/${version}\`"$'\n\n'"Automatically created by backport workflow." \
--label "backport" 2>&1); then
# Extract PR number from URL
PR_NUM=$(echo "${PR_URL}" | grep -o '[0-9]*$')
if [ -n "${PR_NUM}" ]; then
gh pr comment "${PR_NUMBER}" --body "@${PR_AUTHOR} Successfully backported to #${PR_NUM}"
fi
else
echo "::error::Failed to create PR for ${version}: ${PR_URL}"
# Still try to comment on the original PR about the failure
gh pr comment "${PR_NUMBER}" --body "@${PR_AUTHOR} Backport branch created but PR creation failed for \`core/${version}\`. Please create the PR manually from branch \`${branch}\`"
fi
done
- name: Comment on failures
if: failure() && steps.backport.outputs.failed
env:
GH_TOKEN: ${{ github.token }}
run: |
PR_NUMBER="${{ github.event.pull_request.number }}"
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
MERGE_COMMIT="${{ github.event.pull_request.merge_commit_sha }}"
for failure in ${{ steps.backport.outputs.failed }}; do
IFS=':' read -r version reason conflicts <<< "${failure}"
if [ "${reason}" = "branch-missing" ]; then
gh pr comment "${PR_NUMBER}" --body "@${PR_AUTHOR} Backport failed: Branch \`core/${version}\` does not exist"
elif [ "${reason}" = "conflicts" ]; then
# Convert comma-separated conflicts back to newlines for display
CONFLICTS_LIST=$(echo "${conflicts}" | tr ',' '\n' | sed 's/^/- /')
COMMENT_BODY="@${PR_AUTHOR} Backport to \`core/${version}\` failed: Merge conflicts detected."$'\n\n'"Please manually cherry-pick commit \`${MERGE_COMMIT}\` to the \`core/${version}\` branch."$'\n\n'"<details><summary>Conflicting files</summary>"$'\n\n'"${CONFLICTS_LIST}"$'\n\n'"</details>"
gh pr comment "${PR_NUMBER}" --body "${COMMENT_BODY}"
fi
done

84
.github/workflows/claude-pr-review.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
name: Claude PR Review
permissions:
contents: read
pull-requests: write
issues: write
id-token: write
statuses: write
on:
pull_request:
types: [labeled]
jobs:
wait-for-ci:
runs-on: ubuntu-latest
if: github.event.label.name == 'claude-review'
outputs:
should-proceed: ${{ steps.check-status.outputs.proceed }}
steps:
- name: Wait for other CI checks
uses: lewagon/wait-on-check-action@v1.3.1
with:
ref: ${{ github.event.pull_request.head.sha }}
check-regexp: '^(eslint|prettier|test|playwright-tests)'
wait-interval: 30
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check if we should proceed
id: check-status
run: |
# Get all check runs for this commit
CHECK_RUNS=$(gh api repos/${{ github.repository }}/commits/${{ github.event.pull_request.head.sha }}/check-runs --jq '.check_runs[] | select(.name | test("eslint|prettier|test|playwright-tests")) | {name, conclusion}')
# Check if any required checks failed
if echo "$CHECK_RUNS" | grep -q '"conclusion": "failure"'; then
echo "Some CI checks failed - skipping Claude review"
echo "proceed=false" >> $GITHUB_OUTPUT
else
echo "All CI checks passed - proceeding with Claude review"
echo "proceed=true" >> $GITHUB_OUTPUT
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
claude-review:
needs: wait-for-ci
if: needs.wait-for-ci.outputs.should-proceed == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies for analysis tools
run: |
npm install -g typescript @vue/compiler-sfc
- name: Run Claude PR Review
uses: anthropics/claude-code-action@main
with:
label_trigger: "claude-review"
direct_prompt: |
Read the file .claude/commands/comprehensive-pr-review.md and follow ALL the instructions exactly.
CRITICAL: You must post individual inline comments using the gh api commands shown in the file.
DO NOT create a summary comment.
Each issue must be posted as a separate inline comment on the specific line of code.
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
max_turns: 256
timeout_minutes: 30
allowed_tools: "Bash(git:*),Bash(gh api:*),Bash(gh pr:*),Bash(gh repo:*),Bash(jq:*),Bash(echo:*),Read,Write,Edit,Glob,Grep,WebFetch"
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
REPOSITORY: ${{ github.repository }}

View File

@@ -0,0 +1,214 @@
name: Create Release Branch
on:
pull_request:
types: [closed]
branches: [main]
paths:
- 'package.json'
jobs:
create-release-branch:
runs-on: ubuntu-latest
if: >
github.event.pull_request.merged == true &&
contains(github.event.pull_request.labels.*.name, 'Release')
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.PR_GH_TOKEN || secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Check version bump type
id: check_version
run: |
# Get current version from main
CURRENT_VERSION=$(node -p "require('./package.json').version")
# Remove 'v' prefix if present (shouldn't be in package.json, but defensive)
CURRENT_VERSION=${CURRENT_VERSION#v}
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
# Validate version format
if ! [[ "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
echo "ERROR: Invalid version format: $CURRENT_VERSION"
exit 1
fi
# Extract major and minor versions
MAJOR=$(echo $CURRENT_VERSION | cut -d. -f1)
MINOR=$(echo $CURRENT_VERSION | cut -d. -f2)
PATCH=$(echo $CURRENT_VERSION | cut -d. -f3 | cut -d- -f1)
echo "major=$MAJOR" >> $GITHUB_OUTPUT
echo "minor=$MINOR" >> $GITHUB_OUTPUT
echo "patch=$PATCH" >> $GITHUB_OUTPUT
# Get previous version from the commit before the merge
git checkout HEAD^1
PREV_VERSION=$(node -p "require('./package.json').version" 2>/dev/null || echo "0.0.0")
# Remove 'v' prefix if present
PREV_VERSION=${PREV_VERSION#v}
# Validate previous version format
if ! [[ "$PREV_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
echo "WARNING: Invalid previous version format: $PREV_VERSION, using 0.0.0"
PREV_VERSION="0.0.0"
fi
PREV_MINOR=$(echo $PREV_VERSION | cut -d. -f2)
echo "prev_version=$PREV_VERSION" >> $GITHUB_OUTPUT
echo "prev_minor=$PREV_MINOR" >> $GITHUB_OUTPUT
# Get previous major version for comparison
PREV_MAJOR=$(echo $PREV_VERSION | cut -d. -f1)
# Check if current version is a pre-release
if [[ "$CURRENT_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+- ]]; then
IS_PRERELEASE=true
else
IS_PRERELEASE=false
fi
# Check if this was a minor version bump or major version bump
# But skip if it's a pre-release version
if [[ "$IS_PRERELEASE" == "true" ]]; then
echo "is_minor_bump=false" >> $GITHUB_OUTPUT
echo "reason=prerelease version" >> $GITHUB_OUTPUT
elif [[ "$MAJOR" -gt "$PREV_MAJOR" && "$MINOR" == "0" && "$PATCH" == "0" ]]; then
# Major version bump (e.g., 1.99.x → 2.0.0)
echo "is_minor_bump=true" >> $GITHUB_OUTPUT
BRANCH_NAME="core/${PREV_MAJOR}.${PREV_MINOR}"
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
elif [[ "$MAJOR" == "$PREV_MAJOR" && "$MINOR" -gt "$PREV_MINOR" && "$PATCH" == "0" ]]; then
# Minor version bump (e.g., 1.23.x → 1.24.0)
echo "is_minor_bump=true" >> $GITHUB_OUTPUT
BRANCH_NAME="core/${MAJOR}.${PREV_MINOR}"
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
else
echo "is_minor_bump=false" >> $GITHUB_OUTPUT
fi
# Return to main branch
git checkout main
- name: Create release branch
if: steps.check_version.outputs.is_minor_bump == 'true'
run: |
BRANCH_NAME="${{ steps.check_version.outputs.branch_name }}"
# Check if branch already exists
if git ls-remote --heads origin "$BRANCH_NAME" | grep -q "$BRANCH_NAME"; then
echo "⚠️ Branch $BRANCH_NAME already exists, skipping creation"
echo "branch_exists=true" >> $GITHUB_ENV
exit 0
else
echo "branch_exists=false" >> $GITHUB_ENV
fi
# Create branch from the commit BEFORE the version bump
# This ensures the release branch has the previous minor version
git checkout -b "$BRANCH_NAME" HEAD^1
# Push the new branch
git push origin "$BRANCH_NAME"
echo "✅ Created release branch: $BRANCH_NAME"
echo "This branch is now in feature freeze and will only receive:"
echo "- Bug fixes"
echo "- Critical security patches"
echo "- Documentation updates"
- name: Create branch protection rules
if: steps.check_version.outputs.is_minor_bump == 'true' && env.branch_exists != 'true'
env:
GITHUB_TOKEN: ${{ secrets.PR_GH_TOKEN || secrets.GITHUB_TOKEN }}
run: |
BRANCH_NAME="${{ steps.check_version.outputs.branch_name }}"
# Create branch protection using GitHub API
echo "Setting up branch protection for $BRANCH_NAME..."
RESPONSE=$(curl -s -w "\n%{http_code}" -X PUT \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/branches/$BRANCH_NAME/protection" \
-d '{
"required_status_checks": {
"strict": true,
"contexts": ["build", "test"]
},
"enforce_admins": false,
"required_pull_request_reviews": {
"required_approving_review_count": 1,
"dismiss_stale_reviews": true
},
"restrictions": null,
"allow_force_pushes": false,
"allow_deletions": false
}')
HTTP_CODE=$(echo "$RESPONSE" | tail -n 1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [[ "$HTTP_CODE" -eq 200 ]] || [[ "$HTTP_CODE" -eq 201 ]]; then
echo "✅ Branch protection successfully applied"
else
echo "⚠️ Failed to apply branch protection (HTTP $HTTP_CODE)"
echo "Response: $BODY"
# Don't fail the workflow, just warn
fi
- name: Post summary
if: steps.check_version.outputs.is_minor_bump == 'true'
run: |
BRANCH_NAME="${{ steps.check_version.outputs.branch_name }}"
PREV_VERSION="${{ steps.check_version.outputs.prev_version }}"
CURRENT_VERSION="${{ steps.check_version.outputs.current_version }}"
if [[ "${{ env.branch_exists }}" == "true" ]]; then
cat >> $GITHUB_STEP_SUMMARY << EOF
## 🌿 Release Branch Already Exists
The release branch for the previous minor version already exists:
EOF
else
cat >> $GITHUB_STEP_SUMMARY << EOF
## 🌿 Release Branch Created
A new release branch has been created for the previous minor version:
EOF
fi
cat >> $GITHUB_STEP_SUMMARY << EOF
- **Branch**: \`$BRANCH_NAME\`
- **Version**: \`$PREV_VERSION\` (feature frozen)
- **Main branch**: \`$CURRENT_VERSION\` (active development)
### Branch Policy
The \`$BRANCH_NAME\` branch is now in **feature freeze** and will only accept:
- 🐛 Bug fixes
- 🔒 Security patches
- 📚 Documentation updates
All new features should continue to be developed against \`main\`.
### Backporting Changes
To backport a fix to this release branch:
1. Create your fix on \`main\` first
2. Cherry-pick to \`$BRANCH_NAME\`
3. Create a PR targeting \`$BRANCH_NAME\`
4. Use the \`Release\` label on the PR
EOF

72
.github/workflows/dev-release.yaml vendored Normal file
View File

@@ -0,0 +1,72 @@
name: Create Dev PyPI Package
on:
workflow_dispatch:
inputs:
devVersion:
description: 'Dev version'
required: true
type: number
jobs:
build:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.current_version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Get current version
id: current_version
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: Build project
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
USE_PROD_CONFIG: 'true'
run: |
npm ci
npm run build
npm run zipdist
- name: Upload dist artifact
uses: actions/upload-artifact@v4
with:
name: dist-files
path: |
dist/
dist.zip
publish_pypi:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download dist artifact
uses: actions/download-artifact@v4
with:
name: dist-files
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install build dependencies
run: python -m pip install build
- name: Setup pypi package
run: |
mkdir -p comfyui_frontend_package/comfyui_frontend_package/static/
cp -r dist/* comfyui_frontend_package/comfyui_frontend_package/static/
- name: Build pypi package
run: python -m build
working-directory: comfyui_frontend_package
env:
COMFYUI_FRONTEND_VERSION: ${{ format('{0}.dev{1}', needs.build.outputs.version, inputs.devVersion) }}
- name: Publish pypi package
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc
with:
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: comfyui_frontend_package/dist

View File

@@ -2,7 +2,7 @@ name: ESLint
on:
pull_request:
branches: [ main, master, dev*, core/*, desktop/* ]
branches-ignore: [ wip/*, draft/*, temp/* ]
jobs:
eslint:

View File

@@ -2,7 +2,7 @@ name: Prettier Check
on:
pull_request:
branches: [ main, master, dev*, core/*, desktop/* ]
branches-ignore: [ wip/*, draft/*, temp/* ]
jobs:
prettier:

View File

@@ -136,7 +136,7 @@ jobs:
git commit -m "Update locales"
- name: Install SSH key For PUSH
uses: shimataro/ssh-key-action@v2
uses: shimataro/ssh-key-action@d4fffb50872869abe2d9a9098a6d9c5aa7d16be4
with:
# PR private key from action server
key: ${{ secrets.PR_SSH_PRIVATE_KEY }}

View File

@@ -33,7 +33,7 @@ jobs:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
working-directory: ComfyUI_frontend
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e
with:
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: "Update locales for node definitions"

View File

@@ -3,6 +3,12 @@ name: Update Locales
on:
pull_request:
branches: [ main, master, dev* ]
paths-ignore:
- '.github/**'
- '.husky/**'
- '.vscode/**'
- 'browser_tests/**'
- 'tests-ui/**'
jobs:
update-locales:
@@ -34,7 +40,11 @@ jobs:
git config --global user.name 'github-actions'
git config --global user.email 'github-actions@github.com'
git fetch origin ${{ github.head_ref }}
# Stash any local changes before checkout
git stash -u
git checkout -B ${{ github.head_ref }} origin/${{ github.head_ref }}
# Apply the stashed changes if any
git stash pop || true
git add src/locales/
git diff --staged --quiet || git commit -m "Update locales [skip ci]"
git push origin HEAD:${{ github.head_ref }}

154
.github/workflows/pr-checks.yml vendored Normal file
View File

@@ -0,0 +1,154 @@
name: PR Checks
on:
pull_request:
types: [opened, edited, synchronize, reopened]
permissions:
contents: read
pull-requests: read
jobs:
analyze:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.check-changes.outputs.should_run }}
has_browser_tests: ${{ steps.check-coverage.outputs.has_browser_tests }}
has_screen_recording: ${{ steps.check-recording.outputs.has_recording }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Ensure base branch is available
run: |
# Fetch the specific base commit to ensure it's available for git diff
git fetch origin ${{ github.event.pull_request.base.sha }}
- name: Check if significant changes exist
id: check-changes
run: |
# Get list of changed files
CHANGED_FILES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }})
# Filter for src/ files
SRC_FILES=$(echo "$CHANGED_FILES" | grep '^src/' || true)
if [ -z "$SRC_FILES" ]; then
echo "No src/ files changed"
echo "should_run=false" >> "$GITHUB_OUTPUT"
exit 0
fi
# Count lines changed in src files
TOTAL_LINES=0
for file in $SRC_FILES; do
if [ -f "$file" ]; then
# Count added lines (non-empty)
ADDED=$(git diff ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} -- "$file" | grep '^+' | grep -v '^+++' | grep -v '^+$' | wc -l)
# Count removed lines (non-empty)
REMOVED=$(git diff ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} -- "$file" | grep '^-' | grep -v '^---' | grep -v '^-$' | wc -l)
TOTAL_LINES=$((TOTAL_LINES + ADDED + REMOVED))
fi
done
echo "Total lines changed in src/: $TOTAL_LINES"
if [ $TOTAL_LINES -gt 3 ]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi
- name: Check browser test coverage
id: check-coverage
if: steps.check-changes.outputs.should_run == 'true'
run: |
# Check if browser tests were updated
BROWSER_TEST_CHANGES=$(git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} | grep '^browser_tests/.*\.ts$' || true)
if [ -n "$BROWSER_TEST_CHANGES" ]; then
echo "has_browser_tests=true" >> "$GITHUB_OUTPUT"
else
echo "has_browser_tests=false" >> "$GITHUB_OUTPUT"
fi
- name: Check for screen recording
id: check-recording
if: steps.check-changes.outputs.should_run == 'true'
env:
PR_BODY: ${{ github.event.pull_request.body }}
run: |
# Check PR body for screen recording
# Check for GitHub user attachments or YouTube links
if echo "$PR_BODY" | grep -qiE 'github\.com/user-attachments/assets/[a-f0-9-]+|youtube\.com/watch|youtu\.be/'; then
echo "has_recording=true" >> "$GITHUB_OUTPUT"
else
echo "has_recording=false" >> "$GITHUB_OUTPUT"
fi
- name: Final check and create results
id: final-check
if: always()
run: |
# Initialize results
WARNINGS_JSON=""
# Only run checks if should_run is true
if [ "${{ steps.check-changes.outputs.should_run }}" == "true" ]; then
# Check browser test coverage
if [ "${{ steps.check-coverage.outputs.has_browser_tests }}" != "true" ]; then
if [ -n "$WARNINGS_JSON" ]; then
WARNINGS_JSON="${WARNINGS_JSON},"
fi
WARNINGS_JSON="${WARNINGS_JSON}{\"message\":\"⚠️ **Warning: E2E Test Coverage Missing**\\n\\nIf this PR modifies behavior that can be covered by browser-based E2E tests, those tests are required. PRs lacking applicable test coverage may not be reviewed until added. Please add or update browser tests to ensure code quality and prevent regressions.\"}"
fi
# Check screen recording
if [ "${{ steps.check-recording.outputs.has_recording }}" != "true" ]; then
if [ -n "$WARNINGS_JSON" ]; then
WARNINGS_JSON="${WARNINGS_JSON},"
fi
WARNINGS_JSON="${WARNINGS_JSON}{\"message\":\"⚠️ **Warning: Visual Documentation Missing**\\n\\nIf this PR changes user-facing behavior, visual proof (screen recording or screenshot) is required. PRs without applicable visual documentation may not be reviewed until provided.\\nYou can add it by:\\n\\n- GitHub: Drag & drop media directly into the PR description\\n\\n- YouTube: Include a link to a short demo\"}"
fi
fi
# Create results JSON
if [ -n "$WARNINGS_JSON" ]; then
# Create JSON with warnings
cat > pr-check-results.json << EOF
{
"fails": [],
"warnings": [$WARNINGS_JSON],
"messages": [],
"markdowns": []
}
EOF
echo "failed=false" >> "$GITHUB_OUTPUT"
else
# Create JSON with success
cat > pr-check-results.json << 'EOF'
{
"fails": [],
"warnings": [],
"messages": [],
"markdowns": []
}
EOF
echo "failed=false" >> "$GITHUB_OUTPUT"
fi
# Write PR metadata
echo "${{ github.event.pull_request.number }}" > pr-number.txt
echo "${{ github.event.pull_request.head.sha }}" > pr-sha.txt
- name: Upload results
uses: actions/upload-artifact@v4
if: always()
with:
name: pr-check-results-${{ github.run_id }}
path: |
pr-check-results.json
pr-number.txt
pr-sha.txt
retention-days: 1

149
.github/workflows/pr-comment.yml vendored Normal file
View File

@@ -0,0 +1,149 @@
name: PR Comment
on:
workflow_run:
workflows: ["PR Checks"]
types: [completed]
permissions:
pull-requests: write
issues: write
statuses: write
jobs:
comment:
if: github.event.workflow_run.event == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: pr-check-results-${{ github.event.workflow_run.id }}
path: /tmp/pr-artifacts
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
- name: Post results
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const path = require('path');
// Helper function to safely read files
function safeReadFile(filePath) {
try {
if (!fs.existsSync(filePath)) return null;
return fs.readFileSync(filePath, 'utf8').trim();
} catch (e) {
console.error(`Error reading ${filePath}:`, e);
return null;
}
}
// Read artifact files
const artifactDir = '/tmp/pr-artifacts';
const prNumber = safeReadFile(path.join(artifactDir, 'pr-number.txt'));
const prSha = safeReadFile(path.join(artifactDir, 'pr-sha.txt'));
const resultsJson = safeReadFile(path.join(artifactDir, 'pr-check-results.json'));
// Validate PR number
if (!prNumber || isNaN(parseInt(prNumber))) {
throw new Error('Invalid or missing PR number');
}
// Parse and validate results
let results;
try {
results = JSON.parse(resultsJson || '{}');
} catch (e) {
console.error('Failed to parse check results:', e);
// Post error comment
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: parseInt(prNumber),
body: `⚠️ PR checks failed to complete properly. Error parsing results: ${e.message}`
});
return;
}
// Format check messages
const messages = [];
if (results.fails && results.fails.length > 0) {
messages.push('### ❌ Failures\n' + results.fails.map(f => f.message).join('\n\n'));
}
if (results.warnings && results.warnings.length > 0) {
messages.push('### ⚠️ Warnings\n' + results.warnings.map(w => w.message).join('\n\n'));
}
if (results.messages && results.messages.length > 0) {
messages.push('### 💬 Messages\n' + results.messages.map(m => m.message).join('\n\n'));
}
if (results.markdowns && results.markdowns.length > 0) {
messages.push(...results.markdowns.map(m => m.message));
}
// Find existing bot comment
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: parseInt(prNumber)
});
const botComment = comments.data.find(comment =>
comment.user.type === 'Bot' &&
comment.body.includes('<!-- pr-checks-comment -->')
);
// Post comment if there are any messages
if (messages.length > 0) {
const body = messages.join('\n\n');
const commentBody = `<!-- pr-checks-comment -->\n${body}`;
if (botComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id,
body: commentBody
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: parseInt(prNumber),
body: commentBody
});
}
} else {
// No messages - delete existing comment if present
if (botComment) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: botComment.id
});
}
}
// Set commit status based on failures
if (prSha) {
const hasFailures = results.fails && results.fails.length > 0;
const hasWarnings = results.warnings && results.warnings.length > 0;
await github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
sha: prSha,
state: hasFailures ? 'failure' : 'success',
context: 'pr-checks',
description: hasFailures
? `${results.fails.length} check(s) failed`
: hasWarnings
? `${results.warnings.length} warning(s)`
: 'All checks passed'
});
}

View File

@@ -15,6 +15,7 @@ jobs:
contains(github.event.pull_request.labels.*.name, 'Release')
outputs:
version: ${{ steps.current_version.outputs.version }}
is_prerelease: ${{ steps.check_prerelease.outputs.is_prerelease }}
steps:
- name: Checkout code
uses: actions/checkout@v4
@@ -24,12 +25,23 @@ jobs:
- name: Get current version
id: current_version
run: echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: Check if prerelease
id: check_prerelease
run: |
VERSION=${{ steps.current_version.outputs.version }}
if [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+- ]]; then
echo "is_prerelease=true" >> $GITHUB_OUTPUT
else
echo "is_prerelease=false" >> $GITHUB_OUTPUT
fi
- name: Build project
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }}
ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY }}
USE_PROD_CONFIG: 'true'
run: |
npm ci
npm run fetch-templates
npm run build
npm run zipdist
- name: Upload dist artifact
@@ -52,7 +64,7 @@ jobs:
name: dist-files
- name: Create release
id: create_release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@@ -60,9 +72,9 @@ jobs:
dist.zip
tag_name: v${{ needs.build.outputs.version }}
target_commitish: ${{ github.event.pull_request.base.ref }}
make_latest: ${{ github.event.pull_request.base.ref == 'main' }}
draft: true
prerelease: false
make_latest: ${{ github.event.pull_request.base.ref == 'main' && needs.build.outputs.is_prerelease == 'false' }}
draft: ${{ github.event.pull_request.base.ref != 'main' || needs.build.outputs.is_prerelease == 'true' }}
prerelease: ${{ needs.build.outputs.is_prerelease == 'true' }}
generate_release_notes: true
publish_pypi:
@@ -91,7 +103,7 @@ jobs:
env:
COMFYUI_FRONTEND_VERSION: ${{ needs.build.outputs.version }}
- name: Publish pypi package
uses: pypa/gh-action-pypi-publish@release/v1
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc
with:
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: comfyui_frontend_package/dist

View File

@@ -4,7 +4,7 @@ on:
push:
branches: [main, master, core/*, desktop/*]
pull_request:
branches: [main, master, dev*, core/*, desktop/*]
branches-ignore: [wip/*, draft/*, temp/*]
jobs:
setup:
@@ -30,7 +30,7 @@ jobs:
with:
repository: 'Comfy-Org/ComfyUI_devtools'
path: 'ComfyUI/custom_nodes/ComfyUI_devtools'
ref: '080e6d4af809a46852d1c4b7ed85f06e8a3a72be'
ref: 'd05fd48dd787a4192e16802d4244cfcc0e2f9684'
- uses: actions/setup-node@v4
with:
@@ -39,7 +39,6 @@ jobs:
- name: Build ComfyUI_frontend
run: |
npm ci
npm run fetch-templates
npm run build
working-directory: ComfyUI_frontend
@@ -47,8 +46,8 @@ jobs:
id: cache-key
run: echo "key=$(date +%s)" >> $GITHUB_OUTPUT
- name: Cache setup
uses: actions/cache@v3
- name: Save cache
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684
with:
path: |
ComfyUI
@@ -63,9 +62,13 @@ jobs:
matrix:
browser: [chromium, chromium-2x, mobile-chrome]
steps:
- name: Wait for cache propagation
run: sleep 10
- name: Restore cached setup
uses: actions/cache@v3
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684
with:
fail-on-cache-miss: true
path: |
ComfyUI
ComfyUI_frontend

View File

@@ -30,9 +30,9 @@ jobs:
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e
with:
token: ${{ secrets.GITHUB_TOKEN }}
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: '[chore] Update electron-types to ${{ steps.get-version.outputs.NEW_VERSION }}'
title: '[chore] Update electron-types to ${{ steps.get-version.outputs.NEW_VERSION }}'
body: |

View File

@@ -1,43 +0,0 @@
name: Update Litegraph Dependency
on:
workflow_dispatch:
jobs:
update-litegraph:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Update litegraph
run: npm install @comfyorg/litegraph@latest
- name: Get new version
id: get-version
run: |
NEW_VERSION=$(node -e "console.log(JSON.parse(require('fs').readFileSync('./package-lock.json')).packages['node_modules/@comfyorg/litegraph'].version)")
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: '[chore] Update litegraph to ${{ steps.get-version.outputs.NEW_VERSION }}'
title: '[chore] Update litegraph to ${{ steps.get-version.outputs.NEW_VERSION }}'
body: |
Automated update of litegraph to version ${{ steps.get-version.outputs.NEW_VERSION }}.
Ref: https://github.com/Comfy-Org/litegraph.js/releases/tag/v${{ steps.get-version.outputs.NEW_VERSION }}
branch: update-litegraph-${{ steps.get-version.outputs.NEW_VERSION }}
base: main
labels: |
dependencies

View File

@@ -0,0 +1,97 @@
name: Update ComfyUI-Manager API Types
on:
# Manual trigger
workflow_dispatch:
inputs:
target_branch:
description: 'Target branch for the PR'
required: true
default: 'main'
jobs:
update-manager-types:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Checkout ComfyUI-Manager repository
uses: actions/checkout@v4
with:
repository: Comfy-Org/ComfyUI-Manager
path: ComfyUI-Manager
clean: true
- name: Get Manager commit information
id: manager-info
run: |
cd ComfyUI-Manager
MANAGER_COMMIT=$(git rev-parse --short HEAD)
echo "commit=${MANAGER_COMMIT}" >> $GITHUB_OUTPUT
cd ..
- name: Generate Manager API types
run: |
echo "Generating TypeScript types from ComfyUI-Manager@${{ steps.manager-info.outputs.commit }}..."
npx openapi-typescript ./ComfyUI-Manager/openapi.yaml --output ./src/types/generatedManagerTypes.ts
- name: Validate generated types
run: |
if [ ! -f ./src/types/generatedManagerTypes.ts ]; then
echo "Error: Types file was not generated."
exit 1
fi
# Check if file is not empty
if [ ! -s ./src/types/generatedManagerTypes.ts ]; then
echo "Error: Generated types file is empty."
exit 1
fi
- name: Check for changes
id: check-changes
run: |
if [[ -z $(git status --porcelain ./src/types/generatedManagerTypes.ts) ]]; then
echo "No changes to ComfyUI-Manager API types detected."
echo "changed=false" >> $GITHUB_OUTPUT
exit 0
else
echo "Changes detected in ComfyUI-Manager API types."
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Create Pull Request
if: steps.check-changes.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: '[chore] Update ComfyUI-Manager API types from ComfyUI-Manager@${{ steps.manager-info.outputs.commit }}'
title: '[chore] Update ComfyUI-Manager API types from ComfyUI-Manager@${{ steps.manager-info.outputs.commit }}'
body: |
## Automated API Type Update
This PR updates the ComfyUI-Manager API types from the latest ComfyUI-Manager OpenAPI specification.
- Manager commit: ${{ steps.manager-info.outputs.commit }}
- Generated on: ${{ github.event.repository.updated_at }}
These types are automatically generated using openapi-typescript.
branch: update-manager-types-${{ steps.manager-info.outputs.commit }}
base: ${{ inputs.target_branch }}
labels: Manager
delete-branch: true
add-paths: |
src/types/generatedManagerTypes.ts

View File

@@ -75,7 +75,7 @@ jobs:
- name: Create Pull Request
if: steps.check-changes.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e
with:
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: '[chore] Update Comfy Registry API types from comfy-api@${{ steps.api-info.outputs.commit }}'

View File

@@ -8,10 +8,12 @@ on:
required: true
default: 'patch'
type: 'choice'
options:
- patch
- minor
- major
options: [patch, minor, major, prepatch, preminor, premajor, prerelease]
pre_release:
description: Pre-release ID (suffix)
required: false
default: ''
type: string
jobs:
bump-version:
@@ -33,19 +35,25 @@ jobs:
- name: Bump version
id: bump-version
run: |
npm version ${{ github.event.inputs.version_type }} --no-git-tag-version
npm version ${{ github.event.inputs.version_type }} --preid ${{ github.event.inputs.pre_release }} --no-git-tag-version
NEW_VERSION=$(node -p "require('./package.json').version")
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
- name: Format PR string
id: capitalised
run: |
CAPITALISED_TYPE=${{ github.event.inputs.version_type }}
echo "capitalised=${CAPITALISED_TYPE@u}" >> $GITHUB_OUTPUT
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e
with:
token: ${{ secrets.PR_GH_TOKEN }}
commit-message: '[release] Bump version to ${{ steps.bump-version.outputs.NEW_VERSION }}'
title: '${{ steps.bump-version.outputs.NEW_VERSION }}'
commit-message: '[release] Increment version to ${{ steps.bump-version.outputs.NEW_VERSION }}'
title: ${{ steps.bump-version.outputs.NEW_VERSION }}
body: |
Automated version bump to ${{ steps.bump-version.outputs.NEW_VERSION }}
${{ steps.capitalised.outputs.capitalised }} version increment to ${{ steps.bump-version.outputs.NEW_VERSION }}
branch: version-bump-${{ steps.bump-version.outputs.NEW_VERSION }}
base: main
labels: |
Release
Release

View File

@@ -4,7 +4,7 @@ on:
push:
branches: [ main, master, dev*, core/*, desktop/* ]
pull_request:
branches: [ main, master, dev*, core/*, desktop/* ]
branches-ignore: [ wip/*, draft/*, temp/* ]
jobs:
test:

7
.gitignore vendored
View File

@@ -11,6 +11,8 @@ node_modules
dist
dist-ssr
*.local
# Claude configuration
.claude/*.local.json
# Editor directories and files
.vscode/*
@@ -38,7 +40,7 @@ tests-ui/workflows/examples
/playwright-report/
/blob-report/
/playwright/.cache/
browser_tests/*/*-win32.png
browser_tests/**/*-win32.png
.env
@@ -55,3 +57,6 @@ dist.zip
# Temporary repository directory
templates_repo/
# Vites timestamped config modules
vite.config.mts.timestamp-*.mjs

9
.husky/pre-commit Normal file → Executable file
View File

@@ -1,5 +1,4 @@
if [[ "$OS" == "Windows_NT" ]]; then
npx.cmd lint-staged
else
npx lint-staged
fi
#!/usr/bin/env bash
npx lint-staged
npx tsx scripts/check-unused-i18n-keys.ts

View File

@@ -4,14 +4,15 @@
const { defineConfig } = require('@lobehub/i18n-cli');
module.exports = defineConfig({
modelName: 'gpt-4',
modelName: 'gpt-4.1',
splitToken: 1024,
entry: 'src/locales/en',
entryLocale: 'en',
output: 'src/locales',
outputLocales: ['zh', 'ru', 'ja', 'ko', 'fr'],
reference: `Special names to keep untranslated: flux, photomaker, clip, vae, cfg, stable audio, stable cascade, controlnet, lora.
outputLocales: ['zh', 'zh-TW', 'ru', 'ja', 'ko', 'fr', 'es'],
reference: `Special names to keep untranslated: flux, photomaker, clip, vae, cfg, stable audio, stable cascade, stable zero, controlnet, lora, HiDream.
'latent' is the short form of 'latent space'.
'mask' is in the context of image processing.
Note: For Traditional Chinese (Taiwan), use Taiwan-specific terminology and traditional characters.
`
});

12
.mcp.json Normal file
View File

@@ -0,0 +1,12 @@
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["-y", "@executeautomation/playwright-mcp-server"]
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}

25
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,25 @@
{
"recommendations": [
"austenc.tailwind-docs",
"bradlc.vscode-tailwindcss",
"davidanson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"eamodio.gitlens",
"esbenp.prettier-vscode",
"figma.figma-vscode-extension",
"github.vscode-github-actions",
"github.vscode-pull-request-github",
"hbenl.vscode-test-explorer",
"lokalise.i18n-ally",
"ms-playwright.playwright",
"vitest.explorer",
"vue.volar",
"sonarsource.sonarlint-vscode",
"deque-systems.vscode-axe-linter",
"kisstkondoros.vscode-codemetrics",
"donjayamanne.githistory",
"wix.vscode-import-cost",
"prograhammer.tslint-vue",
"antfu.vite"
]
}

64
CLAUDE.md Normal file
View File

@@ -0,0 +1,64 @@
# ComfyUI Frontend Project Guidelines
## Quick Commands
- `npm run`: See all available commands
- `npm run typecheck`: Type checking
- `npm run lint`: Linting
- `npm run format`: Prettier formatting
- `npm run test:component`: Run component tests with browser environment
- `npm run test:unit`: Run all unit tests
- `npm run test:unit -- tests-ui/tests/example.test.ts`: Run single test file
## Development Workflow
1. Make code changes
2. Run tests (see subdirectory CLAUDE.md files)
3. Run typecheck, lint, format
4. Check README updates
5. Consider docs.comfy.org updates
## Git Conventions
- Use [prefix] format: [feat], [bugfix], [docs]
- Add "Fixes #n" to PR descriptions
- Never mention Claude/AI in commits
## External Resources
- PrimeVue docs: <https://primevue.org>
- ComfyUI docs: <https://docs.comfy.org>
- Electron: <https://www.electronjs.org/docs/latest/>
- Wiki: <https://deepwiki.com/Comfy-Org/ComfyUI_frontend/1-overview>
## Project Philosophy
- Clean, stable public APIs
- Domain-driven design
- Thousands of users and extensions
- Prioritize clean interfaces that restrict extension access
## Repository Navigation
- Check README files in key folders (tests-ui, browser_tests, composables, etc.)
- Prefer running single tests for performance
- Use --help for unfamiliar CLI tools
## GitHub Integration
When referencing Comfy-Org repos:
1. Check for local copy
2. Use GitHub API for branches/PRs/metadata
3. Curl GitHub website if needed
## Common Pitfalls
- NEVER use `any` type - use proper TypeScript types
- NEVER use `as any` type assertions - fix the underlying type issue
- NEVER use `--no-verify` flag when committing
- NEVER delete or disable tests to make them pass
- NEVER circumvent quality checks
- NEVER use `dark:` prefix - always use `dark-theme:` for dark mode styles, for example: `dark-theme:text-white dark-theme:bg-black`
- NEVER use `:class="[]"` to merge class names - always use `import { cn } from '@/utils/tailwindUtil'`, for example: `<div :class="cn('bg-red-500', { 'bg-blue-500': condition })" />`

159
README.md
View File

@@ -4,6 +4,8 @@
**Official front-end implementation of [ComfyUI](https://github.com/comfyanonymous/ComfyUI).**
<!-- Testing automatic backport workflow -->
[![Website][website-shield]][website-url]
[![Discord][discord-shield]][discord-url]
[![Matrix][matrix-shield]][matrix-url]
@@ -510,16 +512,66 @@ The selection toolbox will display the command button when items are selected:
</details>
## Contributing
We're building this frontend together and would love your help — no matter how you'd like to pitch in! You don't need to write code to make a difference.
Here are some ways to get involved:
- **Pull Requests:** Add features, fix bugs, or improve code health. Browse [issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues) for inspiration.
- **Vote on Features:** Give a 👍 to the feature requests you care about to help us prioritize.
- **Verify Bugs:** Try reproducing reported issues and share your results (even if the bug doesn't occur!).
- **Community Support:** Hop into our [Discord](https://www.comfy.org/discord) to answer questions or get help.
- **Share & Advocate:** Tell your friends, tweet about us, or share tips to support the project.
Have another idea? Drop into Discord or open an issue, and let's chat!
### Architecture Decision Records
We document significant architectural decisions using ADRs (Architecture Decision Records). See [docs/adr/](docs/adr/) for all ADRs and the template for creating new ones.
## Development
### Tech Stack
### Prerequisites & Technology Stack
- [Vue 3](https://vuejs.org/) with [TypeScript](https://www.typescriptlang.org/)
- [Pinia](https://pinia.vuejs.org/) for state management
- [PrimeVue](https://primevue.org/) with [TailwindCSS](https://tailwindcss.com/) for UI
- [litegraph.js](https://github.com/Comfy-Org/litegraph.js) for node editor
- [zod](https://zod.dev/) for schema validation
- [vue-i18n](https://github.com/intlify/vue-i18n) for internationalization
- **Required Software**:
- Node.js (v16 or later; v20/v22 strongly recommended) and npm
- Git for version control
- A running ComfyUI backend instance
- **Tech Stack**:
- [Vue 3](https://vuejs.org/) with [TypeScript](https://www.typescriptlang.org/)
- [Pinia](https://pinia.vuejs.org/) for state management
- [PrimeVue](https://primevue.org/) with [TailwindCSS](https://tailwindcss.com/) for UI
- [litegraph.js](https://github.com/Comfy-Org/litegraph.js) for node editor
- [zod](https://zod.dev/) for schema validation
- [vue-i18n](https://github.com/intlify/vue-i18n) for internationalization
### Initial Setup
1. Clone the repository:
```bash
git clone https://github.com/Comfy-Org/ComfyUI_frontend.git
cd ComfyUI_frontend
```
2. Install dependencies:
```bash
npm install
```
3. Configure environment (optional):
Create a `.env` file in the project root based on the provided [.env.example](.env.example) file.
**Note about ports**: By default, the dev server expects the ComfyUI backend at `localhost:8188`. If your ComfyUI instance runs on a different port, update this in your `.env` file.
### Dev Server Configuration
To launch ComfyUI and have it connect to your development server:
```bash
python main.py --port 8188
```
### Git pre-commit hooks
@@ -557,6 +609,74 @@ After you start the dev server, you should see following logs:
Make sure your desktop machine and touch device are on the same network. On your touch device,
navigate to `http://<server_ip>:5173` (e.g. `http://192.168.2.20:5173` here), to access the ComfyUI frontend.
### Recommended Code Editor Configuration
This project includes `.vscode/launch.json.default` and `.vscode/settings.json.default` files with recommended launch and workspace settings for editors that use the `.vscode` directory (e.g., VS Code, Cursor, etc.).
We've also included a list of recommended extensions in `.vscode/extensions.json`. Your editor should detect this file and show a human friendly list in the Extensions panel, linking each entry to its marketplace page.
### Recommended MCP Integrations
#### Playwright Browser Automation
The Playwright MCP server enables LLM coding assistants (like Copilot, Claude Code, etc.) to control and inspect web browsers programmatically. This allows assistants to navigate websites, take screenshots, and interact with web pages on your behalf.
For ComfyUI_frontend development, you can ask coding assistants to use Playwright screenshots to continuously verify that your code changes produce the expected visual results.
##### Setup for Claude Code
After installing dependencies with `npm i`, the Playwright MCP server will be automatically available when you start Claude Code locally.
Here's how Claude Code can use the Playwright MCP server to inspect the interface of the local development server (assuming you're running the dev server at `localhost:5173`):
```
> navigate to localhost:5173 and take a screenshot.
tell me the items in the menubar
● I'll navigate to localhost:5173 and take a
screenshot to see the menubar items.
● playwright:playwright_navigate (MCP)(url: …
"http://local
host:5173")
⎿ Navigated to http://localhost:5173
● playwright:playwright_screenshot (MCP)(name: "lo…
alhost_5173
_menubar")
⎿ Screenshot saved to: ../../../Downloads/localho
st_5173_menubar-2025-05-30T17-23-00-942Z.png
⎿ Screenshot also stored in memory with name:
'localhost_5173_menubar'
● Read(../../../Downloads/localhost_5173_menubar-2…
25-05-30T17-23-00-942Z.png)
⎿ Read image (94.3KB)
● Based on the screenshot, I can see the menubar at
the top of the ComfyUI interface contains the
following items:
Main Menubar Items:
- Workflow - Menu for workflow-related actions
- Edit - Menu for editing operations
- Help - Menu for help and documentation
Additional UI Elements:
- ComfyUI Logo - On the far left
- Workflow Tab - Shows "Unsaved Workflow" with a
dropdown and close button
- Layout Controls - On the far right (grid view
and hamburger menu icons)
The interface shows a typical ComfyUI workflow
graph with nodes like "Load Checkpoint", "CLIP
Text Encode (Prompt)", "KSampler", and "Empty
Latent Image" connected with colored cables.
```
### Unit Test
- `npm i` to install all dependencies
@@ -572,17 +692,32 @@ Component test verifies Vue components in `src/components/`.
Playwright test verifies the whole app. See <https://github.com/Comfy-Org/ComfyUI_frontend/blob/main/browser_tests/README.md> for details.
### Custom Icons
The project supports custom SVG icons through the unplugin-icons system. Custom icons are stored in `src/assets/icons/custom/` and can be used as Vue components with the `i-comfy:` prefix.
For detailed instructions on adding and using custom icons, see [src/assets/icons/README.md](src/assets/icons/README.md).
### litegraph.js
This repo is using litegraph package hosted on <https://github.com/Comfy-Org/litegraph.js>. Any changes to litegraph should be submitted in that repo instead.
Since Aug 5, 2025, litegraph.js is now integrated directly into this repository. It was merged using git subtree to preserve the complete commit history ([PR #4667](https://github.com/Comfy-Org/ComfyUI_frontend/pull/4667), [ADR](docs/adr/0001-merge-litegraph-into-frontend.md)).
#### Test litegraph.js changes
#### Important Notes
- Run `npm link` in the local litegraph repo.
- Run `npm link @comfyorg/litegraph` in this repo.
- **Issue References**: Commits from the original litegraph repository may contain issue/PR numbers (e.g., #4667) that refer to issues/PRs in the original litegraph.js repository, not this one.
- **File Paths**: When viewing historical commits, file paths may show the original structure before the subtree merge. In those cases, just consider the paths relative to the new litegraph folder.
- **Contributing**: All litegraph modifications should now be made directly in this repository.
This will replace the litegraph package in this repo with the local litegraph repo.
The original litegraph repository (<https://github.com/Comfy-Org/litegraph.js>) is now archived.
### i18n
See [locales/README.md](src/locales/README.md) for details.
## Troubleshooting
For comprehensive troubleshooting and technical support, please refer to our official documentation:
- **[General Troubleshooting Guide](https://docs.comfy.org/troubleshooting/overview)** - Common issues, performance optimization, and reporting bugs
- **[Custom Node Issues](https://docs.comfy.org/troubleshooting/custom-node-issues)** - Debugging custom node problems and conflicts
- **[Desktop Installation Guide](https://docs.comfy.org/installation/desktop/windows)** - Desktop-specific installation and troubleshooting

17
browser_tests/CLAUDE.md Normal file
View File

@@ -0,0 +1,17 @@
# E2E Testing Guidelines
## Browser Tests
- Test user workflows
- Use Playwright fixtures
- Follow naming conventions
## Best Practices
- Check assets/ for test data
- Prefer specific selectors
- Test across viewports
## Testing Process
After code changes:
1. Create browser tests as appropriate
2. Run tests until passing
3. Then run typecheck, lint, format

View File

@@ -1,51 +1,419 @@
# Playwright Testing for ComfyUI_frontend
This document outlines the setup and usage of Playwright for testing the ComfyUI_frontend project.
This document outlines the setup, usage, and common patterns for Playwright browser tests in the ComfyUI_frontend project.
## WARNING
## Prerequisites
The browser tests will change the ComfyUI backend state, such as user settings and saved workflows.
If `TEST_COMFYUI_DIR` in `.env` isn't set to your `(Comfy Path)/ComfyUI` directory, these changes won't be automatically restored.
**CRITICAL**: Start ComfyUI backend with `--multi-user` flag:
```bash
python main.py --multi-user
```
Without this flag, parallel tests will conflict and fail randomly.
## Setup
Clone <https://github.com/Comfy-Org/ComfyUI_devtools> to your `custom_nodes` directory.
ComfyUI_devtools adds additional API endpoints and nodes to ComfyUI for browser testing.
### ComfyUI devtools
Ensure you have Node.js v20 or later installed. Then, set up the Chromium test driver:
Clone <https://github.com/Comfy-Org/ComfyUI_devtools> to your `custom_nodes` directory.
_ComfyUI_devtools adds additional API endpoints and nodes to ComfyUI for browser testing._
### Node.js & Playwright Prerequisites
Ensure you have Node.js v20 or v22 installed. Then, set up the Chromium test driver:
```bash
npx playwright install chromium --with-deps
```
### Environment Configuration
Create `.env` from the template:
```bash
cp .env_example .env
```
Key settings for debugging:
```bash
# Remove Vue dev overlay that blocks UI elements
DISABLE_VUE_PLUGINS=true
# Test against dev server (recommended) or backend directly
PLAYWRIGHT_TEST_URL=http://localhost:5173 # Dev server
# PLAYWRIGHT_TEST_URL=http://localhost:8188 # Direct backend
# Path to ComfyUI for backing up user data/settings before tests
TEST_COMFYUI_DIR=/path/to/your/ComfyUI
```
### Common Setup Issues
**Most tests require the new menu system** - Add to your test:
```typescript
test.beforeEach(async ({ comfyPage }) => {
await comfyPage.setSetting('Comfy.UseNewMenu', 'Top')
})
```
### Release API Mocking
By default, all tests mock the release API (`api.comfy.org/releases`) to prevent release notification popups from interfering with test execution. This is necessary because the release notifications can appear over UI elements and block test interactions.
To test with real release data, you can disable mocking:
```typescript
await comfyPage.setup({ mockReleases: false })
```
For tests that specifically need to test release functionality, see the example in `tests/releaseNotifications.spec.ts`.
## Running Tests
There are two ways to run the tests:
**Always use UI mode for development:**
1. **Headless mode with report generation:**
```bash
npx playwright test
```bash
npx playwright test --ui
```
UI mode features:
- **Locator picker**: Click the target icon, then click any element to get the exact locator code to use in your test. The code appears in the _Locator_ tab.
- **Step debugging**: Step through your test line-by-line by clicking _Source_ tab
- **Time travel**: In the _Actions_ tab/panel, click any step to see the browser state at that moment
- **Console/Network Tabs**: View logs and API calls at each step
- **Attachments Tab**: View all snapshots with expected and actual images
![Playwright UI Mode](https://github.com/user-attachments/assets/c158c93f-b39a-44c5-a1a1-e0cc975ee9f2)
For CI or headless testing:
```bash
npx playwright test # Run all tests
npx playwright test widget.spec.ts # Run specific test file
```
### Local Development Config
For debugging, you can try adjusting these settings in `playwright.config.ts`:
```typescript
export default defineConfig({
// VERY HELPFUL: Skip screenshot tests locally
grep: process.env.CI ? undefined : /^(?!.*screenshot).*$/
retries: 0, // No retries while debugging. Increase if writing new tests. that may be flaky.
workers: 1, // Single worker for easier debugging. Increase to match CPU cores if you want to run a lot of tests in parallel.
timeout: 30000, // Longer timeout for breakpoints
use: {
trace: 'on', // Always capture traces (CI uses 'on-first-retry')
video: 'on' // Always record video (CI uses 'retain-on-failure')
},
})
```
## Test Structure
Browser tests in this project follow a specific organization pattern:
- **Fixtures**: Located in `fixtures/` - These provide test setup and utilities
- `ComfyPage.ts` - The main fixture for interacting with ComfyUI
- `ComfyMouse.ts` - Utility for mouse interactions with the canvas
- Components fixtures in `fixtures/components/` - Page object models for UI components
- **Tests**: Located in `tests/` - The actual test specifications
- Organized by functionality (e.g., `widget.spec.ts`, `interaction.spec.ts`)
- Snapshot directories (e.g., `widget.spec.ts-snapshots/`) contain reference screenshots
- **Utilities**: Located in `utils/` - Common utility functions
- `litegraphUtils.ts` - Utilities for working with LiteGraph nodes
## Writing Effective Tests
When writing new tests, follow these patterns:
### Test Structure
```typescript
// Import the test fixture
import { comfyPageFixture as test } from '../fixtures/ComfyPage'
test.describe('Feature Name', () => {
// Set up test environment if needed
test.beforeEach(async ({ comfyPage }) => {
// Common setup
})
test('should do something specific', async ({ comfyPage }) => {
// Test implementation
})
})
```
### Leverage Existing Fixtures and Helpers
Always check for existing helpers and fixtures before implementing new ones:
- **ComfyPage**: Main fixture with methods for canvas interaction and node management
- **ComfyMouse**: Helper for precise mouse operations on the canvas
- **Helpers**: Check `browser_tests/helpers/` for specialized helpers like:
- `actionbar.ts`: Interact with the action bar
- `manageGroupNode.ts`: Group node management operations
- `templates.ts`: Template workflows operations
- **Component Fixtures**: Check `browser_tests/fixtures/components/` for UI component helpers
- **Utility Functions**: Check `browser_tests/utils/` and `browser_tests/fixtures/utils/` for shared utilities
Most common testing needs are already addressed by these helpers, which will make your tests more consistent and reliable.
### Key Testing Patterns
1. **Focus elements explicitly**:
Canvas-based elements often need explicit focus before interaction:
```typescript
// Click the canvas first to focus it before pressing keys
await comfyPage.canvas.click()
await comfyPage.page.keyboard.press('a')
```
This runs all tests without a visible browser and generates a comprehensive test report.
2. **UI mode for interactive testing:**
```bash
npx playwright test --ui
2. **Mark canvas as dirty if needed**:
Some interactions need explicit canvas updates:
```typescript
// After programmatically changing node state, mark canvas dirty
await comfyPage.page.evaluate(() => {
window['app'].graph.setDirtyCanvas(true, true)
})
```
This opens a user interface where you can select specific tests to run and inspect the test execution timeline.
To run the same test multiple times in Playwright's UI mode, you must launch the main ComfyUI process with the `--multi-user` flag.
3. **Use node references over coordinates**:
Node references from `fixtures/utils/litegraphUtils.ts` provide stable ways to interact with nodes:
![Playwright UI Mode](https://github.com/user-attachments/assets/6a1ebef0-90eb-4157-8694-f5ee94d03755)
```typescript
// Prefer this:
const node = await comfyPage.getNodeRefsByType('LoadImage')[0]
await node.click('title')
## Screenshot Expectations
// Over this:
await comfyPage.canvas.click({ position: { x: 100, y: 100 } })
```
4. **Wait for canvas to render after UI interactions**:
```typescript
await comfyPage.nextFrame()
```
5. **Clean up persistent server state**:
While most state is reset between tests, anything stored on the server persists:
```typescript
// Reset settings that affect other tests (these are stored on server)
await comfyPage.setSetting('Comfy.ColorPalette', 'dark')
await comfyPage.setSetting('Comfy.NodeBadge.NodeIdBadgeMode', 'None')
// Clean up uploaded files if needed
await comfyPage.request.delete(`${comfyPage.url}/api/delete/image.png`)
```
6. **Prefer functional assertions over screenshots**:
Use screenshots only when visual verification is necessary:
```typescript
// Prefer this:
expect(await node.isPinned()).toBe(true)
expect(await node.getProperty('title')).toBe('Expected Title')
// Over this - only use when needed:
await expect(comfyPage.canvas).toHaveScreenshot('state.png')
```
7. **Use minimal test workflows**:
When creating test workflows, keep them as minimal as possible:
```typescript
// Include only the components needed for the test
await comfyPage.loadWorkflow('single_ksampler')
```
8. **Debug helpers for visual debugging** (remove before committing):
ComfyPage includes temporary debug methods for troubleshooting:
```typescript
test('debug failing interaction', async ({ comfyPage }, testInfo) => {
// Add visual markers to see click positions
await comfyPage.debugAddMarker({ x: 100, y: 200 })
// Attach screenshot with markers to test report
await comfyPage.debugAttachScreenshot(testInfo, 'node-positions', {
element: 'canvas',
markers: [{ position: { x: 100, y: 200 } }]
})
// Show canvas overlay for easier debugging
await comfyPage.debugShowCanvasOverlay()
// Remember to remove debug code before committing!
})
```
Available debug methods:
- `debugAddMarker(position)` - Red circle at position
- `debugAttachScreenshot(testInfo, name)` - Attach to test report
- `debugShowCanvasOverlay()` - Show canvas as overlay
- `debugGetCanvasDataURL()` - Get canvas as base64
## Common Patterns and Utilities
### Page Object Pattern
Tests use the Page Object pattern to create abstractions over the UI:
```typescript
// Using the ComfyPage fixture
test('Can toggle boolean widget', async ({ comfyPage }) => {
await comfyPage.loadWorkflow('widgets/boolean_widget')
const node = (await comfyPage.getFirstNodeRef())!
const widget = await node.getWidget(0)
await widget.click()
})
```
### Node References
The `NodeReference` class provides helpers for interacting with LiteGraph nodes:
```typescript
// Getting node by type and interacting with it
const nodes = await comfyPage.getNodeRefsByType('LoadImage')
const loadImageNode = nodes[0]
const widget = await loadImageNode.getWidget(0)
await widget.click()
```
### Visual Regression Testing
Tests use screenshot comparisons to verify UI state:
```typescript
// Take a screenshot and compare to reference
await expect(comfyPage.canvas).toHaveScreenshot('boolean_widget_toggled.png')
```
### Waiting for Animations
Always call `nextFrame()` after actions that trigger animations:
```typescript
await comfyPage.canvas.click({ position: { x: 100, y: 100 } })
await comfyPage.nextFrame() // Wait for canvas to redraw
```
### Mouse Interactions
Canvas operations use special helpers to ensure proper timing:
```typescript
// Using ComfyMouse for drag and drop
await comfyMouse.dragAndDrop(
{ x: 100, y: 100 }, // From
{ x: 200, y: 200 } // To
)
// Standard ComfyPage helpers
await comfyPage.drag({ x: 100, y: 100 }, { x: 200, y: 200 })
await comfyPage.pan({ x: 200, y: 200 })
await comfyPage.zoom(-100) // Zoom in
```
### Workflow Management
Tests use workflows stored in `assets/` for consistent starting points:
```typescript
// Load a test workflow
await comfyPage.loadWorkflow('single_ksampler')
// Wait for workflow to load and stabilize
await comfyPage.nextFrame()
```
### Custom Assertions
The project includes custom Playwright assertions through `comfyExpect`:
```typescript
// Check if a node is in a specific state
await expect(node).toBePinned()
await expect(node).toBeBypassed()
await expect(node).toBeCollapsed()
```
## Troubleshooting Common Issues
### Flaky Tests
- **Timing Issues**: Always wait for animations to complete with `nextFrame()`
- **Coordinate Sensitivity**: Canvas coordinates are viewport-relative; use node references when possible
- **Test Isolation**: Tests run in parallel; avoid dependencies between tests
- **Screenshots vary**: Ensure your OS and browser match the reference environment (Linux)
- **Async / await**: Race conditions are a very common cause of test flakiness
## Screenshot Testing
Due to variations in system font rendering, screenshot expectations are platform-specific. Please note:
- We maintain Linux screenshot expectations as our GitHub Action runner operates in a Linux environment.
- To set new test expectations:
1. Create a pull request from a `Comfy-Org/ComfyUI_frontend` branch.
2. Add the `New Browser Test Expectation` tag to your pull request.
3. This will trigger a GitHub action to update the screenshot expectations automatically.
- **Do not commit local screenshot expectations** to the repository
- We maintain Linux screenshot expectations as our GitHub Action runner operates in a Linux environment
- While developing, you can generate local screenshots for your tests, but these will differ from CI-generated ones
> **Note:** If you're making a pull request from a forked repository, the GitHub action won't be able to commit updated screenshot expectations directly to your PR branch.
### Working with Screenshots Locally
Option 1 - Skip screenshot tests (add to `playwright.config.ts`):
```typescript
export default defineConfig({
grep: process.env.CI ? undefined : /^(?!.*screenshot).*$/
})
```
Option 2 - Generate local baselines for comparison:
```bash
npx playwright test --update-snapshots
```
### Getting Test Artifacts from GitHub Actions
When tests fail in CI, you can download screenshots and traces:
1. Go to the failed workflow run in GitHub Actions
2. Scroll to "Artifacts" section at the bottom
3. Download `playwright-report` or `test-results`
4. Extract and open the HTML report locally
5. View actual vs expected screenshots and execution traces
### Creating New Screenshot Baselines
For PRs from `Comfy-Org/ComfyUI_frontend` branches:
1. Write test with `toHaveScreenshot('filename.png')`
2. Create PR and add `New Browser Test Expectation` label
3. CI will generate and commit the Linux baseline screenshots
> **Note:** Fork PRs cannot auto-commit screenshots. A maintainer will need to commit the screenshots manually for you (don't worry, they'll do it).
## Resources
- [Playwright UI Mode](https://playwright.dev/docs/test-ui-mode) - Interactive test debugging
- [Playwright Debugging Guide](https://playwright.dev/docs/debug)
- [act](https://github.com/nektos/act) - Run GitHub Actions locally for CI debugging

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,126 @@
{
"id": "51b9b184-770d-40ac-a478-8cc31667ff23",
"revision": 0,
"last_node_id": 5,
"last_link_id": 3,
"nodes": [
{
"id": 4,
"type": "KSampler",
"pos": [
867.4669799804688,
347.22369384765625
],
"size": [
315,
262
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
},
{
"name": "steps",
"type": "INT",
"widget": {
"name": "steps"
},
"link": 3
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
8,
"euler",
"normal",
1
]
},
{
"id": 5,
"type": "PrimitiveInt",
"pos": [
443.0852355957031,
441.131591796875
],
"size": [
315,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "INT",
"type": "INT",
"links": [
3
]
}
],
"properties": {
"Node name for S&R": "PrimitiveInt"
},
"widgets_values": [
0,
"randomize"
]
}
],
"links": [
[
3,
5,
0,
4,
5,
"INT"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.9487171000000016,
"offset": [
-325.57196748514497,
-168.13150517966463
]
}
},
"version": 0.4
}

View File

@@ -0,0 +1,244 @@
{
"id": "fe4562c0-3a0b-4614-bdec-7039a58d75b8",
"revision": 0,
"last_node_id": 2,
"last_link_id": 0,
"nodes": [
{
"id": 2,
"type": "e5fb1765-9323-4548-801a-5aead34d879e",
"pos": [
627.5973510742188,
423.0972900390625
],
"size": [
144.15234375,
46
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "positive",
"type": "CONDITIONING",
"link": null
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {},
"widgets_values": []
}
],
"links": [],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "e5fb1765-9323-4548-801a-5aead34d879e",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 2,
"lastLinkId": 4,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "New Subgraph",
"inputNode": {
"id": -10,
"bounding": [
347.90441582814213,
417.3822440655296,
120,
60
]
},
"outputNode": {
"id": -20,
"bounding": [
892.5973510742188,
416.0972900390625,
120,
60
]
},
"inputs": [
{
"id": "c5cc99d8-a2b6-4bf3-8be7-d4949ef736cd",
"name": "positive",
"type": "CONDITIONING",
"linkIds": [
1
],
"pos": {
"0": 447.9044189453125,
"1": 437.3822326660156
}
}
],
"outputs": [
{
"id": "9bd488b9-e907-4c95-a7a4-85c5597a87af",
"name": "LATENT",
"type": "LATENT",
"linkIds": [
2
],
"pos": {
"0": 912.5973510742188,
"1": 436.0972900390625
}
}
],
"widgets": [],
"nodes": [
{
"id": 1,
"type": "KSampler",
"pos": [
554.8743286132812,
100.95539093017578
],
"size": [
270,
262
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": null
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 1
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": null
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": [
2
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
8,
"euler",
"simple",
1
]
},
{
"id": 2,
"type": "VAEEncode",
"pos": [
685.1265869140625,
439.1734619140625
],
"size": [
140,
46
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "pixels",
"name": "pixels",
"type": "IMAGE",
"link": null
},
{
"localized_name": "vae",
"name": "vae",
"type": "VAE",
"link": null
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": [
4
]
}
],
"properties": {
"Node name for S&R": "VAEEncode"
}
}
],
"groups": [],
"links": [
{
"id": 1,
"origin_id": -10,
"origin_slot": 0,
"target_id": 1,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 2,
"origin_id": 1,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "LATENT"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 0.8894351682943402,
"offset": [
58.7671207025881,
137.7124650620126
]
},
"frontendVersion": "1.24.1"
},
"version": 0.4
}

View File

@@ -33,5 +33,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -130,6 +130,11 @@
],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -0,0 +1,53 @@
{
"id": "9bcb9451-8319-492a-88d4-fb711d8c3d25",
"revision": 0,
"last_node_id": 6,
"last_link_id": 0,
"nodes": [
{
"id": 6,
"type": "DevToolsNodeWithDefaultInput",
"pos": [
8.39722728729248,
29.727279663085938
],
"size": [
315,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "float_input",
"shape": 7,
"type": "FLOAT",
"link": null
}
],
"outputs": [],
"properties": {
"Node name for S&R": "DevToolsNodeWithDefaultInput"
},
"widgets_values": [
0,
1,
0
]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
0,
0
]
}
},
"version": 0.4
}

View File

@@ -0,0 +1,82 @@
{
"last_node_id": 9,
"last_link_id": 13,
"nodes": [
{
"id": 3,
"type": "KSampler",
"pos": [
0,
30
],
"size": {
"0": 315,
"1": 262
},
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
} ,
{
"name": "dynamic_input",
"type": "FLOAT",
"link": null,
"_meta": "Dynamically added input via frontend JS logic"
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
156680208700286,
"randomize",
20,
8,
"euler",
"normal",
1
]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
0,
0
]
}
},
"version": 0.4
}

View File

@@ -499,6 +499,11 @@
],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,85 @@
{
"id": "1a95532f-c8aa-4c9d-a7f6-f928ba2d4862",
"revision": 0,
"last_node_id": 4,
"last_link_id": 3,
"nodes": [
{
"id": 4,
"type": "PreviewAny",
"pos": [946.2566528320312, 598.4373168945312],
"size": [140, 76],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": []
},
{
"id": 1,
"type": "PreviewAny",
"pos": [951.0236206054688, 421.3861083984375],
"size": [140, 76],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": []
},
{
"id": 3,
"type": "PrimitiveString",
"pos": [575.1760864257812, 504.5214538574219],
"size": [270, 58],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [2, 3]
}
],
"properties": {
"Node name for S&R": "PrimitiveString"
},
"widgets_values": ["foo"]
}
],
"links": [
[2, 3, 0, 1, 0, "*"],
[3, 3, 0, 4, 0, "*"]
],
"groups": [],
"config": {},
"extra": {
"frontendVersion": "1.19.1",
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -160,4 +160,4 @@
}
},
"version": 0.4
}
}

View File

@@ -43,6 +43,10 @@
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
},
"groupNodes": {
"group_node": {
"nodes": [
@@ -401,4 +405,4 @@
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,74 @@
{
"id": "51b9b184-770d-40ac-a478-8cc31667ff23",
"revision": 0,
"last_node_id": 2,
"last_link_id": 1,
"nodes": [
{
"id": 1,
"type": "CLIPTextEncode",
"pos": [904, 466],
"size": [400, 200],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 1
},
{
"name": "clip",
"type": "CLIP",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": null
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [""]
},
{
"id": 2,
"type": "PrimitiveString",
"pos": [556.8589477539062, 472.94342041015625],
"size": [315, 58],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [1]
}
],
"properties": {
"Node name for S&R": "PrimitiveString"
},
"widgets_values": ["foo"]
}
],
"links": [[1, 2, 0, 1, 0, "STRING"]],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.7715610000000013,
"offset": [-388.521484375, -162.31336975097656]
}
},
"version": 0.4
}

View File

@@ -110,6 +110,10 @@
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
},
"groupNodes": {
"hello": {
"nodes": [
@@ -249,4 +253,4 @@
}
},
"version": 0.4
}
}

View File

@@ -44,6 +44,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -51,13 +51,21 @@
0.85,
false,
false,
""
"",
{
"foo": "bar"
}
]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,182 @@
{
"id": "test-missing-nodes-in-subgraph",
"revision": 0,
"last_node_id": 2,
"last_link_id": 0,
"nodes": [
{
"id": 1,
"type": "KSampler",
"pos": [100, 100],
"size": [270, 262],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": []
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [0, "randomize", 20, 8, "euler", "simple", 1]
},
{
"id": 2,
"type": "subgraph-with-missing-node",
"pos": [400, 100],
"size": [144, 46],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "input1",
"type": "CONDITIONING",
"link": null
}
],
"outputs": [
{
"name": "output1",
"type": "LATENT",
"links": null
}
],
"properties": {},
"widgets_values": []
}
],
"links": [],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "subgraph-with-missing-node",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 2,
"lastLinkId": 2,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "Subgraph with Missing Node",
"inputNode": {
"id": -10,
"bounding": [100, 200, 120, 60]
},
"outputNode": {
"id": -20,
"bounding": [500, 200, 120, 60]
},
"inputs": [
{
"id": "input1-id",
"name": "input1",
"type": "CONDITIONING",
"linkIds": [1],
"pos": {
"0": 150,
"1": 220
}
}
],
"outputs": [
{
"id": "output1-id",
"name": "output1",
"type": "LATENT",
"linkIds": [2],
"pos": {
"0": 520,
"1": 220
}
}
],
"widgets": [],
"nodes": [
{
"id": 1,
"type": "MISSING_NODE_TYPE_IN_SUBGRAPH",
"pos": [250, 180],
"size": [200, 100],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "CONDITIONING",
"link": 1
}
],
"outputs": [
{
"name": "output",
"type": "LATENT",
"links": [2]
}
],
"properties": {
"Node name for S&R": "MISSING_NODE_TYPE_IN_SUBGRAPH"
},
"widgets_values": ["some", "widget", "values"]
}
],
"links": [
{
"id": 1,
"origin_id": -10,
"origin_slot": 0,
"target_id": 1,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 2,
"origin_id": 1,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "LATENT"
}
]
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [0, 0]
}
},
"version": 0.4
}

View File

@@ -0,0 +1,59 @@
{
"last_node_id": 1,
"last_link_id": 0,
"nodes": [
{
"id": 1,
"type": "CheckpointLoaderSimple",
"pos": [256, 256],
"size": [315, 98],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": null
},
{
"name": "CLIP",
"type": "CLIP",
"links": null
},
{
"name": "VAE",
"type": "VAE",
"links": null
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple",
"models": [
{
"name": "outdated_model.safetensors",
"url": "http://localhost:8188/api/devtools/fake_model.safetensors",
"directory": "text_encoders"
},
{
"name": "another_outdated_model.safetensors",
"url": "http://localhost:8188/api/devtools/fake_model.safetensors",
"directory": "text_encoders"
}
]
},
"widgets_values": ["current_selected_model.safetensors"]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -0,0 +1,716 @@
{
"id": "976d6e9a-927d-42db-abd4-96bfc0ecf8d9",
"revision": 0,
"last_node_id": 10,
"last_link_id": 11,
"nodes": [
{
"id": 10,
"type": "8beb610f-ddd1-4489-ae0d-2f732a4042ae",
"pos": [
532,
412.5
],
"size": [
140,
46
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
10
]
},
{
"name": "VAE",
"type": "VAE",
"links": [
11
]
}
],
"title": "subgraph 2",
"properties": {},
"widgets_values": []
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
758.2109985351562,
398.3681335449219
],
"size": [
210,
46
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 10
},
{
"name": "vae",
"type": "VAE",
"link": 11
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 9,
"type": "SaveImage",
"pos": [
1028.9615478515625,
381.83746337890625
],
"size": [
210,
270
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 9
}
],
"outputs": [],
"properties": {},
"widgets_values": [
"ComfyUI"
]
}
],
"links": [
[
9,
8,
0,
9,
0,
"IMAGE"
],
[
10,
10,
0,
8,
0,
"LATENT"
],
[
11,
10,
1,
8,
1,
"VAE"
]
],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "8beb610f-ddd1-4489-ae0d-2f732a4042ae",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 10,
"lastLinkId": 14,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "subgraph 2",
"inputNode": {
"id": -10,
"bounding": [
-154,
415.5,
120,
40
]
},
"outputNode": {
"id": -20,
"bounding": [
1238,
395.5,
120,
80
]
},
"inputs": [],
"outputs": [
{
"id": "4d6c7e4e-971e-4f78-9218-9a604db53a4b",
"name": "LATENT",
"type": "LATENT",
"linkIds": [
7
],
"localized_name": "LATENT",
"pos": {
"0": 1258,
"1": 415.5
}
},
{
"id": "f8201d4f-7fc6-4a1b-b8c9-9f0716d9c09a",
"name": "VAE",
"type": "VAE",
"linkIds": [
14
],
"localized_name": "VAE",
"pos": {
"0": 1258,
"1": 435.5
}
}
],
"widgets": [],
"nodes": [
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415,
186
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 13
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
4
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"beautiful scenery nature glass bottle landscape, , purple galaxy bottle,"
]
},
{
"id": 3,
"type": "KSampler",
"pos": [
863,
186
],
"size": [
315,
262
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 12
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 4
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": 10
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": 11
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
7
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
32115495257102,
"randomize",
20,
8,
"euler",
"normal",
1
]
},
{
"id": 10,
"type": "dbe5763f-440b-47b4-82ac-454f1f98b0e3",
"pos": [
194.13900756835938,
657.3333740234375
],
"size": [
140,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
10
]
},
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": [
11
]
},
{
"localized_name": "MODEL",
"name": "MODEL",
"type": "MODEL",
"links": [
12
]
},
{
"localized_name": "CLIP",
"name": "CLIP",
"type": "CLIP",
"links": [
13
]
},
{
"localized_name": "VAE",
"name": "VAE",
"type": "VAE",
"links": [
14
]
}
],
"title": "subgraph 3",
"properties": {},
"widgets_values": []
}
],
"groups": [],
"links": [
{
"id": 4,
"origin_id": 6,
"origin_slot": 0,
"target_id": 3,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 7,
"origin_id": 3,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "LATENT"
},
{
"id": 10,
"origin_id": 10,
"origin_slot": 0,
"target_id": 3,
"target_slot": 2,
"type": "CONDITIONING"
},
{
"id": 11,
"origin_id": 10,
"origin_slot": 1,
"target_id": 3,
"target_slot": 3,
"type": "LATENT"
},
{
"id": 12,
"origin_id": 10,
"origin_slot": 2,
"target_id": 3,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 13,
"origin_id": 10,
"origin_slot": 3,
"target_id": 6,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 14,
"origin_id": 10,
"origin_slot": 4,
"target_id": -20,
"target_slot": 1,
"type": "VAE"
}
],
"extra": {}
},
{
"id": "dbe5763f-440b-47b4-82ac-454f1f98b0e3",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 9,
"lastLinkId": 9,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "subgraph 3",
"inputNode": {
"id": -10,
"bounding": [
-154,
517,
120,
40
]
},
"outputNode": {
"id": -20,
"bounding": [
898.2780151367188,
467,
128.6640625,
140
]
},
"inputs": [],
"outputs": [
{
"id": "b4882169-329b-43f6-a373-81abfbdea55b",
"name": "CONDITIONING",
"type": "CONDITIONING",
"linkIds": [
6
],
"localized_name": "CONDITIONING",
"pos": {
"0": 918.2780151367188,
"1": 487
}
},
{
"id": "01f51f96-a741-428e-8772-9557ee50b609",
"name": "LATENT",
"type": "LATENT",
"linkIds": [
2
],
"localized_name": "LATENT",
"pos": {
"0": 918.2780151367188,
"1": 507
}
},
{
"id": "47fa906e-d80b-45c3-a596-211a0e59d4a1",
"name": "MODEL",
"type": "MODEL",
"linkIds": [
1
],
"localized_name": "MODEL",
"pos": {
"0": 918.2780151367188,
"1": 527
}
},
{
"id": "f03dccd7-10e8-4513-9994-15854a92d192",
"name": "CLIP",
"type": "CLIP",
"linkIds": [
3
],
"localized_name": "CLIP",
"pos": {
"0": 918.2780151367188,
"1": 547
}
},
{
"id": "a666877f-e34f-49bc-8a78-b26156656b83",
"name": "VAE",
"type": "VAE",
"linkIds": [
8
],
"localized_name": "VAE",
"pos": {
"0": 918.2780151367188,
"1": 567
}
}
],
"widgets": [],
"nodes": [
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
413,
389
],
"size": [
425.27801513671875,
180.6060791015625
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 5
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"text, watermark"
]
},
{
"id": 5,
"type": "EmptyLatentImage",
"pos": [
473,
609
],
"size": [
315,
106
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
2
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
512,
512,
1
]
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
26,
474
],
"size": [
315,
98
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "MODEL",
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
1
]
},
{
"localized_name": "CLIP",
"name": "CLIP",
"type": "CLIP",
"slot_index": 1,
"links": [
3,
5
]
},
{
"localized_name": "VAE",
"name": "VAE",
"type": "VAE",
"slot_index": 2,
"links": [
8
]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"v1-5-pruned-emaonly-fp16.safetensors"
]
}
],
"groups": [],
"links": [
{
"id": 5,
"origin_id": 4,
"origin_slot": 1,
"target_id": 7,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 6,
"origin_id": 7,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 2,
"origin_id": 5,
"origin_slot": 0,
"target_id": -20,
"target_slot": 1,
"type": "LATENT"
},
{
"id": 1,
"origin_id": 4,
"origin_slot": 0,
"target_id": -20,
"target_slot": 2,
"type": "MODEL"
},
{
"id": 3,
"origin_id": 4,
"origin_slot": 1,
"target_id": -20,
"target_slot": 3,
"type": "CLIP"
},
{
"id": 8,
"origin_id": 4,
"origin_slot": 2,
"target_id": -20,
"target_slot": 4,
"type": "VAE"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"frontendVersion": "1.24.0-1"
},
"version": 0.4
}

View File

@@ -0,0 +1,36 @@
{
"id": "5635564e-189f-49e4-9b25-6b7634bcd595",
"revision": 0,
"last_node_id": 78,
"last_link_id": 53,
"nodes": [
{
"id": 78,
"type": "DevToolsNodeWithV2ComboInput",
"pos": [1320, 904],
"size": [270.3199157714844, 58],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "COMBO",
"type": "COMBO",
"links": null
}
],
"properties": {
"Node name for S&R": "DevToolsNodeWithV2ComboInput"
},
"widgets_values": ["A"]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {
"frontendVersion": "1.19.7"
},
"version": 0.4
}

View File

@@ -50,6 +50,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

View File

@@ -38,7 +38,11 @@
"groups": [],
"config": {},
"extra": {
"groupNodes": {}
"groupNodes": {},
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -54,6 +54,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -0,0 +1,104 @@
{
"last_node_id": 2,
"last_link_id": 1,
"nodes": [
{
"id": 2,
"type": "KSampler",
"pos": {
"0": 304.3653259277344,
"1": 42.15586471557617
},
"size": [
315,
262
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": null,
"shape": 3
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
8,
"euler",
"normal",
1
]
},
{
"id": 1,
"type": "PrimitiveInt",
"pos": {
"0": 14,
"1": 43
},
"size": [
203.1999969482422,
40.368401303242536
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "value",
"type": "INT",
"links": [],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "Int"
},
"widgets_values": [10]
}
],
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1,
"offset": [
0,
0
]
}
},
"version": 0.4
}

View File

@@ -0,0 +1,105 @@
{
"last_node_id": 4,
"last_link_id": 2,
"nodes": [
{
"id": 3,
"type": "EmptyLatentImage",
"pos": [
380.51641845703125,
191.39659118652344
],
"size": [
315,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "breadth",
"type": "INT",
"widget": {
"name": "breadth"
},
"link": 2
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage"
},
"widgets_values": [
512,
512,
1
]
},
{
"id": 4,
"type": "PrimitiveNode",
"pos": [
73.6164321899414,
197.9966278076172
],
"size": [
210,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "INT",
"type": "INT",
"widget": {
"name": "bredth"
},
"links": [
2
]
}
],
"title": "breadth",
"properties": {
"Run widget replace on values": false
},
"widgets_values": [
512,
"fixed"
]
}
],
"links": [
[
2,
4,
0,
3,
0,
"INT"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
},
"VHS_latentpreview": true,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": false,
"VHS_KeepIntermediate": false
},
"version": 0.4
}

View File

@@ -0,0 +1,114 @@
{
"last_node_id": 25,
"last_link_id": 33,
"nodes": [
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [160, 240],
"size": [315, 98],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": []
},
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 1,
"links": []
},
{
"name": "VAE",
"type": "VAE",
"slot_index": 2,
"links": [33]
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": ["v1-5-pruned-emaonly.safetensors"]
},
{
"id": 19,
"type": "VAEDecode",
"pos": [623.0897216796875, 324.64453125],
"size": [210, 46],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": null
},
{
"name": "vae",
"type": "VAE",
"link": 33
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": null
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
}
],
"links": [[33, 4, 2, 19, 1, "VAE"]],
"floatingLinks": [
{
"id": 6,
"origin_id": 4,
"origin_slot": 2,
"target_id": -1,
"target_slot": -1,
"type": "VAE",
"parentId": 1
}
],
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
},
"reroutes": [
{
"id": 1,
"pos": [545.4541015625, 295.85760498046875],
"linkIds": [],
"floating": {
"slotType": "output"
}
},
{
"id": 2,
"pos": [543.8283081054688, 355.45849609375],
"linkIds": [33]
}
],
"linkExtensions": [
{
"id": 33,
"parentId": 2
}
]
},
"version": 0.4
}

View File

@@ -106,10 +106,7 @@
"extra": {
"ds": {
"scale": 1,
"offset": {
"0": 0,
"1": 0
}
"offset": [0, 0]
}
},
"version": 0.4

View File

@@ -368,10 +368,10 @@
"ds": {
"scale": 1,
"offset": [
149.9747408641311,
383.8593224280729
0,
0
]
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,412 @@
{
"id": "c4a254bb-935e-4013-b380-5e36954de4b0",
"revision": 0,
"last_node_id": 11,
"last_link_id": 9,
"nodes": [
{
"id": 11,
"type": "422723e8-4bf6-438c-823f-881ca81acead",
"pos": [
791.59912109375,
386.13336181640625
],
"size": [
210,
202
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": null
}
],
"properties": {},
"widgets_values": [
"",
""
]
}
],
"links": [],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "422723e8-4bf6-438c-823f-881ca81acead",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 12,
"lastLinkId": 16,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "New Subgraph",
"inputNode": {
"id": -10,
"bounding": [
481.59912109375,
379.13336181640625,
120,
160
]
},
"outputNode": {
"id": -20,
"bounding": [
1121.59912109375,
379.13336181640625,
128.6640625,
60
]
},
"inputs": [
{
"id": "0f07c10e-5705-4764-9b24-b69606c6dbcc",
"name": "text",
"type": "STRING",
"linkIds": [
10
],
"pos": {
"0": 581.59912109375,
"1": 399.13336181640625
}
},
{
"id": "736e5a03-0f7f-4e48-93e4-fd66ea6c30f1",
"name": "text_1",
"type": "STRING",
"linkIds": [
11
],
"pos": {
"0": 581.59912109375,
"1": 419.13336181640625
}
},
{
"id": "b62e7a0b-cc7e-4ca5-a4e1-c81607a13f58",
"name": "model",
"type": "MODEL",
"linkIds": [
13
],
"pos": {
"0": 581.59912109375,
"1": 439.13336181640625
}
},
{
"id": "7a2628da-4879-4f82-a7d3-7b1c00db50a5",
"name": "positive",
"type": "CONDITIONING",
"linkIds": [
14
],
"pos": {
"0": 581.59912109375,
"1": 459.13336181640625
}
},
{
"id": "651cf4ad-e8bf-47f6-b181-8f8aeacd6669",
"name": "negative",
"type": "CONDITIONING",
"linkIds": [
15
],
"pos": {
"0": 581.59912109375,
"1": 479.13336181640625
}
},
{
"id": "c41765ea-61ef-4a77-8cc6-74113903078f",
"name": "latent_image",
"type": "LATENT",
"linkIds": [
16
],
"pos": {
"0": 581.59912109375,
"1": 499.13336181640625
}
}
],
"outputs": [
{
"id": "55dd1505-12bd-4cb4-8e75-031a97bb4387",
"name": "CONDITIONING",
"type": "CONDITIONING",
"linkIds": [
12
],
"pos": {
"0": 1141.59912109375,
"1": 399.13336181640625
}
}
],
"widgets": [],
"nodes": [
{
"id": 10,
"type": "CLIPTextEncode",
"pos": [
661.59912109375,
314.13336181640625
],
"size": [
400,
200
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": null
},
{
"localized_name": "text",
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 10
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": null
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 11,
"type": "CLIPTextEncode",
"pos": [
668.755859375,
571.7766723632812
],
"size": [
400,
200
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": null
},
{
"localized_name": "text",
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 11
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
12
]
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 12,
"type": "KSampler",
"pos": [
671.7379760742188,
1.621593713760376
],
"size": [
270,
262
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 13
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 14
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": 15
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": 16
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
8,
"euler",
"simple",
1
]
}
],
"groups": [],
"links": [
{
"id": 10,
"origin_id": -10,
"origin_slot": 0,
"target_id": 10,
"target_slot": 1,
"type": "STRING"
},
{
"id": 11,
"origin_id": -10,
"origin_slot": 1,
"target_id": 11,
"target_slot": 1,
"type": "STRING"
},
{
"id": 12,
"origin_id": 11,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 13,
"origin_id": -10,
"origin_slot": 2,
"target_id": 12,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 14,
"origin_id": -10,
"origin_slot": 3,
"target_id": 12,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 15,
"origin_id": -10,
"origin_slot": 4,
"target_id": 12,
"target_slot": 2,
"type": "CONDITIONING"
},
{
"id": 16,
"origin_id": -10,
"origin_slot": 5,
"target_id": 12,
"target_slot": 3,
"type": "LATENT"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 0.9581355200690549,
"offset": [
184.687451089395,
80.38288288288285
]
},
"frontendVersion": "1.24.1"
},
"version": 0.4
}

View File

@@ -0,0 +1,341 @@
{
"id": "c4a254bb-935e-4013-b380-5e36954de4b0",
"revision": 0,
"last_node_id": 11,
"last_link_id": 9,
"nodes": [
{
"id": 11,
"type": "422723e8-4bf6-438c-823f-881ca81acead",
"pos": [
400,
300
],
"size": [
210,
168
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": null
},
{
"name": "model",
"type": "MODEL",
"link": null
},
{
"name": "positive",
"type": "CONDITIONING",
"link": null
},
{
"name": "negative",
"type": "CONDITIONING",
"link": null
},
{
"name": "latent_image",
"type": "LATENT",
"link": null
}
],
"outputs": [],
"properties": {},
"widgets_values": [
""
]
}
],
"links": [],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "422723e8-4bf6-438c-823f-881ca81acead",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 11,
"lastLinkId": 15,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "New Subgraph",
"inputNode": {
"id": -10,
"bounding": [
481.59912109375,
379.13336181640625,
120,
160
]
},
"outputNode": {
"id": -20,
"bounding": [
1121.59912109375,
379.13336181640625,
120,
40
]
},
"inputs": [
{
"id": "0f07c10e-5705-4764-9b24-b69606c6dbcc",
"name": "text",
"type": "STRING",
"linkIds": [
10
],
"pos": {
"0": 581.59912109375,
"1": 399.13336181640625
}
},
{
"id": "214a5060-24dd-4299-ab78-8027dc5b9c59",
"name": "clip",
"type": "CLIP",
"linkIds": [
11
],
"pos": {
"0": 581.59912109375,
"1": 419.13336181640625
}
},
{
"id": "8ab94c5d-e7df-433c-9177-482a32340552",
"name": "model",
"type": "MODEL",
"linkIds": [
12
],
"pos": {
"0": 581.59912109375,
"1": 439.13336181640625
}
},
{
"id": "8a4cd719-8c67-473b-9b44-ac0582d02641",
"name": "positive",
"type": "CONDITIONING",
"linkIds": [
13
],
"pos": {
"0": 581.59912109375,
"1": 459.13336181640625
}
},
{
"id": "a78d6b3a-ad40-4300-b0a5-2cdbdb8dc135",
"name": "negative",
"type": "CONDITIONING",
"linkIds": [
14
],
"pos": {
"0": 581.59912109375,
"1": 479.13336181640625
}
},
{
"id": "4c7abe0c-902d-49ef-a5b0-cbf02b50b693",
"name": "latent_image",
"type": "LATENT",
"linkIds": [
15
],
"pos": {
"0": 581.59912109375,
"1": 499.13336181640625
}
}
],
"outputs": [],
"widgets": [],
"nodes": [
{
"id": 10,
"type": "CLIPTextEncode",
"pos": [
661.59912109375,
314.13336181640625
],
"size": [
400,
200
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 11
},
{
"localized_name": "text",
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 10
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": null
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 11,
"type": "KSampler",
"pos": [
674.1234741210938,
570.5839233398438
],
"size": [
270,
262
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 12
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 13
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": 14
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": 15
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
8,
"euler",
"simple",
1
]
}
],
"groups": [],
"links": [
{
"id": 10,
"origin_id": -10,
"origin_slot": 0,
"target_id": 10,
"target_slot": 1,
"type": "STRING"
},
{
"id": 11,
"origin_id": -10,
"origin_slot": 1,
"target_id": 10,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 12,
"origin_id": -10,
"origin_slot": 2,
"target_id": 11,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 13,
"origin_id": -10,
"origin_slot": 3,
"target_id": 11,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 14,
"origin_id": -10,
"origin_slot": 4,
"target_id": 11,
"target_slot": 2,
"type": "CONDITIONING"
},
{
"id": 15,
"origin_id": -10,
"origin_slot": 5,
"target_id": 11,
"target_slot": 3,
"type": "LATENT"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 0.9581355200690549,
"offset": [
258.6405769416877,
147.17927927927929
]
},
"frontendVersion": "1.24.1"
},
"version": 0.4
}

View File

@@ -0,0 +1,153 @@
{
"id": "c4a254bb-935e-4013-b380-5e36954de4b0",
"revision": 0,
"last_node_id": 11,
"last_link_id": 9,
"nodes": [
{
"id": 11,
"type": "422723e8-4bf6-438c-823f-881ca81acead",
"pos": [
791.59912109375,
386.13336181640625
],
"size": [
140,
26
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": null
}
],
"outputs": [],
"properties": {},
"widgets_values": []
}
],
"links": [],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "422723e8-4bf6-438c-823f-881ca81acead",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 10,
"lastLinkId": 10,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "New Subgraph",
"inputNode": {
"id": -10,
"bounding": [
481.59912109375,
379.13336181640625,
120,
60
]
},
"outputNode": {
"id": -20,
"bounding": [
1121.59912109375,
379.13336181640625,
120,
40
]
},
"inputs": [
{
"id": "79e69fca-ad12-499b-8d9b-9f1656b85354",
"name": "clip",
"type": "CLIP",
"linkIds": [
10
],
"pos": {
"0": 581.59912109375,
"1": 399.13336181640625
}
}
],
"outputs": [],
"widgets": [],
"nodes": [
{
"id": 10,
"type": "CLIPTextEncode",
"pos": [
661.59912109375,
314.13336181640625
],
"size": [
400,
200
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 10
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": null
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
}
],
"groups": [],
"links": [
{
"id": 10,
"origin_id": -10,
"origin_slot": 0,
"target_id": 10,
"target_slot": 0,
"type": "CLIP"
}
],
"extra": {}
}
]
},
"config": {},
"extra": {
"frontendVersion": "1.24.1",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true,
"ds": {
"scale": 0.9581355200690549,
"offset": [
258.6405769416877,
147.17927927927929
]
}
},
"version": 0.4
}

View File

@@ -31,5 +31,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,11 @@
{
"8": {
"inputs": {
"image": "animated_web.webp"
},
"class_type": "DevToolsLoadAnimatedImageTest",
"_meta": {
"title": "Load Animated Image"
}
}
}

View File

@@ -27,6 +27,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

View File

@@ -41,6 +41,11 @@
"links": [],
"groups": [],
"config": {},
"extra": {},
"extra": {
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}
}

View File

@@ -0,0 +1,64 @@
{
"id": "3f1fcbf9-f9de-4935-8fad-401813f61b13",
"revision": 0,
"last_node_id": 10,
"last_link_id": 4,
"nodes": [
{
"id": 9,
"type": "SaveAnimatedWEBP",
"pos": [336, 104],
"size": [210, 368],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 4
}
],
"outputs": [],
"properties": {},
"widgets_values": ["ComfyUI", 6, true, 80, "default"]
},
{
"id": 10,
"type": "DevToolsLoadAnimatedImageTest",
"pos": [64, 104],
"size": [210, 316],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [4]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "DevToolsLoadAnimatedImageTest"
},
"widgets_values": ["animated_web.webp", "image"]
}
],
"links": [[4, 10, 0, 9, 0, "IMAGE"]],
"groups": [],
"config": {},
"extra": {
"frontendVersion": "1.17.0",
"ds": {
"offset": [0, 0],
"scale": 1
}
},
"version": 0.4
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

Some files were not shown because too many files have changed in this diff Show More