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
@@ -5,16 +5,16 @@ using Shouldly;
namespace ClawdDotNet.App.Tests.Services;
/// <summary>
/// Zugangsdaten der Instanz müssen den Weg über die Platte und zurück überstehen.
/// The instance's credentials must survive the way to disk and back.
///
/// <para><c>SaveInstanceConfig</c> verschlüsselte beim Schreiben, <c>LoadInstanceConfig</c>
/// entschlüsselte beim Lesen aber nicht. Was einmal über die Oberfläche gespeichert war,
/// kam als <c>enc:v2:…</c> zurück und wurde als Wert benutzt — der OpenRouter-Schlüssel
/// ging so verschlüsselt an die API.</para>
/// <para><c>SaveInstanceConfig</c> encrypted when writing, but <c>LoadInstanceConfig</c>
/// did not decrypt when reading. Whatever had once been saved via the user interface
/// came back as <c>enc:v2:…</c> and was used as the value — the OpenRouter key
/// thus went to the API encrypted.</para>
///
/// <para>Unentdeckt geblieben ist es, weil <c>ConfigLoader.LoadAsync</c> es richtig macht
/// und im laufenden Programm gar nicht aufgerufen wird: Gebraucht wird von dieser Klasse
/// nur <c>Migrate</c>.</para>
/// <para>It went undiscovered because <c>ConfigLoader.LoadAsync</c> does it right
/// and is not called at all in the running program: only <c>Migrate</c>
/// of that class is needed.</para>
/// </summary>
public sealed class InstanceSecretRoundtripTests
{
@@ -39,8 +39,8 @@ public sealed class InstanceSecretRoundtripTests
[Fact]
public void In_der_Datei_stehen_sie_trotzdem_geschuetzt()
{
// Die Gegenprobe: Entschluesseln beim Laden darf nicht heissen, dass gar nicht
// mehr verschluesselt wird.
// The counter-check: decrypting when loading must not mean that nothing is
// encrypted any more.
using var host = new TestHost();
host.Host.Instance.OpenRouterApiKey = "sk-or-v1-beispielschluessel";
@@ -55,8 +55,8 @@ public sealed class InstanceSecretRoundtripTests
[Fact]
public void Klartext_aus_aelteren_Dateien_bleibt_lesbar()
{
// Entschluesseln muss gefahrlos auf etwas anwendbar sein, das nie verschluesselt
// war — sonst braeche der erste Start nach dem Update jede bestehende Instanz.
// Decrypting must be safely applicable to something that was never encrypted
// — otherwise the first start after the update would break every existing instance.
using var host = new TestHost();
var pfad = Path.Combine(host.Host.InstancePath, "InstanceSettings.json");