Commit Graph

3271 Commits

Author SHA1 Message Date
Benjamin Lu
027f0e6437 Revert "Totally not scuffed renderer and adapter"
This reverts commit 2b9d83efb8.
2025-08-14 21:39:27 -04:00
Benjamin Lu
2b9d83efb8 Totally not scuffed renderer and adapter 2025-08-14 21:33:34 -04:00
Benjamin Lu
18f78ff786 Remove slots from layoutTypes 2025-08-14 16:03:16 -04:00
Benjamin Lu
236fecb549 Revert "Add node slots to layout tree"
This reverts commit 460493a620.
2025-08-14 13:14:50 -04:00
Benjamin Lu
460493a620 Add node slots to layout tree 2025-08-14 12:22:10 -04:00
bymyself
b09419c4d5 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>
2025-08-13 01:59:18 -07:00
bymyself
4ea9ec9e4b 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>
2025-08-13 01:38:09 -07:00
bymyself
ca43f90c93 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>
2025-08-13 01:09:34 -07:00
bymyself
a8dbe05749 style: Apply linter fixes to layout system 2025-08-13 00:28:25 -07:00
bymyself
43d9678e68 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>
2025-08-13 00:26:00 -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
3f290e2cbd [feat] Limit release notifications to desktop app only (#4788) 2025-08-06 12:00:52 -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
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
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
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
797616c455 Fix some pathings 2025-08-04 14:52:42 -04:00
Benjamin Lu
264663363a Fix css path 2025-08-04 14:50:28 -04:00
Benjamin Lu
7f849e9a44 Update remaining @comfyorg/litegraph references 2025-08-04 10:16:24 -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