name: "User Guide – Offline Edition.pdf", path: "files/userguide.pdf", size: "1.2 MB", type: "PDF document" ,
.file-icon font-size: 2rem;
if (fileCatalog.length === 0) container.innerHTML = `<div style="background: #fef2f2; padding: 2rem; text-align: center; border-radius: 1rem;"> ⚠️ No files configured. Edit the "fileCatalog" array inside the script to add your offline downloads. </div>`; return; myfiles downloads offline download version.html
// simple escape to avoid XSS function escapeHtml(str) return str.replace(/[&<>]/g, function(m) if (m === '&') return '&'; if (m === '<') return '<'; if (m === '>') return '>'; return m; ).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, function(c) return c; ); name: "User Guide – Offline Edition
<div class="footer-note"> 🗂️ MyFiles – offline distribution · last updated <span id="dateSpan"></span> · double-click a file to download </div> </div> name: "User Guide – Offline Edition.pdf"
name: "MyApp Setup (Windows).exe", path: "installers/MyApp_Setup.exe", size: "48.3 MB", type: "Installer" ,