()?.InformationalVersion
?? Assembly.GetExecutingAssembly().GetName().Version?.ToString()
?? "unknown",
@@ -38,6 +38,9 @@ public static string SerializeHtml(GamingDiagnosticReport report, bool redact =
.Select(item => $"| {H(item.Label)} | {item.Sent} | {item.Received} | {item.Lost} | {F(item.MinimumMs)} | {F(item.MedianMs)} | {F(item.AverageMs)} | {F(item.P95Ms)} | {F(item.P99Ms)} | {F(item.MaximumMs)} | {F(item.JitterMs)} | {F(item.WindowedJitterMs)} |
");
var findings = safe.Findings.Select(item => $"| {H(item.Scope.ToString())} | {H(item.Confidence.ToString())} | {H(item.Title)} | {H(item.Evidence)} | {H(item.Action)} |
");
var playability = Playability(safe);
+ var wifi = safe.Wifi is null
+ ? string.Empty
+ : $"Wi-Fi
{H(safe.Wifi.VerdictDisplay)} — {H(safe.Wifi.Summary)}
";
var json = H(SerializeJson(report, redact));
return $$"""
@@ -45,6 +48,7 @@ public static string SerializeHtml(GamingDiagnosticReport report, bool redact =
{{title}}
Started {{H(safe.StartedAt.ToString("O"))}} · Profile {{H(safe.Profile.DisplayName)}} · Load {{H(safe.LoadCondition.ToString())}} · Duration {{safe.Duration.TotalSeconds:0.0}}s · Redacted {{redact}}
{{playability}}
+{{wifi}}
Probe statistics
| Target | Sent | Received | Lost | Min | Median | Average | P95 | P99 | Max | Jitter | Jitter (1s windows) |
{{string.Join("", rows)}}
Findings
| Scope | Confidence | Finding | Evidence | Action |
{{string.Join("", findings)}}
Raw report
{{json}}