diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js index 9698a7080..0ca4c6878 100644 --- a/public/scripts/RossAscends-mods.js +++ b/public/scripts/RossAscends-mods.js @@ -8,7 +8,7 @@ import { online_status, main_api, api_server, - api_key_novel, + nai_settings, is_send_press, } from "../script.js"; @@ -204,7 +204,7 @@ function RA_checkOnlineStatus() { function RA_autoconnect() { console.log(main_api); - if (typeof online_status !== 'undefined' && (api_server !== '' || api_key_novel !== '')) { + if (typeof online_status !== 'undefined' && (api_server !== '' || nai_settings.api_key_novel !== '')) { if (online_status === "no_connection" && LoadLocalBool('AutoConnectEnabled')) { if (isUrlOrAPIKey(api_server) && main_api === "kobold") { $("#api_button").click(); diff --git a/public/scripts/nai-settings.js b/public/scripts/nai-settings.js new file mode 100644 index 000000000..ef9f1c2ea --- /dev/null +++ b/public/scripts/nai-settings.js @@ -0,0 +1,108 @@ +import { + saveSettingsDebounced, +} from "../script.js"; + +export { + nai_settings, + loadNovelPreset, + loadNovelSettings, + getNovelTier, +}; + +const nai_settings = { + temp_novel: 0.5, + rep_pen_novel: 1, + rep_pen_size_novel: 100, + model_novel: "euterpe-v2", + api_key_novel: "", + preset_settings_novel: "Classic-Euterpe", +}; + +const nai_tiers = { + 0: 'Paper', + 1: 'Tablet', + 2: 'Scroll', + 3: 'Opus', +}; + +function getNovelTier(tier) { + return nai_tiers[tier] ?? 'no_connection'; +} + +function loadNovelPreset(preset) { + nai_settings.temp_novel = preset.temperature; + nai_settings.rep_pen_novel = preset.repetition_penalty; + nai_settings.rep_pen_size_novel = preset.repetition_penalty_range; + $("#temp_novel").val(nai_settings.temp_novel); + $("#temp_counter_novel").html(nai_settings.temp_novel); + + $("#rep_pen_novel").val(nai_settings.rep_pen_novel); + $("#rep_pen_counter_novel").html(nai_settings.rep_pen_novel); + + $("#rep_pen_size_novel").val(nai_settings.rep_pen_size_novel); + $("#rep_pen_size_counter_novel").html(`${nai_settings.rep_pen_size_novel} Tokens`); +} + +function loadNovelSettings(settings){ + //load Novel API KEY is exists + if (settings.api_key_novel != undefined) { + nai_settings.api_key_novel = settings.api_key_novel; + $("#api_key_novel").val(nai_settings.api_key_novel); + } + + //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); + + nai_settings.temp_novel = settings.temp_novel; + nai_settings.rep_pen_novel = settings.rep_pen_novel; + nai_settings.rep_pen_size_novel = settings.rep_pen_size_novel; + + $("#temp_novel").val(nai_settings.temp_novel); + $("#temp_counter_novel").text(Number(nai_settings.temp_novel).toFixed(2)); + + $("#rep_pen_novel").val(nai_settings.rep_pen_novel); + $("#rep_pen_counter_novel").text(Number(nai_settings.rep_pen_novel).toFixed(2)); + + $("#rep_pen_size_novel").val(nai_settings.rep_pen_size_novel); + $("#rep_pen_size_counter_novel").text(`${nai_settings.rep_pen_size_novel} Tokens`); +} + +const sliders = [ + { + sliderId: "#temp_novel", + counterId: "#temp_counter_novel", + format: (val) => Number(val).toFixed(2), + setValue: (val) => { nai_settings.temp_novel = Number(val); }, + }, + { + sliderId: "#rep_pen_novel", + counterId: "#rep_pen_counter_novel", + format: (val) => Number(val).toFixed(2), + setValue: (val) => { nai_settings.rep_pen_novel = Number(val); }, + }, + { + sliderId: "#rep_pen_size_novel", + counterId: "#rep_pen_size_counter_novel", + format: (val) => `${val} Tokens`, + setValue: (val) => { nai_settings.rep_pen_size_novel = Number(val); }, + }, +]; + +$(document).ready(function () { + sliders.forEach(slider => { + $(document).on("input", slider.sliderId, function () { + const value = $(this).val(); + const formattedValue = slider.format(value); + slider.setValue(value); + $(slider.counterId).html(formattedValue); + console.log('saving'); + saveSettingsDebounced(); + }); + }); + + $("#model_novel_select").change(function () { + nai_settings.model_novel = $("#model_novel_select").find(":selected").val(); + saveSettingsDebounced(); + }); +}); \ No newline at end of file