Funktionen / Redigieren

Alles rückgängig

Jeder Schreibvorgang wird als Snapshot festgehalten: Feld-Diff zwischen zwei Ständen, Wiederherstellung mit einem Klick, Audit-Log über alle Einträge mit Wer, Wann und Was.

Jemand überschreibt den Teaser, zwei Tage später fällt es auf, und niemand weiß mehr, wie er vorher lautete. In RustyCMS ist jeder Write ein Snapshot: anlegen, ändern, Statuswechsel, Wiederherstellen — alles landet in der Historie des Eintrags, mit Zeitstempel und Urheber. Zurückdrehen ist ein Klick, kein Backup-Restore.

Jeder Write ein Snapshot

Die Aufzeichnung hängt am Schreibpfad, nicht an der Oberfläche. Ob der Eintrag aus der Admin-UI, per API-Key, über einen Import oder vom Scheduler geändert wurde, spielt keine Rolle. Versionen sind chronologisch sortierbar und tragen die Operation im Namen. Wie viele behalten werden, legt RUSTYCMS_VERSION_RETENTION fest — Default 50 pro Eintrag, 0 heißt unbegrenzt.

GET  /api/content/post/hello/history
GET  /api/content/post/hello/history/20260416T142200123-update
POST /api/content/post/hello/history/20260416T142200123-update/restore

Diff statt Raten

Im History-Panel des Editors wählst du zwei Versionen per Checkbox und bekommst einen Feld-für-Feld-Vergleich mit rot/grün markierten Änderungen. Jede Version lässt sich als Ganzes ansehen, bevor du sie zurückholst.

Restore, das selbst rückgängig ist

Ein Restore schreibt den alten Stand über den aktuellen — und zeichnet sich dabei selbst als neue Version auf. Nichts geht durch das Zurückdrehen verloren, ein Restore lässt sich wieder rückgängig machen. Vorher wird der Snapshot gegen das aktuelle Schema geprüft: hat sich das Modell seit damals geändert, schlägt der Restore laut fehl statt kaputte Daten zu schreiben.

Ein Audit-Log über alles

Die Frage „Wer hat gestern was geändert?” braucht keinen Blick in einzelne Einträge. Der Audit-Log geht über alle Collections und filtert nach Actor, Collection, Operation und Zeitraum — in der Admin-UI und per API:

GET /api/audit-log?actor=alice&collection=post&operation=update
    &since=2026-04-01T00:00:00Z&until=2026-04-17T23:59:59Z

Automatische Übergänge erscheinen dort als Operation status mit dem Actor system:scheduler. So unterscheidest du auf einen Blick, ob ein Eintrag von Hand oder per Terminierung live ging.

Was nicht passiert

Gelöschte Einträge lassen sich nicht aus der Historie wiederbeleben — der Eintrag muss noch existieren. Es gibt keine Branches und keinen Freigabe-Workflow; die Historie ist ein Protokoll, keine Redaktionsschleife. Git-Autocommit ist davon unabhängig: Git ist Disaster-Recovery für den ganzen Content-Baum, die Historie ist die Per-Eintrag-Sicht über die API.

Willst du das an deinem Projekt sehen?

Sag kurz, was du vorhast. Ich zeige die Admin-UI an einer echten Installation und sage ehrlich, ob es passt.

Früher Zugang anfragen