From 2e50671d6944376cc9fc0853277e28a9f4061a5a Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Fri, 8 May 2026 14:43:39 +0200 Subject: [PATCH] networks load/download model track progress Co-authored-by: Copilot Signed-off-by: Vladimir Mandic --- javascript/progressBar.js | 12 ++++++------ javascript/ui.js | 2 ++ modules/ui.py | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/javascript/progressBar.js b/javascript/progressBar.js index 63ffaec7b..e33f20446 100644 --- a/javascript/progressBar.js +++ b/javascript/progressBar.js @@ -81,8 +81,8 @@ function randomId() { // starts sending progress requests to "/internal/progress" uri, creating progressbar above progressbarContainer element and preview inside gallery element // Cleans up all created stuff when the task is over and calls atEnd. calls onProgress every time there is a progress update -function requestProgress(id_task, progressEl, galleryEl, atEnd = null, onProgress = null, once = false) { - localStorage.setItem('task', id_task); +function requestProgress(id_task = 'undefined', progressEl = null, galleryEl = null, atEnd = null, onProgress = null, once = false) { + if (id_task) localStorage.setItem('task', id_task); let hasStarted = false; let dateStart = new Date(); let prevProgress = null; @@ -141,12 +141,12 @@ function requestProgress(id_task, progressEl, galleryEl, atEnd = null, onProgres const request_id = document.hidden ? -1 : id_live_preview; const onProgressHandler = (res) => { - if (res?.debug) debug('livePreview:', dateStart, request_id, res); + if (res?.debug) debug('progress:', { start: dateStart, id: request_id, res }); lastState = res; const elapsedFromStart = (new Date() - dateStart) / 1000; hasStarted |= res.active; if (res.completed || (!res.active && (hasStarted || once)) || (elapsedFromStart > progressTimeout && !res.queued && res.progress === prevProgress)) { - debug('livePreview end:', res); + debug('progress', { end: res }); if (!res.paused) done(); // only abort if not paused return; } @@ -165,12 +165,12 @@ function requestProgress(id_task, progressEl, galleryEl, atEnd = null, onProgres }; const onProgressErrorHandler = (err) => { - error(`livePreview: ${err}`); + error('progress', { error: err }); done(); }; xhrPost('./internal/progress', { id_task, id_live_preview: request_id }, onProgressHandler, onProgressErrorHandler, false, 30000); }; - debug('livePreview start:', dateStart); + debug('progress', { start: dateStart }); start(id_task, 0); } diff --git a/javascript/ui.js b/javascript/ui.js index a4bf0a75e..1cf6ee42f 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -634,6 +634,7 @@ function selectCheckpoint(name) { else gradioApp().getElementById('change_checkpoint').click(); log(`selectCheckpoint ${isRefiner ? 'refiner' : 'model'}: ${desiredCheckpointName}`); markSelectedCards([desiredCheckpointName], 'model'); + setTimeout(requestProgress, 250); } let desiredVAEName = null; @@ -657,6 +658,7 @@ function selectReference(name) { desiredCheckpointName = name; gradioApp().getElementById('change_reference').click(); markSelectedCards([desiredCheckpointName], 'model'); + setTimeout(requestProgress, 250); } function currentImageResolutionimg2img(_a, _b, scaleBy) { diff --git a/modules/ui.py b/modules/ui.py index 1dc1af44b..af3b37cca 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -79,7 +79,7 @@ def create_ui(startup_timer = None) -> gr.Blocks: interfaces.clear() shared.opts.ui_disabled = ui_disabled if len(ui_disabled) > 0: - log.warning(f'UI disabled: {ui_disabled}') + log.info(f'UI disabled: {ui_disabled}') if 'txt2img' not in ui_disabled: with gr.Blocks(analytics_enabled=False) as txt2img_interface: