diff --git a/public/scripts/extensions/floating-prompt/index.js b/public/scripts/extensions/floating-prompt/index.js index 860a01428..520d9f53a 100644 --- a/public/scripts/extensions/floating-prompt/index.js +++ b/public/scripts/extensions/floating-prompt/index.js @@ -27,6 +27,12 @@ export const metadata_keys = { position: 'note_position', } +const chara_note_position = { + replace: 0, + before: 1, + after: 2, +} + function setNoteTextCommand(_, text) { $('#extension_floating_prompt').val(text).trigger('input'); toastr.success("Author's Note text updated"); @@ -115,6 +121,16 @@ async function onExtensionFloatingPositionInput(e) { saveMetadataDebounced(); } +async function onExtensionFloatingCharPositionInput(e) { + const value = e.target.value; + const charaNote = extension_settings.note.chara.find((e) => e.name === getCharaFilename()); + + if (charaNote) { + charaNote.position = Number(value); + updateSettings(); + } +} + function onExtensionFloatingCharaPromptInput() { const tempPrompt = $(this).val(); const avatarName = getCharaFilename(); @@ -147,7 +163,7 @@ function onExtensionFloatingCharaPromptInput() { if (!extension_settings.note.chara) { extension_settings.note.chara = [] } - Object.assign(tempCharaNote, { useChara: false }) + Object.assign(tempCharaNote, { useChara: false, position: chara_note_position.replace }) extension_settings.note.chara.push(tempCharaNote); } else { @@ -193,9 +209,11 @@ function loadSettings() { $('#extension_floating_chara').val(charaNote ? charaNote.prompt : ''); $('#extension_use_floating_chara').prop('checked', charaNote ? charaNote.useChara : false); + $(`input[name="extension_floating_char_position"][value="${charaNote?.position ?? chara_note_position.replace}"]`).prop('checked', true); } else { $('#extension_floating_chara').val(''); $('#extension_use_floating_chara').prop('checked', false); + $(`input[name="extension_floating_char_position"][value="${chara_note_position.replace}"]`).prop('checked', true); } $('#extension_floating_default').val(extension_settings.note.default); @@ -240,7 +258,17 @@ export function setFloatingPrompt() { // Only replace with the chara note if the user checked the box if (charaNote && charaNote.useChara) { - prompt = charaNote.prompt; + switch (charaNote.position) { + case chara_note_position.before: + prompt = charaNote.prompt + '\n' + prompt; + break; + case chara_note_position.after: + prompt = prompt + '\n' + charaNote.prompt; + break; + default: + prompt = charaNote.prompt; + break; + } } } context.setExtensionPrompt(MODULE_NAME, prompt, chat_metadata[metadata_keys.position], chat_metadata[metadata_keys.depth]); @@ -371,8 +399,22 @@ setTimeout(function () { + Use character author's note + +