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": "Files agents keep overwriting each other in",
"team.conflicts.hint": "Writes were refused here because they would have lost another agent's change. If it keeps happening, change how the file is kept: one file per agent or day, appending instead of replacing, or a table.",
"team.conflicts.count": "{n} conflicts in 7 days, between {agents}; last {time}"
"team.conflicts.count": "{n} conflicts in 7 days, between {agents}; last {time}",
"nav.fileHistory": "File History",
"fileHistory.title": "File History",
"fileHistory.intro": "Every change in the workspaces: who created, replaced, appended to or deleted which file, in which run, and what was in it before. Changes made outside the tools are found and listed as external. A version can be put back — with a reason, as an entry of its own.",
"fileHistory.workspace": "Workspace",
"fileHistory.allWorkspaces": "All workspaces",
"fileHistory.agent": "Agent",
"fileHistory.path": "File path (exact)",
"fileHistory.run": "Run",
"fileHistory.apply": "Filter",
"fileHistory.reset": "Reset",
"fileHistory.more": "Older entries",
"fileHistory.unavailable": "File history unavailable",
"fileHistory.empty.title": "No changes",
"fileHistory.empty.text": "Nothing matches — or nothing has been changed since the history started.",
"fileHistory.external": "outside the tools",
"fileHistory.toRun": "run",
"fileHistory.onlyThisFile": "Show only this file",
"fileHistory.show": "Show",
"fileHistory.action.create": "created",
"fileHistory.action.replace": "replaced",
"fileHistory.action.append": "appended",
"fileHistory.action.copy": "copied",
"fileHistory.action.delete": "deleted",
"fileHistory.action.restore": "restored",
"fileHistory.action.external": "external",
"fileHistory.before": "Before",
"fileHistory.after": "After",
"fileHistory.text": "text",
"fileHistory.absent": "no file",
"fileHistory.notKept": "not kept",
"fileHistory.tooLarge": "too large to show ({bytes} bytes)",
"fileHistory.binary": "binary ({bytes} bytes)",
"fileHistory.restoreBefore": "Restore version before",
"fileHistory.restoreAfter": "Restore version after",
"fileHistory.restore": "Restore",
"fileHistory.restoreTitle": "Restore {path}",
"fileHistory.restoreBeforeHint": "The file gets the content it had before this change. What it holds now is kept in the history.",
"fileHistory.restoreAfterHint": "The file gets the content this change gave it. What it holds now is kept in the history.",
"fileHistory.reason": "Reason",
"fileHistory.reasonPlaceholder": "Why is this version put back?",
"fileHistory.reasonMissing": "A restore needs a reason.",
"fileHistory.restored": "{path} restored.",
"fileHistory.failed": "Failed: {error}"
}