diff --git a/CHANGES.md b/CHANGES.md
index d54a1d84..5b1da5f1 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -17,7 +17,9 @@
- **Major rewrite of the code** - We've switched to using diffusers under-the-hood, which allows us to release new features faster, and focus on making the UI and installer even easier to use.
### Detailed changelog
-* 3.0.2 - 30 Aug 2023 - Allow blocking NSFW images using a server-side config. This prevents the browser from generating NSFW images or changing the config. Open `config.yaml` in a text editor (e.g. Notepad), and add `block_nsfw: true` at the end, and save the file.
+* 3.0.3 - 30 Aug 2023 - Allow loading NovelAI-based custom models.
+* 3.0.3 - 30 Aug 2023 - Fix broken VAE tiling. This allows you to create larger images with lesser VRAM usage.
+* 3.0.3 - 30 Aug 2023 - Allow blocking NSFW images using a server-side config. This prevents the browser from generating NSFW images or changing the config. Open `config.yaml` in a text editor (e.g. Notepad), and add `block_nsfw: true` at the end, and save the file.
* 3.0.2 - 29 Aug 2023 - Fixed incorrect matching of embeddings from prompts.
* 3.0.2 - 24 Aug 2023 - Fix broken seamless tiling.
* 3.0.2 - 23 Aug 2023 - Fix styling on mobile devices.
diff --git a/scripts/check_modules.py b/scripts/check_modules.py
index b5f9caa0..db3e8098 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", "2.0.1"),
"torchvision": ("0.12.0", "0.14.1", "0.15.1", "0.15.2"),
- "sdkit": "2.0.5",
+ "sdkit": "2.0.9",
"stable-diffusion-sdkit": "2.1.4",
"rich": "12.6.0",
"uvicorn": "0.19.0",
diff --git a/ui/easydiffusion/types.py b/ui/easydiffusion/types.py
index eeffcb72..29082438 100644
--- a/ui/easydiffusion/types.py
+++ b/ui/easydiffusion/types.py
@@ -26,7 +26,7 @@ class GenerateImageRequest(BaseModel):
sampler_name: str = None # "ddim", "plms", "heun", "euler", "euler_a", "dpm2", "dpm2_a", "lms"
hypernetwork_strength: float = 0
lora_alpha: Union[float, List[float]] = 0
- tiling: str = "none" # "none", "x", "y", "xy"
+ tiling: str = None # None, "x", "y", "xy"
class FilterImageRequest(BaseModel):
diff --git a/ui/index.html b/ui/index.html
index 57683bbf..12efa1ae 100644
--- a/ui/index.html
+++ b/ui/index.html
@@ -35,7 +35,7 @@
Easy Diffusion
- v3.0.2
+ v3.0.3
diff --git a/ui/media/js/dnd.js b/ui/media/js/dnd.js
index 5cdb9539..cf082406 100644
--- a/ui/media/js/dnd.js
+++ b/ui/media/js/dnd.js
@@ -268,7 +268,11 @@ const TASK_MAPPING = {
tiling: {
name: "Tiling",
setUI: (val) => {
- tilingField.value = val
+ if (val === null || val === "None") {
+ tilingField.value = "none"
+ } else {
+ tilingField.value = val
+ }
},
readUI: () => tilingField.value,
parse: (val) => val,
@@ -583,6 +587,7 @@ const TASK_TEXT_MAPPING = {
lora_alpha: "LoRA Strength",
use_controlnet_model: "ControlNet model",
control_filter_to_apply: "ControlNet Filter",
+ tiling: "Seamless Tiling",
}
function parseTaskFromText(str) {
const taskReqBody = {}
diff --git a/ui/media/js/main.js b/ui/media/js/main.js
index 12ad5a0c..d26fe0db 100644
--- a/ui/media/js/main.js
+++ b/ui/media/js/main.js
@@ -22,7 +22,8 @@ const taskConfigSetup = {
},
tiling: {
label: "Tiling",
- visible: ({ reqBody }) => reqBody?.tiling != "none",
+ visible: ({ reqBody }) =>
+ reqBody?.tiling != "none" && reqBody?.tiling !== null && reqBody?.tiling !== undefined,
value: ({ reqBody }) => reqBody?.tiling,
},
use_vae_model: {
@@ -680,7 +681,7 @@ function getAllModelNames(type) {
// gets a flattened list of all models of a certain type. e.g. "path/subpath/modelname"
// use the filter to search for all models having a certain name.
-function getAllModelPathes(type,filter="") {
+function getAllModelPathes(type, filter = "") {
function f(tree, prefix) {
if (tree == undefined) {
return []
@@ -690,7 +691,7 @@ function getAllModelPathes(type,filter="") {
if (typeof e == "object") {
result = result.concat(f(e[1], prefix + e[0] + "/"))
} else {
- if (filter=="" || e==filter) {
+ if (filter == "" || e == filter) {
result.push(prefix + e)
}
}
@@ -700,7 +701,6 @@ function getAllModelPathes(type,filter="") {
return f(modelsOptions[type], "")
}
-
function onUseAsThumbnailClick(req, img) {
let scale = 1
let targetWidth = img.naturalWidth
@@ -1237,7 +1237,6 @@ function getCurrentUserRequest() {
//render_device: undefined, // Set device affinity. Prefer this device, but wont activate.
use_stable_diffusion_model: stableDiffusionModelField.value,
clip_skip: clipSkipField.checked,
- tiling: tilingField.value,
use_vae_model: vaeModelField.value,
stream_progress_updates: true,
stream_image_progress: numOutputsTotal > 50 ? false : streamImageProgressField.checked,
@@ -1302,6 +1301,10 @@ function getCurrentUserRequest() {
newTask.reqBody.use_lora_model = modelNames
newTask.reqBody.lora_alpha = modelStrengths
}
+
+ if (tilingField.value !== "none") {
+ newTask.reqBody.tiling = tilingField.value
+ }
}
if (testDiffusers.checked && document.getElementById("toggle-tensorrt-install").innerHTML == "Uninstall") {
// TRT is installed