diff --git a/CHANGELOG.md b/CHANGELOG.md index d3387a931..8849f037b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,23 +2,27 @@ ## Update for 2025-04-05 -- **Features** +- **Features** - Pipe: [SoftFill](https://github.com/zacheryvaughn/softfill-pipelines) -- **Caching** +- **Caching** - add `TeaCache` support to *Flux, CogVideoX, Mochi, LTX* - add `FasterCache` support to *WanAI, LTX* (other video models already supported) - add `PyramidAttentionBroadcast` support to *WanAI, LTX* (other video models already supported) -- **Other** +- **UI** + - client polling speeds up and slows down depending if client page is visible or not + client polling does not ask for live preview if page is not visible + significantly reduces server load if you hide or minimize the page + - progress: use batch-count for progress + - grid: add of max-rows and max-columns in settings to control grid format + - gallery: add max-columns in settings for gradio gallery components +- **Other** - ZLUDA: add more GPUs to recognized list select in scripts, available for sdxl in inpaint model - LoRA: add option to force-reload LoRA on every generate - - Grid: add of max-rows and max-columns in settings to control grid format - - Gallery: add max-columns in settings for gradio gallery components - - Diag: add get-server-status to UI generate context menu -- **Changes** - - Params: Reset default guidance-rescale from 0.7 to 0.0 - - Progress: add additional fields to progress API - - Progress: use batch-count for progress + - diag: add get-server-status to UI generate context menu +- **Changes** + - params: Reset default guidance-rescale from 0.7 to 0.0 + - progress: add additional fields to progress API - **Fixes** - Logging: logging cleanup - Styles: resize and bring quick-ui to forward on hover diff --git a/javascript/progressBar.js b/javascript/progressBar.js index a244232d1..f0e19e725 100644 --- a/javascript/progressBar.js +++ b/javascript/progressBar.js @@ -133,9 +133,10 @@ function requestProgress(id_task, progressEl, galleryEl, atEnd = null, onProgres const start = (id_task, id_live_preview) => { // eslint-disable-line no-shadow if (!opts.live_previews_enable || opts.live_preview_refresh_period === 0 || opts.show_progress_every_n_steps === 0) return; + const request_id = document.hidden ? -1 : id_live_preview; const onProgressHandler = (res) => { - if (res?.debug) debug('livePreview:', dateStart, res); + if (res?.debug) debug('livePreview:', dateStart, request_id, res); lastState = res; const elapsedFromStart = (new Date() - dateStart) / 1000; hasStarted |= res.active; @@ -163,8 +164,7 @@ function requestProgress(id_task, progressEl, galleryEl, atEnd = null, onProgres done(); }; - const request_id = document.hidden ? -1 : id_live_preview; - xhrPost('./internal/progress', { id_task, request_id }, onProgressHandler, onProgressErrorHandler, false, 30000); + xhrPost('./internal/progress', { id_task, id_live_preview: request_id }, onProgressHandler, onProgressErrorHandler, false, 30000); }; debug('livePreview start:', dateStart); start(id_task, 0); diff --git a/modules/progress.py b/modules/progress.py index ab1230ff7..83758cc7f 100644 --- a/modules/progress.py +++ b/modules/progress.py @@ -93,14 +93,13 @@ def api_progress(req: ProgressRequest): debug_log(f'Preview: job={shared.state.job} active={active} progress={step}/{steps}/{progress} image={shared.state.current_image_sampling_step} request={id_live_preview} last={shared.state.id_live_preview} enabled={shared.opts.live_previews_enable} job={shared.state.preview_job} elapsed={elapsed:.3f}') - print('HERE1', req.id_live_preview, shared.state.id_live_preview) - - if shared.opts.live_previews_enable and active and (req.id_live_preview != -1) (shared.state.id_live_preview != req.id_live_preview) and (shared.state.current_image is not None): - shared.state.set_current_image() - if shared.state.current_image is not None: + if shared.opts.live_previews_enable and active and (req.id_live_preview != -1): + have_image = shared.state.set_current_image() + if have_image and shared.state.current_image is not None: buffered = io.BytesIO() - shared.state.current_image.save(buffered, format='jpeg') - live_preview = f'data:image/jpeg;base64,{base64.b64encode(buffered.getvalue()).decode("ascii")}' + shared.state.current_image.save(buffered, format='jpeg', quality=60) + b64 = base64.b64encode(buffered.getvalue()) + live_preview = f'data:image/jpeg;base64,{b64.decode("ascii")}' else: live_preview = None