From 74e7c35885aa373f6043702e230c448283fecf18 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sat, 15 Jul 2023 23:15:39 +0530 Subject: [PATCH 1/7] Remove the buggy slider hover hide, prevents text selection from working correctly --- ui/media/js/main.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/media/js/main.js b/ui/media/js/main.js index 70d27fd5..c31a890b 100644 --- a/ui/media/js/main.js +++ b/ui/media/js/main.js @@ -2269,14 +2269,14 @@ function createLoRAEntries() { createLoRAEntries() // chrome-like spinners only on hover -function showSpinnerOnlyOnHover(e) { - e.addEventListener("mouseenter", () => { - e.setAttribute("type", "number") - }) - e.addEventListener("mouseleave", () => { - e.removeAttribute("type") - }) - e.removeAttribute("type") -} +// function showSpinnerOnlyOnHover(e) { +// e.addEventListener("mouseenter", () => { +// e.setAttribute("type", "number") +// }) +// e.addEventListener("mouseleave", () => { +// e.removeAttribute("type") +// }) +// e.removeAttribute("type") +// } -document.querySelectorAll("input[type=number]").forEach(showSpinnerOnlyOnHover) +// document.querySelectorAll("input[type=number]").forEach(showSpinnerOnlyOnHover) From 721f82637602a5990f5950225f003ad011610e75 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sat, 15 Jul 2023 23:18:03 +0530 Subject: [PATCH 2/7] sdkit 1.0.126 - 1.5x multiplier for lora --- scripts/check_modules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_modules.py b/scripts/check_modules.py index 16b518c8..dddb35c0 100644 --- a/scripts/check_modules.py +++ b/scripts/check_modules.py @@ -18,7 +18,7 @@ os_name = platform.system() modules_to_check = { "torch": ("1.11.0", "1.13.1", "2.0.0"), "torchvision": ("0.12.0", "0.14.1", "0.15.1"), - "sdkit": "1.0.125", + "sdkit": "1.0.126", "stable-diffusion-sdkit": "2.1.4", "rich": "12.6.0", "uvicorn": "0.19.0", From 0f7f52fbc2bb15462b06451431b7c1465f12a67e Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sat, 15 Jul 2023 23:28:12 +0530 Subject: [PATCH 3/7] sdkit 1.0.127 - tweak 1.5x multiplier for lora --- scripts/check_modules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_modules.py b/scripts/check_modules.py index dddb35c0..94719174 100644 --- a/scripts/check_modules.py +++ b/scripts/check_modules.py @@ -18,7 +18,7 @@ os_name = platform.system() modules_to_check = { "torch": ("1.11.0", "1.13.1", "2.0.0"), "torchvision": ("0.12.0", "0.14.1", "0.15.1"), - "sdkit": "1.0.126", + "sdkit": "1.0.127", "stable-diffusion-sdkit": "2.1.4", "rich": "12.6.0", "uvicorn": "0.19.0", From 6f065918e9b39e99cd28abd35bf0bdf4b9b1cbcf Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sun, 16 Jul 2023 01:12:49 +0530 Subject: [PATCH 4/7] sdkit 1.0.128 - don't fail if local alpha is different in loras --- scripts/check_modules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_modules.py b/scripts/check_modules.py index 94719174..c2b50796 100644 --- a/scripts/check_modules.py +++ b/scripts/check_modules.py @@ -18,7 +18,7 @@ os_name = platform.system() modules_to_check = { "torch": ("1.11.0", "1.13.1", "2.0.0"), "torchvision": ("0.12.0", "0.14.1", "0.15.1"), - "sdkit": "1.0.127", + "sdkit": "1.0.128", "stable-diffusion-sdkit": "2.1.4", "rich": "12.6.0", "uvicorn": "0.19.0", From ef1e42dd7b86fdb3cba9171958ba9df3688e4a6b Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sun, 16 Jul 2023 02:12:42 +0530 Subject: [PATCH 5/7] Add and remove buttons for arbitrary number of LoRA models --- ui/index.html | 5 +++- ui/media/css/main.css | 6 +++- ui/media/js/auto-save.js | 6 ---- ui/media/js/dnd.js | 21 ++++++++++++-- ui/media/js/main.js | 62 +++++++++++++++++++++++++++++----------- 5 files changed, 73 insertions(+), 27 deletions(-) diff --git a/ui/index.html b/ui/index.html index 7a1cbab2..e1177a56 100644 --- a/ui/index.html +++ b/ui/index.html @@ -232,7 +232,10 @@ - + +
+ + diff --git a/ui/media/css/main.css b/ui/media/css/main.css index 0297228f..b22a45d4 100644 --- a/ui/media/css/main.css +++ b/ui/media/css/main.css @@ -906,6 +906,10 @@ div.img-preview img { white-space: nowrap; } +#editor-settings-entries table { + width: 93%; +} + #negative_prompt { width: 100%; } @@ -1680,5 +1684,5 @@ body.wait-pause { } .model_entry .model_name { - width: 70%; + width: 65%; } \ No newline at end of file diff --git a/ui/media/js/auto-save.js b/ui/media/js/auto-save.js index 1ff51e2e..670fee0d 100644 --- a/ui/media/js/auto-save.js +++ b/ui/media/js/auto-save.js @@ -16,9 +16,6 @@ const SETTINGS_IDS_LIST = [ "clip_skip", "vae_model", "hypernetwork_model", - "lora_model_0", - "lora_model_1", - "lora_model_2", "sampler_name", "width", "height", @@ -26,9 +23,6 @@ const SETTINGS_IDS_LIST = [ "guidance_scale", "prompt_strength", "hypernetwork_strength", - "lora_alpha_0", - "lora_alpha_1", - "lora_alpha_2", "tiling", "output_format", "output_quality", diff --git a/ui/media/js/dnd.js b/ui/media/js/dnd.js index 7128bc69..3cca985d 100644 --- a/ui/media/js/dnd.js +++ b/ui/media/js/dnd.js @@ -292,6 +292,11 @@ const TASK_MAPPING = { use_lora_model: { name: "LoRA model", setUI: (use_lora_model) => { + // create rows + for (let i = loraModels.length; i < use_lora_model.length; i++) { + createLoraEntry() + } + use_lora_model.forEach((model_name, i) => { let field = loraModels[i][0] const oldVal = field.value @@ -304,9 +309,13 @@ const TASK_MAPPING = { }) // clear the remaining entries + let container = document.querySelector("#lora_model_container .model_entries") for (let i = use_lora_model.length; i < loraModels.length; i++) { - loraModels[i][0].value = "" + let modelEntry = loraModels[i][2] + container.removeChild(modelEntry) } + + loraModels.splice(use_lora_model.length) }, readUI: () => { let values = loraModels.map((e) => e[0].value) @@ -323,15 +332,23 @@ const TASK_MAPPING = { lora_alpha: { name: "LoRA Strength", setUI: (lora_alpha) => { + for (let i = loraModels.length; i < lora_alpha.length; i++) { + createLoraEntry() + } + lora_alpha.forEach((model_strength, i) => { let field = loraModels[i][1] field.value = model_strength }) // clear the remaining entries + let container = document.querySelector("#lora_model_container .model_entries") for (let i = lora_alpha.length; i < loraModels.length; i++) { - loraModels[i][1].value = 0 + let modelEntry = loraModels[i][2] + container.removeChild(modelEntry) } + + loraModels.splice(lora_alpha.length) }, readUI: () => { let models = loraModels.filter((e) => e[0].value.trim() !== "") diff --git a/ui/media/js/main.js b/ui/media/js/main.js index c31a890b..d2412a43 100644 --- a/ui/media/js/main.js +++ b/ui/media/js/main.js @@ -2242,31 +2242,59 @@ promptField.focus() promptField.selectionStart = promptField.value.length // multi-models -function addModelEntry(i, modelContainer, modelsList, modelType, defaultValue, strengthStep) { - let nameId = modelType + "_model_" + i - let strengthId = modelType + "_alpha_" + i +let modelCount = 0 - const modelEntry = document.createElement("div") - modelEntry.className = "model_entry" - modelEntry.innerHTML = ` +function addModelEntry(modelContainer, modelsList, modelType, defaultValue, strengthStep) { + let idx = modelCount++ + let nameId = modelType + "_model_" + idx + let strengthId = modelType + "_alpha_" + idx + + const modelElement = document.createElement("div") + modelElement.className = "model_entry" + modelElement.innerHTML = ` -
+ ` + modelContainer.appendChild(modelElement) - let modelName = new ModelDropdown(modelEntry.querySelector(".model_name"), modelType, "None") - let modelStrength = modelEntry.querySelector(".model_strength") + let modelName = new ModelDropdown(modelElement.querySelector(".model_name"), modelType, "None") + let modelStrength = modelElement.querySelector(".model_strength") + let entry = [modelName, modelStrength, modelElement] - modelContainer.appendChild(modelEntry) - modelsList.push([modelName, modelStrength]) -} + let removeBtn = document.createElement("button") + removeBtn.innerHTML = '' -function createLoRAEntries() { - let container = document.querySelector("#lora_model_container .model_entries") - for (let i = 0; i < 3; i++) { - addModelEntry(i, container, loraModels, "lora", 0.5, 0.02) + if (modelsList.length === 0) { + removeBtn.classList.add("displayNone") } + + removeBtn.addEventListener("click", function() { + let entryIdx = modelsList.indexOf(entry) + modelsList.splice(entryIdx, 1) + modelContainer.removeChild(modelElement) + }) + + modelElement.appendChild(removeBtn) + + modelsList.push(entry) + + return modelElement } -createLoRAEntries() + +function createLoraEntry() { + let container = document.querySelector("#lora_model_container .model_entries") + return addModelEntry(container, loraModels, "lora", 0.5, 0.02) +} + +function createLoraEntries() { + let firstEntry = createLoraEntry() + + let addLoraBtn = document.querySelector("#lora_model_container .add_model_entry") + addLoraBtn.addEventListener("click", () => { + createLoraEntry() + }) +} +createLoraEntries() // chrome-like spinners only on hover // function showSpinnerOnlyOnHover(e) { From b58b7660ab67a4d3ca1b917e2f9ba21824a2f38d Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sun, 16 Jul 2023 02:27:32 +0530 Subject: [PATCH 6/7] sdkit 1.0.129 - 1.6x multiplier for lora --- scripts/check_modules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_modules.py b/scripts/check_modules.py index c2b50796..392f7344 100644 --- a/scripts/check_modules.py +++ b/scripts/check_modules.py @@ -18,7 +18,7 @@ os_name = platform.system() modules_to_check = { "torch": ("1.11.0", "1.13.1", "2.0.0"), "torchvision": ("0.12.0", "0.14.1", "0.15.1"), - "sdkit": "1.0.128", + "sdkit": "1.0.129", "stable-diffusion-sdkit": "2.1.4", "rich": "12.6.0", "uvicorn": "0.19.0", From 66624f40115b308954c8f08d682991b4fa1e3998 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sun, 16 Jul 2023 02:31:01 +0530 Subject: [PATCH 7/7] sdkit 1.0.130 - 2x multiplier for lora --- scripts/check_modules.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_modules.py b/scripts/check_modules.py index 392f7344..fa83d9a9 100644 --- a/scripts/check_modules.py +++ b/scripts/check_modules.py @@ -18,7 +18,7 @@ os_name = platform.system() modules_to_check = { "torch": ("1.11.0", "1.13.1", "2.0.0"), "torchvision": ("0.12.0", "0.14.1", "0.15.1"), - "sdkit": "1.0.129", + "sdkit": "1.0.130", "stable-diffusion-sdkit": "2.1.4", "rich": "12.6.0", "uvicorn": "0.19.0",