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,11 +8,11 @@ using Shouldly;
namespace ClawdDotNet.Tools.Tests.FileRW;
/// <summary>
/// Sammel-Lesen (#663) und der Hinweis auf den anderen Workspace (#662).
/// Batch reading (#663) and the hint about the other workspace (#662).
///
/// Anlass aus dem Testbetrieb: Der Tagesabschluss las 24 Stundendateien einzeln und starb
/// an der Schrittgrenze, und derselbe Agent rief Dateien wiederholt im falschen Workspace
/// ab, weil die Fehlermeldung nicht sagte, wo sie liegen.
/// Occasion from test operation: the daily close read 24 hourly files individually and died
/// at the step limit, and the same agent repeatedly fetched files in the wrong workspace,
/// because the error message did not say where they lie.
/// </summary>
public sealed class SammelLesenTests : IDisposable
{
@@ -33,7 +33,7 @@ public sealed class SammelLesenTests : IDisposable
public void Dispose()
{
try { Directory.Delete(_basis, recursive: true); }
catch { /* Aufräumen ist Nebensache */ }
catch { /* Cleaning up is secondary */ }
}
private AgentToolContext Context(string sharedLevel = "ReadWrite") => new(
@@ -58,7 +58,7 @@ public sealed class SammelLesenTests : IDisposable
}
}
// ═══════════════════ #663: ein Aufruf statt 24 ═══════════════════
// ═══════════════════ #663: one call instead of 24 ═══════════════════
[Fact]
public async Task Ein_Verzeichnis_mit_Muster_kommt_in_einem_Aufruf()
@@ -160,7 +160,7 @@ public sealed class SammelLesenTests : IDisposable
result.Content.ShouldNotContain("skript.exe");
}
// ═══════════════════ #662: Hinweis auf den anderen Workspace ═══════════════════
// ═══════════════════ #662: hint about the other workspace ═══════════════════
[Fact]
public async Task Liegt_die_Datei_im_anderen_Workspace_sagt_die_Meldung_das()
@@ -186,7 +186,7 @@ public sealed class SammelLesenTests : IDisposable
[Fact]
public async Task Ohne_Recht_am_anderen_Workspace_gibt_es_keinen_Hinweis()
{
// Ein Hinweis auf etwas, das der Agent ohnehin nicht darf, schickt ihn ins Leere.
// A hint about something the agent may not do anyway sends it into nothing.
Stundendateien(1);
var result = await Run("""{"action":"read","path":"wetter/stunden/berlin_2026-09-20_00-00.txt"}""", sharedLevel: "Denied");