From 8e585443e2bcf749ff8d91fffc200556791c7ed1 Mon Sep 17 00:00:00 2001 From: Meleki Date: Sun, 1 Mar 2026 15:41:29 +0100 Subject: [PATCH] Backup: Data-Ordner statt nur DB sichern, von Chat in Einstellungen verschoben --- Endpoints/BackupEndpoint.cs | 7 +++---- TODO.md | 6 ++++-- wwwroot/index.html | 13 ++++++++++++- wwwroot/js/pages/chat-page.js | 16 ---------------- wwwroot/js/pages/settings-page.js | 14 ++++++++++++++ 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/Endpoints/BackupEndpoint.cs b/Endpoints/BackupEndpoint.cs index 4295d3f..f5b8f15 100644 --- a/Endpoints/BackupEndpoint.cs +++ b/Endpoints/BackupEndpoint.cs @@ -17,10 +17,9 @@ public static class BackupEndpoint private static async System.Threading.Tasks.Task HandleBackup() { var dataDir = Path.Combine(AppContext.BaseDirectory, "data"); - var dbPath = Path.Combine(dataDir, "gott.db"); - if (!File.Exists(dbPath)) - return Results.NotFound(new { error = "Datenbank nicht gefunden" }); + if (!Directory.Exists(dataDir)) + return Results.NotFound(new { error = "Data-Ordner nicht gefunden" }); var backupDir = Path.Combine(dataDir, "backup"); Directory.CreateDirectory(backupDir); @@ -32,7 +31,7 @@ public static class BackupEndpoint var psi = new ProcessStartInfo { FileName = "tar", - ArgumentList = { "-czf", archivePath, "-C", dataDir, "gott.db" }, + ArgumentList = { "-czf", archivePath, "--exclude=backup", "-C", dataDir, "." }, RedirectStandardError = true, UseShellExecute = false }; diff --git a/TODO.md b/TODO.md index 60cc50b..24f3bfa 100644 --- a/TODO.md +++ b/TODO.md @@ -5,6 +5,9 @@ - [ ] System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen - [ ] Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search) - [ ] Subagents: Möglichkeit Subagents zu starten und zu orchestrieren +- [x] Im Chat: Menüpunkt "Datenbank sichern" entfernen und stattdessen in den Einstellungen platzieren. Außerdem soll nun nicht mehr nur die Datenbank gesichert werden, sondern der gesamte data-Ordner (der Unterordner backup muss natürlich exkludiert werden) +- [ ] Agents-Formular (nur beim Bearbeiten von vorhandenen Agent): Button der das File-Explorer Modal öffnet bei dem ich den Agent-Ordner sehe. +- [ ] Chat: Maximal 500 Nachrichten laden. Dauert sonst zu lange und der Browser wird langsam ## Bugs - [x] Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte @@ -17,5 +20,4 @@ - [x] Chat: Es scrollt beim Laden nicht ganz nach unten, ich denke weil im DOM noch etwas nachgeladen wird (ich denke es ist die Schriftart), und die Höhe sich beim Laden nochmal verändert - [x] Chat: User-Nachrichten mit dem Tag [Datei: pfat/zur/datei.xyz:1-10] wird nicht als HTML geparsed - [x] Chat: Wird zwar erkannt und ist klickbar, aber es öffnet sich einfach nur der File Explorer, ohne dass sich die Datei öffnet und die Darstellung in Monospace ist auch nicht schön - -## Backlog +- [ ] Chat: Es werden momentan alle Tool-Calls angezeigt - die Anzeige soll individuell in den Einstellungen gemacht werden können. Auswahl aus drei Stufen: "Alle anzeigen" / "Nur Modifikationen" (file änderungen, memory änderungen, etc.) / "Verstecken" diff --git a/wwwroot/index.html b/wwwroot/index.html index 0fa7ef4..9dbea89 100644 --- a/wwwroot/index.html +++ b/wwwroot/index.html @@ -164,7 +164,6 @@ @@ -206,6 +205,18 @@ +
+

Daten

+
+
+ + Sichert den gesamten Data-Ordner (Datenbank, Agents, Memories) +
+
+ +
+
+
diff --git a/wwwroot/js/pages/chat-page.js b/wwwroot/js/pages/chat-page.js index 2219b7f..6fbbb51 100644 --- a/wwwroot/js/pages/chat-page.js +++ b/wwwroot/js/pages/chat-page.js @@ -89,22 +89,6 @@ registerPage('chat', { clearChat(); }); - // Datenbank sichern - const backupDbBtn = document.getElementById('backupDbBtn'); - if (backupDbBtn) backupDbBtn.addEventListener('click', async () => { - if (chatMenuDropdown) chatMenuDropdown.hidden = true; - backupDbBtn.disabled = true; - try { - await apiBackupDb(); - setMetaHtml(' Backup erstellt und heruntergeladen'); - } catch (e) { - console.error('Backup fehlgeschlagen:', e); - setMetaHtml(' Backup fehlgeschlagen'); - } finally { - backupDbBtn.disabled = false; - } - }); - // Custom Command Buttons ins Header-Menü einfügen if (chatMenuDropdown) { // "System"-Label ganz oben einfügen diff --git a/wwwroot/js/pages/settings-page.js b/wwwroot/js/pages/settings-page.js index 039d479..06b823e 100644 --- a/wwwroot/js/pages/settings-page.js +++ b/wwwroot/js/pages/settings-page.js @@ -51,6 +51,20 @@ registerPage('settings', { applySettings(); }); + const backupBtn = document.getElementById('settingsBackupBtn'); + if (backupBtn) backupBtn.addEventListener('click', async () => { + backupBtn.disabled = true; + backupBtn.textContent = 'Wird erstellt...'; + try { + await apiBackupDb(); + } catch (e) { + console.error('Backup fehlgeschlagen:', e); + } finally { + backupBtn.textContent = 'Jetzt sichern'; + backupBtn.disabled = false; + } + }); + resetBtn.addEventListener('click', () => { if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return; resetSettings();