diff --git a/public/script.js b/public/script.js index 3389cc096..052ee9cb6 100644 --- a/public/script.js +++ b/public/script.js @@ -2991,8 +2991,6 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, return; } - hideStopButton(); - is_send_press = false; if (!data.error) { //const getData = await response.json(); let getMessage = extractMessageFromData(data); @@ -3113,6 +3111,7 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, } if (generatedTextFiltered(getMessage)) { console.debug('swiping right automatically'); + is_send_press = false; swipe_right(); return } @@ -3132,7 +3131,9 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, } console.debug('/savechat called by /Generate'); - saveChatConditional(); + await saveChatConditional(); + is_send_press = false; + hideStopButton(); activateSendButtons(); showSwipeButtons(); setGenerationProgress(0); @@ -6113,7 +6114,7 @@ async function deleteMessageImage() { delete message.extra.inline_image; mesBlock.find('.mes_img_container').removeClass('img_extra'); mesBlock.find('.mes_img').attr('src', ''); - saveChatConditional(); + await saveChatConditional(); } function enlargeMessageImage() { @@ -7908,7 +7909,7 @@ $(document).ready(function () { }); //confirms message deletion with the "ok" button - $("#dialogue_del_mes_ok").click(function () { + $("#dialogue_del_mes_ok").click(async function () { $("#dialogue_del_mes").css("display", "none"); $("#send_form").css("display", css_send_form_display); $(".del_checkbox").each(function () { @@ -7924,7 +7925,7 @@ $(document).ready(function () { $(".mes[mesid='" + this_del_mes + "']").remove(); chat.length = this_del_mes; count_view_mes = this_del_mes; - saveChatConditional(); + await saveChatConditional(); var $textchat = $("#chat"); $textchat.scrollTop($textchat[0].scrollHeight); eventSource.emit(event_types.MESSAGE_DELETED, chat.length); @@ -8199,7 +8200,7 @@ $(document).ready(function () { this_edit_mes_id = undefined; }); - $(document).on("click", ".mes_edit_up", function () { + $(document).on("click", ".mes_edit_up", async function () { if (is_send_press || this_edit_mes_id <= 0) { return; } @@ -8224,11 +8225,11 @@ $(document).ready(function () { this_edit_mes_id = targetId; updateViewMessageIds(); - saveChatConditional(); + await saveChatConditional(); showSwipeButtons(); }); - $(document).on("click", ".mes_edit_down", function () { + $(document).on("click", ".mes_edit_down", async function () { if (is_send_press || this_edit_mes_id >= chat.length - 1) { return; } @@ -8253,7 +8254,7 @@ $(document).ready(function () { this_edit_mes_id = targetId; updateViewMessageIds(); - saveChatConditional(); + await saveChatConditional(); showSwipeButtons(); }); @@ -8277,14 +8278,14 @@ $(document).ready(function () { addOneMessage(clone, { insertAfter: this_edit_mes_id }); updateViewMessageIds(); - saveChatConditional(); + await saveChatConditional(); $('#chat')[0].scrollTop = oldScroll; showSwipeButtons(); }); $(document).on("click", ".mes_edit_delete", async function (event, customData) { const fromSlashCommand = customData?.fromSlashCommand || false; - const swipeExists = (!chat[this_edit_mes_id].swipes || chat[this_edit_mes_id].swipes.length <= 1 || chat.is_user || parseInt(this_edit_mes_id) !== chat.length - 1); + const swipeExists = (!Array.isArray(chat[this_edit_mes_id].swipes) || chat[this_edit_mes_id].swipes.length <= 1 || chat[this_edit_mes_id].is_user || parseInt(this_edit_mes_id) !== chat.length - 1); if (power_user.confirm_message_delete && fromSlashCommand !== true) { const confirmation = swipeExists ? await callPopup("Are you sure you want to delete this message?", 'confirm') : await callPopup("

Delete this...

", 'confirm') @@ -8316,7 +8317,7 @@ $(document).ready(function () { this_edit_mes_id = undefined; updateViewMessageIds(); - saveChatConditional(); + await saveChatConditional(); eventSource.emit(event_types.MESSAGE_DELETED, count_view_mes); diff --git a/public/scripts/extensions/translate/index.js b/public/scripts/extensions/translate/index.js index ac477ffe3..6a10b787d 100644 --- a/public/scripts/extensions/translate/index.js +++ b/public/scripts/extensions/translate/index.js @@ -217,6 +217,10 @@ async function translateProviderDeepl(text, lang) { async function translate(text, lang) { try { + if (text == '') { + return ''; + } + switch (extension_settings.translate.provider) { case 'google': return await translateProviderGoogle(text, lang); diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js index 41fc87791..2c7b99948 100644 --- a/public/scripts/nai-settings.js +++ b/public/scripts/nai-settings.js @@ -128,8 +128,8 @@ function loadNovelPreset(preset) { function loadNovelSettings(settings) { //load the rest of the Novel settings without any checks nai_settings.model_novel = settings.model_novel; - $(`#model_novel_select option[value=${nai_settings.model_novel}]`).attr("selected", true); $('#model_novel_select').val(nai_settings.model_novel); + $(`#model_novel_select option[value=${nai_settings.model_novel}]`).attr("selected", true); if (settings.nai_preamble !== undefined) { nai_settings.preamble = settings.nai_preamble; diff --git a/public/scripts/openai.js b/public/scripts/openai.js index cb091880f..e85506649 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -1647,6 +1647,11 @@ class ChatCompletion { const index = this.findMessageIndex(identifier); const message = this.messages.collection[index].collection.pop(); + if (!message) { + this.log(`No message to remove from ${identifier}`); + return; + } + this.increaseTokenBudgetBy(message.getTokens()); this.log(`Removed ${message.identifier} from ${identifier}. Remaining tokens: ${this.tokenBudget}`); @@ -2542,6 +2547,7 @@ function getMaxContextWindowAI(value) { } async function onModelChange() { + biasCache = undefined; let value = String($(this).val()); if ($(this).is('#model_claude_select')) { diff --git a/public/scripts/slash-commands.js b/public/scripts/slash-commands.js index 294a61fb9..a23f10d8b 100644 --- a/public/scripts/slash-commands.js +++ b/public/scripts/slash-commands.js @@ -282,11 +282,11 @@ function setNameCallback(_, name) { setUserName(name); //this prevented quickReply usage } -function setNarratorName(_, text) { +async function setNarratorName(_, text) { const name = text || NARRATOR_NAME_DEFAULT; chat_metadata[NARRATOR_NAME_KEY] = name; toastr.info(`System narrator name set to ${name}`); - saveChatConditional(); + await saveChatConditional(); } async function sendMessageAs(_, text) { @@ -341,7 +341,7 @@ async function sendMessageAs(_, text) { await eventSource.emit(event_types.MESSAGE_SENT, (chat.length - 1)); addOneMessage(message); await eventSource.emit(event_types.USER_MESSAGE_RENDERED, (chat.length - 1)); - saveChatConditional(); + await saveChatConditional(); } async function sendNarratorMessage(_, text) { @@ -373,7 +373,7 @@ async function sendNarratorMessage(_, text) { await eventSource.emit(event_types.MESSAGE_SENT, (chat.length - 1)); addOneMessage(message); await eventSource.emit(event_types.USER_MESSAGE_RENDERED, (chat.length - 1)); - saveChatConditional(); + await saveChatConditional(); } async function sendCommentMessage(_, text) { @@ -399,7 +399,7 @@ async function sendCommentMessage(_, text) { await eventSource.emit(event_types.MESSAGE_SENT, (chat.length - 1)); addOneMessage(message); await eventSource.emit(event_types.USER_MESSAGE_RENDERED, (chat.length - 1)); - saveChatConditional(); + await saveChatConditional(); } function helpCommandCallback(_, type) { diff --git a/public/scripts/tokenizers.js b/public/scripts/tokenizers.js index 2714c12ef..8f9b82405 100644 --- a/public/scripts/tokenizers.js +++ b/public/scripts/tokenizers.js @@ -134,7 +134,7 @@ export function getTokenCount(str, padding = undefined) { const cacheObject = getTokenCacheObject(); const hash = getStringHash(str); - const cacheKey = `${tokenizerType}-${hash}`; + const cacheKey = `${tokenizerType}-${hash}+${padding}`; if (typeof cacheObject[cacheKey] === 'number') { return cacheObject[cacheKey]; diff --git a/public/style.css b/public/style.css index c159704e0..c9876f8c6 100644 --- a/public/style.css +++ b/public/style.css @@ -202,6 +202,10 @@ table.responsiveTable { color: var(--white50a); } +.mes[is_system="true"] .mes_text br { + display: none; +} + .mes_text table { border-spacing: 0; border-collapse: collapse;