diff --git a/scripts/check_modules.py b/scripts/check_modules.py
index 50ff90c2..23dac713 100644
--- a/scripts/check_modules.py
+++ b/scripts/check_modules.py
@@ -22,7 +22,7 @@ modules_to_check = {
"torch": ("1.11.0", "1.13.1", "2.0.0", "2.0.1"),
"torchvision": ("0.12.0", "0.14.1", "0.15.1", "0.15.2"),
"setuptools": "69.5.1",
- "sdkit": "2.0.15.3",
+ "sdkit": "2.0.15.4",
"diffusers": "0.21.4",
"stable-diffusion-sdkit": "2.1.5",
"rich": "12.6.0",
diff --git a/ui/easydiffusion/utils/save_utils.py b/ui/easydiffusion/utils/save_utils.py
index 457af921..e1b4d79a 100644
--- a/ui/easydiffusion/utils/save_utils.py
+++ b/ui/easydiffusion/utils/save_utils.py
@@ -31,6 +31,7 @@ TASK_TEXT_MAPPING = {
"clip_skip": "Clip Skip",
"use_controlnet_model": "ControlNet model",
"control_filter_to_apply": "ControlNet Filter",
+ "control_alpha": "ControlNet Strength",
"use_vae_model": "VAE model",
"sampler_name": "Sampler",
"width": "Width",
diff --git a/ui/index.html b/ui/index.html
index 77113985..a8c6685f 100644
--- a/ui/index.html
+++ b/ui/index.html
@@ -35,7 +35,7 @@
Easy Diffusion
- v3.0.8
+ v3.0.9
@@ -235,6 +235,8 @@
+
+
diff --git a/ui/media/js/auto-save.js b/ui/media/js/auto-save.js
index 47a2885b..4ed28b89 100644
--- a/ui/media/js/auto-save.js
+++ b/ui/media/js/auto-save.js
@@ -57,6 +57,7 @@ const SETTINGS_IDS_LIST = [
"embedding-card-size-selector",
"lora_model",
"enable_vae_tiling",
+ "controlnet_alpha",
]
const IGNORE_BY_DEFAULT = ["prompt"]
diff --git a/ui/media/js/dnd.js b/ui/media/js/dnd.js
index cf082406..0a547e55 100644
--- a/ui/media/js/dnd.js
+++ b/ui/media/js/dnd.js
@@ -309,6 +309,15 @@ const TASK_MAPPING = {
readUI: () => controlImageFilterField.value,
parse: (val) => val,
},
+ control_alpha: {
+ name: "ControlNet Strength",
+ setUI: (control_alpha) => {
+ controlAlphaField.value = control_alpha
+ updateControlAlphaSlider()
+ },
+ readUI: () => parseFloat(controlAlphaField.value),
+ parse: (val) => parseFloat(val),
+ },
use_lora_model: {
name: "LoRA model",
setUI: (use_lora_model) => {
@@ -587,6 +596,7 @@ const TASK_TEXT_MAPPING = {
lora_alpha: "LoRA Strength",
use_controlnet_model: "ControlNet model",
control_filter_to_apply: "ControlNet Filter",
+ control_alpha: "ControlNet Strength",
tiling: "Seamless Tiling",
}
function parseTaskFromText(str) {
diff --git a/ui/media/js/main.js b/ui/media/js/main.js
index ede271df..bff87b3b 100644
--- a/ui/media/js/main.js
+++ b/ui/media/js/main.js
@@ -51,6 +51,10 @@ const taskConfigSetup = {
preserve_init_image_color_profile: "Preserve Color Profile",
strict_mask_border: "Strict Mask Border",
use_controlnet_model: "ControlNet Model",
+ control_alpha: {
+ label: "ControlNet Strength",
+ visible: ({ reqBody }) => !!reqBody?.use_controlnet_model,
+ },
},
pluginTaskConfig: {},
getCSSKey: (key) =>
@@ -99,6 +103,8 @@ let controlImagePreview = document.querySelector("#control_image_preview")
let controlImageClearBtn = document.querySelector(".control_image_clear")
let controlImageContainer = document.querySelector("#control_image_wrapper")
let controlImageFilterField = document.querySelector("#control_image_filter")
+let controlAlphaSlider = document.querySelector("#controlnet_alpha_slider")
+let controlAlphaField = document.querySelector("#controlnet_alpha")
let applyColorCorrectionField = document.querySelector("#apply_color_correction")
let strictMaskBorderField = document.querySelector("#strict_mask_border")
let colorCorrectionSetting = document.querySelector("#apply_color_correction_setting")
@@ -1395,6 +1401,7 @@ function getCurrentUserRequest() {
if (controlnetModelField.value !== "" && IMAGE_REGEX.test(controlImagePreview.src)) {
newTask.reqBody.use_controlnet_model = controlnetModelField.value
newTask.reqBody.control_image = controlImagePreview.src
+ newTask.reqBody.control_alpha = parseFloat(controlAlphaField.value)
if (controlImageFilterField.value !== "") {
newTask.reqBody.control_filter_to_apply = controlImageFilterField.value
}
@@ -2015,6 +2022,27 @@ function updateHypernetworkStrengthContainer() {
hypernetworkModelField.addEventListener("change", updateHypernetworkStrengthContainer)
updateHypernetworkStrengthContainer()
+/********************* Controlnet Alpha **************************/
+function updateControlAlpha() {
+ controlAlphaField.value = controlAlphaSlider.value / 10
+ controlAlphaField.dispatchEvent(new Event("change"))
+}
+
+function updateControlAlphaSlider() {
+ if (controlAlphaField.value < 0) {
+ controlAlphaField.value = 0
+ } else if (controlAlphaField.value > 10) {
+ controlAlphaField.value = 10
+ }
+
+ controlAlphaSlider.value = controlAlphaField.value * 10
+ controlAlphaSlider.dispatchEvent(new Event("change"))
+}
+
+controlAlphaSlider.addEventListener("input", updateControlAlpha)
+controlAlphaField.addEventListener("input", updateControlAlphaSlider)
+updateControlAlpha()
+
/********************* JPEG/WEBP Quality **********************/
function updateOutputQuality() {
outputQualityField.value = 0 | outputQualitySlider.value