fix: support progressive fallback for deeply nested model directories#10196
fix: support progressive fallback for deeply nested model directories#10196
Conversation
Previously, modelToNode fallback only tried exact match then top-level
segment (e.g., "a/b/c" → "a"), skipping intermediate paths. Now tries
all parent paths progressively ("a/b/c" → "a/b" → "a"), fixing custom
nodes with longer nested directory structures.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
🎭 Playwright: ✅ 636 passed, 0 failed · 3 flaky📊 Browser Reports
|
🎨 Storybook: ✅ Built — View Storybook |
📝 WalkthroughWalkthroughThe pull request changes provider resolution in Changes
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, 1 inconclusive)
✅ Passed checks (1 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
📦 Bundle: 5 MB gzip 🔴 +137 BDetailsSummary
Category Glance App Entry Points — 22.7 kB (baseline 22.7 kB) • ⚪ 0 BMain entry bundles and manifests
Status: 1 added / 1 removed Graph Workspace — 1.1 MB (baseline 1.1 MB) • ⚪ 0 BGraph editor runtime, canvas, workflow orchestration
Status: 1 added / 1 removed Views & Navigation — 75.9 kB (baseline 75.9 kB) • ⚪ 0 BTop-level views, pages, and routed surfaces
Status: 9 added / 9 removed / 2 unchanged Panels & Settings — 461 kB (baseline 461 kB) • ⚪ 0 BConfiguration panels, inspectors, and settings screens
Status: 10 added / 10 removed / 12 unchanged User & Accounts — 16.9 kB (baseline 16.9 kB) • ⚪ 0 BAuthentication, profile, and account management bundles
Status: 5 added / 5 removed / 2 unchanged Editors & Dialogs — 82 kB (baseline 82 kB) • ⚪ 0 BModals, dialogs, drawers, and in-app editors
Status: 2 added / 2 removed UI Components — 59.4 kB (baseline 59.4 kB) • ⚪ 0 BReusable component library chunks
Status: 5 added / 5 removed / 8 unchanged Data & Services — 2.91 MB (baseline 2.91 MB) • 🟢 -754 BStores, services, APIs, and repositories
Status: 14 added / 15 removed / 3 unchanged Utilities & Hooks — 322 kB (baseline 321 kB) • 🔴 +747 BHelpers, composables, and utility bundles
Status: 14 added / 13 removed / 8 unchanged Vendor & Third-Party — 9.78 MB (baseline 9.78 MB) • ⚪ 0 BExternal libraries and shared vendor chunks Status: 16 unchanged Other — 8.24 MB (baseline 8.24 MB) • ⚪ 0 BBundles that do not match a named category
Status: 53 added / 53 removed / 79 unchanged ⚡ Performance Report
All metrics
Historical variance (last 10 runs)
Trend (last 10 commits on main)
Raw data{
"timestamp": "2026-03-18T06:20:56.132Z",
"gitSha": "7b26e582552f83e222a73babaf0adf1f714f1472",
"branch": "fix/model-to-node-nested-directory-fallback",
"measurements": [
{
"name": "canvas-idle",
"durationMs": 2029.4179999999926,
"styleRecalcs": 11,
"styleRecalcDurationMs": 10.417000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 354.103,
"heapDeltaBytes": 1056432,
"domNodes": 22,
"jsHeapTotalBytes": 17301504,
"scriptDurationMs": 19.442999999999994,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "canvas-idle",
"durationMs": 2046.1950000000115,
"styleRecalcs": 10,
"styleRecalcDurationMs": 8.414000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 356.087,
"heapDeltaBytes": 1737676,
"domNodes": 20,
"jsHeapTotalBytes": 17301504,
"scriptDurationMs": 21.217,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "canvas-idle",
"durationMs": 2024.6230000000196,
"styleRecalcs": 11,
"styleRecalcDurationMs": 10.531,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 366.564,
"heapDeltaBytes": 1793528,
"domNodes": 22,
"jsHeapTotalBytes": 17563648,
"scriptDurationMs": 21.674,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "canvas-mouse-sweep",
"durationMs": 2047.6749999999981,
"styleRecalcs": 84,
"styleRecalcDurationMs": 45.815000000000005,
"layouts": 12,
"layoutDurationMs": 3.8220000000000005,
"taskDurationMs": 1015.6319999999998,
"heapDeltaBytes": -2487744,
"domNodes": 68,
"jsHeapTotalBytes": 14680064,
"scriptDurationMs": 136.127,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1826.1079999999765,
"styleRecalcs": 76,
"styleRecalcDurationMs": 36.613,
"layouts": 12,
"layoutDurationMs": 3.373,
"taskDurationMs": 726.049,
"heapDeltaBytes": -2287616,
"domNodes": 59,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 126.37,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "canvas-mouse-sweep",
"durationMs": 1948.4240000000455,
"styleRecalcs": 78,
"styleRecalcDurationMs": 39.317,
"layouts": 12,
"layoutDurationMs": 3.3359999999999994,
"taskDurationMs": 858.3720000000001,
"heapDeltaBytes": -2618312,
"domNodes": 64,
"jsHeapTotalBytes": 15204352,
"scriptDurationMs": 132.17299999999997,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1752.726999999993,
"styleRecalcs": 32,
"styleRecalcDurationMs": 17.5,
"layouts": 6,
"layoutDurationMs": 0.6050000000000001,
"taskDurationMs": 292.95000000000005,
"heapDeltaBytes": 5802020,
"domNodes": 80,
"jsHeapTotalBytes": 17563648,
"scriptDurationMs": 23.078,
"eventListeners": 19,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1756.8979999999783,
"styleRecalcs": 33,
"styleRecalcDurationMs": 21.220000000000002,
"layouts": 6,
"layoutDurationMs": 0.637,
"taskDurationMs": 317.796,
"heapDeltaBytes": 5979428,
"domNodes": 82,
"jsHeapTotalBytes": 17825792,
"scriptDurationMs": 26.936999999999998,
"eventListeners": 45,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "canvas-zoom-sweep",
"durationMs": 1739.4070000000283,
"styleRecalcs": 33,
"styleRecalcDurationMs": 17.067,
"layouts": 6,
"layoutDurationMs": 0.5690000000000001,
"taskDurationMs": 287.25800000000004,
"heapDeltaBytes": 5565764,
"domNodes": 78,
"jsHeapTotalBytes": 17301504,
"scriptDurationMs": 17.645,
"eventListeners": 21,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "dom-widget-clipping",
"durationMs": 565.3989999999851,
"styleRecalcs": 14,
"styleRecalcDurationMs": 9.392999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 334.84400000000005,
"heapDeltaBytes": 13485772,
"domNodes": 23,
"jsHeapTotalBytes": 13107200,
"scriptDurationMs": 62.769999999999996,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.65999999999999
},
{
"name": "dom-widget-clipping",
"durationMs": 576.0839999999803,
"styleRecalcs": 13,
"styleRecalcDurationMs": 10.530000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 355.981,
"heapDeltaBytes": -11882044,
"domNodes": 24,
"jsHeapTotalBytes": 23592960,
"scriptDurationMs": 66.684,
"eventListeners": 26,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.65999999999999
},
{
"name": "dom-widget-clipping",
"durationMs": 574.3069999999761,
"styleRecalcs": 13,
"styleRecalcDurationMs": 9.054999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 361.682,
"heapDeltaBytes": 11679904,
"domNodes": 22,
"jsHeapTotalBytes": 12582912,
"scriptDurationMs": 69.318,
"eventListeners": 2,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.65999999999999
},
{
"name": "large-graph-idle",
"durationMs": 1995.2810000000056,
"styleRecalcs": 12,
"styleRecalcDurationMs": 12.886999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 494.83400000000006,
"heapDeltaBytes": 11254600,
"domNodes": 27,
"jsHeapTotalBytes": 6348800,
"scriptDurationMs": 94.03299999999999,
"eventListeners": 30,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "large-graph-idle",
"durationMs": 2027.325000000019,
"styleRecalcs": 11,
"styleRecalcDurationMs": 11.193000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 479.829,
"heapDeltaBytes": -10654256,
"domNodes": 23,
"jsHeapTotalBytes": 8507392,
"scriptDurationMs": 91.741,
"eventListeners": 28,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "large-graph-idle",
"durationMs": 2007.8009999999722,
"styleRecalcs": 13,
"styleRecalcDurationMs": 12.458,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 490.199,
"heapDeltaBytes": -10582836,
"domNodes": 30,
"jsHeapTotalBytes": 8769536,
"scriptDurationMs": 87.83799999999998,
"eventListeners": 34,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "large-graph-pan",
"durationMs": 2103.9539999999874,
"styleRecalcs": 69,
"styleRecalcDurationMs": 15.323,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 989.741,
"heapDeltaBytes": 1726656,
"domNodes": 18,
"jsHeapTotalBytes": 9756672,
"scriptDurationMs": 376.157,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "large-graph-pan",
"durationMs": 2095.2670000000353,
"styleRecalcs": 69,
"styleRecalcDurationMs": 16.128,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 995.605,
"heapDeltaBytes": 1806376,
"domNodes": 18,
"jsHeapTotalBytes": 10543104,
"scriptDurationMs": 381.247,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000073
},
{
"name": "large-graph-pan",
"durationMs": 2095.3839999999673,
"styleRecalcs": 70,
"styleRecalcDurationMs": 16.302000000000003,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 993.9609999999999,
"heapDeltaBytes": 4442096,
"domNodes": 20,
"jsHeapTotalBytes": 8450048,
"scriptDurationMs": 382.77500000000003,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000073
},
{
"name": "minimap-idle",
"durationMs": 2002.6110000000017,
"styleRecalcs": 11,
"styleRecalcDurationMs": 9.122000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 466.27599999999995,
"heapDeltaBytes": -11158264,
"domNodes": 22,
"jsHeapTotalBytes": 8507392,
"scriptDurationMs": 88.348,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "minimap-idle",
"durationMs": 2007.6109999999971,
"styleRecalcs": 10,
"styleRecalcDurationMs": 9.579999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 481.872,
"heapDeltaBytes": -10792520,
"domNodes": 20,
"jsHeapTotalBytes": 8507392,
"scriptDurationMs": 94.13300000000002,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "minimap-idle",
"durationMs": 2014.4920000000184,
"styleRecalcs": 9,
"styleRecalcDurationMs": 9.031999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 473.2270000000001,
"heapDeltaBytes": -12410728,
"domNodes": 18,
"jsHeapTotalBytes": 8769536,
"scriptDurationMs": 85.77699999999999,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 562.7120000000332,
"styleRecalcs": 47,
"styleRecalcDurationMs": 10.116000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 355.496,
"heapDeltaBytes": 13416396,
"domNodes": 20,
"jsHeapTotalBytes": 13631488,
"scriptDurationMs": 121.837,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 580.1040000000057,
"styleRecalcs": 50,
"styleRecalcDurationMs": 14.037,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 353.186,
"heapDeltaBytes": 12007908,
"domNodes": 26,
"jsHeapTotalBytes": 15990784,
"scriptDurationMs": 114.782,
"eventListeners": 32,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.65999999999999
},
{
"name": "subgraph-dom-widget-clipping",
"durationMs": 584.2119999999795,
"styleRecalcs": 47,
"styleRecalcDurationMs": 11.136,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 354.784,
"heapDeltaBytes": 12170496,
"domNodes": 20,
"jsHeapTotalBytes": 17039360,
"scriptDurationMs": 122.88300000000002,
"eventListeners": 8,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000027
},
{
"name": "subgraph-idle",
"durationMs": 2021.2180000000046,
"styleRecalcs": 11,
"styleRecalcDurationMs": 10.346000000000002,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 343.933,
"heapDeltaBytes": 1238168,
"domNodes": 22,
"jsHeapTotalBytes": 13631488,
"scriptDurationMs": 17.403999999999996,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.659999999999947
},
{
"name": "subgraph-idle",
"durationMs": 2006.371999999999,
"styleRecalcs": 13,
"styleRecalcDurationMs": 11.524999999999999,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 344.277,
"heapDeltaBytes": 1731880,
"domNodes": 27,
"jsHeapTotalBytes": 17825792,
"scriptDurationMs": 16.897,
"eventListeners": 30,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "subgraph-idle",
"durationMs": 1990.244999999959,
"styleRecalcs": 11,
"styleRecalcDurationMs": 9.989999999999998,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 345.38599999999997,
"heapDeltaBytes": 1544880,
"domNodes": 22,
"jsHeapTotalBytes": 17039360,
"scriptDurationMs": 18.791000000000004,
"eventListeners": 6,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.659999999999947
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1710.4140000000143,
"styleRecalcs": 78,
"styleRecalcDurationMs": 36.863,
"layouts": 16,
"layoutDurationMs": 4.375,
"taskDurationMs": 680.5880000000001,
"heapDeltaBytes": -6436912,
"domNodes": 65,
"jsHeapTotalBytes": 16777216,
"scriptDurationMs": 98.031,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1738.5170000000016,
"styleRecalcs": 76,
"styleRecalcDurationMs": 34.56,
"layouts": 16,
"layoutDurationMs": 4.545000000000001,
"taskDurationMs": 646.9540000000001,
"heapDeltaBytes": 16111036,
"domNodes": 62,
"jsHeapTotalBytes": 15466496,
"scriptDurationMs": 93.23,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "subgraph-mouse-sweep",
"durationMs": 1716.8750000000728,
"styleRecalcs": 78,
"styleRecalcDurationMs": 37.635000000000005,
"layouts": 16,
"layoutDurationMs": 4.433,
"taskDurationMs": 658.592,
"heapDeltaBytes": -6811468,
"domNodes": 64,
"jsHeapTotalBytes": 15204352,
"scriptDurationMs": 94.449,
"eventListeners": 4,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.660000000000036
},
{
"name": "vue-large-graph-idle",
"durationMs": 11957.461000000023,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 11946.964000000002,
"heapDeltaBytes": -11362696,
"domNodes": -3336,
"jsHeapTotalBytes": 22544384,
"scriptDurationMs": 610.873,
"eventListeners": -16486,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.329999999999927
},
{
"name": "vue-large-graph-idle",
"durationMs": 12250.441000000024,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12239.613,
"heapDeltaBytes": -14174544,
"domNodes": -3333,
"jsHeapTotalBytes": 17563648,
"scriptDurationMs": 599.202,
"eventListeners": -16486,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.329999999999927
},
{
"name": "vue-large-graph-idle",
"durationMs": 12090.192000000003,
"styleRecalcs": 0,
"styleRecalcDurationMs": 0,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 12078.883999999998,
"heapDeltaBytes": -28848280,
"domNodes": -3340,
"jsHeapTotalBytes": 23068672,
"scriptDurationMs": 580.229,
"eventListeners": -16486,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.339999999999783
},
{
"name": "vue-large-graph-pan",
"durationMs": 14056.542999999976,
"styleRecalcs": 65,
"styleRecalcDurationMs": 12.419000000000013,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14034.266,
"heapDeltaBytes": -31306820,
"domNodes": -3333,
"jsHeapTotalBytes": 22458368,
"scriptDurationMs": 816.9810000000001,
"eventListeners": -16484,
"totalBlockingTimeMs": 50,
"frameDurationMs": 18.329999999999927
},
{
"name": "vue-large-graph-pan",
"durationMs": 14072.585000000003,
"styleRecalcs": 65,
"styleRecalcDurationMs": 12.629000000000001,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14053.279,
"heapDeltaBytes": -11586864,
"domNodes": -3340,
"jsHeapTotalBytes": 17215488,
"scriptDurationMs": 837.6650000000001,
"eventListeners": -16488,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.340000000000146
},
{
"name": "vue-large-graph-pan",
"durationMs": 14117.745000000014,
"styleRecalcs": 66,
"styleRecalcDurationMs": 12.512999999999996,
"layouts": 0,
"layoutDurationMs": 0,
"taskDurationMs": 14098.603000000001,
"heapDeltaBytes": -23883812,
"domNodes": -3342,
"jsHeapTotalBytes": 17739776,
"scriptDurationMs": 869.155,
"eventListeners": -16486,
"totalBlockingTimeMs": 0,
"frameDurationMs": 18.339999999999783
},
{
"name": "workflow-execution",
"durationMs": 453.8880000000063,
"styleRecalcs": 24,
"styleRecalcDurationMs": 24.528000000000002,
"layouts": 5,
"layoutDurationMs": 1.5070000000000001,
"taskDurationMs": 127.614,
"heapDeltaBytes": 4774608,
"domNodes": 192,
"jsHeapTotalBytes": 4980736,
"scriptDurationMs": 26.864,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.65999999999999
},
{
"name": "workflow-execution",
"durationMs": 440.51200000001245,
"styleRecalcs": 18,
"styleRecalcDurationMs": 22.544,
"layouts": 4,
"layoutDurationMs": 0.9889999999999999,
"taskDurationMs": 108.17899999999997,
"heapDeltaBytes": 4376740,
"domNodes": 157,
"jsHeapTotalBytes": 0,
"scriptDurationMs": 22.776000000000003,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.670000000000027
},
{
"name": "workflow-execution",
"durationMs": 443.3729999999514,
"styleRecalcs": 18,
"styleRecalcDurationMs": 22.982,
"layouts": 5,
"layoutDurationMs": 1.1329999999999998,
"taskDurationMs": 116.763,
"heapDeltaBytes": 4488336,
"domNodes": 157,
"jsHeapTotalBytes": 4980736,
"scriptDurationMs": 27.642,
"eventListeners": 71,
"totalBlockingTimeMs": 0,
"frameDurationMs": 16.66999999999998
}
]
} |
DownloadAndLoadCogVideoControlNet and DownloadAndLoadCogVideoModel use HuggingFace repo names, not file-based assets. Registering with key='model' causes shouldUseAssetBrowser to replace the combo dropdown with the asset browser, which finds no matching assets and shows an empty list. Use empty key '' to keep "Use" button working while preventing asset browser takeover — matching the pattern used by other HF-download nodes (Chatterbox, FlashVSR, LivePortrait, etc).
| // Try progressively shorter parent paths | ||
| const segments = modelType.split('/') | ||
| for (let i = segments.length - 1; i >= 1; i--) { | ||
| const parentPath = segments.slice(0, i).join('/') | ||
| const fallback = modelToNodeMap.value[parentPath] | ||
| if (fallback && fallback.length > 0) return fallback | ||
| } |
There was a problem hiding this comment.
I'd love like 3 unit tests for this (or 1 parameterized one)
| const exactMatch = modelToNodeMap.value[modelType] | ||
| if (exactMatch && exactMatch.length > 0) return exactMatch |
There was a problem hiding this comment.
If you just start at segments.length, you'll get the same behavior, right?
Summary
findProvidersWithFallbackto try all parent paths progressively instead of jumping from exact match to top-level segment only. Previously"a/b/c"would try"a/b/c"then"a", now correctly tries"a/b/c"→"a/b"→"a"''forDownloadAndLoadCogVideoControlNetandDownloadAndLoadCogVideoModelregistrations soshouldUseAssetBrowserreturns false — these nodes use HuggingFace repo names, not file-based assets, so the asset browser finds nothing and shows an empty dropdownTest plan
modelToNodeStoretests pass