Skip to content

Commit 340bed2

Browse files
committed
Add node lifecycle badge text
1 parent 7d3b8dc commit 340bed2

File tree

3 files changed

+62
-12
lines changed

3 files changed

+62
-12
lines changed

src/extensions/core/nodeBadge.ts

Lines changed: 52 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,58 @@ function isCoreNode(node: ComfyLGraphNode) {
2323
return getNodeSource(node)?.type === 'core'
2424
}
2525

26-
function getNodeIdBadge(node: ComfyLGraphNode, nodeIdBadgeMode: NodeBadgeMode) {
27-
return nodeIdBadgeMode === NodeBadgeMode.None ||
28-
(isCoreNode(node) && nodeIdBadgeMode === NodeBadgeMode.HideBuiltIn)
29-
? ''
30-
: `#${node.id}`
26+
function badgeTextVisible(
27+
node: ComfyLGraphNode,
28+
badgeMode: NodeBadgeMode
29+
): boolean {
30+
return (
31+
badgeMode === NodeBadgeMode.None ||
32+
(isCoreNode(node) && badgeMode === NodeBadgeMode.HideBuiltIn)
33+
)
34+
}
35+
36+
function getNodeIdBadgeText(
37+
node: ComfyLGraphNode,
38+
nodeIdBadgeMode: NodeBadgeMode
39+
) {
40+
return badgeTextVisible(node, nodeIdBadgeMode) ? '' : `#${node.id}`
3141
}
3242

33-
function getNodeSourceBadge(
43+
function getNodeSourceBadgeText(
3444
node: ComfyLGraphNode,
3545
nodeSourceBadgeMode: NodeBadgeMode
3646
) {
3747
const nodeSource = getNodeSource(node)
38-
return nodeSourceBadgeMode === NodeBadgeMode.None ||
39-
(isCoreNode(node) && nodeSourceBadgeMode === NodeBadgeMode.HideBuiltIn)
48+
return badgeTextVisible(node, nodeSourceBadgeMode)
4049
? ''
4150
: nodeSource?.badgeText ?? ''
4251
}
4352

53+
function getNodeLifeCycleBadgeText(
54+
node: ComfyLGraphNode,
55+
nodeLifeCycleBadgeMode: NodeBadgeMode
56+
) {
57+
let text = ''
58+
const nodeDef = (node.constructor as typeof ComfyLGraphNode).nodeData
59+
60+
if (nodeDef.deprecated) {
61+
text = '[DEPR]'
62+
}
63+
64+
if (nodeDef.experimental) {
65+
text = '[BETA]'
66+
}
67+
68+
return badgeTextVisible(node, nodeLifeCycleBadgeMode) ? '' : text
69+
}
70+
4471
class NodeBadgeExtension implements ComfyExtension {
4572
name = 'Comfy.NodeBadge'
4673

4774
constructor(
4875
public nodeIdBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
4976
public nodeSourceBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
77+
public nodeLifeCycleBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
5078
public colorPalette: ComputedRef<Palette> | null = null
5179
) {}
5280

@@ -63,6 +91,12 @@ class NodeBadgeExtension implements ComfyExtension {
6391
this.nodeIdBadgeMode = computed(
6492
() => settingStore.get('Comfy.NodeBadge.NodeIdBadgeMode') as NodeBadgeMode
6593
)
94+
this.nodeLifeCycleBadgeMode = computed(
95+
() =>
96+
settingStore.get(
97+
'Comfy.NodeBadge.NodeLifeCycleBadgeMode'
98+
) as NodeBadgeMode
99+
)
66100
this.colorPalette = computed(() =>
67101
getColorPalette(settingStore.get('Comfy.ColorPalette'))
68102
)
@@ -74,6 +108,9 @@ class NodeBadgeExtension implements ComfyExtension {
74108
watch(this.nodeIdBadgeMode, () => {
75109
app.graph.setDirtyCanvas(true, true)
76110
})
111+
watch(this.nodeLifeCycleBadgeMode, () => {
112+
app.graph.setDirtyCanvas(true, true)
113+
})
77114
}
78115

79116
nodeCreated(node: ComfyLGraphNode, app: ComfyApp) {
@@ -90,13 +127,17 @@ class NodeBadgeExtension implements ComfyExtension {
90127
new LGraphBadge({
91128
text: _.truncate(
92129
[
93-
getNodeIdBadge(node, this.nodeIdBadgeMode.value),
94-
getNodeSourceBadge(node, this.nodeSourceBadgeMode.value)
130+
getNodeIdBadgeText(node, this.nodeIdBadgeMode.value),
131+
getNodeLifeCycleBadgeText(
132+
node,
133+
this.nodeLifeCycleBadgeMode.value
134+
),
135+
getNodeSourceBadgeText(node, this.nodeSourceBadgeMode.value)
95136
]
96137
.filter((s) => s.length > 0)
97138
.join(' '),
98139
{
99-
length: 25
140+
length: 31
100141
}
101142
),
102143
fgColor:

src/stores/settingStore.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,14 @@ export const useSettingStore = defineStore('setting', {
347347
options: [NodeBadgeMode.None, NodeBadgeMode.ShowAll],
348348
defaultValue: NodeBadgeMode.ShowAll
349349
})
350+
351+
app.ui.settings.addSetting({
352+
id: 'Comfy.NodeBadge.NodeLifeCycleBadgeMode',
353+
name: 'Node life cycle badge mode',
354+
type: 'combo',
355+
options: [NodeBadgeMode.None, NodeBadgeMode.ShowAll],
356+
defaultValue: NodeBadgeMode.ShowAll
357+
})
350358
},
351359

352360
set<K extends keyof Settings>(key: K, value: Settings[K]) {

src/types/apiTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,8 @@ const zSettings = z.record(z.any()).and(
492492
'Comfy.Node.DoubleClickTitleToEdit': z.boolean(),
493493
'Comfy.Window.UnloadConfirmation': z.boolean(),
494494
'Comfy.NodeBadge.NodeSourceBadgeMode': zNodeBadgeMode,
495-
'Comfy.NodeBadge.NodeIdBadgeMode': zNodeBadgeMode
495+
'Comfy.NodeBadge.NodeIdBadgeMode': zNodeBadgeMode,
496+
'Comfy.NodeBadge.NodeLifeCycleBadgeMode': zNodeBadgeMode
496497
})
497498
.optional()
498499
)

0 commit comments

Comments
 (0)