- ~580 deutsche Bezeichner (Funktionen, Variablen, Parameter, Eigenschaften
eigener Objekte, Symbolschluessel): erstelleElement -> makeElement,
zeigeMeldung -> showNotice, PFADE -> PATHS ... Nur in Code-Bereichen,
Zeichenketten und Kommentare unberuehrt
- Ausgenommen sind Namen, die mit der C#-Seite geteilt werden (JSON-Felder
wie zustand, meldung, fehler, instanz) - die folgen mit 4c/4e
- CSS-Variablen (--gedaempft -> --muted ...); var(--akzent, ...) verwies auf
eine nie definierte Variable und ist durch ihren Rueckfall --divider ersetzt
Geprueft: freie Namen je Datei vor/nach Zuordnung identisch, kein Ziel
kollidiert in derselben Datei, node --check, Klassen/IDs aller 21 Ansichten
unveraendert, Dialoge/Speichern/Sprache/Thema ohne Fehler.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
357 deutsche Klassen- und ID-Namen (plakette -> badge, schaltflaeche ->
button, seitenleiste -> sidebar ...) einheitlich in app.css, index.html
und allen Zeichenketten der Ansichten; dazu die Darstellungsarten
(erfolg/gefahr/warnung -> success/danger/warning), aus denen badge-*,
toast-*, tag-*, tone-* entstehen.
Geprueft: 452 CSS-Regeln nach Zuordnung identisch, Deklarationen
unveraendert; in allen 21 Ansichten sind Klassen und IDs zur Laufzeit
genau die zugeordneten alten (Ausgangsmessung vorher, Vergleich danach).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ~50 feste Texte (deutsch und englisch gemischt) in app.js, api.js, backup,
chat, info, instances, logs, services, tasks, organisation ueber t()
- Datumsformat folgt der Sprache (war immer de-DE)
- status.isApiReachable gab es nie (Feld heisst apiReachable): Kopfzeile
und Info-Seite zeigten ohne Guthabentext immer 'offline'
- views/placeholders.js entfernt (seit Stufe 1 ungenutzt)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Avalonia 11.3.17 + CefGlue.Next 152 in eigenem Ordner shell/. Startet den
Manager (ManagerStarter, nach Core gezogen), holt ueber den lokalen Socket
einen Einmal-Link und zeigt die WebUI angemeldet; Taskleistensymbol mit
Zustand. ClawdDotNet ohne Schalter startet die Huelle, sonst den Browser.
publish.py baut sie mit (--no-shell zum Weglassen), unter Linux mit den
Chromium-Ressourcen neben libcef.so. --selftest fuer die Pruefung ohne Blick.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der Manager hoert zusaetzlich auf einem lokalen Socket (0600 bzw. Pipe nur
fuer den eigenen Benutzer). Dort gibt es nur /api/shell/*, ueber TCP gibt
es diese Pfade nicht. Ein Einmal-Code (256 Bit, einmal, hoechstens 60 s)
wird in der WebUI aus dem Fragment gegen das Token getauscht und sofort
aus der Adresse entfernt. Tests: zweimal, zu spaet, ueber TCP - alle
scheitern.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Views, ViewModels, Controls, Converters, Styles, Services, Desktop-i18n,
Schriften und App.axaml raus; Avalonia- und Mvvm-Pakete raus
- ClawdDotNet ohne Schalter: Manager starten (unter systemd ueber den Dienst,
nie doppelt) und WebUI oeffnen (LauncherRun) - bis die Huelle kommt
- Instanzen laufen immer kopflos; instanceWindows wird gelesen, nicht mehr
ausgewertet; die Kette 'Fenster nach vorn holen' ist entfernt
- Telegram-Anmeldung nur noch ueber die WebUI (tote Dialog-Rueckrufe raus)
- systemd-Vorlagen im Linux-Paket; Oberflaechen-Leitfaden ins Archiv
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Das Update-Angebot gab es nur im Desktop-Fenster. Der Manager prueft jetzt
selbst und spielt ein: erst alle Instanzen geordnet anhalten, dann
- ohne systemd: update-agent mit --wait-for-pid und --restart,
- unter systemd: clawddotnet-update.service anstossen (Vorlage unter
deploy/systemd), damit der agent keinen zweiten Manager neben dem
Dienst startet (DC SETUP_INTEGRATION_GUIDE 4A).
Fehlt die Unit, wird nichts angehalten; scheitert die Uebergabe, kommen
die Instanzen wieder hoch. Anleitung in InstanceSetupGuide Abschnitt 8.
Nebenbei: Sprachpaket wird vor dem Kopf geladen (rohe Schluessel im Kopf).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Code und 2FA-Passwort wurden nur im Desktop-Dialog abgefragt; eine Instanz
ohne Fenster liess die Anmeldung aus. Jetzt haelt die Instanz die Frage
(TelegramLoginBroker), die Einstellungsseite beantwortet sie. Die Anmeldung
laeuft im Hintergrund, damit die HTTP-Flaeche, ueber die der Code kommt,
nicht auf ihn wartet. Eine offene Frage verfaellt nach 15 Minuten.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Werkzeugformulare aus den typisierten Einstellungsklassen (L8): Geheimnisse
nur schreibend, nur geaenderte Schluessel werden ersetzt, Rechte bleiben
- Database.allowedTables las ein JSON-Array als rohen Text und haette es beim
naechsten Speichern zerlegt
- Automatische Sicherung der Instanz in der Sicherungsansicht (L10)
- Sicherung hochladen und als neue Instanz einspielen (L11): Pfade der alten
Maschine werden zurueckgesetzt, eine Kopie neben dem Original bekommt eine
eigene ID, Autostart aus; Upload bis 4 GB
- api.js schickte eine Datei als "{}"; Dialoge schliessen beim Seitenwechsel
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PUT /api/agents/{id} und /texts: Stammdaten, Grenzen, Budget, Identity/Soul/
Systemprompt (L6/L7); "Jetzt ausfuehren" in der Agentenansicht (L9)
- Lizenzschluessel ueber die Weboberflaeche (L1): erst vom Lizenzserver
bestaetigt, dann gespeichert; hebt die Sperre ohne Neustart auf
- GET/PUT /api/settings: Instanz- und Anwendungseinstellungen inkl.
OpenRouter-Key (L3/L4/L5), Geheimnisse nur schreibend
- GET/PUT /api/verwaltung/settings: Deploymentcenter und Update-Kanal des Managers
- Einstellungsseite zeigt echte Werte statt fester Texte
- NonInteractiveLicensePrompt verwies auf --license-set-key, den es nie gab
- Sprachpakete werden bei jedem Lauf geprueft (LanguagePackTests)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Elf Luecken fuer Stufe 1 (L1-L11). Befunde nebenbei: Die
Wiederherstellungs-Passphrase laesst sich nirgends setzen, und der
Log-Hinweis auf --license-set-key verweist auf einen Schalter, den es
nicht gibt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drei Manager-Tests liessen den Prozess vor der Stopp-Bitte enden; unter Last
sah der Aufsichtstakt das zuerst und meldete Crashed statt Stopped. Die
FakeChannel bekommt OnStopRequest, die Tests beenden darin. Der Drain-Test
bekommt 20 s statt 2 s Luft. AtomicFile schreibt, bis der Leser 20 Blicke
hatte, statt fest 40 Mal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Alle 30 Minuten, als Abfrage statt Modelllauf: Agentenaufgabe in Arbeit ohne
Aenderung (Vorgabe 24 h) -> einmal neu gestartet, stockt sie binnen einer
Woche wieder, geht es an die Leitung bzw. den Menschen; blockiert mit
erledigten Blockern -> wieder offen; @human-Aufgabe ueber 48 h -> in einer
Sammelaufgabe fuer den Menschen; in_review ueber 48 h und wiederholtes
LoopLimitExceeded (3 in 7 Tagen) -> Aufgabe an die Leitung. Einmal je Zustand,
hoechstens 10 Nachfassungen je Durchgang, jede im Audit. Befunde liegen
abfragbar in TaskFindings (fuer #680); WebUI-Karte 'Liegengeblieben'.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nach der Vorgabe vom 2026-09-22 (so wenig loeschen wie moeglich): Laeufe
aelter als hotDays (Vorgabe 180, 0 = alles bleibt) wandern aus AuditLog und
RunReceipts in Archive/audit-JJJJ-MM.db - kopiert und entfernt in einer
Transaktion, Zeilen-IDs bleiben, spaeter dazugekommene Spalten werden im
Archiv ergaenzt. Vorher wird jeder Tag in RunDaily verdichtet (Laeufe,
Fehlschlaege, Schrittgrenze, Tokens, Kosten, Werkzeugaufrufe, Fehler,
Verweigert, Freigaben) mit der Einheit des Agenten; die Tageswerte bleiben.
Nachschlagen eines Laufs findet ihn auch im Archiv. API /usage/days,
/usage/archive; Karte 'Tageswerte' in der Verbrauchsansicht.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Der Dateiverlauf (#719) haelt die Vorfassung jeder geloeschten Datei - ein
eigener Papierkorb waere doppelt. delete einer Datei, die der Verlauf aufhebt,
laeuft ohne Freigabe; Ordner nur mit recursive:true (delete_folder, Freigabe);
zu grosse Dateien oder Verlauf aus (delete_unkept, Freigabe); die Wurzel nie.
Neue Aktionen deleted und restore mit voller Pfad-/Endungspruefung.
IAgentTool.StagingAktion bekommt eine Ueberladung mit Kontext.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Das Token sagt, wer schickt - nicht, wer den Inhalt geschrieben hat. Felder
mit festem Typ (Kennung, Zahl, Ganzzahl, Datum, Datum+Uhrzeit, ja/nein,
Auswahl, Mailadresse) koennen keine Anweisung tragen und gehen als geprueft
an den Agenten, auch als {feld} im Auftrag. Freitext bleibt Fremdinhalt.
Streng (Standard): unpassende Lieferung -> 400 mit Grund, im Audit.
Nachsichtig (fuer Absender, die sich nicht an die Felder halten): nichts
wird abgewiesen, Passendes gilt als geprueft, der Rest bleibt Fremdinhalt;
der Trigger ist dann 'unsicher' und wird so angezeigt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rueckmeldung aus der Testinstanz: Nach dem Anlegen war nicht zu erkennen,
wofuer ein Trigger da ist, der Agent erfuhr nur 'ein Ereignis kam', und
bearbeiten ging nicht.
- Slug aus dem Namen in der Adresse: /hooks/<instanz>/trigger/<slug>;
ein Token an fremder Adresse oeffnet nichts. Die alte Adresse ohne
Slug bleibt gueltig.
- Auftrag vom Menschen steht vor den gelieferten Daten (die weiter als
Fremdinhalt gerahmt sind); ohne Auftrag wird der Agent darauf hingewiesen.
- Prioritaet der erzeugten Aufgaben.
- PUT /api/triggers/{id} (Token bleibt), POST /api/triggers/{id}/token.
- WebUI: Formular fuer Anlegen und Bearbeiten, Adresse und Auftrag je Zeile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Testinstanz 2026-10-02: write mit destinationPath statt path loeste auf die
Wurzel des Arbeitsbereichs auf; die Ausnahme nannte den absoluten Ordner.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An instance without n8n has no use for workflow proposals. New instance
setting automation.enabled ("this instance works with n8n"), off by default:
- off: automation_find/automation_propose refuse, no candidates are put to
agents, and the escalation tool does not mention proposals at all;
- the switch sits in the settings card for external MCP servers; the
approvals view says proposals are off instead of standing empty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Core/Automation/WorkflowReview: free check of an n8n export - every node
with its effect and target, code/command/SSH nodes only with a stated
reason, embedded secrets refused (by name or by look), a short summary of
what the workflow does.
- AutomationProposals: measured saving from the replaced tasks' receipts
(28 days), at most 3 open per agent, the same purpose not twice, a
rejected proposal must be answered; the human gets a task and decides in
the approvals view. Accepting records it - importing stays a human's step.
- Candidates: recurring tasks whose runs repeat the same calls (>= 75 % of
>= 8 runs in 14 days) are put to their agent once a month.
- Escalation tool: automation_find, automation_propose.
- Approvals view: proposals with nodes, targets, warnings, saving, JSON
download, accept/reject.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- DocumentText reads PDF with PdfPig 0.1.16 (managed, Apache-2.0): page by
page in reading order, at most 300 pages; a PDF without a text layer is
named as probably scanned; broken and protected files are named.
- Mail read_attachment and FileRW read/read_many take PDF like Word/Excel.
- nuget.config maps exactly "PdfPig" - "UglyToad.PdfPig" is a package of a
different account and stays out.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Core/Mcp/McpClient: Streamable HTTP (MCP 2025-06-18) - initialize, tools/list
with paging, tools/call; answers as JSON or event stream; session kept and
opened again when the server forgets it; answers capped at 4 MB.
- McpServerTool: one server is one tool (mcp_<id>); its remote tools are the
operations, so rights, preflight, staging, lead approvals, votes, audit and
budget apply. On approval by default unless the human trusts an operation;
reads foreign content; the server's descriptions are cut short and marked.
- McpConnections: registers, refreshes every 15 minutes, follows changes.
- InstanceConfig.mcpServers with protected headers; /api/mcp-servers;
settings card "External MCP servers"; tool catalog includes the servers.
- stdio servers are not part of this (sandbox runner, separate step).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>