// ── Archive Loading ── let loadedArchiveCount = 0; function getOrCreateArchiveContainer() { let container = chatEl().querySelector('.archive-container'); if (!container) { container = document.createElement('div'); container.className = 'archive-container'; chatEl().prepend(container); } return container; } function getOrCreateArchiveDivider() { let divider = chatEl().querySelector('.archive-divider'); if (!divider) { divider = document.createElement('div'); divider.className = 'msg system-info archive-divider'; divider.textContent = 'Aktuelle Konversation'; // Nach dem Container, vor den aktiven Messages const container = getOrCreateArchiveContainer(); container.after(divider); } return divider; } async function loadLatestArchive() { try { const archives = await apiListArchives(getCurrentSessionId()); if (archives.length <= loadedArchiveCount) return; const latest = archives[loadedArchiveCount]; loadedArchiveCount++; removeArchiveLoadButton(); const data = await apiGetArchive(latest.archiveId); const container = getOrCreateArchiveContainer(); getOrCreateArchiveDivider(); // Archiv-Block zusammenbauen const fragment = document.createDocumentFragment(); const sep = document.createElement('div'); sep.className = 'msg system-info'; sep.innerHTML = ` Archiv vom ${new Date(latest.createdAt).toLocaleString('de-AT')} (${latest.chainCount} Chains, ${latest.messageCount} Messages)`; fragment.appendChild(sep); const archiveImageIds = []; for (const entry of data) { _renderMessagesIntoFragment(fragment, _mergeConsecutiveAssistantTexts(entry.messages), archiveImageIds, { archived: true }); if (entry.chain && isChainMetaVisible(entry.chain)) { fragment.appendChild(_createChainMetaDiv(entry.chain, 'archived')); } } // Älteres Archiv vor dem bisherigen Inhalt einfügen container.prepend(fragment); // Bild-Attachments automatisch laden for (const mid of archiveImageIds) _autoLoadImageAttachments(mid); // Button ganz oben, falls es noch ältere Archive gibt if (archives.length > loadedArchiveCount) { showArchiveLoadButton(); } } catch (e) { console.error('Archiv laden fehlgeschlagen:', e); } }