/* ═══════════════════════════════════════════════════════ CHANGELOG — Mission Update Log Controller ═══════════════════════════════════════════════════════ */ (function () { 'use strict'; const root = document.getElementById('changelogRoot'); if (!root) return; function esc(s) { const d = document.createElement('div'); d.textContent = s || ''; return d.innerHTML; } function formatDate(dateStr) { const d = new Date(dateStr + 'T00:00:00'); const months = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']; return `${d.getDate().toString().padStart(2, '0')} ${months[d.getMonth()]} ${d.getFullYear()}`; } function render(data) { const entries = data.entries || []; const totalChanges = entries.reduce((sum, e) => sum + (e.changes ? e.changes.length : 0), 0); const latestVersion = entries.length > 0 ? entries[0].version : '0.0.0'; let html = ''; // Header html += `