Backup-Oberflaeche im Settings-Tab
Der BackupService bekommt eine Bedienoberflaeche im neuen Unterreiter "Backup". Aufbau als eigenes UserControl (UI/BackupPanel) statt direkt in frm_main.Designer.cs. Diese Datei ist ueber 1250 Zeilen gewachsene Handarbeit; ein Fehler beim Bearbeiten waere teuer. Eingehaengt wird das Panel mit vier Zeilen. Drei Bereiche: Sicherung erstellen (Zielordner, Umgang mit Zugangsdaten, Umfang), automatische Sicherung (Uhrzeit, Aufbewahrungszahl) und die Liste vorhandener Sicherungen mit Wiederherstellen, Anzeigen und Loeschen. Die Liste liest das Manifest jeder Datei und zeigt Instanz und ob Zugangsdaten enthalten sind; unlesbare oder fremde Archive werden ausgegraut mitgezeigt, statt sie zu verschweigen. Zwei Entscheidungen praegen das Verhalten. Die Passphrase wird nirgends gespeichert. Laege sie neben den Sicherungen, waere die Verschluesselung wirkungslos. Sie muss deshalb bei jeder geschuetzten Sicherung neu eingegeben und wiederholt werden, und vor dem Erstellen wird ausdruecklich bestaetigt, dass sie notiert ist — ohne sie sind die Zugangsdaten unwiederbringlich. Die Automatik sichert aus demselben Grund ohne Zugangsdaten. Wiederhergestellt wird standardmaessig in einen NEUEN Ordner neben der Instanz, nicht ueber die laufende. Diese haelt Chatverlaeufe im Speicher und die Datenbank geoeffnet — ein Ueberschreiben im Betrieb wuerde teils sofort wieder ueberschrieben und teils scheitern. Der Dialog benennt das. Vor dem Schreiben laeuft immer ein Probelauf: Er prueft die Pruefsummen und zaehlt die Konflikte, sodass ein beschaedigtes Archiv auffaellt und Ueberschreiben bestaetigt wird, bevor etwas passiert. BackupScheduler sichert taeglich zur eingestellten Uhrzeit und wendet die Rotation an. Der Zeitpunkt wird bei jedem Durchlauf neu aus den Einstellungen gelesen, damit eine Aenderung ohne Neustart greift. Die Oberflaeche ist noch nicht optisch geprueft — die Dev-Instanz haelt einen echten API-Key und wuerde beim Start Agenten ausfuehren. 385 Tests gruen (237 Core, 148 Tools). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b55512e734
commit
b51cc29667
@@ -54,5 +54,29 @@ public sealed class AppSettings
|
||||
[JsonPropertyName("openRouterBaseUrl")]
|
||||
public string OpenRouterBaseUrl { get; set; } = "https://openrouter.ai/api/v1/";
|
||||
|
||||
[Category("Backup")]
|
||||
[DisplayName("Backup-Verzeichnis")]
|
||||
[Description("Ordner, in dem Sicherungen abgelegt werden.")]
|
||||
[JsonPropertyName("backupDirectory")]
|
||||
public string BackupDirectory { get; set; } = "./Backups";
|
||||
|
||||
[Category("Backup")]
|
||||
[DisplayName("Automatisch sichern")]
|
||||
[Description("Erstellt täglich zur angegebenen Uhrzeit eine Sicherung der laufenden Instanz.")]
|
||||
[JsonPropertyName("autoBackupEnabled")]
|
||||
public bool AutoBackupEnabled { get; set; }
|
||||
|
||||
[Category("Backup")]
|
||||
[DisplayName("Uhrzeit der automatischen Sicherung")]
|
||||
[Description("Tageszeit im Format HH:mm.")]
|
||||
[JsonPropertyName("autoBackupTime")]
|
||||
public string AutoBackupTime { get; set; } = "03:00";
|
||||
|
||||
[Category("Backup")]
|
||||
[DisplayName("Aufbewahrte Sicherungen")]
|
||||
[Description("Wie viele Sicherungen je Instanz behalten werden. Ältere werden entfernt. 0 = alle behalten.")]
|
||||
[JsonPropertyName("backupKeepCount")]
|
||||
public int BackupKeepCount { get; set; } = 14;
|
||||
|
||||
public override string ToString() => "Anwendungseinstellungen";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user