Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions chat-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -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", () => {
Expand Down
14 changes: 8 additions & 6 deletions storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
30 changes: 18 additions & 12 deletions ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down