diff --git a/CHANGELOG.md b/CHANGELOG.md
index bc914823..93d87c47 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,22 @@ All notable changes to Stability Matrix will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html).
+## v2.12.2
+### Added
+- Added Beta scheduler to the scheduler selector in Inference
+### Changed
+- (Internal) Updated to Avalonia 11.1.4
+### Fixed
+- Fixed ComfyUI NF4 extension not installing properly when prompted in Inference
+- Fixed [#932](https://github.com/LykosAI/StabilityMatrix/issues/932), [#935](https://github.com/LykosAI/StabilityMatrix/issues/935), [#939](https://github.com/LykosAI/StabilityMatrix/issues/939) - InvokeAI failing to update
+- Fixed repeated nested folders being created in `Models/StableDiffusion` when using Forge in Symlink mode in certain conditions. Existing folders will be repaired to their original structure on launch.
+- Fixed minimize button not working on macOS
+### Supporters
+#### Visionaries
+- We extend our heartfelt appreciation to our dedicated Visionary-tier Patreon supporter, **Waterclouds**. Your ongoing support is invaluable!
+#### Pioneers
+- We’d also like to thank our great Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, and **Szir777**. Your continuous support means a lot!
+
## v2.12.1
### Fixed
- Fixed [#916](https://github.com/LykosAI/StabilityMatrix/issues/916) - InvokeAI failing to install/update on macOS
diff --git a/Directory.Build.props b/Directory.Build.props
index 77081232..ebef34b6 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,5 +1,5 @@
- 11.1.3
+ 11.1.4
diff --git a/StabilityMatrix.Core/Helper/GenerationParametersConverter.cs b/StabilityMatrix.Core/Helper/GenerationParametersConverter.cs
index d4db7c08..ed146f39 100644
--- a/StabilityMatrix.Core/Helper/GenerationParametersConverter.cs
+++ b/StabilityMatrix.Core/Helper/GenerationParametersConverter.cs
@@ -18,6 +18,7 @@ public static class GenerationParametersConverter
["Euler Simple"] = (ComfySampler.Euler, ComfyScheduler.Simple),
["LMS"] = (ComfySampler.LMS, ComfyScheduler.Normal),
["Heun"] = (ComfySampler.Heun, ComfyScheduler.Normal),
+ ["Heun Beta"] = (ComfySampler.Heun, ComfyScheduler.Beta),
["DPM2"] = (ComfySampler.Dpm2, ComfyScheduler.Normal),
["DPM2 Karras"] = (ComfySampler.Dpm2, ComfyScheduler.Karras),
["DPM2 a"] = (ComfySampler.Dpm2Ancestral, ComfyScheduler.Normal),
@@ -34,6 +35,7 @@ public static class GenerationParametersConverter
["DPM adaptive"] = (ComfySampler.DpmAdaptive, ComfyScheduler.Normal),
["LMS Karras"] = (ComfySampler.LMS, ComfyScheduler.Karras),
["DDIM"] = (ComfySampler.DDIM, ComfyScheduler.Normal),
+ ["DDIM Beta"] = (ComfySampler.DDIM, ComfyScheduler.Beta),
["UniPC"] = (ComfySampler.UniPC, ComfyScheduler.Normal),
}.ToImmutableDictionary();
diff --git a/StabilityMatrix.Core/Models/Api/Comfy/ComfyScheduler.cs b/StabilityMatrix.Core/Models/Api/Comfy/ComfyScheduler.cs
index 2ee6d7b2..39aafc3a 100644
--- a/StabilityMatrix.Core/Models/Api/Comfy/ComfyScheduler.cs
+++ b/StabilityMatrix.Core/Models/Api/Comfy/ComfyScheduler.cs
@@ -9,6 +9,7 @@ public readonly record struct ComfyScheduler(string Name)
public static ComfyScheduler Exponential { get; } = new("exponential");
public static ComfyScheduler SDTurbo { get; } = new("sd_turbo");
public static ComfyScheduler Simple { get; } = new("simple");
+ public static ComfyScheduler Beta { get; } = new("beta");
private static Dictionary ConvertDict { get; } =
new()
@@ -19,7 +20,8 @@ public readonly record struct ComfyScheduler(string Name)
["sgm_uniform"] = "SGM Uniform",
[Simple.Name] = "Simple",
["ddim_uniform"] = "DDIM Uniform",
- [SDTurbo.Name] = "SD Turbo"
+ [SDTurbo.Name] = "SD Turbo",
+ [Beta.Name] = "Beta"
};
public static IReadOnlyList Defaults { get; } =
diff --git a/StabilityMatrix.Core/Models/Packages/BaseGitPackage.cs b/StabilityMatrix.Core/Models/Packages/BaseGitPackage.cs
index 65fbc454..585c658f 100644
--- a/StabilityMatrix.Core/Models/Packages/BaseGitPackage.cs
+++ b/StabilityMatrix.Core/Models/Packages/BaseGitPackage.cs
@@ -568,6 +568,7 @@ SharedFolderMethod sharedFolderMethod
// fix infinity controlnet folders
await FixInfinityFolders(modelsDir.JoinDir("ControlNet"), "ControlNet").ConfigureAwait(false);
+ await FixInfinityFolders(modelsDir.JoinDir("StableDiffusion"), "sd").ConfigureAwait(false);
// fix duplicate links in models dir
// see https://github.com/LykosAI/StabilityMatrix/issues/338
diff --git a/StabilityMatrix.Core/Models/Packages/ComfyUI.cs b/StabilityMatrix.Core/Models/Packages/ComfyUI.cs
index 9ccc8456..dc5a99f8 100644
--- a/StabilityMatrix.Core/Models/Packages/ComfyUI.cs
+++ b/StabilityMatrix.Core/Models/Packages/ComfyUI.cs
@@ -500,13 +500,28 @@ public override async Task> GetManifestExtensionsA
.DownloadService.GetContentAsync(manifest.Uri.ToString(), cancellationToken)
.ConfigureAwait(false);
+ // nf4 hack
+ var nf4Extension = new PackageExtension
+ {
+ Author = "comfyanonymous",
+ Files = [new Uri("https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4")],
+ Reference = new Uri("https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4"),
+ Title = "ComfyUI_bitsandbytes_NF4",
+ InstallType = "git-clone"
+ };
+
// Parse json
var jsonManifest = JsonSerializer.Deserialize(
content,
ComfyExtensionManifestSerializerContext.Default.Options
);
- return jsonManifest?.GetPackageExtensions() ?? Enumerable.Empty();
+ if (jsonManifest == null)
+ return [];
+
+ var extensions = jsonManifest.GetPackageExtensions().ToList();
+ extensions.Add(nf4Extension);
+ return extensions;
}
catch (Exception e)
{
diff --git a/StabilityMatrix.Core/Models/Packages/InvokeAI.cs b/StabilityMatrix.Core/Models/Packages/InvokeAI.cs
index 3290c5ae..bcc1be51 100644
--- a/StabilityMatrix.Core/Models/Packages/InvokeAI.cs
+++ b/StabilityMatrix.Core/Models/Packages/InvokeAI.cs
@@ -183,14 +183,14 @@ await SetupAndBuildInvokeFrontend(
{
case TorchIndex.Cuda:
torchInstallArgs = torchInstallArgs
- .WithTorch("==2.2.2")
- .WithTorchVision("==0.17.2")
- .WithXFormers("==0.0.25.post1")
- .WithTorchExtraIndex("cu121");
+ .WithTorch("==2.4.1")
+ .WithTorchVision("==0.19.1")
+ .WithXFormers("==0.0.28.post1")
+ .WithTorchExtraIndex("cu124");
Logger.Info("Starting InvokeAI install (CUDA)...");
pipCommandArgs =
- "-e .[xformers] --use-pep517 --extra-index-url https://download.pytorch.org/whl/cu121";
+ "-e .[xformers] --use-pep517 --extra-index-url https://download.pytorch.org/whl/cu124";
break;
case TorchIndex.Rocm: