From 682828ea585218fb4a088823d3a83096045b7f63 Mon Sep 17 00:00:00 2001 From: AegisSight Dev Date: Wed, 29 Apr 2026 20:19:02 +0000 Subject: [PATCH] Update-Meldungen folgen Theme, korrekte Umlaute Banner und Was-ist-neu-Modal nutzen jetzt CSS-Variablen (--bg-card, --text-primary, --accent etc.) statt fester Dark-Mode-Farben, damit sie sich automatisch dem Hell-/Dunkelmodus anpassen. RELEASES.json: alte ae/oe/ue-Schreibweisen auf echte Umlaute umgestellt + neuer Eintrag fuer diesen Fix. Co-Authored-By: Claude Opus 4.7 (1M context) --- RELEASES.json | 17 +++++++++--- src/static/js/update-system.js | 51 +++++++++++++++++++--------------- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/RELEASES.json b/RELEASES.json index deee288..371622f 100644 --- a/RELEASES.json +++ b/RELEASES.json @@ -1,4 +1,13 @@ [ + { + "version": "2026-04-29T22:30Z", + "date": "2026-04-29", + "title": "Update-Meldungen folgen Hell-/Dunkelmodus, korrekte Umlaute", + "items": [ + "Banner und „Was ist neu?“-Modal nutzen jetzt die Theme-Variablen und passen sich automatisch dem aktiven Hell- oder Dunkelmodus an", + "Ältere Release-Einträge mit ae/oe/ue-Schreibweise wurden auf korrekte Umlaute umgestellt" + ] + }, { "version": "2026-04-29T20:10Z", "date": "2026-04-29", @@ -12,8 +21,8 @@ "date": "2026-04-26", "title": "Update-Modal kommt jetzt auch beim ersten Besuch", "items": [ - "Beim ersten Login nach einer Aktualisierung erscheint die Was-ist-neu-Uebersicht jetzt automatisch", - "Fuer Kunden-Onboarding: erste Highlights werden direkt sichtbar" + "Beim ersten Login nach einer Aktualisierung erscheint die Was-ist-neu-Übersicht jetzt automatisch", + "Für Kunden-Onboarding: erste Highlights werden direkt sichtbar" ] }, { @@ -28,9 +37,9 @@ { "version": "5473ba3", "date": "2026-04-26", - "title": "Update-System eingefuehrt", + "title": "Update-System eingeführt", "items": [ - "Updates beruehren ab jetzt nie mehr die Faelle oder Daten", + "Updates berühren ab jetzt nie mehr die Fälle oder Daten", "Beim Promote landet eine 'Was ist neu'-Info hier", "Strukturelle Trennung von Live- und Staging-Datenbank" ] diff --git a/src/static/js/update-system.js b/src/static/js/update-system.js index 71044af..32c62f8 100644 --- a/src/static/js/update-system.js +++ b/src/static/js/update-system.js @@ -44,14 +44,19 @@ } // ---- Styles inline injecten (kein zusaetzlicher CSS-File noetig) ---- + // Nutzt die globalen Theme-Variablen aus style.css, damit Banner und + // Modal automatisch dem Hell-/Dunkelmodus folgen. function injectStyles() { if (document.getElementById('aegis-update-styles')) return; const css = ` #aegis-update-banner { position: fixed; bottom: 24px; right: 24px; z-index: 99999; - background: linear-gradient(135deg, #C8A851, #D4B96A); - color: #0A1832; padding: 14px 18px; border-radius: 10px; - box-shadow: 0 8px 32px rgba(10,24,50,0.4); + background: var(--bg-card); + color: var(--text-primary); + border: 1px solid var(--border); + border-left: 4px solid var(--accent); + padding: 14px 18px; border-radius: 10px; + box-shadow: 0 8px 32px rgba(0,0,0,0.25); font-family: 'Inter', -apple-system, sans-serif; font-size: 0.92rem; display: flex; align-items: center; gap: 12px; max-width: 380px; animation: aegis-slide-in 0.4s cubic-bezier(0.4,0,0.2,1); @@ -60,57 +65,59 @@ from { transform: translateX(420px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } - #aegis-update-banner b { font-weight: 700; } + #aegis-update-banner b { font-weight: 700; color: var(--accent); } #aegis-update-banner button { - background: #0A1832; color: #C8A851; border: 0; padding: 7px 14px; + background: var(--accent); color: #fff; border: 0; padding: 7px 14px; border-radius: 6px; font: inherit; font-size: 0.86rem; font-weight: 600; cursor: pointer; flex-shrink: 0; } - #aegis-update-banner button:hover { background: #132844; } + #aegis-update-banner button:hover { background: var(--accent-hover); } #aegis-update-banner .close { - background: transparent; color: #0A1832; opacity: 0.6; padding: 0 4px; + background: transparent; color: var(--text-secondary); padding: 0 4px; font-size: 1.2rem; line-height: 1; } - #aegis-update-banner .close:hover { opacity: 1; background: transparent; } + #aegis-update-banner .close:hover { color: var(--text-primary); background: transparent; } #aegis-update-modal-overlay { - position: fixed; inset: 0; background: rgba(10,24,50,0.75); z-index: 99998; + position: fixed; inset: 0; background: rgba(0,0,0,0.55); z-index: 99998; backdrop-filter: blur(3px); display: flex; align-items: center; justify-content: center; padding: 24px; animation: aegis-fade-in 0.25s ease; } @keyframes aegis-fade-in { from { opacity: 0; } to { opacity: 1; } } #aegis-update-modal { - background: #132844; color: #E8E8E8; border-radius: 14px; - border: 1px solid rgba(200,168,81,0.25); - box-shadow: 0 24px 80px rgba(0,0,0,0.5); + background: var(--bg-card); + color: var(--text-primary); + border-radius: 14px; + border: 1px solid var(--border); + box-shadow: 0 24px 80px rgba(0,0,0,0.4); font-family: 'Inter', -apple-system, sans-serif; max-width: 540px; width: 100%; max-height: 80vh; overflow: hidden; display: flex; flex-direction: column; } #aegis-update-modal header { - padding: 22px 28px 18px; border-bottom: 1px solid rgba(200,168,81,0.15); + padding: 22px 28px 18px; border-bottom: 1px solid var(--border); } - #aegis-update-modal h2 { margin: 0 0 4px; color: #C8A851; font-size: 1.25rem; font-weight: 700; } - #aegis-update-modal header p { margin: 0; color: #A0A8B8; font-size: 0.88rem; } + #aegis-update-modal h2 { margin: 0 0 4px; color: var(--accent); font-size: 1.25rem; font-weight: 700; } + #aegis-update-modal header p { margin: 0; color: var(--text-secondary); font-size: 0.88rem; } #aegis-update-modal .body { padding: 8px 28px; overflow-y: auto; } - .aegis-release { padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,0.06); } + .aegis-release { padding: 16px 0; border-bottom: 1px solid var(--border); } .aegis-release:last-child { border: 0; } .aegis-release-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 8px; } - .aegis-release-title { font-size: 1rem; font-weight: 600; color: #E8E8E8; } - .aegis-release-date { font-size: 0.78rem; color: #5A6478; } - .aegis-release-items { margin: 0; padding-left: 20px; color: #C0C8D8; font-size: 0.92rem; line-height: 1.6; } + .aegis-release-title { font-size: 1rem; font-weight: 600; color: var(--text-primary); } + .aegis-release-date { font-size: 0.78rem; color: var(--text-tertiary); } + .aegis-release-items { margin: 0; padding-left: 20px; color: var(--text-secondary); font-size: 0.92rem; line-height: 1.6; } .aegis-release-items li { margin-bottom: 4px; } #aegis-update-modal footer { - padding: 16px 28px 20px; border-top: 1px solid rgba(200,168,81,0.15); + padding: 16px 28px 20px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; } #aegis-update-modal footer button { - background: #C8A851; color: #0A1832; border: 0; padding: 10px 22px; + background: var(--accent); color: #fff; border: 0; padding: 10px 22px; border-radius: 6px; font: inherit; font-size: 0.92rem; font-weight: 600; cursor: pointer; } - #aegis-update-modal footer button:hover { background: #D4B96A; } + #aegis-update-modal footer button:hover { background: var(--accent-hover); } @media (max-width: 600px) { #aegis-update-banner { left: 12px; right: 12px; bottom: 12px; max-width: none; } -- 2.49.1