diff --git a/layouts/_default/single.html b/layouts/_default/single.html
index 58a200f..0744229 100644
--- a/layouts/_default/single.html
+++ b/layouts/_default/single.html
@@ -64,7 +64,16 @@
{{- end }}
{{/* Dialog liegt auf eigener Seite — der Beitrag bleibt sauber */}}
- → Dialog
+ → Dialog
+
{{ end }}
diff --git a/static/dialog.js b/static/dialog.js
index 495862b..b67b4ba 100644
--- a/static/dialog.js
+++ b/static/dialog.js
@@ -49,13 +49,16 @@
return d.toLocaleDateString('de-CH');
}
+ let lastSig = '';
async function load() {
let data = [];
try {
const res = await fetch('/api/comments?thread=' + encodeURIComponent(thread));
if (res.ok) data = await res.json();
- } catch { /* offline */ }
- render(data);
+ } catch { return; /* offline: alte Ansicht behalten */ }
+ // Nur neu rendern, wenn sich wirklich etwas geändert hat (kein Flackern).
+ const sig = (token ? 'in:' : 'out:') + data.map((c) => c.id + (c.deleted ? 'd' : '')).join(',');
+ if (sig !== lastSig) { lastSig = sig; render(data); }
}
function render(data) {
@@ -161,4 +164,6 @@
renderComposer();
load();
+ // Live genug: alle 10 s nachladen (pausiert, wenn der Tab im Hintergrund ist).
+ setInterval(() => { if (!document.hidden) load(); }, 10000);
})();