House rules: numbers through one formatter, no made-up server errors, and the rules fail the build
Build / Build (push) Successful in 33s
Build / Build (push) Successful in 33s
- Every number shown on a page goes through NumbersExtensions: counts, percentages, the nerd readouts and the values written into a style. - A failure the client builds itself (offline, timeout, retries run out, an answer it can't read) is a 400 that names its kind; only a server's own 5XX passes through. - Login, sign-up, recovery and password confirmations leave autocomplete to the browser, so it can offer the saved login. - The Daisy components start with empty lists and attributes, and a decorative image still renders alt="". - Arasaka.HouseRules.Analyzers checks all of this in every build, together with PrivaPub.ClientModels. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4YtEJrgxG12Pc39Fai8Bd
This commit is contained in:
1 parent
697b2c8897
commit
3827d903a3
37 files changed
+165
-111
No files matched your search
@@ -1,5 +1,7 @@
|
||||
using System.Globalization;
|
||||
|
||||
using decePubClient.Extensions;
|
||||
|
||||
namespace decePubClient.Components.Nerd;
|
||||
|
||||
/// <summary>One line of a NerdTip; a row without a value is not shown.</summary>
|
||||
@@ -9,7 +11,7 @@ public sealed record NerdRow(string Label, string Value)
|
||||
{
|
||||
null => null,
|
||||
DateTime time => Time(time),
|
||||
double number => number.ToString("0.###", CultureInfo.InvariantCulture),
|
||||
double number => number.ToReadout(),
|
||||
bool flag => flag ? "yes" : "no",
|
||||
IFormattable formattable => formattable.ToString(null, CultureInfo.InvariantCulture),
|
||||
_ => value.ToString()
|
||||
@@ -27,8 +29,8 @@ public sealed record NerdRow(string Label, string Value)
|
||||
span = span.Duration();
|
||||
return sign + (span.TotalSeconds switch
|
||||
{
|
||||
< 1 => $"{span.TotalMilliseconds:0} ms",
|
||||
< 60 => $"{span.TotalSeconds.ToString("0.0", CultureInfo.InvariantCulture)} s",
|
||||
< 1 => $"{span.TotalMilliseconds.ToFixed(0)} ms",
|
||||
< 60 => $"{span.TotalSeconds.ToFixed(1)} s",
|
||||
< 3600 => $"{span.Minutes} min {span.Seconds} s",
|
||||
< 86400 => $"{(int)span.TotalHours} h {span.Minutes} min",
|
||||
_ => $"{(int)span.TotalDays} d {span.Hours} h"
|
||||
@@ -40,8 +42,8 @@ public sealed record NerdRow(string Label, string Value)
|
||||
{
|
||||
null => null,
|
||||
< 1024 => $"{bytes} B",
|
||||
< 1024 * 1024 => $"{(bytes.Value / 1024d).ToString("0.0", CultureInfo.InvariantCulture)} KiB",
|
||||
_ => $"{(bytes.Value / 1048576d).ToString("0.0", CultureInfo.InvariantCulture)} MiB"
|
||||
< 1024 * 1024 => $"{(bytes.Value / 1024d).ToFixed(1)} KiB",
|
||||
_ => $"{(bytes.Value / 1048576d).ToFixed(1)} MiB"
|
||||
};
|
||||
|
||||
/// <summary>The great-circle distance between two points in kilometres (haversine, Earth radius 6371 km).</summary>
|
||||
|
||||
Reference in new issue
Block a user