fix: quick deploy duplicate detection, logout UX, backup toggle, CSP, SSE guard, and migration

- Detect existing projects with same image on quick deploy; show conflict dialog with options
- Move logout button to sidebar header as icon-only
- Replace backup checkbox with ToggleSwitch component
- Allow unsafe-inline in CSP script-src for SvelteKit hydration
- Guard SSE connection behind isAuthenticated() check
- Add notification_url ALTER TABLE migration for existing databases
- Restore RegisterPersistentLogger on event bus
This commit is contained in:
2026-04-04 14:40:59 +03:00
parent 205a5a36c6
commit 6667abf03c
11 changed files with 259 additions and 35 deletions
+1
View File
@@ -215,6 +215,7 @@ export function quickDeploy(data: {
tag?: string;
registry?: string;
port?: number;
force?: boolean;
}): Promise<{ project: Project; status: string }> {
return post<{ project: Project; status: string }>('/api/deploy/quick', data);
}
+5 -1
View File
@@ -223,7 +223,11 @@
"noImages": "No images found",
"loadingImages": "Loading...",
"imageLoadFailed": "Failed to load images",
"lowercaseHint": "Lowercase with hyphens"
"lowercaseHint": "Lowercase with hyphens",
"imageAlreadyExists": "Image already deployed",
"conflictDescription": "A project using this image already exists. You can open the existing project to deploy a new version, or create a separate project.",
"openProject": "Open project \u2192",
"createNewAnyway": "Create New Project"
},
"settings": {
"title": "Settings",
+5 -1
View File
@@ -223,7 +223,11 @@
"noImages": "Образы не найдены",
"loadingImages": "Загрузка...",
"imageLoadFailed": "Не удалось загрузить образы",
"lowercaseHint": "Строчные буквы и дефисы"
"lowercaseHint": "Строчные буквы и дефисы",
"imageAlreadyExists": "Образ уже развёрнут",
"conflictDescription": "Проект с этим образом уже существует. Откройте существующий проект для развёртывания новой версии или создайте отдельный проект.",
"openProject": "Открыть проект \u2192",
"createNewAnyway": "Создать новый проект"
},
"settings": {
"title": "Настройки",