From a7abfa8eb6e75efe3371204ee81fcded529d50cc Mon Sep 17 00:00:00 2001 From: G-Fourteen Date: Thu, 11 Sep 2025 15:27:08 -0600 Subject: [PATCH] fix: restore default model and enter key behavior --- chat-core.js | 10 ++++++---- storage.js | 14 ++++++++------ ui.js | 30 ++++++++++++++++++------------ 3 files changed, 32 insertions(+), 22 deletions(-) diff --git a/chat-core.js b/chat-core.js index 21d6009..7b8be07 100644 --- a/chat-core.js +++ b/chat-core.js @@ -28,13 +28,15 @@ window.aiInstructionPromise = fetch("ai-instruct.txt") // Utility: allow Enter to send messages and Shift+Enter for new lines window.setupEnterToSend = function(textarea, sendCallback) { if (!textarea || typeof sendCallback !== "function") return; - textarea.addEventListener("keydown", (e) => { - const isEnter = e.key === "Enter" || e.keyCode === 13; - if (isEnter && !e.shiftKey) { + const handler = (e) => { + const key = e.key || e.keyCode; + const isEnter = key === "Enter" || key === 13; + if (isEnter && !e.shiftKey && !e.isComposing && !e.repeat) { e.preventDefault(); sendCallback(); } - }); + }; + textarea.addEventListener("keydown", handler); }; document.addEventListener("DOMContentLoaded", () => { diff --git a/storage.js b/storage.js index 598af0f..ab50744 100644 --- a/storage.js +++ b/storage.js @@ -45,17 +45,19 @@ document.addEventListener("DOMContentLoaded", () => { function getDefaultModel() { let model = localStorage.getItem("defaultModelPreference"); - if (!model) { + if (!model || typeof model !== "string" || model.trim() === "") { model = "unity"; localStorage.setItem("defaultModelPreference", model); } return model; } - - function setDefaultModel(modelName) { - localStorage.setItem("defaultModelPreference", modelName); - console.log("Default model preference set to:", modelName); - } + + function setDefaultModel(modelName) { + if (typeof modelName === "string" && modelName.trim() !== "") { + localStorage.setItem("defaultModelPreference", modelName); + console.log("Default model preference set to:", modelName); + } + } function createSession(name) { const newId = Date.now().toString(); diff --git a/ui.js b/ui.js index 5a3b49c..95e5f11 100644 --- a/ui.js +++ b/ui.js @@ -148,21 +148,27 @@ document.addEventListener("DOMContentLoaded", () => { }); const currentSession = Storage.getCurrentSession(); - const preferredModel = currentSession?.model || Storage.getDefaultModel(); - if (preferredModel) { - const exists = Array.from(modelSelect.options).some(option => option.value === preferredModel); - if (exists) { - modelSelect.value = preferredModel; + let preferredModel = currentSession?.model || Storage.getDefaultModel(); + if (!preferredModel || typeof preferredModel !== "string" || preferredModel.trim() === "") { + preferredModel = "unity"; + if (currentSession) { + Storage.setSessionModel(currentSession.id, preferredModel); } else { - const tempOpt = document.createElement("option"); - tempOpt.value = preferredModel; - tempOpt.textContent = `${preferredModel} (Previously Selected - May Be Unavailable)`; - tempOpt.title = "This model may no longer be available"; - modelSelect.appendChild(tempOpt); - modelSelect.value = preferredModel; - console.warn(`Model ${preferredModel} not found in fetched list. Added as unavailable option.`); + Storage.setDefaultModel(preferredModel); } } + const exists = Array.from(modelSelect.options).some(option => option.value === preferredModel); + if (exists) { + modelSelect.value = preferredModel; + } else { + const tempOpt = document.createElement("option"); + tempOpt.value = preferredModel; + tempOpt.textContent = `${preferredModel} (Previously Selected - May Be Unavailable)`; + tempOpt.title = "This model may no longer be available"; + modelSelect.appendChild(tempOpt); + modelSelect.value = preferredModel; + console.warn(`Model ${preferredModel} not found in fetched list. Added as unavailable option.`); + } if (!modelSelect.value && modelSelect.options.length > 0) { const unityOption = Array.from(modelSelect.options).find(opt => opt.value === "unity");