async function renderAudit() { const content = document.getElementById('pageContent'); content.innerHTML = `
Loading...
`; try { const audit = await api.getAudit(200); let entries = audit.entries || []; const filter = document.getElementById('auditFilter')?.value || 'all'; const search = (document.getElementById('auditSearch')?.value || '').toLowerCase(); if (filter !== 'all') entries = entries.filter(e => e.action === filter); if (search) entries = entries.filter(e => JSON.stringify(e).toLowerCase().includes(search)); const container = document.getElementById('auditEntries'); if (entries.length === 0) { container.innerHTML = '
📋

No audit entries

'; return; } container.innerHTML = `
${entries.reverse().map(e => ` `).join('')}
TimeActionDetailsID
${formatDate(e.timestamp)} ${e.action} ${e.skill || e.file || e.job || e.plugin || e.job_id || '-'} ${e.id || '-'}
${entries.length} entries
`; } catch (err) { document.getElementById('auditEntries').innerHTML = `
âš 

${escapeHtml(err.message)}

`; } }