diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 9ccae09188..4883c4a219 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1071,10 +1071,12 @@ lastTerminalSkillSelector = $selectedTerminalId; } - let settingDefaults = false; + let settingDefaults: Promise | null = null; const setDefaults = async () => { - if (settingDefaults) return; - settingDefaults = true; + // Concurrent callers must wait, or the earlier run overwrites what they write afterwards + if (settingDefaults) return settingDefaults; + let resolveDefaults = () => {}; + settingDefaults = new Promise((resolve) => (resolveDefaults = resolve)); try { if (!$tools) { @@ -1217,7 +1219,8 @@ } } } finally { - settingDefaults = false; + settingDefaults = null; + resolveDefaults(); } };