fix: sanitize null/NaN widget values when loading workflows#11884
fix: sanitize null/NaN widget values when loading workflows#11884kaili-yang wants to merge 3 commits intomainfrom
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds sanitization in LGraphNode.configure(): numeric-like widgets ( ChangesWidget Value Sanitization in Node Configuration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
Caution Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional.
❌ Failed checks (1 error, 1 warning)
✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 6/8 reviews remaining, refill in 8 minutes and 49 seconds.Comment |
🎭 Playwright: ✅ 1461 passed, 0 failed · 3 flaky📊 Browser Reports
|
🎨 Storybook: ✅ Built — View Storybook |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 5013d81. Configure here.
📦 Bundle: 5.26 MB gzip 🟢 -2.06 kBDetailsSummary
Category Glance App Entry Points — 22.6 kB (baseline 22.6 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.24 MB (baseline 1.24 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 81.8 kB (baseline 81.8 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed / 2 unchanged Panels & Settings — 489 kB (baseline 489 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed / 11 unchanged User & Accounts — 17.5 kB (baseline 17.5 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 5 added / 5 removed / 2 unchanged Editors & Dialogs — 112 kB (baseline 112 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 4 added / 4 removed UI Components — 62.9 kB (baseline 62.9 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed / 9 unchanged Data & Services — 3.04 MB (baseline 3.05 MB) • 🟢 -8.93 kBStores, services, APIs, and repositories
Status: 13 added / 13 removed / 4 unchanged Utilities & Hooks — 365 kB (baseline 365 kB) • ⚪ 0 BHelpers, composables, and utility bundles
Status: 13 added / 13 removed / 18 unchanged Vendor & Third-Party — 9.94 MB (baseline 9.94 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 8.84 MB (baseline 8.84 MB) • ⚪ 0 BBundles that do not match a named category
Status: 57 added / 57 removed / 78 unchanged ⚡ Performance Report
No regressions detected. All metrics
Historical variance (last 15 runs)
Trend (last 15 commits on main)
Raw data{
"timestamp": "2026-05-04T04:32:30.380Z",
"gitSha": "06139fe84c4a4ef26bfbb38597c210eabd84bc1f",
"branch": "fix/sanitize-nan-widget-values",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2033.7770000000432,
"styleRecalcs": 8,
"styleRecalcDurationMs": 6.637999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 340.23199999999997,
"heapDeltaBytes": 23454480,
"heapUsedBytes": 71746548,
"domNodes": 16,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 15.099,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-idle",
"durationMs": 2019.535000000019,
"styleRecalcs": 8,
"styleRecalcDurationMs": 8.500999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 324.65199999999993,
"heapDeltaBytes": 22785888,
"heapUsedBytes": 72201160,
"domNodes": 16,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 16.1,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "canvas-idle",
"durationMs": 2036.848999999961,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.411999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 350.919,
"heapDeltaBytes": 1514628,
"heapUsedBytes": 66988496,
"domNodes": 20,
"jsHeapTotalBytes": 19755008,
"scriptDurationMs": 24.403,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1940.041000000008,
"styleRecalcs": 77,
"styleRecalcDurationMs": 42.270999999999994,
"layouts": 12,
"layoutDurationMs": 4.041,
"taskDurationMs": 854.9279999999999,
"heapDeltaBytes": 4616844,
"heapUsedBytes": 52652044,
"domNodes": -268,
"jsHeapTotalBytes": 15069184,
"scriptDurationMs": 126.65100000000001,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1837.135000000103,
"styleRecalcs": 73,
"styleRecalcDurationMs": 38.062,
"layouts": 12,
"layoutDurationMs": 3.437,
"taskDurationMs": 780.661,
"heapDeltaBytes": -1192600,
"heapUsedBytes": 47234344,
"domNodes": -263,
"jsHeapTotalBytes": 15593472,
"scriptDurationMs": 124.844,
"eventListeners": -133,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1821.7359999999871,
"styleRecalcs": 75,
"styleRecalcDurationMs": 39.32899999999999,
"layouts": 12,
"layoutDurationMs": 3.678,
"taskDurationMs": 744.546,
"heapDeltaBytes": -3185236,
"heapUsedBytes": 62347856,
"domNodes": 58,
"jsHeapTotalBytes": 21065728,
"scriptDurationMs": 128.927,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1714.1039999999634,
"styleRecalcs": 30,
"styleRecalcDurationMs": 15.347,
"layouts": 6,
"layoutDurationMs": 0.6629999999999999,
"taskDurationMs": 273.324,
"heapDeltaBytes": 135004,
"heapUsedBytes": 48797392,
"domNodes": 75,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 16.30700000000001,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1730.0900000000183,
"styleRecalcs": 31,
"styleRecalcDurationMs": 17.310000000000002,
"layouts": 6,
"layoutDurationMs": 0.667,
"taskDurationMs": 300.088,
"heapDeltaBytes": 166152,
"heapUsedBytes": 48533276,
"domNodes": 75,
"jsHeapTotalBytes": 14417920,
"scriptDurationMs": 19.903,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1717.649999999935,
"styleRecalcs": 31,
"styleRecalcDurationMs": 16.284000000000002,
"layouts": 6,
"layoutDurationMs": 0.5810000000000002,
"taskDurationMs": 273.248,
"heapDeltaBytes": 87584,
"heapUsedBytes": 48864280,
"domNodes": 75,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 18.334,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 500.95199999998385,
"styleRecalcs": 10,
"styleRecalcDurationMs": 6.804000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 316.839,
"heapDeltaBytes": 8785428,
"heapUsedBytes": 57272596,
"domNodes": 16,
"jsHeapTotalBytes": 15990784,
"scriptDurationMs": 57.343,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666682,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "dom-widget-clipping",
"durationMs": 540.2480000000196,
"styleRecalcs": 11,
"styleRecalcDurationMs": 8.311,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 323.396,
"heapDeltaBytes": 8797852,
"heapUsedBytes": 57172684,
"domNodes": 18,
"jsHeapTotalBytes": 15728640,
"scriptDurationMs": 56.45799999999999,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "dom-widget-clipping",
"durationMs": 535.8189999999468,
"styleRecalcs": 11,
"styleRecalcDurationMs": 7.563999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 312.43,
"heapDeltaBytes": 9065044,
"heapUsedBytes": 57410916,
"domNodes": 18,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 56.562,
"eventListeners": 0,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.799999999999727
},
{
"name": "large-graph-idle",
"durationMs": 2028.6060000000248,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.075000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 499.905,
"heapDeltaBytes": 3101116,
"heapUsedBytes": 61658960,
"domNodes": -264,
"jsHeapTotalBytes": 552960,
"scriptDurationMs": 86.418,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "large-graph-idle",
"durationMs": 2029.5350000000099,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.645000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 531.748,
"heapDeltaBytes": 3457420,
"heapUsedBytes": 60414936,
"domNodes": -262,
"jsHeapTotalBytes": 5009408,
"scriptDurationMs": 90.99499999999999,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "large-graph-idle",
"durationMs": 2014.2740000000003,
"styleRecalcs": 8,
"styleRecalcDurationMs": 7.140000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 511.447,
"heapDeltaBytes": 11523884,
"heapUsedBytes": 70198692,
"domNodes": -266,
"jsHeapTotalBytes": 290816,
"scriptDurationMs": 86.506,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2132.7850000000126,
"styleRecalcs": 68,
"styleRecalcDurationMs": 17.183000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1048.769,
"heapDeltaBytes": -5794528,
"heapUsedBytes": 53445928,
"domNodes": -265,
"jsHeapTotalBytes": 5795840,
"scriptDurationMs": 383.431,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-pan",
"durationMs": 2106.6619999999148,
"styleRecalcs": 67,
"styleRecalcDurationMs": 16.366999999999997,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1052.913,
"heapDeltaBytes": 507244,
"heapUsedBytes": 59715176,
"domNodes": -266,
"jsHeapTotalBytes": 757760,
"scriptDurationMs": 379.454,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-pan",
"durationMs": 2114.2429999999877,
"styleRecalcs": 68,
"styleRecalcDurationMs": 16.977,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 1025.568,
"heapDeltaBytes": 2456584,
"heapUsedBytes": 61755504,
"domNodes": -263,
"jsHeapTotalBytes": 757760,
"scriptDurationMs": 380.68500000000006,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "large-graph-zoom",
"durationMs": 3132.7720000000454,
"styleRecalcs": 66,
"styleRecalcDurationMs": 18.553,
"layouts": 60,
"layoutDurationMs": 6.963,
"taskDurationMs": 1312.336,
"heapDeltaBytes": 6413732,
"heapUsedBytes": 67303032,
"domNodes": -266,
"jsHeapTotalBytes": 6582272,
"scriptDurationMs": 492.71999999999997,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3115.385999999944,
"styleRecalcs": 64,
"styleRecalcDurationMs": 16.830000000000002,
"layouts": 60,
"layoutDurationMs": 7.170000000000001,
"taskDurationMs": 1280.635,
"heapDeltaBytes": 12188732,
"heapUsedBytes": 73071932,
"domNodes": -268,
"jsHeapTotalBytes": 815104,
"scriptDurationMs": 479.22099999999995,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "large-graph-zoom",
"durationMs": 3130.3230000000895,
"styleRecalcs": 65,
"styleRecalcDurationMs": 17.579000000000004,
"layouts": 60,
"layoutDurationMs": 7.0889999999999995,
"taskDurationMs": 1275.799,
"heapDeltaBytes": 8520688,
"heapUsedBytes": 69230796,
"domNodes": -269,
"jsHeapTotalBytes": 4222976,
"scriptDurationMs": 475.74899999999997,
"eventListeners": -125,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "minimap-idle",
"durationMs": 2041.8650000000298,
"styleRecalcs": 8,
"styleRecalcDurationMs": 6.943999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 507.39,
"heapDeltaBytes": 2903012,
"heapUsedBytes": 63563560,
"domNodes": -266,
"jsHeapTotalBytes": 4747264,
"scriptDurationMs": 86.51,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "minimap-idle",
"durationMs": 2048.2500000000528,
"styleRecalcs": 8,
"styleRecalcDurationMs": 11.670000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 555.792,
"heapDeltaBytes": 2945848,
"heapUsedBytes": 63231700,
"domNodes": -266,
"jsHeapTotalBytes": 552960,
"scriptDurationMs": 95.81800000000001,
"eventListeners": -127,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333335,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "minimap-idle",
"durationMs": 2048.1230000000323,
"styleRecalcs": 8,
"styleRecalcDurationMs": 10.798000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 515.8990000000001,
"heapDeltaBytes": 15540200,
"heapUsedBytes": 75728452,
"domNodes": -259,
"jsHeapTotalBytes": -1019904,
"scriptDurationMs": 90.21600000000002,
"eventListeners": -129,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 519.3439999999896,
"styleRecalcs": 48,
"styleRecalcDurationMs": 11.401000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 343.612,
"heapDeltaBytes": 9456220,
"heapUsedBytes": 57520048,
"domNodes": 21,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 122.337,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 549.9899999999798,
"styleRecalcs": 45,
"styleRecalcDurationMs": 10.554,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.9560000000001,
"heapDeltaBytes": 9150588,
"heapUsedBytes": 57775192,
"domNodes": 16,
"jsHeapTotalBytes": 15728640,
"scriptDurationMs": 121.145,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 563.4249999999383,
"styleRecalcs": 46,
"styleRecalcDurationMs": 13.841,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 354.799,
"heapDeltaBytes": 9045512,
"heapUsedBytes": 57915376,
"domNodes": 18,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 125.03,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "subgraph-idle",
"durationMs": 2002.6309999999512,
"styleRecalcs": 9,
"styleRecalcDurationMs": 7.418000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 314.852,
"heapDeltaBytes": 22556336,
"heapUsedBytes": 71269996,
"domNodes": 18,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 12.322999999999999,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-idle",
"durationMs": 1989.373999999998,
"styleRecalcs": 9,
"styleRecalcDurationMs": 8.047000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 322.69499999999994,
"heapDeltaBytes": 22326064,
"heapUsedBytes": 71016140,
"domNodes": 17,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 13.346000000000002,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.699999999999818
},
{
"name": "subgraph-idle",
"durationMs": 2002.6530000000093,
"styleRecalcs": 9,
"styleRecalcDurationMs": 7.115999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 322.382,
"heapDeltaBytes": 22293688,
"heapUsedBytes": 70604176,
"domNodes": 18,
"jsHeapTotalBytes": 15204352,
"scriptDurationMs": 12.197,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1672.042000000033,
"styleRecalcs": 75,
"styleRecalcDurationMs": 33.571999999999996,
"layouts": 16,
"layoutDurationMs": 4.002000000000001,
"taskDurationMs": 670.819,
"heapDeltaBytes": -1972788,
"heapUsedBytes": 46659704,
"domNodes": -261,
"jsHeapTotalBytes": 14544896,
"scriptDurationMs": 88.364,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333332,
"p95FrameDurationMs": 16.800000000000182
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1711.8390000000545,
"styleRecalcs": 74,
"styleRecalcDurationMs": 35.479,
"layouts": 16,
"layoutDurationMs": 4.029999999999999,
"taskDurationMs": 658.234,
"heapDeltaBytes": 14316056,
"heapUsedBytes": 62912520,
"domNodes": 61,
"jsHeapTotalBytes": 14942208,
"scriptDurationMs": 89.542,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1705.5410000000393,
"styleRecalcs": 75,
"styleRecalcDurationMs": 36.79,
"layouts": 16,
"layoutDurationMs": 4.556,
"taskDurationMs": 692.001,
"heapDeltaBytes": -325100,
"heapUsedBytes": 48397424,
"domNodes": -262,
"jsHeapTotalBytes": 15331328,
"scriptDurationMs": 90.532,
"eventListeners": -131,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8193.564999999979,
"styleRecalcs": 250,
"styleRecalcDurationMs": 49.64600000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3538.766,
"heapDeltaBytes": 10292772,
"heapUsedBytes": 68410460,
"domNodes": -263,
"jsHeapTotalBytes": 2068480,
"scriptDurationMs": 1244.178,
"eventListeners": -113,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "viewport-pan-sweep",
"durationMs": 8162.4910000000455,
"styleRecalcs": 249,
"styleRecalcDurationMs": 51.794000000000004,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3867.725,
"heapDeltaBytes": 24043592,
"heapUsedBytes": 82307972,
"domNodes": -259,
"jsHeapTotalBytes": 2854912,
"scriptDurationMs": 1272.2169999999999,
"eventListeners": -113,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "viewport-pan-sweep",
"durationMs": 8172.626000000037,
"styleRecalcs": 251,
"styleRecalcDurationMs": 51.98,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 3566.42,
"heapDeltaBytes": 10799480,
"heapUsedBytes": 67606596,
"domNodes": -260,
"jsHeapTotalBytes": 6262784,
"scriptDurationMs": 1250.983,
"eventListeners": -113,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-idle",
"durationMs": 11221.625000000018,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11209.247000000001,
"heapDeltaBytes": -31903664,
"heapUsedBytes": 179504676,
"domNodes": -8331,
"jsHeapTotalBytes": 17887232,
"scriptDurationMs": 575.3950000000001,
"eventListeners": -16466,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.219999999999953,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-idle",
"durationMs": 12308.074999999917,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12292.521999999999,
"heapDeltaBytes": -47091924,
"heapUsedBytes": 150365972,
"domNodes": -8331,
"jsHeapTotalBytes": 11857920,
"scriptDurationMs": 619.407,
"eventListeners": -16464,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.333333333333332,
"p95FrameDurationMs": 33.400000000001455
},
{
"name": "vue-large-graph-idle",
"durationMs": 11078.196000000047,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11064.847,
"heapDeltaBytes": -32681532,
"heapUsedBytes": 171425008,
"domNodes": -8331,
"jsHeapTotalBytes": 23916544,
"scriptDurationMs": 544.501,
"eventListeners": -16466,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66333333333338,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 14194.64199999993,
"styleRecalcs": 68,
"styleRecalcDurationMs": 16.323000000000032,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14169.643,
"heapDeltaBytes": -41362992,
"heapUsedBytes": 163258808,
"domNodes": -8331,
"jsHeapTotalBytes": -4132864,
"scriptDurationMs": 892.458,
"eventListeners": -16486,
"totalBlockingTimeMs": 40,
"frameDurationMs": 17.223333333333358,
"p95FrameDurationMs": 16.700000000000728
},
{
"name": "vue-large-graph-pan",
"durationMs": 14007.036999999968,
"styleRecalcs": 64,
"styleRecalcDurationMs": 15.703999999999995,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 13986.196,
"heapDeltaBytes": -24962568,
"heapUsedBytes": 170277804,
"domNodes": -8331,
"jsHeapTotalBytes": 26013696,
"scriptDurationMs": 882.9759999999999,
"eventListeners": -16464,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.220000000000073,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "vue-large-graph-pan",
"durationMs": 14078.890000000001,
"styleRecalcs": 66,
"styleRecalcDurationMs": 15.639999999999986,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14061.927000000001,
"heapDeltaBytes": -32284092,
"heapUsedBytes": 165351312,
"domNodes": -8329,
"jsHeapTotalBytes": -5005312,
"scriptDurationMs": 884.2,
"eventListeners": -16460,
"totalBlockingTimeMs": 0,
"frameDurationMs": 17.779999999999927,
"p95FrameDurationMs": 16.799999999999272
},
{
"name": "workflow-execution",
"durationMs": 463.72699999994893,
"styleRecalcs": 19,
"styleRecalcDurationMs": 29.497000000000003,
"layouts": 6,
"layoutDurationMs": 1.828,
"taskDurationMs": 138.179,
"heapDeltaBytes": 5415664,
"heapUsedBytes": 55309460,
"domNodes": 168,
"jsHeapTotalBytes": 524288,
"scriptDurationMs": 27.867,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 460.474999999974,
"styleRecalcs": 16,
"styleRecalcDurationMs": 22.163000000000004,
"layouts": 5,
"layoutDurationMs": 1.2209999999999999,
"taskDurationMs": 116.35700000000001,
"heapDeltaBytes": 5013624,
"heapUsedBytes": 56124600,
"domNodes": 155,
"jsHeapTotalBytes": 262144,
"scriptDurationMs": 24.081,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.666666666666668,
"p95FrameDurationMs": 16.700000000000273
},
{
"name": "workflow-execution",
"durationMs": 456.88799999993535,
"styleRecalcs": 15,
"styleRecalcDurationMs": 21.507,
"layouts": 5,
"layoutDurationMs": 1.386,
"taskDurationMs": 110.571,
"heapDeltaBytes": 5024124,
"heapUsedBytes": 56207872,
"domNodes": 155,
"jsHeapTotalBytes": 524288,
"scriptDurationMs": 22.908000000000005,
"eventListeners": 69,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.663333333333338,
"p95FrameDurationMs": 16.700000000000273
}
]
} |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #11884 +/- ##
===========================================
- Coverage 71.44% 55.96% -15.49%
===========================================
Files 1492 1383 -109
Lines 86361 70622 -15739
Branches 24117 19669 -4448
===========================================
- Hits 61703 39524 -22179
- Misses 23763 30571 +6808
+ Partials 895 527 -368
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|

Summary
When a workflow JSON contains
nullinwidgets_valuesfor a numeric widget (which happens when a widget's value isNaNand gets JSON-serialized —JSON.stringify(NaN) === "null"), the value was directly assigned to the widget without any sanitization.With
control_after_generateset tofixed, thenullvalue is preserved throughgraphToPromptand sent to the backend asnull, causing:Root cause:
LGraphNode.configure(LGraphNode.ts:922) had no guard againstnull/NaNinwidgets_valuesfor numeric widget types.Fix: In the configure loop, skip the assignment when the incoming value is
null/undefined/NaNand the widget is a numeric type (number,slider,knob). The widget retains its initial default value instead.Red-Green Verification
test: add failing tests for null/NaN numeric widget value sanitization on configurefix: sanitize null/NaN widget values when loading workflowsTest Plan
before


after
Note
Medium Risk
Touches workflow/node deserialization: numeric widget values from
widgets_valuesare now conditionally ignored, which could change how some saved graphs load if they previously relied onnull/non-finite numbers being applied.Overview
Prevents invalid numeric widget values from being applied when loading a node from serialized data:
LGraphNode.configurenow skips assigningwidgets_valuesentries that arenull,undefined, or non-finite for numeric widget types (number,slider,knob), leaving the widget’s existing default intact.Adds a focused Vitest suite covering
null(including JSON round-trippedNaN),NaN, normal numeric values, and ensuring non-numeric widgets are unaffected.Reviewed by Cursor Bugbot for commit 5013d81. Bugbot is set up for automated code reviews on this repo. Configure here.