From 7cff930861e946284dd33c3c7ccb05c419d664b9 Mon Sep 17 00:00:00 2001 From: bennykok Date: Wed, 9 Oct 2024 16:54:34 -0700 Subject: [PATCH 1/4] fix: token will be fetched everytime to make sure it is the latest --- web-plugin/index.js | 81 +++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 25 deletions(-) diff --git a/web-plugin/index.js b/web-plugin/index.js index ee70c64..d8915a3 100644 --- a/web-plugin/index.js +++ b/web-plugin/index.js @@ -92,8 +92,30 @@ const context = { // native_run_api_endpoint: "http://localhost:3011/api/run", // }; -function getSelectedWorkflowInfo() { - return context.selectedWorkflowInfo; +async function getSelectedWorkflowInfo() { + const workflow_info_promise = new Promise((resolve) => { + try { + const handleMessage = (event) => { + try { + const message = JSON.parse(event.data); + if (message.type === "workflow_info") { + resolve(message.data); + window.removeEventListener("message", handleMessage); + } + } catch (error) { + console.error(error); + resolve(undefined); + } + }; + window.addEventListener("message", handleMessage); + sendEventToCD("workflow_info"); + } catch (error) { + console.error(error); + resolve(undefined); + } + }); + + return workflow_info_promise; } function setSelectedWorkflowInfo(info) { @@ -105,6 +127,8 @@ function setSelectedWorkflowInfo(info) { const ext = { name: "BennyKok.ComfyUIDeploy", + native_mode: false, + init(app) { addButton(); @@ -114,6 +138,7 @@ const ext = { const org_display = queryParams.get("org_display"); const origin = queryParams.get("origin"); const workspace_mode = queryParams.get("workspace_mode"); + this.native_mode = queryParams.get("native_mode") === "true"; if (workspace_mode) { document.querySelector(".comfy-menu").style.display = "none"; @@ -319,7 +344,10 @@ const ext = { false, ); } catch (error) { - console.warning("Error setting validation to false, is fine to ignore this", error); + console.warning( + "Error setting validation to false, is fine to ignore this", + error, + ); } console.log("loadGraphData"); app.loadGraphData(comfyUIWorkflow); @@ -1527,31 +1555,34 @@ async function loadWorkflowApi(versionId) { const orginal_fetch_api = api.fetchApi; api.fetchApi = async (route, options) => { - console.log("Fetch API called with args:", route, options); + console.log("Fetch API called with args:", route, options, ext.native_mode); - const info = getSelectedWorkflowInfo(); - if (info && route.startsWith("/prompt")) { - const body = JSON.parse(options.body); + if (route.startsWith("/prompt") && ext.native_mode) { + const info = await getSelectedWorkflowInfo(); + console.log("info", info); + if (info) { + const body = JSON.parse(options.body); - const data = { - client_id: body.client_id, - workflow_api_json: body.prompt, - workflow: body?.extra_data?.extra_pnginfo?.workflow, - is_native_run: true, - machine_id: info.machine_id, - workflow_id: info.workflow_id, - native_run_api_endpoint: info.native_run_api_endpoint, - gpu_event_id: info.gpu_event_id, - }; + const data = { + client_id: body.client_id, + workflow_api_json: body.prompt, + workflow: body?.extra_data?.extra_pnginfo?.workflow, + is_native_run: true, + machine_id: info.machine_id, + workflow_id: info.workflow_id, + native_run_api_endpoint: info.native_run_api_endpoint, + gpu_event_id: info.gpu_event_id, + }; - return await fetch("/comfyui-deploy/run", { - method: "POST", - headers: { - Authorization: `Bearer ${info.cd_token}`, - "Content-Type": "application/json", - }, - body: JSON.stringify(data), - }); + return await fetch("/comfyui-deploy/run", { + method: "POST", + headers: { + Authorization: `Bearer ${info.cd_token}`, + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }); + } } return await orginal_fetch_api.call(api, route, options); From 44a91d20932131e1fb83e966a87ff9c09c7a4767 Mon Sep 17 00:00:00 2001 From: bennykok Date: Wed, 9 Oct 2024 17:08:40 -0700 Subject: [PATCH 2/4] fix: default new ui for comfyui --- web-plugin/index.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/web-plugin/index.js b/web-plugin/index.js index d8915a3..f714544 100644 --- a/web-plugin/index.js +++ b/web-plugin/index.js @@ -457,6 +457,17 @@ const ext = { // } }); + if (this.native_mode) { + // console.log("native mode", window, window.app); + try { + await app.ui.settings.setSettingValueAsync('Comfy.UseNewMenu', 'Top') + await app.ui.settings.setSettingValueAsync('Comfy.Sidebar.Size', 'small') + await app.ui.settings.setSettingValueAsync('Comfy.Sidebar.Location', 'right') + } catch (error) { + console.error("Error setting validation to false", error); + } + } + app.graph.onAfterChange = ((originalFunction) => async function () { const prompt = await app.graphToPrompt(); From a139424b91330401794ca102d830228149bc49a4 Mon Sep 17 00:00:00 2001 From: bennykok Date: Thu, 10 Oct 2024 11:20:12 -0700 Subject: [PATCH 3/4] fix: output node status --- custom_routes.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/custom_routes.py b/custom_routes.py index f342e1a..b01760b 100644 --- a/custom_routes.py +++ b/custom_routes.py @@ -1009,6 +1009,12 @@ async def send_json_override(self, event, data, sid=None): asyncio.create_task(self.send_json_original(event, data, sid)) ]) + if prompt_id in comfy_message_queues: + comfy_message_queues[prompt_id].put_nowait({ + "event": event, + "data": data + }) + asyncio.create_task(update_run_ws_event(prompt_id, event, data)) if event == 'execution_start': @@ -1083,17 +1089,17 @@ async def send_json_override(self, event, data, sid=None): } if class_type == "PreviewImage": logger.info("Skipping preview image") - return - await update_run_with_output(prompt_id, data.get('output'), node_id=data.get('node'), node_meta=node_meta) + else: + await update_run_with_output(prompt_id, data.get('output'), node_id=data.get('node'), node_meta=node_meta) + if prompt_id in comfy_message_queues: + comfy_message_queues[prompt_id].put_nowait({ + "event": "output_ready", + "data": data + }) logger.info(f"Executed {class_type} {data}") else: logger.info(f"Executed {data}") - if prompt_id in comfy_message_queues: - comfy_message_queues[prompt_id].put_nowait({ - "event": event, - "data": data - }) # Global variable to keep track of the last read line number last_read_line_number = 0 From 292f77f06b22e5e03921c755affe0042c1abc7b8 Mon Sep 17 00:00:00 2001 From: karrix Date: Fri, 11 Oct 2024 02:21:24 +0800 Subject: [PATCH 4/4] fix: default queue button position to dock --- web-plugin/index.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/web-plugin/index.js b/web-plugin/index.js index f714544..8650c9a 100644 --- a/web-plugin/index.js +++ b/web-plugin/index.js @@ -460,9 +460,19 @@ const ext = { if (this.native_mode) { // console.log("native mode", window, window.app); try { - await app.ui.settings.setSettingValueAsync('Comfy.UseNewMenu', 'Top') - await app.ui.settings.setSettingValueAsync('Comfy.Sidebar.Size', 'small') - await app.ui.settings.setSettingValueAsync('Comfy.Sidebar.Location', 'right') + await app.ui.settings.setSettingValueAsync("Comfy.UseNewMenu", "Top"); + await app.ui.settings.setSettingValueAsync( + "Comfy.Sidebar.Size", + "small" + ); + await app.ui.settings.setSettingValueAsync( + "Comfy.Sidebar.Location", + "right" + ); + await app.ui.settings.setSettingValueAsync( + "Comfy.MenuPosition.Docked", + true + ); } catch (error) { console.error("Error setting validation to false", error); }