Stufe 4c (#764): Kommentare in C#, WebUI-Skripten, CSS und HTML auf Englisch

Rund 2.600 Kommentarblöcke in 310 C#-Dateien übersetzt, Begründungen vollständig
erhalten: blockweise gleiche Anzahl wie vorher, kein Block unter 60 % seiner
Länge, der Code außerhalb der Kommentare per Tokenizer byte-identisch geprüft.
Zitate deutscher Oberflächentexte und Testdaten bleiben deutsch.

WebUI: Kommentare in JS/CSS/HTML übersetzt, JSDoc-@param an die in 4b
umbenannten Parameter angeglichen.

Dabei behoben:
- 4b hatte "tag" (HTML-Tag) als deutsches "Tag" gelesen und zu "dayValue"
  gemacht (makeElement, svg, Tagesübersicht) - zurück auf tag/day.
- Aufgaben "InProgress" bekamen die Plakettenart "laufend", für die es nie eine
  CSS-Klasse gab - jetzt "success" wie laufende Instanzen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-04 12:45:03 +02:00
co-authored by Claude Opus 5.5
parent da4ceac7d5
commit 837a634a22
311 changed files with 7238 additions and 7252 deletions
@@ -4,9 +4,9 @@ using Shouldly;
namespace ClawdDotNet.Tools.Tests.WebFetch;
/// <summary>
/// S5 aus der Bestandsaufnahme: Die Whitelist wurde nur auf die Ausgangs-URL angewendet,
/// HttpClient folgte Weiterleitungen aber selbst. Eine erlaubte Domain konnte damit ins
/// lokale Netz weiterleiten — Router, NAS, der eigene Git-Server, Cloud-Metadatendienste.
/// S5 from the inventory: the whitelist was only applied to the initial URL,
/// but HttpClient followed redirects itself. An allowed domain could thus redirect into the
/// local network — router, NAS, the own Git server, cloud metadata services.
/// </summary>
public sealed class UrlGuardTests
{
@@ -16,11 +16,11 @@ public sealed class UrlGuardTests
=> UrlGuard.TryValidate(url, Allowed, out _, out error);
// ═══════════════════════════════════════════════════════════
// Netzsperren
// Network blocks
// ═══════════════════════════════════════════════════════════
[Theory]
[InlineData("http://169.254.169.254/latest/meta-data/")] // Cloud-Metadaten
[InlineData("http://169.254.169.254/latest/meta-data/")] // cloud metadata
[InlineData("http://127.0.0.1:8080/")]
[InlineData("http://localhost:8418/")]
[InlineData("http://192.168.178.10:8418/Richard/ClawdDotNet.git")]
@@ -40,8 +40,8 @@ public sealed class UrlGuardTests
}
[Theory]
[InlineData("172.15.0.1")] // knapp unterhalb von 172.16/12
[InlineData("172.32.0.1")] // knapp oberhalb
[InlineData("172.15.0.1")] // just below 172.16/12
[InlineData("172.32.0.1")] // just above
[InlineData("11.0.0.1")]
[InlineData("8.8.8.8")]
public void Oeffentliche_Adressen_gelten_nicht_als_privat(string host)
@@ -94,8 +94,8 @@ public sealed class UrlGuardTests
}
/// <summary>
/// Die alte Fassung entfernte "www." per Ersetzen über die ganze Zeichenkette:
/// aus "mywww.example.com" wurde "myexample.com".
/// The old version removed "www." via a replace across the whole string:
/// "mywww.example.com" became "myexample.com".
/// </summary>
[Fact]
public void Die_www_Behandlung_verstuemmelt_keine_anderen_Hostnamen()
@@ -107,7 +107,7 @@ public sealed class UrlGuardTests
[Fact]
public void Ein_abschliessender_Punkt_im_Host_umgeht_die_Whitelist_nicht()
{
// "example.com." ist DNS-technisch derselbe Host.
// "example.com." is the same host in DNS terms.
UrlGuard.IsDomainAllowed("evil.com.", Allowed).ShouldBeFalse();
UrlGuard.IsDomainAllowed("example.com.", Allowed).ShouldBeTrue();
}