Implement custom portrait generation: update API, UI, and localization to support user-defined prompts for portraits, replacing half-body option with custom variant.
This commit is contained in:
@@ -107,7 +107,12 @@ public class PortraitApiTests(AppHostFixture fixture)
|
||||
|
||||
private sealed record PersonListItem(string Id);
|
||||
|
||||
private sealed record PersonCardResponse(string Id, bool HasAvatar, bool HasHalfBody, bool HasFullBody);
|
||||
private sealed record PersonCardResponse(
|
||||
string Id,
|
||||
bool HasAvatar,
|
||||
bool HasCustom,
|
||||
bool HasFullBody,
|
||||
string? CustomPortraitPrompt);
|
||||
|
||||
private sealed record SavesDirectoryResponse(string Path);
|
||||
}
|
||||
|
||||
@@ -43,19 +43,26 @@ public class PortraitPromptBuilderTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_HalfBody_AddsHalfBodyPreset()
|
||||
public void Build_Custom_UsesPromptExtraInsteadOfPreset()
|
||||
{
|
||||
var settings = new SwarmUiSettings
|
||||
{
|
||||
Positive = "School photo.",
|
||||
HalfBody = new SwarmUiSettings.SwarmUiPreset { Positive = "Waist-up portrait." },
|
||||
Avatar = new SwarmUiSettings.SwarmUiPreset { Positive = "Head and shoulders." },
|
||||
FullBody = new SwarmUiSettings.SwarmUiPreset { Positive = "Standing full body." },
|
||||
};
|
||||
|
||||
var (halfPositive, _) = PortraitPromptBuilder.Build(SampleCard(), settings, PortraitKind.Half);
|
||||
const string extra = "standing in a school hallway, soft window light";
|
||||
var (customPositive, _) = PortraitPromptBuilder.Build(
|
||||
SampleCard(),
|
||||
settings,
|
||||
PortraitKind.Custom,
|
||||
extra);
|
||||
|
||||
Assert.Contains("Waist-up portrait.", halfPositive, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("Standing full body.", halfPositive, StringComparison.Ordinal);
|
||||
Assert.Contains("School photo.", customPositive, StringComparison.Ordinal);
|
||||
Assert.Contains(extra, customPositive, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("Head and shoulders.", customPositive, StringComparison.Ordinal);
|
||||
Assert.DoesNotContain("Standing full body.", customPositive, StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
private static PersonCardResponse SampleCard() =>
|
||||
|
||||
Reference in New Issue
Block a user