UI bug pass: fix settings crash and rename dead heading

- Rename "Chat Defaults" heading to "Defaults" in settings general
- Guard sw.api.models.enabled() call (crashes when no providers
  are configured since models API returns undefined)
- Verified: admin, settings, login surfaces render correctly in
  both light and dark themes at desktop viewport

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-27 13:13:56 +00:00
parent 806979fcfe
commit 82edc15129

View File

@@ -1,5 +1,5 @@
/** /**
* GeneralSection — chat defaults: model, system prompt, max tokens, temperature, thinking * GeneralSection — user preferences (model, system prompt, max tokens, temperature)
*/ */
const { html } = window; const { html } = window;
const { useState, useEffect, useCallback, useRef } = hooks; const { useState, useEffect, useCallback, useRef } = hooks;
@@ -15,10 +15,8 @@ export function GeneralSection() {
useEffect(() => { useEffect(() => {
(async () => { (async () => {
try { try {
const [s, m] = await Promise.all([ const s = await sw.api.profile.settings();
sw.api.profile.settings(), const m = sw.api.models?.enabled ? await sw.api.models.enabled() : null;
sw.api.models.enabled(),
]);
const sObj = s || {}; const sObj = s || {};
setSettings({ setSettings({
model: sObj.model || '', model: sObj.model || '',
@@ -27,7 +25,7 @@ export function GeneralSection() {
temperature: sObj.temperature ?? 0.7, temperature: sObj.temperature ?? 0.7,
show_thinking: sObj.show_thinking || false, show_thinking: sObj.show_thinking || false,
}); });
const modelList = (m.data || []).filter(x => !x.hidden); const modelList = (m?.data || []).filter(x => !x.hidden);
setModels(modelList); setModels(modelList);
// Set initial max hint // Set initial max hint
@@ -74,7 +72,7 @@ export function GeneralSection() {
return html` return html`
<div class="settings-section"> <div class="settings-section">
<h3>Chat Defaults</h3> <h3>Defaults</h3>
<div class="form-group"> <div class="form-group">
<label>Default Model</label> <label>Default Model</label>
<select value=${settings.model} onChange=${onModelChange}> <select value=${settings.model} onChange=${onModelChange}>