diff --git a/public/script.js b/public/script.js index 71f78a498..2ab1f0e15 100644 --- a/public/script.js +++ b/public/script.js @@ -107,7 +107,17 @@ import { setPoeOnlineStatus, } from "./scripts/poe.js"; -import { debounce, delay, restoreCaretPosition, saveCaretPosition, end_trim_to_sentence, countOccurrences, isOdd } from "./scripts/utils.js"; +import { + debounce, + delay, + restoreCaretPosition, + saveCaretPosition, + end_trim_to_sentence, + countOccurrences, + isOdd, + isElementInViewport, +} from "./scripts/utils.js"; + import { extension_settings, loadExtensionSettings, runGenerationInterceptors } from "./scripts/extensions.js"; import { executeSlashCommands, getSlashCommandsHelp, registerSlashCommand } from "./scripts/slash-commands.js"; import { @@ -195,6 +205,7 @@ export { talkativeness_default, default_ch_mes, extension_prompt_types, + setCharListVisible, } // API OBJECT FOR EXTERNAL WIRING @@ -801,6 +812,7 @@ function printCharacters() { printGroups(); sortCharactersList(); favsToHotswap(); + setCharListVisible(); } async function getCharacters() { @@ -2967,7 +2979,9 @@ function extractNameFromMessage(getMessage, force_name2, isImpersonate) { // Like OAI, Poe is very unlikely to send you an incomplete message. // But it doesn't send "name:" either, so we assume that we always have a name // prepend to have clearer logs when building up a prompt context. - if (force_name2 || main_api == 'poe') + // Instruct mode needs to have it on to make sure you won't have names lost + // if disable in a middle of a solo chat. + if (force_name2 || main_api == 'poe' || power_user.instruct.enabled) this_mes_is_name = true; if (isImpersonate) { @@ -4767,6 +4781,33 @@ const swipe_right = () => { } } +function setCharListVisible() { + const $children = $("#rm_print_characters_block").children(); + $children.each(function () { + if (isElementInViewport($(this))) { + $(this) + //.css('opacity', 1); + //.css('display', 'flex'); + .stop(true, false).animate({ opacity: 1 }, { duration: 50, queue: false }); + } + + if (!isElementInViewport($(this)) && + ($(this).css('opacity') === '1' || $(this).css('opacity') === undefined)) { + //.css('opacity', 0); + + $(this) + //.css('opacity', 0); + //.css('display', 'none'); + .stop(true, false).animate({ opacity: 0 }, { duration: 50, queue: false }); + }; + /* console.log(`chid ${$(elem).find('.ch_name').text()} + inview? ${isElementInViewport($(elem))} + opacity? ${$(elem).css('opacity')}` + + ); */ + }) +} + $(document).ready(function () { @@ -5688,13 +5729,11 @@ $(document).ready(function () { duration: 250, easing: animation_easing, }); - console.log('displayed AN panel'); if ($("#ANBlockToggle") .siblings('.inline-drawer-content') .css('display') !== 'block') { $("#ANBlockToggle").click(); - console.log('opened AN box'); } } else { $("#floatingPrompt").transition({ @@ -5704,7 +5743,6 @@ $(document).ready(function () { }); setTimeout(function () { $("#floatingPrompt").hide(); - console.log('hid AN panel'); }, 250); } @@ -6165,6 +6203,24 @@ $(document).ready(function () { showSwipeButtons(); }); + setTimeout(function () { + const $children = $("#rm_print_characters_block").children(); + const originalHeight = $children.length * $children.first().outerHeight(); + $("#rm_print_characters_block").css('height', originalHeight); + //show and hide charlist divs on pageload (causes load lag) + //$children.each(function () { setCharListVisible($(this)) }); + + $("#rm_print_characters_block").on('scroll', debounce(function () { + const containerHeight = $children.length * $children.first().outerHeight(); + $("#rm_print_characters_block").css('height', containerHeight); + //show and hide on scroll + setCharListVisible(); + }, 1)); + //delay timer to allow for charlist to populate, + //should be set to an onload for rm_print_characters or windows? + }, 1000); + + $(document).on("click", ".mes_edit_delete", function () { if (!confirm("Are you sure you want to delete this message?")) { return; diff --git a/public/scripts/openai.js b/public/scripts/openai.js index 871b14bd2..80c93f6cb 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -502,9 +502,10 @@ function tryParseStreamingError(str) { } function checkQuotaError(data) { - const errorText = `