async function loadBootstrap(showMessage = false) { if (app.loading) return; app.loading = true; try { const [data, sections] = await Promise.all([api('/api/bootstrap'), fetchSettingsSections()]); app.devices = data.devices || []; app.zones = data.zones || []; app.groups = data.groups || []; app.schedules = data.schedules || []; app.automations = data.automations || []; app.flows = data.flows || []; app.accessTokens = data.access_tokens || []; app.settings = aggregateSettingsSections(sections, data.house?.mode || 'cool'); app.sensorAliases = { ...(app.settings.home_assistant?.sensor_aliases || {}) }; app.flowSharedInputs = JSON.parse(JSON.stringify(app.settings.home_assistant?.flow_inputs || [])); app.system = data.system || {}; app.systemSnapshotAt = Date.now(); app.outdoorTemperature = Number.isFinite(Number(data.outdoor_temperature)) ? Number(data.outdoor_temperature) : null; renderAll(); loadControlPlan(); if (app.settings?.debug?.overlay_enabled) loadDebugBacklog(); if (showMessage) toast(tr('common.updated')); if ($('#tokenDialog').open) $('#tokenDialog').close(); connectWebSocket(); } catch (error) { if (!String(error.message).toLowerCase().includes('token')) toast(error.message, true); } finally { app.loading = false; } }