Versionierung der Arbeitsbereiche: Verlauf je Datei mit Agent, Lauf und Vorfassung (#719)

Eigene inhaltsadressierte Ablage (Agents/.history/objects, SHA-256) statt Git,
Journal FileHistory in state.db. Jeder Schreibweg - FileRW write/append/copy/
delete/stock_add, FTP- und RocketChat-Downloads - legt die alte Fassung ab und
verbucht die Aenderung mit RunId. Externe Aenderungen findet ein Abgleich beim
Start und stuendlich. Aufbewahrung nach Tagen und Fassungen, verwaiste Objekte
werden entfernt. WebUI: Dateiverlauf mit Filter, Diff und Wiederherstellen nur
durch den Menschen mit Grund.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-28 11:12:13 +02:00
co-authored by Claude Opus 5.5
parent 621a83de43
commit e9c39c3c96
21 changed files with 1663 additions and 2 deletions
@@ -986,5 +986,49 @@
"team.conflicts.title": "Dateien, in denen sich Agenten gegenseitig überschreiben",
"team.conflicts.hint": "Hier wurden Schreibvorgänge abgelehnt, weil sie die Änderung eines anderen Agenten verloren hätten. Passiert das oft, sollte die Ablage anders werden: eine Datei je Agent oder Tag, Anhängen statt Ersetzen oder eine Tabelle.",
"team.conflicts.count": "{n} Konflikte in 7 Tagen, zwischen {agents}; zuletzt {time}"
"team.conflicts.count": "{n} Konflikte in 7 Tagen, zwischen {agents}; zuletzt {time}",
"nav.fileHistory": "Dateiverlauf",
"fileHistory.title": "Dateiverlauf",
"fileHistory.intro": "Jede Änderung in den Arbeitsbereichen: wer welche Datei in welchem Lauf angelegt, ersetzt, ergänzt oder gelöscht hat, und was vorher darin stand. Änderungen außerhalb der Werkzeuge werden gefunden und als extern geführt. Eine Fassung lässt sich zurückholen – mit Grund, als eigener Eintrag.",
"fileHistory.workspace": "Arbeitsbereich",
"fileHistory.allWorkspaces": "Alle Arbeitsbereiche",
"fileHistory.agent": "Agent",
"fileHistory.path": "Dateipfad (genau)",
"fileHistory.run": "Lauf",
"fileHistory.apply": "Filtern",
"fileHistory.reset": "Zurücksetzen",
"fileHistory.more": "Ältere Einträge",
"fileHistory.unavailable": "Dateiverlauf nicht verfügbar",
"fileHistory.empty.title": "Keine Änderungen",
"fileHistory.empty.text": "Nichts passt – oder seit Beginn des Verlaufs wurde nichts geändert.",
"fileHistory.external": "außerhalb der Werkzeuge",
"fileHistory.toRun": "Lauf",
"fileHistory.onlyThisFile": "Nur diese Datei zeigen",
"fileHistory.show": "Anzeigen",
"fileHistory.action.create": "angelegt",
"fileHistory.action.replace": "ersetzt",
"fileHistory.action.append": "ergänzt",
"fileHistory.action.copy": "kopiert",
"fileHistory.action.delete": "gelöscht",
"fileHistory.action.restore": "wiederhergestellt",
"fileHistory.action.external": "extern",
"fileHistory.before": "Vorher",
"fileHistory.after": "Nachher",
"fileHistory.text": "Text",
"fileHistory.absent": "keine Datei",
"fileHistory.notKept": "nicht aufbewahrt",
"fileHistory.tooLarge": "zu groß zum Anzeigen ({bytes} Bytes)",
"fileHistory.binary": "binär ({bytes} Bytes)",
"fileHistory.restoreBefore": "Fassung davor wiederherstellen",
"fileHistory.restoreAfter": "Fassung danach wiederherstellen",
"fileHistory.restore": "Wiederherstellen",
"fileHistory.restoreTitle": "{path} wiederherstellen",
"fileHistory.restoreBeforeHint": "Die Datei bekommt den Inhalt, den sie vor dieser Änderung hatte. Was jetzt darin steht, bleibt im Verlauf erhalten.",
"fileHistory.restoreAfterHint": "Die Datei bekommt den Inhalt, den ihr diese Änderung gegeben hat. Was jetzt darin steht, bleibt im Verlauf erhalten.",
"fileHistory.reason": "Grund",
"fileHistory.reasonPlaceholder": "Warum wird diese Fassung zurückgeholt?",
"fileHistory.reasonMissing": "Eine Wiederherstellung braucht einen Grund.",
"fileHistory.restored": "{path} wiederhergestellt.",
"fileHistory.failed": "Fehlgeschlagen: {error}"
}