Backup: Data-Ordner statt nur DB sichern, von Chat in Einstellungen verschoben

This commit is contained in:
Meleki committed 2026-03-01 15:41:29 +01:00
1 parent 402fbc5a40
commit 8e585443e2
5 files changed
+33 -23

No files matched your search

+3 -4
View File
@@ -17,10 +17,9 @@ public static class BackupEndpoint
private static async System.Threading.Tasks.Task<IResult> HandleBackup() private static async System.Threading.Tasks.Task<IResult> HandleBackup()
{ {
var dataDir = Path.Combine(AppContext.BaseDirectory, "data"); var dataDir = Path.Combine(AppContext.BaseDirectory, "data");
var dbPath = Path.Combine(dataDir, "gott.db");
if (!File.Exists(dbPath)) if (!Directory.Exists(dataDir))
return Results.NotFound(new { error = "Datenbank nicht gefunden" }); return Results.NotFound(new { error = "Data-Ordner nicht gefunden" });
var backupDir = Path.Combine(dataDir, "backup"); var backupDir = Path.Combine(dataDir, "backup");
Directory.CreateDirectory(backupDir); Directory.CreateDirectory(backupDir);
@@ -32,7 +31,7 @@ public static class BackupEndpoint
var psi = new ProcessStartInfo var psi = new ProcessStartInfo
{ {
FileName = "tar", FileName = "tar",
ArgumentList = { "-czf", archivePath, "-C", dataDir, "gott.db" }, ArgumentList = { "-czf", archivePath, "--exclude=backup", "-C", dataDir, "." },
RedirectStandardError = true, RedirectStandardError = true,
UseShellExecute = false UseShellExecute = false
}; };
+4 -2
View File
@@ -5,6 +5,9 @@
- [ ] System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen - [ ] 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) - [ ] Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search)
- [ ] Subagents: Möglichkeit Subagents zu starten und zu orchestrieren - [ ] 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 ## 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 - [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: 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: 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 - [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
- [ ] 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"
## Backlog
+12 -1
View File
@@ -164,7 +164,6 @@
<div class="header-menu-dropdown" id="chatMenuDropdown" hidden> <div class="header-menu-dropdown" id="chatMenuDropdown" hidden>
<button class="header-menu-item" id="systemPromptBtn">System-Prompt anzeigen</button> <button class="header-menu-item" id="systemPromptBtn">System-Prompt anzeigen</button>
<button class="header-menu-item" id="archiveBtn">Archivieren</button> <button class="header-menu-item" id="archiveBtn">Archivieren</button>
<button class="header-menu-item" id="backupDbBtn">Datenbank sichern</button>
</div> </div>
</div> </div>
</header> </header>
@@ -206,6 +205,18 @@
</div> </div>
</div> </div>
</section> </section>
<section class="settings-section">
<h2>Daten</h2>
<div class="setting-row">
<div class="setting-info">
<label>Backup erstellen</label>
<span class="setting-hint">Sichert den gesamten Data-Ordner (Datenbank, Agents, Memories)</span>
</div>
<div class="setting-control">
<button id="settingsBackupBtn">Jetzt sichern</button>
</div>
</div>
</section>
<section class="settings-section settings-reset"> <section class="settings-section settings-reset">
<button id="settingsResetBtn" class="danger-btn">Alle Einstellungen zurücksetzen</button> <button id="settingsResetBtn" class="danger-btn">Alle Einstellungen zurücksetzen</button>
</section> </section>
-16
View File
@@ -89,22 +89,6 @@ registerPage('chat', {
clearChat(); 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('<i class="fa fa-check-circle"></i> Backup erstellt und heruntergeladen');
} catch (e) {
console.error('Backup fehlgeschlagen:', e);
setMetaHtml('<i class="fa fa-times-circle"></i> Backup fehlgeschlagen');
} finally {
backupDbBtn.disabled = false;
}
});
// Custom Command Buttons ins Header-Menü einfügen // Custom Command Buttons ins Header-Menü einfügen
if (chatMenuDropdown) { if (chatMenuDropdown) {
// "System"-Label ganz oben einfügen // "System"-Label ganz oben einfügen
+14
View File
@@ -51,6 +51,20 @@ registerPage('settings', {
applySettings(); 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', () => { resetBtn.addEventListener('click', () => {
if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return; if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return;
resetSettings(); resetSettings();