From 8091039f2a3dcbc40ea6f2991b6aa3acc3b05416 Mon Sep 17 00:00:00 2001 From: HAL-XP Date: Wed, 3 Dec 2025 13:21:00 +0100 Subject: [PATCH] Fixed monitor settings vs button not in sync + added settings preview in the README --- README.md | 1 + assets/settings.previews.png | Bin 0 -> 71323 bytes js/halxp-runmonitor.js | 66 ++++++++++++++++------------------- 3 files changed, 32 insertions(+), 35 deletions(-) create mode 100644 assets/settings.previews.png diff --git a/README.md b/README.md index 640adff..5081cc2 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ **HALXP-Comfy** is a professional UX suite for ComfyUI designed to enhance workflow management. ![App Screenshot](./assets/button.previews.png) +![App Screenshot](./assets/settings.previews.png) This extension is the starting point for a growing collection of tools. Currently, it features **HALXP Focus**, a way to auto-focus the current running node and , **HALXP RunMonitor** taht lets you run a script on success or error with more enhancements currently in development. diff --git a/assets/settings.previews.png b/assets/settings.previews.png new file mode 100644 index 0000000000000000000000000000000000000000..f769d7ce7b99371404434dc38cb6aed236c858e3 GIT binary patch literal 71323 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 O$UIM1KbLh*2~7aZgX|Ol literal 0 HcmV?d00001 diff --git a/js/halxp-runmonitor.js b/js/halxp-runmonitor.js index b564c43..d11c2d3 100644 --- a/js/halxp-runmonitor.js +++ b/js/halxp-runmonitor.js @@ -15,13 +15,13 @@ app.registerExtension({ let monitorBtn = null; let monitorDot = null; - // --- 1. CORE LOGIC: SYNC & UPDATE --- + // --- 1. CORE LOGIC: VISUALS --- - // Updates the visuals of the button (Green/Gray) based on state - function updateButtonVisuals(enabled) { + // Directly update the button based on the boolean passed to it + function updateButtonVisuals(isEnabled) { if (!monitorBtn || !monitorDot) return; - if (enabled) { + if (isEnabled) { // ACTIVE STATE (Green) monitorDot.style.backgroundColor = "#4CAF50"; monitorDot.style.boxShadow = "0 0 6px #4CAF50"; @@ -33,31 +33,28 @@ app.registerExtension({ monitorDot.style.backgroundColor = "#666"; monitorDot.style.boxShadow = "none"; monitorBtn.style.color = "var(--fg-color, #ccc)"; - monitorBtn.style.borderColor = "#d3c1c1ff"; // Matches Focus default border + monitorBtn.style.borderColor = "#d3c1c1ff"; monitorBtn.title = "Monitor: OFF"; } } - // Sends config to Python backend AND updates UI - function syncConfigToBackend() { - const enabled = app.ui.settings.getSettingValue(ID_ENABLE, false); + // --- 2. CORE LOGIC: BACKEND SYNC --- + + function pushConfigToBackend() { + // We can safely read all values here for the Python backend const config = { - enabled: enabled, + enabled: app.ui.settings.getSettingValue(ID_ENABLE, false), success_path: app.ui.settings.getSettingValue(ID_SUCCESS, ""), error_path: app.ui.settings.getSettingValue(ID_ERROR, "") }; - // 1. Update the UI Button immediately - updateButtonVisuals(enabled); - - // 2. Send to Backend api.fetchApi("/halxp/update_config", { method: "POST", body: JSON.stringify(config) }); } - // --- 2. REGISTER SETTINGS --- + // --- 3. REGISTER SETTINGS --- app.ui.settings.addSetting({ id: ID_ENABLE, @@ -66,7 +63,11 @@ app.registerExtension({ defaultValue: false, category: ['HALXP-Comfy', 'Run Monitor', 'Enable'], tooltip: "Enable to run scripts on workflow status change.", - onChange: syncConfigToBackend // Triggers when changed via Menu OR Button + onChange: (value) => { + // CRITICAL FIX: Use 'value' directly. Do not re-read from settings. + updateButtonVisuals(value); + pushConfigToBackend(); + } }); app.ui.settings.addSetting({ @@ -76,7 +77,7 @@ app.registerExtension({ defaultValue: "", category: ['HALXP-Comfy', 'Run Monitor', 'Success'], tooltip: "Full path to a .bat/.sh to run on success.", - onChange: syncConfigToBackend + onChange: pushConfigToBackend }); app.ui.settings.addSetting({ @@ -86,17 +87,16 @@ app.registerExtension({ defaultValue: "", category: ['HALXP-Comfy', 'Run Monitor', 'Error'], tooltip: "Full path to a .bat/.sh to run on error.", - onChange: syncConfigToBackend + onChange: pushConfigToBackend }); - // --- 3. UI BUTTON CREATION (Copied from Focus) --- + // --- 4. UI BUTTON CREATION --- function createButton() { const btn = document.createElement("button"); btn.textContent = "Monitor"; btn.id = "halxp-monitor-btn"; - // EXACT STYLE COPY FROM FOCUS.JS btn.style.cssText = ` position: relative; display: inline-flex; align-items: center; justify-content: center; padding: 0 10px; margin: 0 4px; background-color: var(--comfy-input-bg, #333); @@ -106,14 +106,14 @@ app.registerExtension({ border: 1px solid #d3c1c1ff; `; - // Create the Status Dot const d = document.createElement("span"); d.style.cssText = `width: 8px; height: 8px; border-radius: 50%; background-color: #666; margin-right: 8px; display: inline-block; flex-shrink: 0;`; btn.prepend(d); monitorDot = d; - // Handle Click: Toggle the setting (which triggers onChange -> syncConfigToBackend) + // CLICK HANDLER: + // We simply toggle the setting. The setting's onChange will handle the visuals. btn.onclick = (e) => { e.preventDefault(); e.stopPropagation(); @@ -125,42 +125,38 @@ app.registerExtension({ } function injectButton() { - // Prevent duplicates if (document.getElementById("halxp-monitor-btn")) return; - // Find the "Manager" button or any existing button to latch onto const allButtons = Array.from(document.querySelectorAll("button")); const targetBtn = allButtons.find(b => { if (!b.offsetParent) return false; const text = b.innerText.trim(); - // Try to place it near Manager, or Focus if it loaded first return text === "Manager" || text === "ComfyUI Manager" || text === "Focus"; }); if (targetBtn && targetBtn.parentNode) { monitorBtn = createButton(); - // Match height of the neighbor const h = targetBtn.offsetHeight; monitorBtn.style.height = h > 0 ? `${h}px` : "28px"; - // Insert BEFORE the target (Standardizes menu flow) - // If you want it specifically AFTER Focus but BEFORE Manager, this generally works - // because extensions load in order. targetBtn.parentNode.insertBefore(monitorBtn, targetBtn); - // Set initial visual state - const isEnabled = app.ui.settings.getSettingValue(ID_ENABLE, false); - updateButtonVisuals(isEnabled); + // INITIAL SYNC: Read from memory once on creation + const currentVal = app.ui.settings.getSettingValue(ID_ENABLE, false); + updateButtonVisuals(currentVal); } } - // --- 4. INITIALIZATION --- + // --- 5. INITIALIZATION --- - // Attempt to inject button periodically until UI is ready setInterval(injectButton, 500); - // Sync backend on load (wait slightly for settings to load) - setTimeout(syncConfigToBackend, 1000); + // Safety Sync on load + setTimeout(() => { + const currentVal = app.ui.settings.getSettingValue(ID_ENABLE, false); + updateButtonVisuals(currentVal); + pushConfigToBackend(); + }, 2000); } }); \ No newline at end of file