diff --git a/RELEASE_NOTES_v2.2.86.md b/RELEASE_NOTES_v2.2.86.md
new file mode 100644
index 0000000..c225c01
--- /dev/null
+++ b/RELEASE_NOTES_v2.2.86.md
@@ -0,0 +1,13 @@
+# Release Notes v2.2.86
+
+Dato: 2026-05-04
+
+## Hotfix
+
+- Rettet Telefoni UI race-condition hvor server-renderede kald blev vist ved page load, men kunne blive overskrevet med tom liste efter ca. 1 sekund af foerste JS-refresh.
+- Siden bevarer nu initialt viste kald, hvis foerste API-refresh uden aktive filtre returnerer tomt.
+
+## Berorte filer
+
+- `app/modules/telefoni/templates/log.html`
+- `VERSION`
diff --git a/VERSION b/VERSION
index 5bca469..4ccffcd 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.2.85
+2.2.86
diff --git a/app/modules/telefoni/templates/log.html b/app/modules/telefoni/templates/log.html
index de3dbb1..40c0115 100644
--- a/app/modules/telefoni/templates/log.html
+++ b/app/modules/telefoni/templates/log.html
@@ -58,7 +58,7 @@
Varighed |
-
+
{% if initial_calls and initial_calls|length > 0 %}
{% for r in initial_calls %}
@@ -213,6 +213,7 @@ function escapeHtml(str) {
let telefoniCurrentUserId = null;
let telefoniAutoResetTried = false;
+let telefoniFirstApiLoadDone = false;
const telefoniCallMap = new Map();
const linkSagState = {
callId: null,
@@ -857,6 +858,8 @@ async function loadUsers() {
async function loadCalls() {
const tbody = document.getElementById('telefoniRows');
+ const initialCount = Number(tbody?.dataset?.initialCount || '0');
+ const hadServerRows = Number.isFinite(initialCount) && initialCount > 0;
tbody.innerHTML = '
| Indlæser... |
';
const userId = document.getElementById('filterUser').value;
@@ -882,6 +885,13 @@ async function loadCalls() {
(rows || []).forEach(r => telefoniCallMap.set(Number(r.id), r));
if (!rows || rows.length === 0) {
const hadFilters = Boolean(userId || from || to || withoutCase);
+
+ // If SSR already showed calls, avoid replacing them with an empty first auto-refresh.
+ if (!telefoniFirstApiLoadDone && hadServerRows && !hadFilters) {
+ telefoniFirstApiLoadDone = true;
+ return;
+ }
+
if (hadFilters && !telefoniAutoResetTried) {
telefoniAutoResetTried = true;
document.getElementById('filterUser').value = '';
@@ -892,10 +902,12 @@ async function loadCalls() {
return;
}
tbody.innerHTML = '| Ingen opkald fundet |
';
+ telefoniFirstApiLoadDone = true;
return;
}
telefoniAutoResetTried = false;
+ telefoniFirstApiLoadDone = true;
tbody.innerHTML = rows.map(r => {
const started = r.started_at ? new Date(r.started_at) : null;