* Download all: Add Metadata download
* Harmonise capitalisation
* Add JSzip, download popup
* 'Save all' popup
- add ZIP download with JSON and folder support
- Popup to prevent accidental trigger of an image download
- Use FileSaver polyfill for better browser support
* remove debug output
* Make DownloadImages a tertiary button
* Refresh the image count as user types
Currently I have to change the focus for the image count to refresh. This change makes it immediate. I've been wondering if 'change' should merely be replaced by 'keyup' but decided against it for accessibility reasons (people who might be using accessibility tools with alternative input methods).
* Add a debounce
Setting a debounce of 300ms on keyup.
* Custom Image Modifiers dialog tweaks
Couple minor usability improvements for the custom image modifiers dialog:
- set the focus to the textbox when opening the dialog
- pressing the Escape key closes the dialog
* Adding keyboard shortcuts
Escape to cancel the changes, Ctrl+Enter to confirm the changes. No change to the existing UI behavior using the mouse.
* Make the overlay focusable
Allows the keyboard shortcuts to work if user clicks on the main window rather than the textbox itself.
* Disable spell and grammar correction
* Fix restoration of weighted tasks with truncated modifiers
* Reverting this change
Will create a separate PR for this as needed. Doesn't impact the other bug fix.
* Update utils.js
Image modifiers may be temporarily hidden by plugins like searchable modifier search box, and when restoring a task (e.g. use settings) the image modifier s copied with the hidden class set, which makes it look like it's missing.
By notifying plugins that the image tags have been refreshed, it allows it to act accordingly (in this case by making sure image tags are visible).
* Preserve full names for shortened modifiers
The PR https://github.com/cmdr2/stable-diffusion-ui/pull/779/files added code to preserve the full names of truncated image modifiers, but only in the "short image modifiers" code path. This PR fixes that by preserving the full car name for truncated modifier names too.
* Pick the full modifier name
The previous code selected the entire innerText from the modifier-car-label element, but for truncated modifiers this would also include the tooltip text. This modification fixes that by only picking specifically the full modifier name.
* Only pick the full modifier name
Previous code would pick up the tooltip text too, causing a mismatch of strings in the comparison.
* Display the truncated image modifier names
What we process and compare is always the full image modifier string, but we still want to display a shortened string when applicable.
Currently one has to click on the model name to select a model. Clicking on the file icon won't work and doesn't do anything. This change fixes that behavior by allowing the user to click on either the model name or the file icon to select a model.
This is purely a DOM update to be able to identify the custom category a given custom image modifier is part of, e.g. using .closest() from a custom modifier plugin. No UI change.
The Inpainting toggle doesn't get restored at the very first attempt.
Repro steps:
1. Create a task with a source image and enable the inpainting toggle.
2. Copy the task to the clipboard
3. Refresh the page (F5)
4. Paste the task from the clipboard
Expected result:
The task gets restored and the toggle is ON.
Actual result:
The task is restored, but the toggle is OFF.
To fix that, we have to restore the toggle's state after loading the source image.
* Slider for preview image size
Add a slider to the system settings so that users can configure the max size of thumbnails
* Remove debug output
* Fix var definition
* Move slider to 'display settings' menu
* thumbnail slider CSS
Reloading of image tags with ((weight modifiers)) doesn't reuse the modifier card even if it exists, which means images are not restored either. This change fixes that behavior by ensuring proper matching of the tags with existing modifiers.
No change in existing UI behavior, this change allows image modifier plugins to (optionally) pass the card image as a base64-encoded image rather than a source file.
Here is a more robust fix for task restoration in dnd.js. Task restoration will fail if the JSON contains "use_face_correction": false, which can happen under some circumstances.
The fix checks if the filename passed to getModelPath is actually a string, which covers both the previous scenario (filename === null) and this new one (filename === false).
Addresses the issues reported by JeLuf:
- - gfpgan: the list with models doesn't appear under the <input> box
- merge models: As long as no models are selected, the <input> box is very short.
- When searching for models by name, the width of the model list shrinks and is smaller than the <input> element.
First batch of bug fixes for model search:
- fix navigation issues with arrow keys when filtering models
- fix the issue with arrow keys jumping several entries after model reloading
- disable autocomplete in search box
* Searchable models
Creates searchable dropdowns for SD, VAE, or HN models. Also adds a reload models button (placed next to SD models, reloads everything including VAE and HN models).
* Fixing the editor pane display
* Revert "Fixing the editor pane display"
This reverts commit de902a6340.
* Move formatting to the CSS file
* Rewritten the siblings functions
I like these much better, and I imagine you will too. :)
* Code cleanup
* Minor tweak in list ordering
Minor tweak to move the root folder's content at the end of the list (similar to the current version).
*** Please merge https://github.com/easydiffusion/sdkit/pull/9 before merging this one. ***
This is the ED client part of metadata embedding. It adds 'embed' and 'none' options to the metadata setting and makes none the default (if never set before) because (1) it feels weird to create metadata files by default and (2) embedding by default could cause be problematic if users don't realize it's happening.
Also fixes the disabling of the dropdown in the settings when Save images to disk is toggled off.
Move image containers in their own container to create a clear delineation in the DOM. Purely DOM structural adjustment meant to make a sticky footer possible in the preview pane (for plugins).
In dnd.js, when models are restored in the UI, there is code that strips the path from the model file name. Now that we allow models to be hosted in subfolders, this code break the task restoration (e.g. use settings, D&D, copy/paste) because "/my models/model.ckpt" becomes "model.ckpt", which won't be found.
https://discord.com/channels/1014774730907209781/1014780368890630164/1063726724573052948
With this change, the number of prompt variants is taken into account when computing the number of images that will be generated.
X = getPrompts().length * numOutputsTotalField.value
parseContent(text) doesn't check the text content being passed actually described a task, which causes some corner case scenarios to break (image task settings are incorrectly cleared because an empty image task is created).
Only triggers events when there actually was a state change. Also opportunistically removed the hardcoded delay in favor of an even-driven flow, which makes the whole thing more robust and much more reactive.
Change "Processed 1 image in 150.65 seconds" to "Processed 1 Image in 2 minutes 30 seconds" to be consistent with the approx. time remaining while rendering
There is an issue on the beta where if you use pipe ( | ) in the prompt to make a prompt matrix, the optional prompts are only applied when the last prompt in the matrix is used.
* Update README.md
* Update README.md
* Make on_sd_start.sh executable
* Merge pull request #542 from patriceac/patch-1
Fix restoration of model and VAE
* Merge pull request #541 from patriceac/patch-2
Fix restoration of parallel output setting
* Hypernetwork support
Adds support for hypernetworks. Hypernetworks are stored in /models/hypernetworks
* forgot to remove unused code
Co-authored-by: cmdr2 <secondary.cmdr2@gmail.com>
* New engine.js first draft.
* Small fixes...
* Bump version for cache...
* Improved cancellation code.
* Cleaning
* Wrong argument used in Task.waitUntil
* session_id needs to always match SD.sessionId
* Removed passing explicit Session ID from UI.
Use SD.sessionID to replace.
* Cleaning... Removed a disabled line and a hardcoded value.
* Fix return if tasks are still waiting.
* Added checkbox to reverse processing order.
* Fixed progress not displaying properly.
* Renamed reverse label.
* Only hide progress bar inside onCompleted.
* Thanks to rbertus2000 for helping testing and debugging!
* Resolve async promises when used optionally.
* when removed var should have used let, not const.
* Renamed getTaskErrorHandler to onTaskErrorHandler to better reflect actual implementation.
* Switched to the unsafer and less git friendly end of lines comma as requested in review.
* Raised SERVER_STATE_VALIDITY_DURATION to 90 seconds to match the changes to Beta.
* Added logging.
* Added one more hook before those inside the SD engine.
* Added selftest.plugin.js as part of core.
* Removed a tests that wasn't yet implemented...
* Groupped task stopping and abort in single function.
* Added optional test for plugins.
* Allow prompt text to be selected.
* Added comment.
* Improved isServerAvailable for better mobile usage and added comments for easier debugging.
* Comments...
* Normalized EVENT_STATUS_CHANGED to follow the same pattern as the other events.
* Disable plugins if editorModifierTagsList is not defined.
* Adds a new ServiceContainer to register IOC handlers.
* Added expect test for a missing dependency in a ServiceContainer
* Moved all event code in it's own sub class for easier reuse.
* Removed forgotten unused var...
* Allow getPrompts to be reused be plugins.
* Renamed EventSource to GenericEventSource to avoid redefining an existing class name.
* Added missing time argument to debounce
* Added output_quality to engine.js
* output_quality need to be an int.
* Fixed typo.
* Replaced the default euler_a by dpm2 to work with both SD1.# and SD2
* Remove generic completed tasks from plugins on generator complete.
* dpm2 starts at step 2, replaced with plms to start at step 1.
* Merge error
* Merge error
* changelog
Co-authored-by: Marc-Andre Ferland <madrang@gmail.com>
* fixed tools for image editor to be more modular and made cursor an actual cursor change
* fixed eraser cursor positioning
* updated opacity to not have a 100 option
* separated clear into an actions section
* added history support for image editor. ctrl-z and ctrl-y both work now
* removed extra console log debugging stuff
* updated buttons style
* updated the button ui on the main page as requested
* updated with a bunch of bugfixes
* Fix upscaling when a source image is set
If you have an image selected (img2img) then clicking Upscale on another unrelated image, the image for img2img is used and you get something very unexpected.
* Fix for img2img and mask gens
With a pen, typing on a browser page, waiting a short moment, and then moving the pen scrolls the page.
Call event.preventDefault() to disable this default behaviour for events in the canvas area.
* started implementing hamunii's image editor, and added a hamunii theme
* fixed so active tab is main tab
* added some testing stuff for image ediotr
* re-implemented canvas drawing myself. just need to add layer stuff now
* moved everything to an image editor class and implement it so it actually works nicely now
* fixed a couple weird bugs and cleaned up the background image and sharpness stuff
* cleaned up a lot of stuff about the editor, added tools, buttons, made it mostly work in the current ui
* added inpainting support
* updated with more nice changes/updates to the inpainting and drawing editor
* made some more fixes and touchups to the image editor
* removed a bunch of semicolons
* remove old image inpainting system
* updated to work properly on mobile
* made a minor bugfix
* fixed img_size_box alignment
* Update index.html
Co-authored-by: cmdr2 <secondary.cmdr2@gmail.com>
Co-authored-by: cmdr2 <shashank.shekhar.global@gmail.com>
* Toggle image modifiers plugin
Right-click on image modifiers to temporarily turn them off without removing them. To quickly iterate and experiment with various combinations.
Please note this plugin required a minor tweak in getPrompts() to add support for image modifier inactive state.
* Fix tag matching
Co-authored-by: cmdr2 <secondary.cmdr2@gmail.com>
As per Discord conversation, this PR fixed the image modifiers behavior when a modifier appears more than once, and also fixes a regression introduced by ((weighted modifiers)).
Update the seed *before* starting the processing, so interrupting the processing retains the seed being used for the batch being currently processed.
The idea behind that is that if I like the gen I'm currently seeing and want to build on top of it, I can create a new task with the same seed without having to wait for the current task to complete.
Users sometimes struggle to get the IP address of their PC. This PR adds a button to the system settings pane that will list the server's IP
addresses.
Ask for a confimation before clearing the results pane or stopping a render task. The dialog can be skipped by holding down the shift key while clicking on the button.