diff --git a/public/index.html b/public/index.html
index 24f21dedf..8b1e78866 100644
--- a/public/index.html
+++ b/public/index.html
@@ -735,12 +735,12 @@
@@ -867,7 +867,7 @@
3
- Typical P Sampling
+ Typical P
4
@@ -1077,7 +1077,7 @@
- Typical Sampling
+ Typical P
5
diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js
index 05c69e41c..5623371a7 100644
--- a/public/scripts/power-user.js
+++ b/public/scripts/power-user.js
@@ -478,15 +478,12 @@ async function switchLabMode() {
}
async function switchZenSliders() {
-
await delay(100)
const value = localStorage.getItem(storage_keys.enableZenSliders);
power_user.enableZenSliders = value === null ? false : value == "true";
$("body").toggleClass("enableZenSliders", power_user.enableZenSliders);
$("#enableZenSliders").prop("checked", power_user.enableZenSliders);
-
-
if (power_user.enableZenSliders) {
$("#clickSlidersTips").hide()
$("#pro-settings-block input[type='number']").hide();
@@ -541,87 +538,107 @@ async function switchZenSliders() {
sliderValue = steps.indexOf(Number(sliderValue))
if (sliderValue === -1) { sliderValue = 4 } // default to '200' if origSlider has value we can't use
}
- if (sliderID == 'max_context') {
- numSteps = 15
+ //customize decimals
+ if (sliderID == 'max_context' ||
+ sliderID == 'mirostat_mode_textgenerationwebui' ||
+ sliderID == 'mirostat_tau_textgenerationwebui' ||
+ sliderID == 'top_k_textgenerationwebui' ||
+ sliderID == 'num_beams_textgenerationwebui' ||
+ sliderID == 'no_repeat_ngram_size_textgenerationwebui' ||
+ sliderID == 'min_length_textgenerationwebui' ||
+ sliderID == 'top_k' ||
+ sliderID == 'mirostat_mode_kobold' ||
+ sliderID == 'rep_pen_range') {
decimals = 0
}
+ if (sliderID == 'eta_cutoff_textgenerationwebui' ||
+ sliderID == 'epsilon_cutoff_textgenerationwebui') {
+ numSteps = 50
+ decimals = 1
+ }
- if (sliderID == 'rep_pen_range_textgenerationwebui') {
- numSteps = 16
- decimals = 0
+ //customize steps
+ if (sliderID == 'mirostat_mode_textgenerationwebui' ||
+ sliderID == 'mirostat_mode_kobold') {
+ numSteps = 2
}
if (sliderID == 'encoder_rep_pen_textgenerationwebui') {
numSteps = 14
}
- if (sliderID == 'mirostat_mode_textgenerationwebui') {
- numSteps = 2
- decimals = 0
+ if (sliderID == 'max_context') {
+ numSteps = 15
+ }
+ if (sliderID == 'rep_pen_range_textgenerationwebui') {
+ numSteps = 16
}
if (sliderID == 'mirostat_tau_textgenerationwebui' ||
sliderID == 'top_k_textgenerationwebui' ||
sliderID == 'num_beams_textgenerationwebui' ||
- sliderID == 'no_repeat_ngram_size_textgenerationwebui') {
- numSteps = 20
- decimals = 0
- }
- if (sliderID == 'presence_pen_textgenerationwebui' ||
- sliderID == 'freq_pen_textgenerationwebui' ||
- sliderID == 'mirostat_tau_textgenerationwebui' ||
- sliderID == 'min_p_textgenerationwebui' ||
sliderID == 'no_repeat_ngram_size_textgenerationwebui' ||
- sliderID == 'mirostat_eta_textgenerationwebui' ||
- sliderID == 'penalty_alpha_textgenerationwebui' ||
- sliderID == 'length_penalty_textgenerationwebui' ||
sliderID == 'epsilon_cutoff_textgenerationwebui' ||
- sliderID == 'mirostat_mode_textgenerationwebui' ||
- sliderID == 'rep_pen_range_textgenerationwebui' ||
- sliderID == 'eta_cutoff_textgenerationwebui' ||
- sliderID == 'top_a_textgenerationwebui' ||
- sliderID == 'top_k_textgenerationwebui' ||
- sliderID == 'min_length_textgenerationwebui') {
- offVal = 0
- }
-
- if (sliderID == 'rep_pen_textgenerationwebui' ||
sliderID == 'tfs_textgenerationwebui' ||
- sliderID == 'top_p_textgenerationwebui' ||
- sliderID == 'num_beams_textgenerationwebui' ||
- sliderID == 'typical_p_textgenerationwebui' ||
- sliderID == 'encoder_rep_pen_textgenerationwebui' ||
+ sliderID == 'min_p_textgenerationwebui' ||
sliderID == 'temp_textgenerationwebui' ||
- sliderID == 'guidance_scale_textgenerationwebui') {
- offVal = 1
- }
-
- if (sliderID == 'epsilon_cutoff_textgenerationwebui') {
+ sliderID == 'temp') {
numSteps = 20
- decimals = 1
}
- if (sliderID == 'tfs_textgenerationwebui' ||
- sliderID == 'min_p_textgenerationwebui') {
- numSteps = 20
- decimals = 2
- }
-
if (sliderID == 'mirostat_eta_textgenerationwebui' ||
sliderID == 'penalty_alpha_textgenerationwebui' ||
sliderID == 'length_penalty_textgenerationwebui') {
numSteps = 50
}
- if (sliderID == 'eta_cutoff_textgenerationwebui') {
- numSteps = 50
- decimals = 1
+
+ //customize off values
+ if (sliderID == 'presence_pen_textgenerationwebui' ||
+ sliderID == 'freq_pen_textgenerationwebui' ||
+ sliderID == 'mirostat_mode_textgenerationwebui' ||
+ sliderID == 'mirostat_mode_kobold' ||
+ sliderID == 'mirostat_tau_textgenerationwebui' ||
+ sliderID == 'mirostat_tau_kobold' ||
+ sliderID == 'mirostat_eta_textgenerationwebui' ||
+ sliderID == 'mirostat_eta_kobold' ||
+ sliderID == 'min_p_textgenerationwebui' ||
+ sliderID == 'min_p' ||
+ sliderID == 'no_repeat_ngram_size_textgenerationwebui' ||
+ sliderID == 'penalty_alpha_textgenerationwebui' ||
+ sliderID == 'length_penalty_textgenerationwebui' ||
+ sliderID == 'epsilon_cutoff_textgenerationwebui' ||
+ sliderID == 'rep_pen_range_textgenerationwebui' ||
+ sliderID == 'rep_pen_range' ||
+ sliderID == 'eta_cutoff_textgenerationwebui' ||
+ sliderID == 'top_a_textgenerationwebui' ||
+ sliderID == 'top_a' ||
+ sliderID == 'top_k_textgenerationwebui' ||
+ sliderID == 'top_k' ||
+ sliderID == 'rep_pen_slope' ||
+ sliderID == 'min_length_textgenerationwebui') {
+ offVal = 0
}
+
+ if (sliderID == 'rep_pen_textgenerationwebui' ||
+ sliderID == 'rep_pen' ||
+ sliderID == 'tfs_textgenerationwebui' ||
+ sliderID == 'tfs' ||
+ sliderID == 'top_p_textgenerationwebui' ||
+ sliderID == 'top_p' ||
+ sliderID == 'num_beams_textgenerationwebui' ||
+ sliderID == 'typical_p_textgenerationwebui' ||
+ sliderID == 'typical_p' ||
+ sliderID == 'encoder_rep_pen_textgenerationwebui' ||
+ sliderID == 'temp_textgenerationwebui' ||
+ sliderID == 'temp' ||
+ sliderID == 'guidance_scale_textgenerationwebui' ||
+ sliderID == 'guidance_scale') {
+ offVal = 1
+ }
+
+
+
if (sliderID == 'guidance_scale_textgenerationwebui') {
numSteps = 78
}
- if (sliderID == 'min_length_textgenerationwebui') {
- decimals = 0
- }
- if (sliderID == 'temp_textgenerationwebui') {
- numSteps = 20
- }
+ //customize amt gen steps
if (sliderID !== 'amount_gen') {
var stepScale = sliderRange / numSteps
}
@@ -638,18 +655,19 @@ async function switchZenSliders() {
max: sliderMax,
create: function () {
var handle = $(this).find(".ui-slider-handle");
+ //handling creaetion of amt_gen
if (newSlider.attr('id') == 'amount_gen_zenslider') {
- //console.log(sliderValue, steps.indexOf(Number(sliderValue)))
var handleText = steps[sliderValue]
- handle.text(handleText);
- //console.log(handleText)
var stepNumber = sliderValue
var leftMargin = ((stepNumber) / numSteps) * 50 * -1
- //console.log(`initial value:${handleText}, stepNum:${stepNumber}, numSteps:${numSteps}, left-margin:${leftMargin}`)
- handle.css('margin-left', `${leftMargin}px`)
+ handle.text(handleText)
+ .css('margin-left', `${leftMargin}px`)
+ console.log(`initial value:${handleText}, stepNum:${stepNumber}, numSteps:${numSteps}, left-margin:${leftMargin}`)
} else {
+ //handling creation for all other sliders
var numVal = Number(sliderValue).toFixed(decimals)
offVal = Number(offVal).toFixed(decimals)
+ console.log(`${sliderID} ON LOAD OFFVAL ${offVal}`)
if (numVal === offVal) {
handle.text('Off').css('color', 'rgba(128,128,128,0.5');
} else {
@@ -657,44 +675,97 @@ async function switchZenSliders() {
}
var stepNumber = ((sliderValue - sliderMin) / stepScale)
var leftMargin = (stepNumber / numSteps) * 50 * -1
+ var isManualInput = false
+ var valueBeforeManualInput
handle.css('margin-left', `${leftMargin}px`)
+ .attr('contenteditable', 'true')
+ .on('click', function () {
+ //this just selects all the text in the handle so user can overwrite easily
+ //needed because JQUery UI uses left/right arrow keys as well as home/end to move the slider..
+ valueBeforeManualInput = newSlider.val()
+ console.log(valueBeforeManualInput)
+ let handleElement = handle.get(0);
+ let range = document.createRange();
+ range.selectNodeContents(handleElement);
+ let selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ })
+ .on('keyup', function () {
+ valueBeforeManualInput = newSlider.val()
+ console.log(valueBeforeManualInput)
+ isManualInput = true
+ })
+ //trigger slider changes when user clicks away
+ .on('mouseup blur', function () {
+ let manualInput = parseFloat(handle.text()).toFixed(decimals)
+ if (isManualInput) {
+ //disallow manual inputs outside acceptable range
+ if (manualInput >= sliderMin && manualInput <= sliderMax) {
+ //if value is ok, assign to slider and update handle text and position
+ newSlider.val(manualInput)
+ handleSlideEvent.call(newSlider, null, { value: parseFloat(manualInput) }, 'manual');
+ valueBeforeManualInput = manualInput
+ } else {
+ //if value not ok, warn and reset to last known valid value
+ toastr.warning(`Invalid value. Must be between ${sliderMin} and ${sliderMax}`)
+ console.log(valueBeforeManualInput)
+ newSlider.val(valueBeforeManualInput)
+ handle.text(valueBeforeManualInput)
+ }
+ }
+ isManualInput = false
+ })
console.debug(sliderID, sliderValue, handleText, stepNumber, stepScale)
}
},
- slide: function (event, ui) {
- var handle = $(this).find(".ui-slider-handle");
- var numVal = Number(ui.value).toFixed(decimals)
- offVal = Number(offVal).toFixed(decimals)
- if (newSlider.attr('id') == 'amount_gen_zenslider') {
- //console.log(`stepScale${stepScale}, UIvalue:${ui.value}, mappedValue:${steps[ui.value]}`)
- $(this).val(steps[ui.value])
- let handleText = steps[ui.value].toFixed(decimals)
- handle.text(handleText);
- var stepNumber = steps.indexOf(Number(handleText))
- var leftMargin = (stepNumber / numSteps) * 50 * -1
- //console.log(`handleText:${handleText},stepNum:${stepNumber}, numSteps:${numSteps},LeftMargin:${leftMargin}`)
- handle.css('margin-left', `${leftMargin}px`)
- originalSlider.val(handleText);
- originalSlider.trigger('input')
- originalSlider.trigger('change')
- } else {
- if (numVal === offVal) {
- handle.text('Off').css('color', 'rgba(128,128,128,0.5')
- } else {
- handle.text(ui.value.toFixed(decimals)).css('color', '')
- }
- var stepNumber = ((ui.value - sliderMin) / stepScale)
- var leftMargin = (stepNumber / numSteps) * 50 * -1
- handle.css('margin-left', `${leftMargin}px`)
- let handleText = (ui.value)
- originalSlider.val(handleText);
- originalSlider.trigger('input')
- originalSlider.trigger('change')
- }
-
- }
-
+ slide: handleSlideEvent
});
+
+ function handleSlideEvent(event, ui, type) {
+ var handle = $(this).find(".ui-slider-handle");
+ var numVal = Number(ui.value).toFixed(decimals);
+ offVal = Number(offVal).toFixed(decimals);
+ var stepNumber = ((ui.value - sliderMin) / stepScale);
+ 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(`
+ numVal: ${numVal},
+ offVal: ${offVal},
+ initial value: ${handleText},
+ stepNum: ${stepNumber},
+ numSteps: ${numSteps},
+ left-margin: ${leftMargin},
+ width: ${newSlider.width()}
+ percent of max: ${percentOfMax}
+ left: ${leftPos}`)
+
+ //special handling for response length slider, pulls text aliases for step values from an array
+ if (newSlider.attr('id') == 'amount_gen_zenslider') {
+ handleText = steps[stepNumber]
+ handle.text(handleText);
+ newSlider.val(stepNumber)
+ }
+ //everything else uses the flat slider value
+ else {
+ //show 'off' if disabled value is set
+ if (numVal === offVal) { handle.text('Off').css('color', 'rgba(128,128,128,0.5'); }
+ else { handle.text(ui.value.toFixed(decimals)).css('color', ''); }
+ newSlider.val(handleText)
+ }
+ //for manually typed-in values we must adjust left position because JQUI doesn't do it for us
+ if (type === 'manual') { handle.css('left', leftPos) }
+ //adjust a negative left margin to avoid overflowing right side of slider body
+ handle.css('margin-left', `${leftMargin}px`);
+
+ originalSlider.val(handleText);
+ originalSlider.trigger('input');
+ originalSlider.trigger('change');
+ }
originalSlider.data("newSlider", newSlider);
await delay(1)
originalSlider.hide();
@@ -702,7 +773,6 @@ async function switchZenSliders() {
}
-
function switchUiMode() {
const fastUi = localStorage.getItem(storage_keys.fast_ui_mode);
power_user.fast_ui_mode = fastUi === null ? true : fastUi == "true";