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:
Leonid Pershin
2026-08-20 20:40:50 +03:00
co-authored by Cursor
parent 9c0735b988
commit 6fb6efbd45
6 changed files with 146 additions and 100 deletions
@@ -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]