Make GenAsset manager button independent

This commit is contained in:
Stelios Sotiriadis
2026-05-20 23:38:47 +01:00
parent f177082c9b
commit e9399fa7cd
4 changed files with 58 additions and 5 deletions
+3
View File
@@ -2,6 +2,9 @@ name: Publish to Comfy registry
on:
workflow_dispatch:
push:
tags:
- "v*"
jobs:
publish-node:
+1 -1
View File
@@ -8,7 +8,7 @@ ComfyUI nodes for saving, loading, and versioning image generations in **GenAsse
GenAsset keeps the output image together with the recipe (prompt, model, seed, sampler/scheduler, workflow JSON, metadata), so teams and agents can reproduce and reuse results reliably.
Current package version: **v1.0.17**.
Current package version: **v1.0.18**.
## Start Free
+53 -3
View File
@@ -1783,6 +1783,55 @@ function managerButtonCandidates() {
});
}
function buttonCandidatesMatching(pattern) {
return [...document.querySelectorAll("button")].filter((button) => {
const label = [button.getAttribute("aria-label"), button.getAttribute("title"), button.textContent]
.filter(Boolean)
.join(" ")
.trim();
return pattern.test(label) && isVisibleElement(button);
});
}
function stableToolbarContainers() {
const selectors = [
".comfyui-menu",
".comfyui-menu-right",
".comfyui-menu-actions",
".comfyui-queue-button",
".comfyui-button-group",
".comfyui-body-top",
".comfyui-topbar",
".comfyui-top-bar",
".topbar",
".p-toolbar",
];
const containers = [];
for (const selector of selectors) {
for (const element of document.querySelectorAll(selector)) {
if (element instanceof HTMLElement && isVisibleElement(element)) containers.push(element);
}
}
return containers;
}
function toolbarAnchorCandidate() {
const managerButton = managerButtonCandidates()[0];
if (managerButton?.parentElement) {
return { container: managerButton.parentElement, before: managerButton, mode: "manager" };
}
const runButton = buttonCandidatesMatching(/\brun\b/i)[0];
if (runButton?.parentElement) {
return { container: runButton.parentElement, before: runButton, mode: "run" };
}
const container = stableToolbarContainers()[0];
if (container) return { container, before: null, mode: "container" };
return null;
}
function createToolbarButton() {
const button = document.createElement("button");
button.className = "genasset-toolbar-button";
@@ -1978,10 +2027,11 @@ function installToolbarButton() {
const existingButtons = [...document.querySelectorAll(".genasset-toolbar-button")];
if (existingButtons.some(isVisibleElement)) return true;
for (const existing of existingButtons) existing.remove();
const managerButton = managerButtonCandidates()[0];
if (!managerButton || !managerButton.parentElement) return false;
const anchor = toolbarAnchorCandidate();
if (!anchor?.container) return false;
const button = createToolbarButton();
managerButton.parentElement.insertBefore(button, managerButton);
if (anchor.mode !== "manager") button.dataset.genassetAnchor = anchor.mode;
anchor.container.insertBefore(button, anchor.before || null);
return true;
}
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "genasset"
version = "1.0.17"
version = "1.0.18"
description = "ComfyUI nodes for saving, loading, and versioning GenAsset generations."
license = { file = "LICENSE" }
requires-python = ">=3.10"