+
{origin.available ? (
{label}
- ) : {label} · {t.chat.forkSourceDeleted}}
+ >
+ {label}
+
+ ) : (
+
+ {label} · {t.chat.forkSourceDeleted}
+
+ )}
)
diff --git a/webui/frontend/app/components/models/ProviderLogo.tsx b/webui/frontend/app/components/models/ProviderLogo.tsx
index 67e2685fd..e6b96eb17 100644
--- a/webui/frontend/app/components/models/ProviderLogo.tsx
+++ b/webui/frontend/app/components/models/ProviderLogo.tsx
@@ -38,7 +38,7 @@ function placeholderColor(seed: string): string {
/** First letter/digit of the name, for the placeholder tile. */
function initial(text: string): string {
- const c = [...text].find((ch) => /[A-Za-z0-9]/.test(ch))
+ const c = [...text].find((ch) => /[\p{L}\p{N}]/u.test(ch))
return (c ?? '?').toUpperCase()
}
diff --git a/webui/frontend/app/lib/sessionModel.ts b/webui/frontend/app/lib/sessionModel.ts
index eb5711794..e961e3765 100644
--- a/webui/frontend/app/lib/sessionModel.ts
+++ b/webui/frontend/app/lib/sessionModel.ts
@@ -64,8 +64,10 @@ export function useSessionModel(sessionId: string | null, initialId: string, ena
if (sessionId) {
try { saved.current = (await api.getSession(sessionId, { silent: true })).model_id || '' } catch { /* keep last known selection */ }
}
- selected.current = saved.current
- setModelId(saved.current)
+ if (revision.current === version) {
+ selected.current = saved.current
+ setModelId(saved.current)
+ }
}
throw failure
}).finally(() => { saving.current -= 1 })
diff --git a/webui/frontend/tsconfig.json b/webui/frontend/tsconfig.json
index 56aee387f..cbdd92d43 100644
--- a/webui/frontend/tsconfig.json
+++ b/webui/frontend/tsconfig.json
@@ -5,7 +5,7 @@
"**/.client/**/*",
".react-router/types/**/*"
],
- "exclude": ["node_modules", "build", "public", "backend"],
+ "exclude": ["node_modules", "build-runtime", "build", "public", "backend"],
"compilerOptions": {
"lib": ["DOM", "DOM.Iterable", "ES2022"],
"types": ["node", "vite/client"],