[feat] Hide subgraph nodes from node library and search (#4498)

This commit is contained in:
Christian Byrne
2025-07-22 12:59:25 -07:00
committed by GitHub
parent 280131d33d
commit ff68c42162
2 changed files with 54 additions and 0 deletions

View File

@@ -374,6 +374,21 @@ export const useNodeDefStore = defineStore('nodeDef', () => {
'Hides nodes marked as experimental unless explicitly enabled',
predicate: (nodeDef) => showExperimental.value || !nodeDef.experimental
})
// Subgraph nodes filter
// @todo Remove this filter when subgraph v2 is released
registerNodeDefFilter({
id: 'core.subgraph',
name: 'Hide Subgraph Nodes',
description:
'Temporarily hides subgraph nodes from node library and search',
predicate: (nodeDef) => {
// Hide subgraph nodes (identified by category='subgraph' and python_module='nodes')
return !(
nodeDef.category === 'subgraph' && nodeDef.python_module === 'nodes'
)
}
})
}
// Register core filters on store initialization

View File

@@ -236,6 +236,45 @@ describe('useNodeDefStore', () => {
expect(store.visibleNodeDefs).toHaveLength(2)
})
it('should hide subgraph nodes by default', () => {
const normalNode = createMockNodeDef({
name: 'normal',
category: 'conditioning',
python_module: 'nodes'
})
const subgraphNode = createMockNodeDef({
name: 'MySubgraph',
category: 'subgraph',
python_module: 'nodes'
})
store.updateNodeDefs([normalNode, subgraphNode])
expect(store.visibleNodeDefs).toHaveLength(1)
expect(store.visibleNodeDefs[0].name).toBe('normal')
})
it('should show non-subgraph nodes with subgraph category', () => {
const normalNode = createMockNodeDef({
name: 'normal',
category: 'conditioning',
python_module: 'custom_extension'
})
const fakeSubgraphNode = createMockNodeDef({
name: 'FakeSubgraph',
category: 'subgraph',
python_module: 'custom_extension' // Different python_module
})
store.updateNodeDefs([normalNode, fakeSubgraphNode])
expect(store.visibleNodeDefs).toHaveLength(2)
expect(store.visibleNodeDefs.map((n) => n.name)).toEqual([
'normal',
'FakeSubgraph'
])
})
})
describe('performance', () => {