diff --git a/public/index.html b/public/index.html index 353445e14..fd46c77b8 100644 --- a/public/index.html +++ b/public/index.html @@ -1282,7 +1282,7 @@ - +
Token Budget ? @@ -1632,6 +1632,26 @@
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
diff --git a/public/script.js b/public/script.js index 69449723c..a023899f0 100644 --- a/public/script.js +++ b/public/script.js @@ -1,4 +1,4 @@ -import { humanizedDateTime } from "./scripts/RossAscends-mods.js"; +import { humanizedDateTime, favsToHotswap } from "./scripts/RossAscends-mods.js"; import { encode } from "../scripts/gpt-2-3-tokenizer/mod.js"; import { GPT3BrowserTokenizer } from "../scripts/gpt-3-tokenizer/gpt3-tokenizer.js"; import { @@ -734,9 +734,12 @@ function printCharacters() { $("#rm_print_characters_block").append(template); }); $("#rm_print_characters_block").prepend(`
`); + printTags(); printGroups(); sortCharactersList(); + //favsToHotswap(); + } async function getCharacters() { @@ -1355,6 +1358,8 @@ function applyFavFilter(enabled) { } } + + class StreamingProcessor { showStopButton(messageId) { if (messageId == -1) { @@ -3584,6 +3589,7 @@ function updateFavButtonState(state) { $("#fav_checkbox").val(fav_ch_checked); $("#favorite_button").toggleClass('fav_on', fav_ch_checked); $("#favorite_button").toggleClass('fav_off', !fav_ch_checked); + } function callPopup(text, type, inputValue = '') { @@ -3848,8 +3854,11 @@ window["SillyTavern"].getContext = function () { }; }; + + $(document).ready(function () { + //////////INPUT BAR FOCUS-KEEPING LOGIC///////////// let S_TAFocused = false; @@ -4734,6 +4743,7 @@ $(document).ready(function () { updateFavButtonState(!fav_ch_checked); if (menu_type != "create") { saveCharacterDebounced(); + } }); diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js index 04b5845b0..8656a4392 100644 --- a/public/scripts/RossAscends-mods.js +++ b/public/scripts/RossAscends-mods.js @@ -277,11 +277,51 @@ async function RA_autoloadchat() { console.log(CharToAutoLoad + ' ActiveChar local var - not found: ' + LoadLocal('ActiveChar')); } RestoreNavTab(); + } else { //console.log('no char list yet..'); setTimeout(RA_autoloadchat, 100); // if the charcter list hadn't been loaded yet, try again. } } + +export async function favsToHotswap() { + + const selector = ['#rm_print_characters_block .character_select', '#rm_print_characters_block .group_select'].join(','); + let count = 0; + $(selector).each(function () { + if ($(this).hasClass('is_fav') && count < 6) { + //console.log(count + 1); + let hotswapChId = $(this).attr('id'); + let thisHotswapImgURL = $(this).find('.avatar img').attr('src'); + let thisHotSwapSlot = `#hotswap${count + 1}` + $(thisHotSwapSlot).find('img').attr('src', thisHotswapImgURL); + $(thisHotSwapSlot).css('cursor', 'pointer'); + $(thisHotSwapSlot).on('click', function () { + $("#rm_button_characters").click(); + $(`#${hotswapChId}`).click(); + }); + count = count + 1; + } + }); + console.log('about to check for leftover selectors...') + // there are 6 slots in total, + if (count < 6) { //if any are left over + let leftOverSlots = 6 - count; + for (let i = 1; i <= leftOverSlots; i++) { + let thisLeftOverSlotNumber = 6 - leftOverSlots + i; + //console.log(`Not fav for slot ${thisLeftOverSlotNumber}`); + let thisLeftOverSlot = `#hotswap${thisLeftOverSlotNumber}`; + $(thisLeftOverSlot).off(); + $(thisLeftOverSlot).css('cursor', 'unset'); + $(thisLeftOverSlot).find('img').attr('src', 'img/ai4.png'); //replace with blank ai avatar + } + } else { + //console.log(`count was ${count} so no need to knock off any selectors!`); + } +} + + + //only triggers when AutoLoadChat is enabled, consider adding this as an independent feature later. function RestoreNavTab() { if ($('#rm_button_selected_ch').children("h2").text() !== '') { //check for a change in the character edit tab name @@ -550,6 +590,7 @@ $("document").ready(function () { // initial status check setTimeout(RA_checkOnlineStatus, 100); + //setTimeout(favsToHotswap, 500); // read the state of AutoConnect and AutoLoadChat. $(AutoConnectCheckbox).prop("checked", LoadLocalBool("AutoConnectEnabled")); @@ -568,10 +609,10 @@ $("document").ready(function () { $(RPanelPin).on("click", function () { SaveLocal("NavLockOn", $(RPanelPin).prop("checked")); if ($(RPanelPin).prop("checked") == true) { - console.log('adding pin class to right nav'); + //console.log('adding pin class to right nav'); $(RightNavPanel).addClass('pinnedOpen'); } else { - console.log('removing pin class from right nav'); + //console.log('removing pin class from right nav'); $(RightNavPanel).removeClass('pinnedOpen'); if ($(RightNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) { @@ -584,10 +625,10 @@ $("document").ready(function () { $(LPanelPin).on("click", function () { SaveLocal("LNavLockOn", $(LPanelPin).prop("checked")); if ($(LPanelPin).prop("checked") == true) { - console.log('adding pin class to Left nav'); + //console.log('adding pin class to Left nav'); $(LeftNavPanel).addClass('pinnedOpen'); } else { - console.log('removing pin class from Left nav'); + //console.log('removing pin class from Left nav'); $(LeftNavPanel).removeClass('pinnedOpen'); if ($(LeftNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) { diff --git a/public/style.css b/public/style.css index 551f9f480..2486f68e8 100644 --- a/public/style.css +++ b/public/style.css @@ -558,12 +558,33 @@ code { gap: 5px; } +.hotswap { + top: -5px; +} + +.hotswapAvatar, .avatar { width: 50px; height: 50px; border-style: none; } +.mes .avatar { + cursor: pointer; + +} + +.hotswapAvatar { + opacity: 0.5; + transition: 250ms; +} + +.hotswapAvatar:hover { + opacity: 1; + cursor: pointer; +} + +.hotswapAvatar img, .avatar img { width: 50px; height: 50px;