feat: Sync/Clone-Modus, Rotation, --setup Deployment, Scheduler-Fix, Dashboard-Updates, README

This commit is contained in:
Björn Nehlsen
2026-08-11 22:45:58 +02:00
parent 2eee55384e
commit a495570b20
14 changed files with 3851 additions and 681 deletions
+26 -3
View File
@@ -101,7 +101,21 @@
cursor: pointer;
}
.messages { display: grid; gap: 10px; }
.flash-overlay {
position: fixed;
top: 18px;
right: 18px;
z-index: 1200;
display: grid;
gap: 10px;
max-width: min(92vw, 360px);
pointer-events: none;
}
.flash-overlay.hidden {
opacity: 0;
transition: opacity 220ms ease;
}
.msg {
margin: 0;
@@ -109,6 +123,8 @@
border-radius: 12px;
font-weight: 600;
font-size: 14px;
box-shadow: 0 10px 24px rgba(30, 42, 59, 0.16);
pointer-events: auto;
}
.msg.success {
@@ -240,11 +256,18 @@
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<section class="panel content messages">
<div id="flash-overlay" class="flash-overlay" role="status" aria-live="polite">
{% for category, message in messages %}
<p class="msg {{ category }}">{{ message }}</p>
{% endfor %}
</section>
</div>
<script>
window.addEventListener('DOMContentLoaded', () => {
const overlay = document.getElementById('flash-overlay');
if (!overlay) return;
window.setTimeout(() => overlay.classList.add('hidden'), 3000);
});
</script>
{% endif %}
{% endwith %}