Merge main into phase/39-school-owners.

Keep school owners and phase 41 opinions/portraits together; ResetAsync wipes all saves so shared AppHost tests stay isolated.
This commit is contained in:
Leonid Pershin
2026-08-20 08:36:13 +03:00
44 changed files with 1388 additions and 85 deletions
+4
View File
@@ -38,6 +38,9 @@ internal sealed class SchoolSave
/// <summary>Normalized player name. Missing or blank means ownerless.</summary>
public string? Owner { get; init; }
/// <summary>Portrait presets copied at create. Generation reads this, not the global template.</summary>
public SwarmUiConfigFile? PortraitSettings { get; init; }
}
/// <summary>Allocates school ids that survive a process restart.</summary>
@@ -176,6 +179,7 @@ internal sealed class SchoolStore
Presence = save.Presence,
DressRules = save.DressRules,
Owner = save.Owner,
PortraitSettings = save.PortraitSettings,
});
}
catch (Exception ex)