feat: display live value on ProjectKey output for INT/FLOAT/BOOL

Returns ui value alongside result for numeric/boolean types so JS
onExecuted can show e.g. '42  seed' on the output slot, matching
the BinaryIndexDecoder inline display style.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-04 13:24:13 +02:00
parent b3d7c3868d
commit 4b19ad0a1d
2 changed files with 17 additions and 4 deletions
+6 -4
View File
@@ -299,13 +299,15 @@ class ProjectKey:
val = data.get(key_name, "")
if key_type == "INT":
return (to_int(val),)
result = to_int(val)
return {"ui": {"value": [str(result)]}, "result": (result,)}
elif key_type == "FLOAT":
return (to_float(val),)
result = to_float(val)
return {"ui": {"value": [f"{result:.4g}"]}, "result": (result,)}
elif isinstance(val, bool):
return (str(val).lower(),)
return {"ui": {"value": [str(val).lower()]}, "result": (str(val).lower(),)}
elif isinstance(val, (int, float)):
return (val,)
return {"ui": {"value": [str(val)]}, "result": (val,)}
else:
return (str(val),)
+11
View File
@@ -201,6 +201,17 @@ app.registerExtension({
app.graph?.setDirtyCanvas(true, true);
};
// --- Show live value on output slot after execution (INT/FLOAT/BOOL only) ---
nodeType.prototype.onExecuted = function (output) {
if (!output?.value?.[0] === undefined || !this.outputs.length) return;
const val = output.value?.[0];
if (val === undefined) return;
const keyWidget = this.widgets?.find(w => w.name === "key_name");
const name = keyWidget?.value || this.outputs[0].name;
this.outputs[0].label = `${val} ${name}`;
app.graph?.setDirtyCanvas(true, true);
};
// --- Highlight all ProjectKey nodes sharing the same key_name on select ---
nodeType.prototype.onSelected = function () {
const keyWidget = this.widgets?.find(w => w.name === "key_name");