Skip to content
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
eca48a8
[docs] Add Vue node system architecture and implementation plans
christian-byrne Jun 25, 2025
0ec98e3
[feat] Add slot type color definitions
christian-byrne Jun 25, 2025
a041f40
[feat] Implement Vue-based node rendering components
christian-byrne Jun 25, 2025
065e292
[feat] Add TransformPane for Vue node coordinate synchronization
christian-byrne Jun 30, 2025
992d79b
[feat] Vue node lifecycle management implementation
christian-byrne Jul 2, 2025
3dc7686
[feat] Add widget renderer composable
christian-byrne Jul 2, 2025
95c291d
[fix] Fix WidgetSelect component for combo widgets
christian-byrne Jul 2, 2025
6bbd285
[feat] Update NodeWidgets to use safe widget data
christian-byrne Jul 2, 2025
39603dd
[feat] Update Vue node components with proper typing
christian-byrne Jul 2, 2025
04e9a79
[feat] Update GraphCanvas with VueNodeData typing
christian-byrne Jul 2, 2025
222a52d
[feat] Add feature flags and utility updates
christian-byrne Jul 2, 2025
124db59
[feat] Implement callback-driven widget updates
christian-byrne Jul 3, 2025
cd3296f
[feat] Add viewport debug overlay for TransformPane
christian-byrne Jul 3, 2025
122170f
[fix] Fix widget value synchronization between Vue and LiteGraph
christian-byrne Jul 4, 2025
0de3b8a
[feat] Add QuadTree spatial data structure for node indexing
christian-byrne Jul 4, 2025
a23d8be
[feat] Add Vue-based node rendering system with widget support
christian-byrne Jul 5, 2025
c3023e4
[fix] Remove FPS tracking to prevent memory leaks
christian-byrne Jul 5, 2025
cdd940e
[fix] Add proper cleanup for nodeManager to prevent memory leaks
christian-byrne Jul 5, 2025
95ab702
[test] Add test helper utilities for Vue node system testing
christian-byrne Jul 5, 2025
a58a354
[test] Add comprehensive tests for transform and spatial composables
christian-byrne Jul 5, 2025
32ddf72
[test] Add TransformPane component tests
christian-byrne Jul 5, 2025
c246326
[test] Add performance tests for transform operations
christian-byrne Jul 5, 2025
71c3c72
[feat] Implement LOD (Level of Detail) system for Vue nodes
christian-byrne Jul 5, 2025
290906e
[refactor] Improve type safety across Vue node widget system
christian-byrne Jul 5, 2025
5cb9ba1
[feat] Add CSS LOD classes for Vue node rendering optimization
christian-byrne Jul 5, 2025
d6315a1
[feat] Add debug type definitions for spatial indexing system
christian-byrne Jul 5, 2025
7d7dc09
[perf] Optimize TransformPane interaction tracking for better perform…
christian-byrne Jul 5, 2025
d29ce21
[refactor] Remove unused variables in GraphCanvas to fix TypeScript w…
christian-byrne Jul 5, 2025
57b09da
[test] Add missing useWidgetValue import in test file
christian-byrne Jul 5, 2025
18854d7
[cleanup] Remove temporary documentation and planning files
christian-byrne Jul 5, 2025
555e806
[perf] Optimize widget rendering performance
christian-byrne Jul 6, 2025
9a93764
[refactor] Extract canvas transform sync to dedicated composables
christian-byrne Jul 6, 2025
4304bb3
[test] Relocate and update test files
christian-byrne Jul 6, 2025
30728c1
[cleanup] Remove unused viewport culling settings and variables
christian-byrne Jul 6, 2025
32c8d0c
[refactor] Move QuadTreeBenchmark to test directory
christian-byrne Jul 6, 2025
1098d3b
[feat] Enhanced LOD system with component-driven approach (#4371)
christian-byrne Jul 7, 2025
108e54c
[perf] Global CSS optimizations for LOD system (#4379)
christian-byrne Jul 8, 2025
c6422da
Vue Node Body (#4387)
benceruleanlu Aug 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions src/assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -637,3 +637,95 @@ audio.comfy-audio.empty-audio-widget {
width: calc(100vw - env(titlebar-area-width, 100vw));
}
/* End of [Desktop] Electron window specific styles */

/* Vue Node LOD (Level of Detail) System */
/* These classes control rendering detail based on zoom level */

/* Minimal LOD (zoom <= 0.4) - Title only for performance */
.lg-node--lod-minimal {
min-height: 32px;
transition: min-height 0.2s ease;
}

.lg-node--lod-minimal .lg-node-body {
display: none !important;
}

/* Reduced LOD (0.4 < zoom <= 0.8) - Essential widgets, simplified styling */
.lg-node--lod-reduced {
transition: opacity 0.1s ease;
}

.lg-node--lod-reduced .lg-widget-label,
.lg-node--lod-reduced .lg-slot-label {
display: none;
}

.lg-node--lod-reduced .lg-slot {
opacity: 0.6;
font-size: 0.75rem;
}

.lg-node--lod-reduced .lg-widget {
margin: 2px 0;
font-size: 0.875rem;
}

/* Full LOD (zoom > 0.8) - Complete detail rendering */
.lg-node--lod-full {
/* Uses default styling - no overrides needed */
}

/* Smooth transitions between LOD levels */
.lg-node {
transition: min-height 0.2s ease;
/* Disable text selection on all nodes */
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
Comment on lines +872 to +874
Copy link
Contributor Author

Choose a reason for hiding this comment

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

When the text is selectable, it always gets accidentally selected when trying to navigate with mouse drag.

}

.lg-node .lg-slot,
.lg-node .lg-widget {
transition: opacity 0.1s ease, font-size 0.1s ease;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Other systems will animate when crossing LOD thresholds but it causes layerization. I feel it's not worth it.

}

/* LOD (Level of Detail) CSS classes for Vue nodes */

/* Full detail - zoom > 0.8 */
.lg-node--lod-full {
/* All elements visible, full interactivity */
}

/* Reduced detail - 0.4 < zoom <= 0.8 */
.lg-node--lod-reduced {
/* Simplified rendering, essential widgets only */
}

.lg-node--lod-reduced .lg-node-header {
font-size: 0.875rem; /* Slightly smaller text */
}

.lg-node--lod-reduced .lg-node-widgets {
/* Only essential widgets shown */
}

.lg-node--lod-reduced .text-xs {
font-size: 0.625rem; /* Even smaller auxiliary text */
}

/* Minimal detail - zoom <= 0.4 */
.lg-node--lod-minimal {
/* Only header visible, no body content */
min-height: auto !important;
}

.lg-node--lod-minimal .lg-node-header {
font-size: 0.75rem; /* Smaller header text */
padding: 0.25rem 0.5rem; /* Reduced padding */
}

.lg-node--lod-minimal .lg-node-header__control {
display: none; /* Hide controls at minimal zoom */
}
Loading