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
@@ -11,11 +11,11 @@ using Shouldly;
namespace ClawdDotNet.Tools.Tests.Taskboard;
/// <summary>
/// task_find und die Dublettenbremse (#674).
/// task_find and the duplicate brake (#674).
///
/// Anlass aus dem Testbetrieb: Die Betriebskontrolle laeuft alle drei Stunden und legte
/// bei jedem Lauf erneut an, was beim vorigen schon offen war — ueber dreissig Aufgaben
/// an @human, darunter sechsmal derselbe Kursbefund.
/// Occasion from test operation: the operations check runs every three hours and created
/// again at every run what was already open from the previous one — over thirty tasks
/// for @human, among them the same price finding six times.
/// </summary>
public sealed class DublettenTests : IDisposable
{
@@ -37,7 +37,7 @@ public sealed class DublettenTests : IDisposable
{
ClawdDotNet.Core.Storage.SqliteStorage.ReleasePooledConnections(_verzeichnis);
try { Directory.Delete(_verzeichnis, recursive: true); }
catch { /* Aufräumen ist Nebensache */ }
catch { /* Cleaning up is secondary */ }
}
private AgentToolContext Context() => new(
@@ -92,7 +92,7 @@ public sealed class DublettenTests : IDisposable
result.ErrorMessage.ShouldNotBeNull().ShouldContain("'title' is required");
}
// ─── die Bremse beim Anlegen ───
// ─── the brake when creating ───
[Fact]
public async Task Eine_zweite_gleichlautende_Aufgabe_wird_nicht_angelegt()
@@ -146,8 +146,8 @@ public sealed class DublettenTests : IDisposable
[Fact]
public async Task Die_Dublette_wird_auch_hinter_500_anderen_Aufgaben_gefunden()
{
// #716: Die Suche las ListAsync mit Limit 500, sortiert nach Prioritaet. Eine alte
// Aufgabe mit niedriger Prioritaet fiel damit aus dem Blick, sobald das Brett wuchs.
// #716: The search read ListAsync with a limit of 500, sorted by priority. An old
// task with low priority thus fell out of sight as soon as the board grew.
var alt = await _board.CreateAsync(new TaskItem
{
Title = "Betriebsluecke: Eur Kurse nicht aktuell", Assignee = "@human", Priority = 1