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
@@ -8,12 +8,12 @@ using FsCheck.Xunit;
namespace ClawdDotNet.Core.Tests.Engine;
/// <summary>
/// Property-Based Tests: Statt einzelner Beispiele werden hunderte zufällige,
/// aber gültige Konversationen erzeugt und geprüft, dass die Compaction die
/// API-Invarianten in JEDEM Fall erhält.
/// Property-based tests: instead of individual examples, hundreds of random
/// but valid conversations are generated and it is checked that compaction preserves the
/// API invariants in EVERY case.
///
/// Genau diese Grenzfälle — wo die Tail-Grenze zufällig mitten in einen
/// Tool-Zyklus fällt — schreibt von Hand niemand auf. Bug B1 fällt in diese Klasse.
/// Exactly these edge cases — where the tail boundary happens to fall in the middle of a
/// tool cycle — nobody writes down by hand. Bug B1 belongs to this class.
/// </summary>
public sealed class ContextCompactorPropertyTests
{
@@ -30,7 +30,7 @@ public sealed class ContextCompactorPropertyTests
{
var messages = shape.ToMessages();
// Vorbedingung: Der Generator erzeugt nur gültige Ausgangsfolgen.
// Precondition: the generator only produces valid initial sequences.
if (!ContextInvariants.IsValid(messages))
return false.ToProperty().Label("Generator hat eine ungültige Folge erzeugt");
@@ -71,8 +71,8 @@ public sealed class ContextCompactorPropertyTests
// ═══════════════════════════════════════════════════════════════
/// <summary>
/// Beschreibt die Form einer Konversation. FsCheck erzeugt davon zufällige
/// Varianten und schrumpft sie im Fehlerfall auf das minimale Gegenbeispiel.
/// Describes the shape of a conversation. FsCheck generates random
/// variants of it and shrinks them in case of failure to the minimal counterexample.
/// </summary>
public sealed record ConversationShape(bool HasSystemPrompt, IReadOnlyList<TurnShape> Turns)
{
@@ -122,10 +122,10 @@ public static class ConversationArbitrary
return Arb.From(gen, Shrink);
}
/// <summary>Im Fehlerfall auf das kleinste Gegenbeispiel reduzieren.</summary>
/// <summary>In case of failure reduce to the smallest counterexample.</summary>
private static IEnumerable<ConversationShape> Shrink(ConversationShape shape)
{
// Weniger Turns
// Fewer turns
for (var i = 0; i < shape.Turns.Count; i++)
{
var reduced = shape.Turns.Where((_, idx) => idx != i).ToList();