"me-web?" 0.7.0: the name in quotes, copy buttons, and every translation rewritten in plain words
Build / Desktop, server and tools (push) Successful in 1m19s
Release / Every platform, the server, the release (push) Successful in 9m34s

- The name is now always written in quotation marks, each language with its own: “me-web?”, «me-web?», „me-web?“, « me-web? », 「me-web?」. Without them the question mark read as the end of a sentence. In Arabic, Hebrew and the other right-to-left languages the question mark no longer jumps to the wrong side of the name.
- Your addresses, your router, your network, the reverse name, the route and the code of a submission you sent now sit in a small box with a copy button, ready to paste into a message to your provider or anywhere else.
- Every translation except English and Italian was rewritten for people who are not technical: everyday words first, the technical term in brackets, and one word for one thing across the whole app. They are still machine drafts; "Suggest a correction" is welcome in any language.
- A few lines are plainer in English and Italian too: the test servers for calls, and the server in the middle that carries a call when two homes can't connect directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-15 22:49:40 +02:00
1 parent d18caed157
commit 320936c688
260 files changed
+23662 -18072

No files matched your search

+3 -6
View File
@@ -313,9 +313,7 @@ public static class Verdicts
if (reach.V6 is null && reach.V6Refusal is not null) finding.WithKey("FactReachV6", "Refusal" + Pascal(reach.V6Refusal));
if (reach.Hairpin is not null) finding.WithKey("FactHairpin", reach.Hairpin == true ? "ValueHairpinYes" : "ValueHairpinNo");
var route = reach.V4?.Route ?? reach.V6?.Route ?? [];
var site = run?.Site ?? Endpoints.Main;
if (route.Count > 0) finding.With(site == Endpoints.Main ? "FactRouteBack" : "FactRouteBackNode", string.Join(" → ", route.Select(h => h.Name ?? h.Address ?? "*")));
if (Endpoints.Nodes.Count > 0) finding.With("FactMeasuredFrom", $"{site.Place} ({site.Host})");
if (route.Count > 0) finding.With("FactRouteBack", string.Join(" → ", route.Select(h => h.Name ?? h.Address ?? "*")));
if (reach.V4?.Ports.Any(p => p.Outcome == ProbeOutcome.OpenNotYou && p.Port is 80 or 443) == true && !mapped)
finding.WithKey("FactHint", "HintSomethingAnswers");
return finding;
@@ -392,7 +390,7 @@ public static class Verdicts
return finding;
}
public static Finding Speed(SpeedReport speed, MeasuringSite site)
public static Finding Speed(SpeedReport speed)
{
var finding = new Finding { Id = CheckId.Speed };
if (speed.Limited)
@@ -413,8 +411,7 @@ public static class Verdicts
finding.WithKey("FactDownload", "ValueMbpsDecimal", speed.DownMbps.ToString("0.#", CultureInfo.InvariantCulture));
finding.WithKey("FactUpload", "ValueMbpsDecimal", speed.UpMbps.ToString("0.#", CultureInfo.InvariantCulture));
finding.WithKey("FactSample", "ValueSample", (speed.DownBytes / 1048576).ToString(CultureInfo.InvariantCulture), (speed.UpBytes / 1048576).ToString(CultureInfo.InvariantCulture));
if (speed.RoundTripMs > 0) finding.WithKey(site == Endpoints.Main ? "FactRoundTrip" : "FactRoundTripNode", "ValueMilliseconds", speed.RoundTripMs.ToString(CultureInfo.InvariantCulture));
if (Endpoints.Nodes.Count > 0) finding.With("FactMeasuredFrom", $"{site.Place} ({site.Host})");
if (speed.RoundTripMs > 0) finding.WithKey("FactRoundTrip", "ValueMilliseconds", speed.RoundTripMs.ToString(CultureInfo.InvariantCulture));
return finding;
}