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) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -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",
|
"version": "2026-04-29T20:10Z",
|
||||||
"date": "2026-04-29",
|
"date": "2026-04-29",
|
||||||
@@ -12,8 +21,8 @@
|
|||||||
"date": "2026-04-26",
|
"date": "2026-04-26",
|
||||||
"title": "Update-Modal kommt jetzt auch beim ersten Besuch",
|
"title": "Update-Modal kommt jetzt auch beim ersten Besuch",
|
||||||
"items": [
|
"items": [
|
||||||
"Beim ersten Login nach einer Aktualisierung erscheint die Was-ist-neu-Uebersicht jetzt automatisch",
|
"Beim ersten Login nach einer Aktualisierung erscheint die Was-ist-neu-Übersicht jetzt automatisch",
|
||||||
"Fuer Kunden-Onboarding: erste Highlights werden direkt sichtbar"
|
"Für Kunden-Onboarding: erste Highlights werden direkt sichtbar"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -28,9 +37,9 @@
|
|||||||
{
|
{
|
||||||
"version": "5473ba3",
|
"version": "5473ba3",
|
||||||
"date": "2026-04-26",
|
"date": "2026-04-26",
|
||||||
"title": "Update-System eingefuehrt",
|
"title": "Update-System eingeführt",
|
||||||
"items": [
|
"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",
|
"Beim Promote landet eine 'Was ist neu'-Info hier",
|
||||||
"Strukturelle Trennung von Live- und Staging-Datenbank"
|
"Strukturelle Trennung von Live- und Staging-Datenbank"
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -44,14 +44,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ---- Styles inline injecten (kein zusaetzlicher CSS-File noetig) ----
|
// ---- 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() {
|
function injectStyles() {
|
||||||
if (document.getElementById('aegis-update-styles')) return;
|
if (document.getElementById('aegis-update-styles')) return;
|
||||||
const css = `
|
const css = `
|
||||||
#aegis-update-banner {
|
#aegis-update-banner {
|
||||||
position: fixed; bottom: 24px; right: 24px; z-index: 99999;
|
position: fixed; bottom: 24px; right: 24px; z-index: 99999;
|
||||||
background: linear-gradient(135deg, #C8A851, #D4B96A);
|
background: var(--bg-card);
|
||||||
color: #0A1832; padding: 14px 18px; border-radius: 10px;
|
color: var(--text-primary);
|
||||||
box-shadow: 0 8px 32px rgba(10,24,50,0.4);
|
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;
|
font-family: 'Inter', -apple-system, sans-serif; font-size: 0.92rem;
|
||||||
display: flex; align-items: center; gap: 12px; max-width: 380px;
|
display: flex; align-items: center; gap: 12px; max-width: 380px;
|
||||||
animation: aegis-slide-in 0.4s cubic-bezier(0.4,0,0.2,1);
|
animation: aegis-slide-in 0.4s cubic-bezier(0.4,0,0.2,1);
|
||||||
@@ -60,57 +65,59 @@
|
|||||||
from { transform: translateX(420px); opacity: 0; }
|
from { transform: translateX(420px); opacity: 0; }
|
||||||
to { transform: translateX(0); opacity: 1; }
|
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 {
|
#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;
|
border-radius: 6px; font: inherit; font-size: 0.86rem; font-weight: 600;
|
||||||
cursor: pointer; flex-shrink: 0;
|
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 {
|
#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;
|
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 {
|
#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);
|
backdrop-filter: blur(3px);
|
||||||
display: flex; align-items: center; justify-content: center; padding: 24px;
|
display: flex; align-items: center; justify-content: center; padding: 24px;
|
||||||
animation: aegis-fade-in 0.25s ease;
|
animation: aegis-fade-in 0.25s ease;
|
||||||
}
|
}
|
||||||
@keyframes aegis-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
@keyframes aegis-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
||||||
#aegis-update-modal {
|
#aegis-update-modal {
|
||||||
background: #132844; color: #E8E8E8; border-radius: 14px;
|
background: var(--bg-card);
|
||||||
border: 1px solid rgba(200,168,81,0.25);
|
color: var(--text-primary);
|
||||||
box-shadow: 0 24px 80px rgba(0,0,0,0.5);
|
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;
|
font-family: 'Inter', -apple-system, sans-serif;
|
||||||
max-width: 540px; width: 100%; max-height: 80vh; overflow: hidden;
|
max-width: 540px; width: 100%; max-height: 80vh; overflow: hidden;
|
||||||
display: flex; flex-direction: column;
|
display: flex; flex-direction: column;
|
||||||
}
|
}
|
||||||
#aegis-update-modal header {
|
#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 h2 { margin: 0 0 4px; color: var(--accent); font-size: 1.25rem; font-weight: 700; }
|
||||||
#aegis-update-modal header p { margin: 0; color: #A0A8B8; font-size: 0.88rem; }
|
#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-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:last-child { border: 0; }
|
||||||
.aegis-release-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 8px; }
|
.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-title { font-size: 1rem; font-weight: 600; color: var(--text-primary); }
|
||||||
.aegis-release-date { font-size: 0.78rem; color: #5A6478; }
|
.aegis-release-date { font-size: 0.78rem; color: var(--text-tertiary); }
|
||||||
.aegis-release-items { margin: 0; padding-left: 20px; color: #C0C8D8; font-size: 0.92rem; line-height: 1.6; }
|
.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-release-items li { margin-bottom: 4px; }
|
||||||
#aegis-update-modal footer {
|
#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;
|
display: flex; justify-content: flex-end;
|
||||||
}
|
}
|
||||||
#aegis-update-modal footer button {
|
#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;
|
border-radius: 6px; font: inherit; font-size: 0.92rem; font-weight: 600;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
#aegis-update-modal footer button:hover { background: #D4B96A; }
|
#aegis-update-modal footer button:hover { background: var(--accent-hover); }
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
@media (max-width: 600px) {
|
||||||
#aegis-update-banner { left: 12px; right: 12px; bottom: 12px; max-width: none; }
|
#aegis-update-banner { left: 12px; right: 12px; bottom: 12px; max-width: none; }
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren