async function renderSettings() { const content = document.getElementById('pageContent'); content.innerHTML = `
Loading...
`; try { const settings = await api.getSettings(); const container = document.getElementById('settingsForm'); const prefs = settings.agent_preferences || {}; const dashboard = settings.dashboard || {}; const limits = settings.free_tier_limits || {}; container.innerHTML = `
Agent Preferences
Dashboard
Free Tier Limits
Danger Zone

Reset all settings to defaults. This cannot be undone.

`; } catch (err) { document.getElementById('settingsForm').innerHTML = `
âš 

${escapeHtml(err.message)}

`; } } async function saveSettings() { try { const settings = { agent_preferences: { opencode: { enabled: document.getElementById('ocEnabled').value === 'true' }, hermes: { enabled: document.getElementById('hermesEnabled').value === 'true' }, gemini: { enabled: document.getElementById('geminiEnabled').value === 'true' }, }, dashboard: { port: parseInt(document.getElementById('dashPort').value) || 8080, host: document.getElementById('dashHost').value || '127.0.0.1', dark_mode: document.getElementById('themeSelect').value === 'dark', }, free_tier_limits: { gemini_flash: { requests_per_day: parseInt(document.getElementById('geminiReqs').value) || 1500, tokens_per_day: parseInt(document.getElementById('geminiTokens').value) || 1000000, }, openrouter_free: { requests_per_day: parseInt(document.getElementById('orReqs').value) || 100, tokens_per_day: parseInt(document.getElementById('orTokens').value) || 200000, }, }, }; await api.updateSettings(settings); showToast('Settings saved', 'success'); renderSettings(); } catch (err) { showToast(`Error: ${err.message}`, 'error'); } } function resetSettings() { if (!confirm('Reset all settings to defaults?')) return; const defaults = { theme: 'dark', agent_preferences: { opencode: { enabled: true, binary: 'opencode', max_turns: 50 }, hermes: { enabled: true, binary: 'hermes' }, gemini: { enabled: true, binary: 'gemini', model: 'gemini-2.5-flash' }, }, dashboard: { port: 8080, host: '127.0.0.1', dark_mode: true }, free_tier_limits: { gemini_flash: { requests_per_day: 1500, tokens_per_day: 1000000 }, openrouter_free: { requests_per_day: 100, tokens_per_day: 200000 }, }, }; api.updateSettings(defaults).then(() => { showToast('Settings reset to defaults', 'success'); renderSettings(); }).catch(err => { showToast(`Error: ${err.message}`, 'error'); }); }