";
let previewAudio = null;
let ASSETS_JSON_URL = "https://raw.githubusercontent.com/SillyTavern/SillyTavern-Content/main/index.json"
-const extensionName = "assets";
-const extensionFolderPath = `scripts/extensions/${extensionName}`;
// DBG
//if (DEBUG_TONY_SAMA_FORK_MODE)
@@ -26,9 +24,6 @@ let currentAssets = {};
// Extension UI and Settings //
//#############################//
-const defaultSettings = {
-}
-
function downloadAssetsList(url) {
updateCurrentAssets().then(function () {
fetch(url, { cache: "no-cache" })
diff --git a/public/scripts/extensions/expressions/index.js b/public/scripts/extensions/expressions/index.js
index bd739e7df..d478b33f5 100644
--- a/public/scripts/extensions/expressions/index.js
+++ b/public/scripts/extensions/expressions/index.js
@@ -1,4 +1,4 @@
-import { callPopup, eventSource, event_types, getRequestHeaders, saveSettingsDebounced, this_chid } from "../../../script.js";
+import { callPopup, eventSource, event_types, getRequestHeaders, saveSettingsDebounced } from "../../../script.js";
import { dragElement, isMobile } from "../../RossAscends-mods.js";
import { getContext, getApiUrl, modules, extension_settings, ModuleWorkerWrapper, doExtrasFetch, renderExtensionTemplate } from "../../extensions.js";
import { loadMovingUIState, power_user } from "../../power-user.js";
@@ -393,7 +393,6 @@ async function unloadLiveChar() {
if (!loadResponse.ok) {
throw new Error(loadResponse.statusText);
}
- const loadResponseText = await loadResponse.text();
//console.log(`Response: ${loadResponseText}`);
} catch (error) {
//console.error(`Error unloading - ${error}`);
diff --git a/public/scripts/extensions/quick-reply/index.js b/public/scripts/extensions/quick-reply/index.js
index 9072ea46d..9fb733fa7 100644
--- a/public/scripts/extensions/quick-reply/index.js
+++ b/public/scripts/extensions/quick-reply/index.js
@@ -623,7 +623,6 @@ function generateQuickReplyElements() {
let quickReplyHtml = '';
for (let i = 1; i <= extension_settings.quickReply.numberOfSlots; i++) {
- let itemNumber = i + 1
quickReplyHtml += `
☰
diff --git a/public/scripts/extensions/quick-reply/src/ContextMenu.js b/public/scripts/extensions/quick-reply/src/ContextMenu.js
index 93360157a..ad26b6bd7 100644
--- a/public/scripts/extensions/quick-reply/src/ContextMenu.js
+++ b/public/scripts/extensions/quick-reply/src/ContextMenu.js
@@ -1,4 +1,6 @@
-import { MenuItem } from "./MenuItem.js";
+/**
+ * @typedef {import('./MenuItem.js').MenuItem} MenuItem
+ */
export class ContextMenu {
/**@type {MenuItem[]}*/ itemList = [];
diff --git a/public/scripts/extensions/quick-reply/src/SubMenu.js b/public/scripts/extensions/quick-reply/src/SubMenu.js
index bc5e293ce..a018c60af 100644
--- a/public/scripts/extensions/quick-reply/src/SubMenu.js
+++ b/public/scripts/extensions/quick-reply/src/SubMenu.js
@@ -1,4 +1,6 @@
-import { MenuItem } from "./MenuItem.js";
+/**
+ * @typedef {import('./MenuItem.js').MenuItem} MenuItem
+ */
export class SubMenu {
/**@type {MenuItem[]}*/ itemList = [];
diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js
index 020fc575d..6a75a4bcb 100644
--- a/public/scripts/extensions/stable-diffusion/index.js
+++ b/public/scripts/extensions/stable-diffusion/index.js
@@ -2362,7 +2362,6 @@ async function sdMessageButton(e) {
const $mes = $icon.closest('.mes');
const message_id = $mes.attr('mesid');
const message = context.chat[message_id];
- const characterName = message?.name || context.name2;
const characterFileName = context.characterId ? context.characters[context.characterId].name : context.groups[Object.keys(context.groups).filter(x => context.groups[x].id === context.groupId)[0]]?.id?.toString();
const messageText = message?.mes;
const hasSavedImage = message?.extra?.image && message?.extra?.title;
diff --git a/public/scripts/extensions/token-counter/index.js b/public/scripts/extensions/token-counter/index.js
index ed471b2c5..0fd14ea09 100644
--- a/public/scripts/extensions/token-counter/index.js
+++ b/public/scripts/extensions/token-counter/index.js
@@ -71,16 +71,6 @@ async function doTokenCounter() {
* @param {number[]} ids
*/
function drawChunks(chunks, ids) {
- const main_text_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBodyColor').trim()))
- const italics_text_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeEmColor').trim()))
- const quote_text_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeQuoteColor').trim()))
- const blur_tint_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBlurTintColor').trim()))
- const chat_tint_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeChatTintColor').trim()))
- const user_mes_blur_tint_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeUserMesBlurTintColor').trim()))
- const bot_mes_blur_tint_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBotMesBlurTintColor').trim()))
- const shadow_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeShadowColor').trim()))
- const border_color = rgb2hex((getComputedStyle(document.documentElement).getPropertyValue('--SmartThemeBorderColor').trim()))
-
const pastelRainbow = [
//main_text_color,
//italics_text_color,
diff --git a/public/scripts/extensions/tts/coqui.js b/public/scripts/extensions/tts/coqui.js
index c287da7ca..af3654340 100644
--- a/public/scripts/extensions/tts/coqui.js
+++ b/public/scripts/extensions/tts/coqui.js
@@ -4,17 +4,15 @@ TODO:
- Delete useless call
*/
-import { doExtrasFetch, extension_settings, getApiUrl, getContext, modules, ModuleWorkerWrapper } from "../../extensions.js"
+import { doExtrasFetch, extension_settings, getApiUrl, modules } from "../../extensions.js"
import { callPopup } from "../../../script.js"
import { initVoiceMap } from "./index.js"
export { CoquiTtsProvider }
const DEBUG_PREFIX = " ";
-const UPDATE_INTERVAL = 1000;
let inApiCall = false;
-let voiceIdList = []; // Updated with module worker
let coquiApiModels = {}; // Initialized only once
let coquiApiModelsFull = {}; // Initialized only once
let coquiLocalModels = []; // Initialized only once
@@ -495,7 +493,7 @@ class CoquiTtsProvider {
.append('')
.val('none');
- for (var i = 0; i < model_settings["languages"].length; i++) {
+ for (let i = 0; i < model_settings["languages"].length; i++) {
const language_label = JSON.stringify(model_settings["languages"][i]).replaceAll("\"", "");
$("#coqui_api_model_settings_language").append(new Option(language_label, i));
}
@@ -514,7 +512,7 @@ class CoquiTtsProvider {
.append('')
.val('none');
- for (var i = 0; i < model_settings["speakers"].length; i++) {
+ for (let i = 0; i < model_settings["speakers"].length; i++) {
const speaker_label = JSON.stringify(model_settings["speakers"][i]).replaceAll("\"", "");
$("#coqui_api_model_settings_speaker").append(new Option(speaker_label, i));
}
diff --git a/public/scripts/extensions/tts/index.js b/public/scripts/extensions/tts/index.js
index 70b5582b8..3b89d38f1 100644
--- a/public/scripts/extensions/tts/index.js
+++ b/public/scripts/extensions/tts/index.js
@@ -17,10 +17,7 @@ const UPDATE_INTERVAL = 1000
let voiceMapEntries = []
let voiceMap = {} // {charName:voiceid, charName2:voiceid2}
-let audioControl
let storedvalue = false;
-let lastCharacterId = null
-let lastGroupId = null
let lastChatId = null
let lastMessageHash = null
@@ -314,8 +311,6 @@ let currentAudioJob
let audioPaused = false
let audioQueueProcessorReady = true
-let lastAudioPosition = 0
-
async function playAudioData(audioBlob) {
// Since current audio job can be cancelled, don't playback if it is null
if (currentAudioJob == null) {
@@ -407,14 +402,12 @@ function addAudioControl() {
TTS Playback
`)
$('#ttsExtensionMenuItem').attr('title', 'TTS play/pause').on('click', onAudioControlClicked)
- audioControl = document.getElementById('tts_media_control')
updateUiAudioPlayState()
}
function completeCurrentAudioJob() {
audioQueueProcessorReady = true
currentAudioJob = null
- lastAudioPosition = 0
talkingAnimation(false) //stop lip animation
// updateUiPlayState();
}
@@ -463,8 +456,6 @@ function completeTtsJob() {
function saveLastValues() {
const context = getContext()
- lastGroupId = context.groupId
- lastCharacterId = context.characterId
lastChatId = context.chatId
lastMessageHash = getStringHash(
(context.chat.length && context.chat[context.chat.length - 1].mes) ?? ''
diff --git a/public/scripts/extensions/tts/system.js b/public/scripts/extensions/tts/system.js
index 9c1af3b7e..9346a0f06 100644
--- a/public/scripts/extensions/tts/system.js
+++ b/public/scripts/extensions/tts/system.js
@@ -191,7 +191,7 @@ class SystemTtsProvider {
const voice = speechSynthesis.getVoices().find(x => x.voiceURI === voiceId);
if (!voice) {
- throw `TTS Voice name ${voiceName} not found`
+ throw `TTS Voice id ${voiceId} not found`
}
speechSynthesis.cancel();
diff --git a/public/scripts/extensions/tts/xtts.js b/public/scripts/extensions/tts/xtts.js
index 0efdac10f..385693b9b 100644
--- a/public/scripts/extensions/tts/xtts.js
+++ b/public/scripts/extensions/tts/xtts.js
@@ -133,8 +133,7 @@ class XTTSTtsProvider {
// Perform a simple readiness check by trying to fetch voiceIds
async checkReady() {
-
- const response = await this.fetchTtsVoiceObjects()
+ await this.fetchTtsVoiceObjects()
}
async onRefreshClick() {
diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js
index e10fc3899..f9bf19da1 100644
--- a/public/scripts/group-chats.js
+++ b/public/scripts/group-chats.js
@@ -70,7 +70,7 @@ import {
depth_prompt_depth_default,
loadItemizedPrompts,
} from "../script.js";
-import { appendTagToList, createTagMapFromList, getTagsList, applyTagsOnCharacterSelect, tag_map, printTagFilters } from './tags.js';
+import { appendTagToList, createTagMapFromList, getTagsList, applyTagsOnCharacterSelect, tag_map } from './tags.js';
import { FILTER_TYPES, FilterHelper } from './filters.js';
export {
@@ -112,7 +112,7 @@ export const group_generation_mode = {
}
export const groupCandidatesFilter = new FilterHelper(debounce(printGroupCandidates, 100));
-const groupAutoModeInterval = setInterval(groupChatAutoModeWorker, 5000);
+setInterval(groupChatAutoModeWorker, 5000);
const saveGroupDebounced = debounce(async (group, reload) => await _save(group, reload), 500);
async function _save(group, reload = true) {
diff --git a/public/scripts/openai.js b/public/scripts/openai.js
index d3de0660d..a8253fbb5 100644
--- a/public/scripts/openai.js
+++ b/public/scripts/openai.js
@@ -79,7 +79,6 @@ export {
}
let openai_messages_count = 0;
-let openai_narrator_messages_count = 0;
const default_main_prompt = "Write {{char}}'s next reply in a fictional chat between {{charIfNotGroup}} and {{user}}. Write 1 reply only in internet RP style, italicize actions, and avoid quotation marks. Use markdown. Be proactive, creative, and drive the plot and conversation forward. Write at least 1 paragraph, up to 4. Always stay in character and avoid repetition.";
const default_nsfw_prompt = "NSFW/Smut is allowed. Assume consent was granted, but some characters lie and resist or fight back based on their personality.";
@@ -406,7 +405,6 @@ function setOpenAIMessages(chat) {
let j = 0;
// clean openai msgs
const messages = [];
- openai_narrator_messages_count = 0;
for (let i = chat.length - 1; i >= 0; i--) {
let role = chat[j]['is_user'] ? 'user' : 'assistant';
let content = chat[j]['mes'];
@@ -414,7 +412,6 @@ function setOpenAIMessages(chat) {
// 100% legal way to send a message as system
if (chat[j].extra?.type === system_message_types.NARRATOR) {
role = 'system';
- openai_narrator_messages_count++;
}
// for groups or sendas command - prepend a character's name
diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js
index 1c896786f..f7f467f39 100644
--- a/public/scripts/power-user.js
+++ b/public/scripts/power-user.js
@@ -3,7 +3,6 @@ import {
scrollChatToBottom,
characters,
callPopup,
- getStatus,
reloadMarkdownProcessor,
reloadCurrentChat,
getRequestHeaders,
@@ -416,7 +415,6 @@ function switchTokenCount() {
function switchMesIDDisplay() {
const value = localStorage.getItem(storage_keys.mesIDDisplay_enabled);
- let before = power_user.mesIDDisplay_enabled;
power_user.mesIDDisplay_enabled = value === null ? true : value == "true";
/* console.log(`
localstorage value:${value},
@@ -536,9 +534,10 @@ async function CreateZenSliders(elmnt) {
var decimals = 2
var offVal, allVal
var stepScale
+ var steps
if (sliderID == 'amount_gen') {
decimals = 0
- var steps = [16, 50, 100, 150, 200, 256, 300, 400, 512, 1024];
+ steps = [16, 50, 100, 150, 200, 256, 300, 400, 512, 1024];
sliderMin = 0
sliderMax = steps.length - 1
stepScale = 1;
@@ -548,11 +547,11 @@ async function CreateZenSliders(elmnt) {
}
if (sliderID == 'rep_pen_range_textgenerationwebui') {
if (power_user.max_context_unlocked) {
- var steps = [0, 256, 512, 768, 1024, 2048, 4096, 8192, 16355, 24576, 32768, 49152, 65536, -1];
+ steps = [0, 256, 512, 768, 1024, 2048, 4096, 8192, 16355, 24576, 32768, 49152, 65536, -1];
numSteps = 13
allVal = 13
} else {
- var steps = [0, 256, 512, 768, 1024, 2048, 4096, 8192, -1];
+ steps = [0, 256, 512, 768, 1024, 2048, 4096, 8192, -1];
numSteps = 8
allVal = 8
}
@@ -667,13 +666,14 @@ async function CreateZenSliders(elmnt) {
max: sliderMax,
create: function () {
var handle = $(this).find(".ui-slider-handle");
+ var handleText, stepNumber, leftMargin;
//handling creation of amt_gen
if (newSlider.attr('id') == 'amount_gen_zenslider') {
//console.log(`using custom process for ${newSlider.attr('id')}`)
- var handleText = steps[sliderValue]
- var stepNumber = sliderValue
- var leftMargin = ((stepNumber) / numSteps) * 50 * -1
+ handleText = steps[sliderValue]
+ stepNumber = sliderValue
+ leftMargin = ((stepNumber) / numSteps) * 50 * -1
handle.text(handleText)
.css('margin-left', `${leftMargin}px`)
//console.log(`${newSlider.attr('id')} initial value:${handleText}, stepNum:${stepNumber}, numSteps:${numSteps}, left-margin:${leftMargin}`)
@@ -683,9 +683,9 @@ async function CreateZenSliders(elmnt) {
if ($('#rep_pen_range_textgenerationwebui_zensliders').length !== 0) {
$('#rep_pen_range_textgenerationwebui_zensliders').remove()
}
- var handleText = steps[sliderValue]
- var stepNumber = sliderValue
- var leftMargin = ((stepNumber) / numSteps) * 50 * -1
+ handleText = steps[sliderValue]
+ stepNumber = sliderValue
+ leftMargin = ((stepNumber) / numSteps) * 50 * -1
if (sliderValue === offVal) {
handleText = 'Off'
@@ -710,8 +710,8 @@ async function CreateZenSliders(elmnt) {
} else {
handle.text(numVal).css('color', '');
}
- var stepNumber = ((sliderValue - sliderMin) / stepScale)
- var leftMargin = (stepNumber / numSteps) * 50 * -1
+ stepNumber = ((sliderValue - sliderMin) / stepScale)
+ leftMargin = (stepNumber / numSteps) * 50 * -1
var isManualInput = false
var valueBeforeManualInput
handle.css('margin-left', `${leftMargin}px`)
@@ -777,11 +777,9 @@ async function CreateZenSliders(elmnt) {
//console.log('clamping numVal to sliderMin')
numVal = sliderMin
}
- var sliderValRange = sliderMax - sliderMin
var stepNumber = ((ui.value - sliderMin) / stepScale).toFixed(0);
var handleText = (ui.value);
var leftMargin = (stepNumber / numSteps) * 50 * -1;
- var percentOfMax = Number((ui.value / sliderMax)) //what % our value is of the max
var perStepPercent = 1 / numSteps //how far in % each step should be on the slider
var leftPos = newSlider.width() * (stepNumber * perStepPercent) //how big of a left margin to give the slider for manual inputs
/* console.log(`
@@ -2294,27 +2292,6 @@ function setAvgBG() {
return [r * 255, g * 255, b * 255];
}
- function rgbToLuminance(r, g, b) {
- console.log(r, g, b)
- const gammaCorrect = (color) => {
- return color <= 0.03928
- ? color / 12.92
- : Math.pow((color + 0.055) / 1.055, 2.4);
- };
-
- const rsRGB = r / 255;
- const gsRGB = g / 255;
- const bsRGB = b / 255;
-
- const rLuminance = gammaCorrect(rsRGB).toFixed(2);
- const gLuminance = gammaCorrect(gsRGB).toFixed(2);
- const bLuminance = gammaCorrect(bsRGB).toFixed(2);
-
- console.log(`rLum ${rLuminance}, gLum ${gLuminance}, bLum ${bLuminance}`)
-
- return 0.2126 * Number(rLuminance) + 0.7152 * Number(gLuminance) + 0.0722 * Number(bLuminance);
- }
-
//this version keeps BG and main text in same hue
/* function getReadableTextColor(rgb) {
const [r, g, b] = rgb;
diff --git a/public/scripts/preset-manager.js b/public/scripts/preset-manager.js
index f2320b149..efff1dfd7 100644
--- a/public/scripts/preset-manager.js
+++ b/public/scripts/preset-manager.js
@@ -284,7 +284,7 @@ class PresetManager {
}
async deleteCurrentPreset() {
- const { presets, preset_names } = this.getPresetList();
+ const { preset_names } = this.getPresetList();
const value = this.getSelectedPreset();
const nameToDelete = this.getSelectedPresetName();
diff --git a/public/scripts/tags.js b/public/scripts/tags.js
index aebc2204d..866963c32 100644
--- a/public/scripts/tags.js
+++ b/public/scripts/tags.js
@@ -8,7 +8,7 @@ import {
entitiesFilter,
printCharacters,
} from "../script.js";
-import { FILTER_TYPES, FilterHelper } from "./filters.js";
+import { FILTER_TYPES } from "./filters.js";
import { groupCandidatesFilter, groups, selected_group } from "./group-chats.js";
import { download, onlyUnique, parseJsonFile, uuidv4 } from "./utils.js";
diff --git a/public/scripts/world-info.js b/public/scripts/world-info.js
index 1330593bd..9130e34fb 100644
--- a/public/scripts/world-info.js
+++ b/public/scripts/world-info.js
@@ -1,4 +1,4 @@
-import { saveSettings, callPopup, substituteParams, getRequestHeaders, chat_metadata, this_chid, characters, saveCharacterDebounced, menu_type, eventSource, event_types, getExtensionPrompt, MAX_INJECTION_DEPTH, extension_prompt_types, getExtensionPromptByName, saveMetadata, getCurrentChatId } from "../script.js";
+import { saveSettings, callPopup, substituteParams, getRequestHeaders, chat_metadata, this_chid, characters, saveCharacterDebounced, menu_type, eventSource, event_types, getExtensionPromptByName, saveMetadata, getCurrentChatId } from "../script.js";
import { download, debounce, initScrollHeight, resetScrollHeight, parseJsonFile, extractDataFromPng, getFileBuffer, getCharaFilename, getSortableDelay, escapeRegex, PAGINATION_TEMPLATE, navigation_option, waitUntilCondition, isTrueBoolean } from "./utils.js";
import { extension_settings, getContext } from "./extensions.js";
import { NOTE_MODULE_NAME, metadata_keys, shouldWIAddPrompt } from "./authors-note.js";
@@ -1395,7 +1395,7 @@ function createWorldInfoEntry(name, data, fromSlashCommand = false) {
}
async function _save(name, data) {
- const response = await fetch("/editworldinfo", {
+ await fetch("/editworldinfo", {
method: "POST",
headers: getRequestHeaders(),
body: JSON.stringify({ name: name, data: data }),
diff --git a/server.js b/server.js
index 4df345396..8a9fc7a82 100644
--- a/server.js
+++ b/server.js
@@ -1681,10 +1681,6 @@ function readAndParseFromDirectory(directoryPath, fileExtension = '.json') {
return parsedFiles;
}
-function sortByModifiedDate(directory) {
- return (a, b) => +(new Date(fs.statSync(`${directory}/${b}`).mtime)) - +(new Date(fs.statSync(`${directory}/${a}`).mtime));
-}
-
function sortByName(_) {
return (a, b) => a.localeCompare(b);
}
diff --git a/src/extensions.js b/src/extensions.js
index 54a049d0b..bd53bd86c 100644
--- a/src/extensions.js
+++ b/src/extensions.js
@@ -2,7 +2,6 @@ const path = require('path');
const fs = require('fs');
const { default: simpleGit } = require('simple-git');
const sanitize = require('sanitize-filename');
-const commandExistsSync = require('command-exists').sync;
const { DIRECTORIES } = require('./constants');
/**
diff --git a/src/novelai.js b/src/novelai.js
index 192954391..29c8b8b7d 100644
--- a/src/novelai.js
+++ b/src/novelai.js
@@ -45,11 +45,6 @@ const logitBiasExp = [
{ "sequence": [21], "bias": -0.08, "ensure_sequence_finish": false, "generate_once": false }
]
-const hypeBotLogitBiasExp = [
- { "sequence": [8162], "bias": -0.12, "ensure_sequence_finish": false, "generate_once": false },
- { "sequence": [46256, 224], "bias": -0.12, "ensure_sequence_finish": false, "generate_once": false }
-];
-
function getBadWordsList(model) {
let list = []
diff --git a/src/vectors.js b/src/vectors.js
index b4a779774..a21e246e8 100644
--- a/src/vectors.js
+++ b/src/vectors.js
@@ -1,4 +1,3 @@
-const express = require('express');
const vectra = require('vectra');
const path = require('path');
const sanitize = require('sanitize-filename');