Drop SDXL from the vanilla Swarm catalog so new schools draw only Krea 2.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -105,8 +105,14 @@ public class PortraitApiTests(AppHostFixture fixture)
|
||||
Assert.NotNull(settings);
|
||||
Assert.NotEmpty(settings!.Presets);
|
||||
Assert.NotEmpty(settings.Models);
|
||||
Assert.Contains(settings.Models, model => model.Id == "museByStableYogi_v30TurboGguf.gguf");
|
||||
Assert.Contains(settings.Models, model => model.Id == "realismByStableYogi_v25INT8Turbo.safetensors");
|
||||
var ids = settings.Models.Select(model => model.Id).ToList();
|
||||
Assert.Equal(
|
||||
["museByStableYogi_v30TurboGguf.gguf", "realismByStableYogi_v25INT8Turbo.safetensors"],
|
||||
ids);
|
||||
Assert.DoesNotContain("babesByStableYogi_v4XLLightning.safetensors", ids);
|
||||
Assert.DoesNotContain("DreamShaper_XL_-_Lightning_DPM++_SDE.safetensors", ids);
|
||||
Assert.DoesNotContain("epicrealismXL_VXIAbeast4SLightning.safetensors", ids);
|
||||
Assert.DoesNotContain("lustifyNSFWCheckpoint_v40DMD2.safetensors", ids);
|
||||
Assert.False(string.IsNullOrWhiteSpace(settings.ActivePresetId));
|
||||
}
|
||||
|
||||
@@ -127,13 +133,21 @@ public class PortraitApiTests(AppHostFixture fixture)
|
||||
Assert.True(presets.TryGetProperty("models", out var models));
|
||||
Assert.True(models.GetArrayLength() > 0);
|
||||
var ids = models.EnumerateArray().Select(model => model.GetProperty("id").GetString()).ToList();
|
||||
Assert.Contains("museByStableYogi_v30TurboGguf.gguf", ids);
|
||||
Assert.Contains("realismByStableYogi_v25INT8Turbo.safetensors", ids);
|
||||
Assert.Equal(
|
||||
["museByStableYogi_v30TurboGguf.gguf", "realismByStableYogi_v25INT8Turbo.safetensors"],
|
||||
ids);
|
||||
Assert.DoesNotContain("babesByStableYogi_v4XLLightning.safetensors", ids);
|
||||
Assert.DoesNotContain("DreamShaper_XL_-_Lightning_DPM++_SDE.safetensors", ids);
|
||||
var defaultPreset = presets.GetProperty("presets").EnumerateArray()
|
||||
.First(preset => preset.GetProperty("id").GetString() == "default");
|
||||
Assert.Equal(
|
||||
"realismByStableYogi_v25INT8Turbo.safetensors",
|
||||
defaultPreset.GetProperty("model").GetString());
|
||||
var childPreset = presets.GetProperty("presets").EnumerateArray()
|
||||
.First(preset => preset.GetProperty("id").GetString() == "child");
|
||||
Assert.Equal(
|
||||
"realismByStableYogi_v25INT8Turbo.safetensors",
|
||||
childPreset.GetProperty("model").GetString());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -12,9 +12,11 @@ public class SwarmUiSettingsStoreTests
|
||||
var profile = config.Resolve(8, PortraitKind.Avatar);
|
||||
|
||||
Assert.Equal("child", profile.PresetId);
|
||||
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, profile.Model);
|
||||
Assert.Equal(4, profile.Steps);
|
||||
Assert.Equal(2, profile.CfgScale);
|
||||
Assert.Equal(SwarmUiModelDefinition.RealismV25Id, profile.Model);
|
||||
Assert.Equal(8, profile.Steps);
|
||||
Assert.Equal(1, profile.CfgScale);
|
||||
Assert.Equal("euler", profile.Sampler);
|
||||
Assert.Equal("simple", profile.Scheduler);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -157,8 +159,8 @@ public class SwarmUiSettingsStoreTests
|
||||
true,
|
||||
[
|
||||
SwarmUiModelDefinition.BabesId,
|
||||
SwarmUiModelDefinition.MuseId,
|
||||
"not-in-config.safetensors",
|
||||
SwarmUiModelDefinition.EpicRealismId,
|
||||
],
|
||||
[],
|
||||
[],
|
||||
@@ -167,10 +169,9 @@ public class SwarmUiSettingsStoreTests
|
||||
|
||||
var allowed = config.AllowedModelIds(discovery);
|
||||
|
||||
Assert.Equal(
|
||||
[SwarmUiModelDefinition.BabesId, SwarmUiModelDefinition.EpicRealismId],
|
||||
allowed);
|
||||
Assert.Equal([SwarmUiModelDefinition.MuseId], allowed);
|
||||
Assert.DoesNotContain("not-in-config.safetensors", allowed);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.BabesId, allowed);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.DreamShaperId, allowed);
|
||||
}
|
||||
|
||||
@@ -204,12 +205,13 @@ public class SwarmUiSettingsStoreTests
|
||||
var config = SwarmUiConfigFile.CreateDefault();
|
||||
var ids = config.Models.Select(model => model.Id).ToList();
|
||||
|
||||
Assert.Contains(SwarmUiModelDefinition.BabesId, ids);
|
||||
Assert.Contains(SwarmUiModelDefinition.DreamShaperId, ids);
|
||||
Assert.Contains(SwarmUiModelDefinition.EpicRealismId, ids);
|
||||
Assert.Contains(SwarmUiModelDefinition.LustifyId, ids);
|
||||
Assert.Contains(SwarmUiModelDefinition.MuseId, ids);
|
||||
Assert.Contains(SwarmUiModelDefinition.RealismV25Id, ids);
|
||||
Assert.Equal(
|
||||
[SwarmUiModelDefinition.MuseId, SwarmUiModelDefinition.RealismV25Id],
|
||||
ids);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.BabesId, ids);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.DreamShaperId, ids);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.EpicRealismId, ids);
|
||||
Assert.DoesNotContain(SwarmUiModelDefinition.LustifyId, ids);
|
||||
Assert.DoesNotContain("realismByStableYogi_v20TurboGGUF.gguf", ids);
|
||||
|
||||
var realism = Assert.Single(config.Models, model => model.Id == SwarmUiModelDefinition.RealismV25Id);
|
||||
@@ -230,7 +232,24 @@ public class SwarmUiSettingsStoreTests
|
||||
Assert.Contains("photograph", adult.Style, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
var child = Assert.Single(config.Presets, preset => preset.Id == "child");
|
||||
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, child.Model);
|
||||
Assert.Equal(SwarmUiModelDefinition.RealismV25Id, child.Model);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CreateChild_StyleAndNegativeAreProseWithoutSdWeights()
|
||||
{
|
||||
var child = SwarmUiPresetDefinition.CreateChild();
|
||||
Assert.NotNull(child.Avatar);
|
||||
Assert.NotNull(child.FullBody);
|
||||
|
||||
Assert.DoesNotContain("(low quality", child.Style, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(":1.4)", child.Style, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("(low quality", child.Negative, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(":1.4)", child.Negative, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("(low quality", child.Avatar.ShotType, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(":1.4)", child.Avatar.ShotType, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("(low quality", child.FullBody.ShotType, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain(":1.4)", child.FullBody.ShotType, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -267,6 +286,72 @@ public class SwarmUiSettingsStoreTests
|
||||
Assert.Equal(expected.Presets[0].Negative, loaded.Presets[0].Negative);
|
||||
Assert.Equal(expected.Presets[0].Avatar?.ShotType, loaded.Presets[0].Avatar?.ShotType);
|
||||
Assert.Equal(expected.Presets[1].Model, loaded.Presets[1].Model);
|
||||
Assert.Equal(expected.Presets[1].Style, loaded.Presets[1].Style);
|
||||
Assert.Equal(expected.Presets[1].Negative, loaded.Presets[1].Negative);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NormalizeAfterLoad_DoesNotRewriteExistingSdxlCatalog()
|
||||
{
|
||||
var living = new SwarmUiConfigFile
|
||||
{
|
||||
ActivePresetId = "default",
|
||||
Models =
|
||||
[
|
||||
new SwarmUiModelDefinition
|
||||
{
|
||||
Id = SwarmUiModelDefinition.BabesId,
|
||||
Label = "babes",
|
||||
Steps = 7,
|
||||
CfgScale = 1.5,
|
||||
Sampler = "euler",
|
||||
Scheduler = "normal",
|
||||
},
|
||||
new SwarmUiModelDefinition
|
||||
{
|
||||
Id = SwarmUiModelDefinition.DreamShaperId,
|
||||
Label = "DreamShaper",
|
||||
Steps = 4,
|
||||
CfgScale = 2,
|
||||
Sampler = "dpmpp_sde",
|
||||
Scheduler = "karras",
|
||||
},
|
||||
],
|
||||
Presets =
|
||||
[
|
||||
new SwarmUiPresetDefinition
|
||||
{
|
||||
Id = "default",
|
||||
Label = "Default",
|
||||
Model = SwarmUiModelDefinition.BabesId,
|
||||
Avatar = new SwarmUiKindPreset { Width = 1024, Height = 1024 },
|
||||
Custom = new SwarmUiKindPreset { Width = 896, Height = 1152 },
|
||||
FullBody = new SwarmUiKindPreset { Width = 896, Height = 1152 },
|
||||
},
|
||||
new SwarmUiPresetDefinition
|
||||
{
|
||||
Id = "child",
|
||||
Label = "Children",
|
||||
Model = SwarmUiModelDefinition.DreamShaperId,
|
||||
Avatar = new SwarmUiKindPreset { Width = 1024, Height = 1024 },
|
||||
Custom = new SwarmUiKindPreset { Width = 896, Height = 1152 },
|
||||
FullBody = new SwarmUiKindPreset { Width = 896, Height = 1152 },
|
||||
},
|
||||
],
|
||||
AgeRules = [new SwarmUiAgeRule { MinAge = 6, MaxAge = 11, PresetId = "child" }],
|
||||
};
|
||||
|
||||
living.NormalizeAfterLoad();
|
||||
|
||||
Assert.Equal(
|
||||
[SwarmUiModelDefinition.BabesId, SwarmUiModelDefinition.DreamShaperId],
|
||||
living.Models.Select(model => model.Id));
|
||||
Assert.DoesNotContain(living.Models, model => model.Id == SwarmUiModelDefinition.MuseId);
|
||||
Assert.DoesNotContain(living.Models, model => model.Id == SwarmUiModelDefinition.RealismV25Id);
|
||||
Assert.Equal(SwarmUiModelDefinition.BabesId, living.Presets[0].Model);
|
||||
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Presets[1].Model);
|
||||
Assert.Equal("child", living.Resolve(8, PortraitKind.Avatar).PresetId);
|
||||
Assert.Equal(SwarmUiModelDefinition.DreamShaperId, living.Resolve(8, PortraitKind.Avatar).Model);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
Reference in New Issue
Block a user