// ── Dashboard Page ── registerPage('dashboard', { async init() { // Sessions laden const sessions = await apiGetSessions(); const grid = document.getElementById('sessionCards'); grid.innerHTML = ''; for (const s of sessions) { const card = document.createElement('div'); card.className = 'card clickable'; card.innerHTML = `
${escHtml(s.name || 'Unbenannt')}
${formatDate(s.updatedAt)}
`; card.addEventListener('click', () => { navigateTo('session', { id: s.sessionId }); }); grid.appendChild(card); } const newSessionBtn = document.getElementById('newSessionBtn'); if (newSessionBtn) { newSessionBtn.addEventListener('click', async () => { const session = await apiCreateSession(); navigateTo('session', { id: session.sessionId }); }); } // Agents laden const agents = await apiGetAgents(); const agentGrid = document.getElementById('agentCards'); agentGrid.innerHTML = ''; for (const a of agents) { const card = document.createElement('div'); card.className = 'card clickable'; card.innerHTML = `
${a.avatar ? `` : '?'}
${escHtml(a.name)}
${escHtml(a.model || 'sonnet')}
`; card.addEventListener('click', () => { navigateTo('agent', { id: a.agentId }); }); agentGrid.appendChild(card); } // Neuer Agent Placeholder const placeholder = document.createElement('div'); placeholder.className = 'card placeholder clickable'; placeholder.innerHTML = `
+
Neuer Agent
`; placeholder.addEventListener('click', () => navigateTo('agent')); agentGrid.appendChild(placeholder); }, destroy() {} }); function escHtml(s) { const d = document.createElement('div'); d.textContent = s; return d.innerHTML; } function formatDate(iso) { if (!iso) return ''; return new Date(iso).toLocaleString('de-AT', { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }); }