mirror of
https://github.com/LostRuins/koboldcpp.git
synced 2025-09-10 17:14:36 +00:00
Merge branch 'upstream' into concedo_experimental
# Conflicts: # .github/workflows/docker.yml # Makefile # examples/CMakeLists.txt # ggml/CMakeLists.txt # ggml/src/CMakeLists.txt # ggml/src/ggml-sycl/common.hpp # ggml/src/ggml-sycl/convert.cpp # ggml/src/ggml-sycl/convert.hpp # ggml/src/ggml-sycl/ggml-sycl.cpp # scripts/sync-ggml.last
This commit is contained in:
commit
b6220669f4
14 changed files with 410 additions and 117 deletions
|
@ -1284,7 +1284,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
[](common_params & params) {
|
[](common_params & params) {
|
||||||
params.use_color = true;
|
params.use_color = true;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_INFILL, LLAMA_EXAMPLE_SPECULATIVE, LLAMA_EXAMPLE_LOOKUP}));
|
).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_SPECULATIVE, LLAMA_EXAMPLE_LOOKUP}));
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"-t", "--threads"}, "N",
|
{"-t", "--threads"}, "N",
|
||||||
string_format("number of threads to use during generation (default: %d)", params.cpuparams.n_threads),
|
string_format("number of threads to use during generation (default: %d)", params.cpuparams.n_threads),
|
||||||
|
@ -1417,7 +1417,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"-n", "--predict", "--n-predict"}, "N",
|
{"-n", "--predict", "--n-predict"}, "N",
|
||||||
string_format(
|
string_format(
|
||||||
ex == LLAMA_EXAMPLE_MAIN || ex == LLAMA_EXAMPLE_INFILL
|
ex == LLAMA_EXAMPLE_MAIN
|
||||||
? "number of tokens to predict (default: %d, -1 = infinity, -2 = until context filled)"
|
? "number of tokens to predict (default: %d, -1 = infinity, -2 = until context filled)"
|
||||||
: "number of tokens to predict (default: %d, -1 = infinity)",
|
: "number of tokens to predict (default: %d, -1 = infinity)",
|
||||||
params.n_predict),
|
params.n_predict),
|
||||||
|
@ -1656,7 +1656,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
params.input_prefix = value;
|
params.input_prefix = value;
|
||||||
params.enable_chat_template = false;
|
params.enable_chat_template = false;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_INFILL}));
|
).set_examples({LLAMA_EXAMPLE_MAIN}));
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"--in-suffix"}, "STRING",
|
{"--in-suffix"}, "STRING",
|
||||||
"string to suffix after user inputs with (default: empty)",
|
"string to suffix after user inputs with (default: empty)",
|
||||||
|
@ -1664,7 +1664,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
params.input_suffix = value;
|
params.input_suffix = value;
|
||||||
params.enable_chat_template = false;
|
params.enable_chat_template = false;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_INFILL}));
|
).set_examples({LLAMA_EXAMPLE_MAIN}));
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"--no-warmup"},
|
{"--no-warmup"},
|
||||||
"skip warming up the model with an empty run",
|
"skip warming up the model with an empty run",
|
||||||
|
@ -1681,7 +1681,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
[](common_params & params) {
|
[](common_params & params) {
|
||||||
params.spm_infill = true;
|
params.spm_infill = true;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_SERVER, LLAMA_EXAMPLE_INFILL}));
|
).set_examples({LLAMA_EXAMPLE_SERVER}));
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"--samplers"}, "SAMPLERS",
|
{"--samplers"}, "SAMPLERS",
|
||||||
string_format("samplers that will be used for generation in the order, separated by \';\'\n(default: %s)", sampler_type_names.c_str()),
|
string_format("samplers that will be used for generation in the order, separated by \';\'\n(default: %s)", sampler_type_names.c_str()),
|
||||||
|
@ -2893,7 +2893,7 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
|
||||||
[](common_params & params) {
|
[](common_params & params) {
|
||||||
params.simple_io = true;
|
params.simple_io = true;
|
||||||
}
|
}
|
||||||
).set_examples({LLAMA_EXAMPLE_MAIN, LLAMA_EXAMPLE_INFILL}));
|
).set_examples({LLAMA_EXAMPLE_MAIN}));
|
||||||
add_opt(common_arg(
|
add_opt(common_arg(
|
||||||
{"--positive-file"}, "FNAME",
|
{"--positive-file"}, "FNAME",
|
||||||
string_format("positive prompts file, one prompt per line (default: '%s')", params.cvector_positive_file.c_str()),
|
string_format("positive prompts file, one prompt per line (default: '%s')", params.cvector_positive_file.c_str()),
|
||||||
|
|
|
@ -62,7 +62,6 @@ enum llama_example {
|
||||||
LLAMA_EXAMPLE_COMMON,
|
LLAMA_EXAMPLE_COMMON,
|
||||||
LLAMA_EXAMPLE_SPECULATIVE,
|
LLAMA_EXAMPLE_SPECULATIVE,
|
||||||
LLAMA_EXAMPLE_MAIN,
|
LLAMA_EXAMPLE_MAIN,
|
||||||
LLAMA_EXAMPLE_INFILL,
|
|
||||||
LLAMA_EXAMPLE_EMBEDDING,
|
LLAMA_EXAMPLE_EMBEDDING,
|
||||||
LLAMA_EXAMPLE_PERPLEXITY,
|
LLAMA_EXAMPLE_PERPLEXITY,
|
||||||
LLAMA_EXAMPLE_RETRIEVAL,
|
LLAMA_EXAMPLE_RETRIEVAL,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "sampling.h"
|
#include "sampling.h"
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
@ -534,14 +535,16 @@ std::vector<common_sampler_type> common_sampler_types_from_names(const std::vect
|
||||||
auto sampler = sampler_canonical_name_map.find(name);
|
auto sampler = sampler_canonical_name_map.find(name);
|
||||||
if (sampler != sampler_canonical_name_map.end()) {
|
if (sampler != sampler_canonical_name_map.end()) {
|
||||||
samplers.push_back(sampler->second);
|
samplers.push_back(sampler->second);
|
||||||
} else {
|
continue;
|
||||||
if (allow_alt_names) {
|
}
|
||||||
sampler = sampler_alt_name_map.find(name);
|
if (allow_alt_names) {
|
||||||
if (sampler != sampler_alt_name_map.end()) {
|
sampler = sampler_alt_name_map.find(name);
|
||||||
samplers.push_back(sampler->second);
|
if (sampler != sampler_alt_name_map.end()) {
|
||||||
}
|
samplers.push_back(sampler->second);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LOG_WRN("%s: unable to match sampler by name '%s'\n", __func__, name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
return samplers;
|
return samplers;
|
||||||
|
@ -568,6 +571,8 @@ std::vector<common_sampler_type> common_sampler_types_from_chars(const std::stri
|
||||||
const auto sampler = sampler_name_map.find(c);
|
const auto sampler = sampler_name_map.find(c);
|
||||||
if (sampler != sampler_name_map.end()) {
|
if (sampler != sampler_name_map.end()) {
|
||||||
samplers.push_back(sampler->second);
|
samplers.push_back(sampler->second);
|
||||||
|
} else {
|
||||||
|
LOG_WRN("%s: unable to match sampler by char '%c'\n", __func__, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,8 +87,6 @@ static_assert(sizeof(block_iq4_nlx4) == 4 * sizeof(ggml_half) + QK4_NL * 2, "wro
|
||||||
|
|
||||||
#if defined(__GNUC__)
|
#if defined(__GNUC__)
|
||||||
#pragma GCC diagnostic ignored "-Woverlength-strings"
|
#pragma GCC diagnostic ignored "-Woverlength-strings"
|
||||||
#elif defined(_MSC_VER)
|
|
||||||
#pragma warning(disable: 4244 4267) // possible loss of data
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define UNUSED GGML_UNUSED
|
#define UNUSED GGML_UNUSED
|
||||||
|
|
|
@ -20,12 +20,6 @@
|
||||||
#define GROUP_MAX_EPS_IQ1_M 1e-7f
|
#define GROUP_MAX_EPS_IQ1_M 1e-7f
|
||||||
#define GROUP_MAX_EPS_IQ1_S 1e-12f
|
#define GROUP_MAX_EPS_IQ1_S 1e-12f
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// disable "possible loss of data" to avoid warnings for hundreds of casts
|
|
||||||
// we should just be careful :)
|
|
||||||
#pragma warning(disable: 4244 4267)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UNUSED GGML_UNUSED
|
#define UNUSED GGML_UNUSED
|
||||||
|
|
||||||
#ifndef MM256_SET_M128I
|
#ifndef MM256_SET_M128I
|
||||||
|
|
|
@ -51,19 +51,6 @@
|
||||||
#include "llamafile/sgemm.h"
|
#include "llamafile/sgemm.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// disable "possible loss of data" to avoid hundreds of casts
|
|
||||||
// we should just be careful :)
|
|
||||||
#pragma warning(disable: 4244 4267)
|
|
||||||
|
|
||||||
// disable POSIX deprecation warnings
|
|
||||||
// these functions are never going away, anyway
|
|
||||||
#pragma warning(disable: 4996)
|
|
||||||
|
|
||||||
// unreachable code because of multiple instances of code after GGML_ABORT
|
|
||||||
#pragma warning(disable: 4702)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Note: once we move threading into a separate C++ file
|
// Note: once we move threading into a separate C++ file
|
||||||
// will use std::hardware_destructive_interference_size instead of hardcoding it here
|
// will use std::hardware_destructive_interference_size instead of hardcoding it here
|
||||||
// and we'll use C++ attribute syntax.
|
// and we'll use C++ attribute syntax.
|
||||||
|
|
|
@ -8,19 +8,6 @@
|
||||||
|
|
||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// disable "possible loss of data" to avoid hundreds of casts
|
|
||||||
// we should just be careful :)
|
|
||||||
#pragma warning(disable: 4244 4267)
|
|
||||||
|
|
||||||
// disable POSIX deprecation warnings
|
|
||||||
// these functions are never going away, anyway
|
|
||||||
#pragma warning(disable: 4996)
|
|
||||||
|
|
||||||
// unreachable code because of multiple instances of code after GGML_ABORT
|
|
||||||
#pragma warning(disable: 4702)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ggml_compute_forward_dup
|
// ggml_compute_forward_dup
|
||||||
|
|
||||||
static void ggml_compute_forward_dup_same_cont(
|
static void ggml_compute_forward_dup_same_cont(
|
||||||
|
|
|
@ -2,12 +2,6 @@
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// disable "possible loss of data" to avoid hundreds of casts
|
|
||||||
// we should just be careful :)
|
|
||||||
#pragma warning(disable: 4244 4267)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// precomputed gelu table for f16 (128 KB)
|
// precomputed gelu table for f16 (128 KB)
|
||||||
ggml_fp16_t ggml_table_gelu_f16[1 << 16];
|
ggml_fp16_t ggml_table_gelu_f16[1 << 16];
|
||||||
|
|
||||||
|
|
|
@ -130,10 +130,6 @@ static int ggml_cuda_highest_compiled_arch(const int arch) {
|
||||||
|
|
||||||
#define MATRIX_ROW_PADDING 512 // last row of quant. matrices is a multiple of this to avoid out-of-bounds memory accesses
|
#define MATRIX_ROW_PADDING 512 // last row of quant. matrices is a multiple of this to avoid out-of-bounds memory accesses
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#pragma warning(disable: 4244 4267) // possible loss of data
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define GGML_CUDA_MAX_STREAMS 8
|
#define GGML_CUDA_MAX_STREAMS 8
|
||||||
|
|
||||||
[[noreturn]]
|
[[noreturn]]
|
||||||
|
|
|
@ -2523,7 +2523,7 @@ template <ggml_type type, int mmq_x, int nwarps, bool need_check, bool fixup>
|
||||||
static __device__ __forceinline__ void mul_mat_q_process_tile(
|
static __device__ __forceinline__ void mul_mat_q_process_tile(
|
||||||
const char * __restrict__ x, const int offset_x, const int * __restrict__ y,
|
const char * __restrict__ x, const int offset_x, const int * __restrict__ y,
|
||||||
const int * __restrict__ ids_dst, float * __restrict__ dst, float * __restrict__ tmp_fixup,
|
const int * __restrict__ ids_dst, float * __restrict__ dst, float * __restrict__ tmp_fixup,
|
||||||
const int nrows_x, const int stride_row_x, const int ncols_y, const int stride_col_dst,
|
const int stride_row_x, const int ncols_y, const int stride_col_dst,
|
||||||
const int tile_x_max_i, const int tile_y_max_j, const int kb0_start, const int kb0_stop) {
|
const int tile_x_max_i, const int tile_y_max_j, const int kb0_start, const int kb0_stop) {
|
||||||
|
|
||||||
constexpr int qk = ggml_cuda_type_traits<type>::qk;
|
constexpr int qk = ggml_cuda_type_traits<type>::qk;
|
||||||
|
@ -2690,7 +2690,7 @@ static __global__ void mul_mat_q(
|
||||||
|
|
||||||
constexpr bool fixup = false;
|
constexpr bool fixup = false;
|
||||||
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
||||||
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, nrows_x, stride_row_x, ncols_y, stride_col_dst,
|
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, stride_row_x, ncols_y, stride_col_dst,
|
||||||
tile_x_max_i, tile_y_max_j, 0, ncols_x/qk);
|
tile_x_max_i, tile_y_max_j, 0, ncols_x/qk);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2768,7 +2768,7 @@ static __global__ void mul_mat_q(
|
||||||
|
|
||||||
constexpr bool fixup = false; // All but (potentially) the last iterations write their data to dst rather than the fixup buffer.
|
constexpr bool fixup = false; // All but (potentially) the last iterations write their data to dst rather than the fixup buffer.
|
||||||
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
||||||
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, nrows_x, stride_row_x, ncols_y, stride_col_dst,
|
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, stride_row_x, ncols_y, stride_col_dst,
|
||||||
tile_x_max_i, tile_y_max_j, kb0_start, kb0_stop);
|
tile_x_max_i, tile_y_max_j, kb0_start, kb0_stop);
|
||||||
|
|
||||||
kbc += blocks_per_ne00;
|
kbc += blocks_per_ne00;
|
||||||
|
@ -2835,7 +2835,7 @@ static __global__ void mul_mat_q(
|
||||||
|
|
||||||
constexpr bool fixup = true; // Last index writes its data to fixup buffer to avoid data races with other blocks.
|
constexpr bool fixup = true; // Last index writes its data to fixup buffer to avoid data races with other blocks.
|
||||||
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
mul_mat_q_process_tile<type, mmq_x, nwarps, need_check, fixup>
|
||||||
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, nrows_x, stride_row_x, ncols_y, stride_col_dst,
|
(x, offset_x, y + offset_y, ids_dst_shared, dst + offset_dst, tmp_fixup, stride_row_x, ncols_y, stride_col_dst,
|
||||||
tile_x_max_i, tile_y_max_j, kb0_start, kb0_stop);
|
tile_x_max_i, tile_y_max_j, kb0_start, kb0_stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,12 +19,6 @@
|
||||||
#define GROUP_MAX_EPS_IQ1_M 1e-7f
|
#define GROUP_MAX_EPS_IQ1_M 1e-7f
|
||||||
#define GROUP_MAX_EPS_IQ1_S 1e-12f
|
#define GROUP_MAX_EPS_IQ1_S 1e-12f
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
// disable "possible loss of data" to avoid warnings for hundreds of casts
|
|
||||||
// we should just be careful :)
|
|
||||||
#pragma warning(disable: 4244 4267)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UNUSED GGML_UNUSED
|
#define UNUSED GGML_UNUSED
|
||||||
|
|
||||||
// reference implementation for deterministic creation of model files
|
// reference implementation for deterministic creation of model files
|
||||||
|
|
427
klite.embd
427
klite.embd
|
@ -12,7 +12,7 @@ Current version indicated by LITEVER below.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const LITEVER = 238;
|
const LITEVER = 239;
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
var localflag = urlParams.get('local'); //this will be replaced automatically in embedded kcpp
|
var localflag = urlParams.get('local'); //this will be replaced automatically in embedded kcpp
|
||||||
const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
|
const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
|
||||||
|
@ -57,9 +57,11 @@ Current version indicated by LITEVER below.
|
||||||
--img_paper:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAAB5QTFRF+OmvAAAA89Ze14Rw2cCY1k8/8eGhmEQ/+uqj87Jse3RL9AAAAAp0Uk5T/wD49//9of8rH/vnQeUAAAEOSURBVHicXdG9asMwFAXggx1COmoJ8VgNptkKcmqyGaKSB0i127RkLiTgNV2CVxMo9G177rVSm2ow0se5Vz/Gbdub6YBz2//w0sV59s0wbs5X806X1j4JFN4Bx45La9eE7OM1PANIBHKCuW7CAYgkkIWgEaWeYN5DjHA0AthIZF8ILAgrpBJJ21N1hyGCXXvGA2EJibxJQaVwgUQKlNIkj5AePNKyrWAJtYS952dH6AlpJaQViW3AXc/shlnZFoRHAhd6hpkjrLGEl7lShFKuphXgA0B23WtF+UmwCjy1VijUw70H4iPeH0KaIMl/DKZjIf/lWo/QCJjVSAMYUoSvCH80gjHdEZibCQjJJuYXZ+xAP6Rjil4AAAAASUVORK5CYII=");
|
--img_paper:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAAB5QTFRF+OmvAAAA89Ze14Rw2cCY1k8/8eGhmEQ/+uqj87Jse3RL9AAAAAp0Uk5T/wD49//9of8rH/vnQeUAAAEOSURBVHicXdG9asMwFAXggx1COmoJ8VgNptkKcmqyGaKSB0i127RkLiTgNV2CVxMo9G177rVSm2ow0se5Vz/Gbdub6YBz2//w0sV59s0wbs5X806X1j4JFN4Bx45La9eE7OM1PANIBHKCuW7CAYgkkIWgEaWeYN5DjHA0AthIZF8ILAgrpBJJ21N1hyGCXXvGA2EJibxJQaVwgUQKlNIkj5AePNKyrWAJtYS952dH6AlpJaQViW3AXc/shlnZFoRHAhd6hpkjrLGEl7lShFKuphXgA0B23WtF+UmwCjy1VijUw70H4iPeH0KaIMl/DKZjIf/lWo/QCJjVSAMYUoSvCH80gjHdEZibCQjJJuYXZ+xAP6Rjil4AAAAASUVORK5CYII=");
|
||||||
--img_dice:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAAGlQTFRF2gA3AAAArgAs9O7ptwAu2gI45Fp63y5a8+rm8t3czgA0xgAy3RtM7bG74Txk53qSsQAttQAurwAs8dLU6Yyf3tfT5WmFsAAs2gA3wqqrsBM6uhxD2gA32wA22gA30hdGsiRHt1Rq2gA3GZfQSAAAACN0Uk5T/wD//////////////////3QL3f////+22v///3AK+v///7M1XKlYAAABCElEQVR4nKWT63rCIAyG2xCggD1bD1On7v4vcgnForWVZ8++P22SF5JAyPKEsjy/nA/f2VwOALqmZeDy8xZlWSRk3xJwXowTQQA0BBzY2ujNa5gcPgsBnH/XF6aWMSxrU/Q7TkIA470QotAR0AU5+usEeFuoCCjhV+C0g2FHFYGKbcNVjEBW0xbb5xq2tEHNjQRAalU9xclRKU0OfABr+jsgVVkq+QFQ1I5RH4CS2yv/AyRTJIucKZ7kilzqqDFxWXacB7d63acRALsyMMMtAGgXR244fgUAwC0M7XC8wwh09MHrbOzt6cbr/dg3/APobIw6hCB+OO0+GPgQTPJPL2+bDhYVHm9Cv52hDBGSdP+eAAAAAElFTkSuQmCC");
|
--img_dice:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAAGlQTFRF2gA3AAAArgAs9O7ptwAu2gI45Fp63y5a8+rm8t3czgA0xgAy3RtM7bG74Txk53qSsQAttQAurwAs8dLU6Yyf3tfT5WmFsAAs2gA3wqqrsBM6uhxD2gA32wA22gA30hdGsiRHt1Rq2gA3GZfQSAAAACN0Uk5T/wD//////////////////3QL3f////+22v///3AK+v///7M1XKlYAAABCElEQVR4nKWT63rCIAyG2xCggD1bD1On7v4vcgnForWVZ8++P22SF5JAyPKEsjy/nA/f2VwOALqmZeDy8xZlWSRk3xJwXowTQQA0BBzY2ujNa5gcPgsBnH/XF6aWMSxrU/Q7TkIA470QotAR0AU5+usEeFuoCCjhV+C0g2FHFYGKbcNVjEBW0xbb5xq2tEHNjQRAalU9xclRKU0OfABr+jsgVVkq+QFQ1I5RH4CS2yv/AyRTJIucKZ7kilzqqDFxWXacB7d63acRALsyMMMtAGgXR244fgUAwC0M7XC8wwh09MHrbOzt6cbr/dg3/APobIw6hCB+OO0+GPgQTPJPL2+bDhYVHm9Cv52hDBGSdP+eAAAAAElFTkSuQmCC");
|
||||||
--img_chat:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADxQTFRFkcPmAAAAkcPmstXukL/ltNbueJGic4aTibLQkcPmvtzwpM7qmazZkcPm5vL5ps/ruNnw0uf1udD/////pH/0JgAAABR0Uk5T/wBl/xH0////Qrz8Bltj6diDAgFfSBG4AAAAzklEQVR4nL3TQQ6EIAwF0BYLSBFl9P53HUFhVKru5i/QpC+2CRWQOOpLIo9YAqQ9tJmqAJbqAFyBFuugK+hk0P0b9Mb05/MCjLUGwOZzexeBuQe9senjdmth2xbykEoFR89gJfQClHsD4eGyMlDAMmCkHYziPvixAhzjvlO+K9FxXShXAOKcB/VMJTPWegaYgP/gLwOVegVTqishO9i2+Bbw/h+Eth7g0LkOdog7AWoBnQDS5RvpuvGcZcjZ4JIWBuXkbvgAkMILWOdx6fEFbukIF0RE9j4AAAAASUVORK5CYII=");
|
--img_chat:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADxQTFRFkcPmAAAAkcPmstXukL/ltNbueJGic4aTibLQkcPmvtzwpM7qmazZkcPm5vL5ps/ruNnw0uf1udD/////pH/0JgAAABR0Uk5T/wBl/xH0////Qrz8Bltj6diDAgFfSBG4AAAAzklEQVR4nL3TQQ6EIAwF0BYLSBFl9P53HUFhVKru5i/QpC+2CRWQOOpLIo9YAqQ9tJmqAJbqAFyBFuugK+hk0P0b9Mb05/MCjLUGwOZzexeBuQe9senjdmth2xbykEoFR89gJfQClHsD4eGyMlDAMmCkHYziPvixAhzjvlO+K9FxXShXAOKcB/VMJTPWegaYgP/gLwOVegVTqishO9i2+Bbw/h+Eth7g0LkOdog7AWoBnQDS5RvpuvGcZcjZ4JIWBuXkbvgAkMILWOdx6fEFbukIF0RE9j4AAAAASUVORK5CYII=");
|
||||||
|
--img_chat_mono:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADxQTFRFu7u7AAAAu7u70NDQurq60dHRjY2Ng4ODu7u7rKys19fXxsbG7+/vubm5u7u709PTyMjI4+Pj3Nzc////jB2o5QAAABR0Uk5T/wBl/xH0//9C/7z8YwZb2OmDAgHH4NesAAAAzklEQVR4nL3Tyw6EIAwF0BbLw6Lg6P//6wgKo1J1N3eBJj2xTaiAxFFfEnnAEiDtoc1UBbBUB+AKtFgHXUEng+7foDemP58XYKw1ADaf27sIzD3ojU0ft1sL27aQh1QqOHoGK6EXoNwbCA+XlYEClgEj7WAQ98EPFeAQ953yXYmO60K5AhDnPKhnKpmx1jPABPwHfxmp1CuYUl0J2cG2xbeA9/8gtPUAh851sEPcCVAL6ASQLt9I143nLGPOBpe0MCgnd8MHgBRewDqPS48vawEIEy7Qd5cAAAAASUVORK5CYII=");
|
||||||
--img_compass:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADxQTFRF/7VV/+J5AAAA8/P11Ob1l8jt/39K+chs/9tn/8Bd/+J48eTO/9x0/9Zv99ugiHp0/5MKWVFO/6k53KWUcJJTdwAAABR0Uk5T/v8A//////8Zydn/klf///v/bf9A3eYXAAABMUlEQVR4nG2T2RaDIAwFUwEBWdz+/18LuSypNS8enTGQQGgZ4VKMW4kYHb9fnnxaaOC4fUZsxbmoxHFRx5/f2BJRkY4Dgts+f2F9AU0Q3Aol9Qyd56DUvisVMlw6Dt5D5wVDKArzusdaBfaXlZqCUrlyiksRnORKt6dioRRCSND5CK1Z8Au5vn5Y1yy4zkhBaSRYS9yh85YiURwF3CtHbhwpPHGN/FuAsN7gOjwF1bhpAtYg7tnO5Wdww8Z+nn+CapyFswtiibJN5sbIJaQQGjdyk7PMWr8RRisziU7zj0OwaBRaPTkU0ep5WPo3+mGN437wedxIYS2+n7vkvl4YvnLl3Qb0Z1TICRZcWvg2Q8B1A8dkJXqNtHTh3cCE9tHzT+zB5/Am/4aFUAe4OT66+fULsfQP1birKzkAAAAASUVORK5CYII=");
|
--img_compass:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAA7AAAAOwBeShxvQAAADxQTFRF/7VV/+J5AAAA8/P11Ob1l8jt/39K+chs/9tn/8Bd/+J48eTO/9x0/9Zv99ugiHp0/5MKWVFO/6k53KWUcJJTdwAAABR0Uk5T/v8A//////8Zydn/klf///v/bf9A3eYXAAABMUlEQVR4nG2T2RaDIAwFUwEBWdz+/18LuSypNS8enTGQQGgZ4VKMW4kYHb9fnnxaaOC4fUZsxbmoxHFRx5/f2BJRkY4Dgts+f2F9AU0Q3Aol9Qyd56DUvisVMlw6Dt5D5wVDKArzusdaBfaXlZqCUrlyiksRnORKt6dioRRCSND5CK1Z8Au5vn5Y1yy4zkhBaSRYS9yh85YiURwF3CtHbhwpPHGN/FuAsN7gOjwF1bhpAtYg7tnO5Wdww8Z+nn+CapyFswtiibJN5sbIJaQQGjdyk7PMWr8RRisziU7zj0OwaBRaPTkU0ep5WPo3+mGN437wedxIYS2+n7vkvl4YvnLl3Qb0Z1TICRZcWvg2Q8B1A8dkJXqNtHTh3cCE9tHzT+zB5/Am/4aFUAe4OT66+fULsfQP1birKzkAAAAASUVORK5CYII=");
|
||||||
--img_websearch:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAEtQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////g5kLBwAAABl0Uk5TAP8Ds+QtpRpgIn35Ud7vnMFxhNZFkswMPA2JIJgAAAFISURBVHicvZPbjsQgCIb5PdVT1dpW+/5PutTZncwp6V4NSasGBD4BoruI6E1LqRkfBb1LX2bcZV76i1r4dCoS1hW3nX/y0uW4aBbUiiWPg3xwMjU+Fxgy2DZedhS+0aa7Xp23MXeaQ+9BUV/5CKg/C7b2nKFxEwpRgZs4iPLs9aa3QKVtJA8Zo8TA2agCdgRIkIIyrJXhl7LYiExCIk30FdFakHbUtXO6k9MPO6H1gDxOdgvPiYoURMTu4alh0gN0wcKMLkNHVA0cFZuG6QxpB6eDqSXYdaYeyrIqL5MQao6p5R0Dc22lthx2jqZMlvwjfpZc9lbayHIPYdsTjjNaslx39hu53jYkPww2JE4siTPamVjgOveAYwL0MBAMeX4D+RftBq+/89D/KfdVw1y33HXTXrb99eB8Gr36OsBPw6vehnd4+Tj+P8K7EihG+ntRAAAAAElFTkSuQmCC');
|
--img_websearch:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAEtQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////////////g5kLBwAAABl0Uk5TAP8Ds+QtpRpgIn35Ud7vnMFxhNZFkswMPA2JIJgAAAFISURBVHicvZPbjsQgCIb5PdVT1dpW+/5PutTZncwp6V4NSasGBD4BoruI6E1LqRkfBb1LX2bcZV76i1r4dCoS1hW3nX/y0uW4aBbUiiWPg3xwMjU+Fxgy2DZedhS+0aa7Xp23MXeaQ+9BUV/5CKg/C7b2nKFxEwpRgZs4iPLs9aa3QKVtJA8Zo8TA2agCdgRIkIIyrJXhl7LYiExCIk30FdFakHbUtXO6k9MPO6H1gDxOdgvPiYoURMTu4alh0gN0wcKMLkNHVA0cFZuG6QxpB6eDqSXYdaYeyrIqL5MQao6p5R0Dc22lthx2jqZMlvwjfpZc9lbayHIPYdsTjjNaslx39hu53jYkPww2JE4siTPamVjgOveAYwL0MBAMeX4D+RftBq+/89D/KfdVw1y33HXTXrb99eB8Gr36OsBPw6vehnd4+Tj+P8K7EihG+ntRAAAAAElFTkSuQmCC');
|
||||||
--img_save:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRFQlFtSVp52uHyws7lztbmjpmuUdjlu8TZeIminqi9WvH/rrjNVMbYxuT0Xm2HAAAAR1h3RVVyR1ZyR1h2eZplWQAAABR0Uk5T////////////////////ANT0HUjqAr+PAAAAgUlEQVR4nI3Q2RaDIAxF0RuCDNUWKP//ryXFWkUczmP2ghVAjkTklOQAvLT28R1CgMwbQCoC6oBIH4ocAOIR4BYoZtZboOHbKHlaQw3rTsFNNVObFjCP2gzmGvhZ47k/qOUdW7An4IdfDbAt+dLYgJbkR+zdq/YnYn+rhBxT2kPKH1FvCKEBnt/sAAAAAElFTkSuQmCC");
|
--img_save:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRFQlFtSVp52uHyws7lztbmjpmuUdjlu8TZeIminqi9WvH/rrjNVMbYxuT0Xm2HAAAAR1h3RVVyR1ZyR1h2eZplWQAAABR0Uk5T////////////////////ANT0HUjqAr+PAAAAgUlEQVR4nI3Q2RaDIAxF0RuCDNUWKP//ryXFWkUczmP2ghVAjkTklOQAvLT28R1CgMwbQCoC6oBIH4ocAOIR4BYoZtZboOHbKHlaQw3rTsFNNVObFjCP2gzmGvhZ47k/qOUdW7An4IdfDbAt+dLYgJbkR+zdq/YnYn+rhBxT2kPKH1FvCKEBnt/sAAAAAElFTkSuQmCC");
|
||||||
|
--img_save_mono:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRFV1dXYWFh5eXl09PT2tram5ubnp6ejY2Nra2tysrKrKysvb29lpaWW1tbcnJy3d3dAAAAX19fXFxcXl5eL2vTkwAAABR0Uk5T//////////////////T//wDUHUizGkTXAAAAgUlEQVR4nI3QURKDIAxF0RcCAlUqlP3vtaRYq4jW+5kzMAHkRERWSRbAU2uXXjFGyLwBhCKgDoj0ocgJIJ0BboFiZr0HGj6NkqMt1LDtEuxUM7VpBfOoLWD+A881XvqBWt+xB38BbvjWAPuSK40NaEl+xN+96ngi9bcKyCmEI4T8BipnCJv9iKHqAAAAAElFTkSuQmCC");
|
||||||
--img_load:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRF8MQZKbmZ8p0fAAAA8bIc8MIa8MQZq7NIKrmY7cQa0sIs8d2BebRn87wcLL+aJrmZ//8AdbhpAP//c69phZ/jMwAAABR0Uk5T//3/AP+y8v6kbP///xcZUAGrAUn40tQBAAAAp0lEQVR4nHWSiw6DIAwAy1peojLd///rKm3ZZOOiCXLpBRIhB2CCf+JeXUr1RAECATGQ+WN3TFUBKsJmJu0ijOCZo5m7EJzVRrE2c3ZBhoiXCXoYsYm4qejbUSbWo94HXCfZALXF0kVWQVAKP6Xo/hK0RHZcmVnAa+lzketYESBb6dvwPmxDqdX49TiWlIw/JeG6+ViCVsJZCWclnJVwVkLwfwau/+INBncEwpxiohQAAAAASUVORK5CYII=");
|
--img_load:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRF8MQZKbmZ8p0fAAAA8bIc8MIa8MQZq7NIKrmY7cQa0sIs8d2BebRn87wcLL+aJrmZ//8AdbhpAP//c69phZ/jMwAAABR0Uk5T//3/AP+y8v6kbP///xcZUAGrAUn40tQBAAAAp0lEQVR4nHWSiw6DIAwAy1peojLd///rKm3ZZOOiCXLpBRIhB2CCf+JeXUr1RAECATGQ+WN3TFUBKsJmJu0ijOCZo5m7EJzVRrE2c3ZBhoiXCXoYsYm4qejbUSbWo94HXCfZALXF0kVWQVAKP6Xo/hK0RHZcmVnAa+lzketYESBb6dvwPmxDqdX49TiWlIw/JeG6+ViCVsJZCWclnJVwVkLwfwau/+INBncEwpxiohQAAAAASUVORK5CYII=");
|
||||||
--img_delete:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRF////AAAA////////////////////////////////////////////////////////////////////////npt1BAAAABR0Uk5T/wB3M/ryVkUE3GQ8bhvOlb+s6oPyVnGNAAAAt0lEQVR4nHWR2RaDIBBDGXZlVf//X8sMsQtt88BxuJpIUDTVrBLZhg1F0WutL/XUNUYfB/Dqh/Z/wA9AbLVIrIjMlySc6FyNHMC2gg2grqAC9BV0gIOHs4+z2y55B0DjvELJuUDFLYDzUsCfNAApKs/ustQFkFHP0C6PGkAmxz4j536HgdQYplWwUuEEAeF7xmkDgOGbSxyVo+EvEkCZzT0XZT7AmwpAXEEEWOutdANT7WvbVo6gB7iKBNvL+guBAAAAAElFTkSuQmCC");
|
--img_delete:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAAnQAAAJ0Bj3LnbgAAADxQTFRF////AAAA////////////////////////////////////////////////////////////////////////npt1BAAAABR0Uk5T/wB3M/ryVkUE3GQ8bhvOlb+s6oPyVnGNAAAAt0lEQVR4nHWR2RaDIBBDGXZlVf//X8sMsQtt88BxuJpIUDTVrBLZhg1F0WutL/XUNUYfB/Dqh/Z/wA9AbLVIrIjMlySc6FyNHMC2gg2grqAC9BV0gIOHs4+z2y55B0DjvELJuUDFLYDzUsCfNAApKs/ustQFkFHP0C6PGkAmxz4j536HgdQYplWwUuEEAeF7xmkDgOGbSxyVo+EvEkCZzT0XZT7AmwpAXEEEWOutdANT7WvbVo6gB7iKBNvL+guBAAAAAElFTkSuQmCC");
|
||||||
--img_download:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADxQTFRFAAAA////////////+f783ffv/v//3ffv3ffv5Pnz8fz56vr16/r23ffv9v377/v4////3vfw5Pny3ffvbBfD6AAAABR0Uk5TAP+TRfsGWm8m6uDv0U/LfyiIepVDO0gQAAAAbElEQVR4nNWPuQ6AIBAFF+S+j///V0FjWJTEwsqpyEzxFoBXKGnQvwcuQw9B8kkLIRzrgbn2ROGQFwwFbYe3GgUfR4gejyRqzg1D0+2q2gszdb6ql9x2bH54AFW0Lmrxc1BSPvw2gQKZ+BQW7MaRAtfJQ2l0AAAAAElFTkSuQmCC");
|
--img_download:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAADxQTFRFAAAA////////////+f783ffv/v//3ffv3ffv5Pnz8fz56vr16/r23ffv9v377/v4////3vfw5Pny3ffvbBfD6AAAABR0Uk5TAP+TRfsGWm8m6uDv0U/LfyiIepVDO0gQAAAAbElEQVR4nNWPuQ6AIBAFF+S+j///V0FjWJTEwsqpyEzxFoBXKGnQvwcuQw9B8kkLIRzrgbn2ROGQFwwFbYe3GgUfR4gejyRqzg1D0+2q2gszdb6ql9x2bH54AFW0Lmrxc1BSPvw2gQKZ+BQW7MaRAtfJQ2l0AAAAAElFTkSuQmCC");
|
||||||
|
@ -1874,6 +1876,27 @@ Current version indicated by LITEVER below.
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
|
height: calc(100% - 20px);
|
||||||
|
}
|
||||||
|
.corpoleftpanelitemsinner
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 2px;
|
||||||
|
overflow-y: auto;
|
||||||
|
overflow-x: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: inline-block;
|
||||||
|
margin: 2px;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
.corpoleftpanelitemstopper
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 2px;
|
||||||
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.corpo_leftpanel_btn
|
.corpo_leftpanel_btn
|
||||||
{
|
{
|
||||||
|
@ -1889,9 +1912,9 @@ Current version indicated by LITEVER below.
|
||||||
background-size: 24px;
|
background-size: 24px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
.corpo_leftpanel_btn:hover {
|
.corpo_leftpanel_btn:hover {
|
||||||
background: #9dcef5;
|
background: #9dcef5;
|
||||||
|
@ -1899,6 +1922,13 @@ Current version indicated by LITEVER below.
|
||||||
background-position: 8px;
|
background-position: 8px;
|
||||||
background-size: 24px;
|
background-size: 24px;
|
||||||
}
|
}
|
||||||
|
.corpo_leftpanel_btn.red:hover {
|
||||||
|
color: #000000;
|
||||||
|
background: #f5767f;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 8px;
|
||||||
|
background-size: 24px;
|
||||||
|
}
|
||||||
.corpo_leftpanel_btn:active {
|
.corpo_leftpanel_btn:active {
|
||||||
transform: translateY(1px);
|
transform: translateY(1px);
|
||||||
}
|
}
|
||||||
|
@ -1910,6 +1940,14 @@ Current version indicated by LITEVER below.
|
||||||
background-position: 8px;
|
background-position: 8px;
|
||||||
background-size: 24px;
|
background-size: 24px;
|
||||||
}
|
}
|
||||||
|
body.darkmode .corpo_leftpanel_btn.red:hover
|
||||||
|
{
|
||||||
|
color: #000000;
|
||||||
|
background: #f5767f;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 8px;
|
||||||
|
background-size: 24px;
|
||||||
|
}
|
||||||
.corporightpanel
|
.corporightpanel
|
||||||
{
|
{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -3078,6 +3116,7 @@ Current version indicated by LITEVER below.
|
||||||
var temp_scenario = null;
|
var temp_scenario = null;
|
||||||
var last_token_budget = ""; //to display token limits
|
var last_token_budget = ""; //to display token limits
|
||||||
var last_known_filename = "saved_story.json";
|
var last_known_filename = "saved_story.json";
|
||||||
|
var last_used_saveslot = -1; //used for corpo mode quicksave
|
||||||
var backup_localmodeport = 5001; //sometimes we reattempt a different port, this stores a backup
|
var backup_localmodeport = 5001; //sometimes we reattempt a different port, this stores a backup
|
||||||
var localmodeport = 5001;
|
var localmodeport = 5001;
|
||||||
var localmodehost = "localhost";
|
var localmodehost = "localhost";
|
||||||
|
@ -4233,9 +4272,8 @@ Current version indicated by LITEVER below.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function replace_search_placeholders(text) {
|
function remove_all_instruct_tags(text)
|
||||||
|
{
|
||||||
// Remove any instruct tags as needed to ensure a more accurate search
|
|
||||||
text = replaceAll(text, get_instruct_starttag(false), "");
|
text = replaceAll(text, get_instruct_starttag(false), "");
|
||||||
text = replaceAll(text, get_instruct_endtag(false), "");
|
text = replaceAll(text, get_instruct_endtag(false), "");
|
||||||
text = replaceAll(text, get_instruct_systag(false), "");
|
text = replaceAll(text, get_instruct_systag(false), "");
|
||||||
|
@ -4245,6 +4283,12 @@ Current version indicated by LITEVER below.
|
||||||
text = text.replace(/\{\{\[INPUT\]\}\}/g, "").replace(/\{\{\[OUTPUT\]\}\}/g, "");
|
text = text.replace(/\{\{\[INPUT\]\}\}/g, "").replace(/\{\{\[OUTPUT\]\}\}/g, "");
|
||||||
text = text.replace(/\{\{\[INPUT_END\]\}\}/g, "").replace(/\{\{\[OUTPUT_END\]\}\}/g, "");
|
text = text.replace(/\{\{\[INPUT_END\]\}\}/g, "").replace(/\{\{\[OUTPUT_END\]\}\}/g, "");
|
||||||
text = text.replace(/\{\{\[SYSTEM\]\}\}/g, "").replace(/\{\{\[SYSTEM_END\]\}\}/g, "");
|
text = text.replace(/\{\{\[SYSTEM\]\}\}/g, "").replace(/\{\{\[SYSTEM_END\]\}\}/g, "");
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
function replace_search_placeholders(text) {
|
||||||
|
|
||||||
|
// Remove any instruct tags as needed to ensure a more accurate search
|
||||||
|
text = remove_all_instruct_tags(text);
|
||||||
|
|
||||||
// Replace {{user}} and other placeholders
|
// Replace {{user}} and other placeholders
|
||||||
text = replace_placeholders(text);
|
text = replace_placeholders(text);
|
||||||
|
@ -7363,7 +7407,10 @@ Current version indicated by LITEVER below.
|
||||||
if(usechatmode)
|
if(usechatmode)
|
||||||
{
|
{
|
||||||
localsettings.opmode = 3;
|
localsettings.opmode = 3;
|
||||||
localsettings.gui_type_chat = 2;
|
if(localsettings.gui_type_chat!=3)
|
||||||
|
{
|
||||||
|
localsettings.gui_type_chat = 2;
|
||||||
|
}
|
||||||
gametext_arr.push("\n"+chatopponent+": "+greeting);
|
gametext_arr.push("\n"+chatopponent+": "+greeting);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -7425,7 +7472,10 @@ Current version indicated by LITEVER below.
|
||||||
gametext_arr.push("\n"+chatopponent+": "+greeting);
|
gametext_arr.push("\n"+chatopponent+": "+greeting);
|
||||||
current_memory = memory + scenario + examplemsg + "\n***";
|
current_memory = memory + scenario + examplemsg + "\n***";
|
||||||
localsettings.opmode = 3;
|
localsettings.opmode = 3;
|
||||||
localsettings.gui_type_chat = 2;
|
if(localsettings.gui_type_chat!=3)
|
||||||
|
{
|
||||||
|
localsettings.gui_type_chat = 2;
|
||||||
|
}
|
||||||
update_for_sidepanel();
|
update_for_sidepanel();
|
||||||
render_gametext(true);
|
render_gametext(true);
|
||||||
sync_multiplayer(true);
|
sync_multiplayer(true);
|
||||||
|
@ -7743,7 +7793,10 @@ Current version indicated by LITEVER below.
|
||||||
current_memory = combinedmem;
|
current_memory = combinedmem;
|
||||||
}
|
}
|
||||||
localsettings.opmode = 3;
|
localsettings.opmode = 3;
|
||||||
localsettings.gui_type_chat = 2;
|
if(localsettings.gui_type_chat!=3)
|
||||||
|
{
|
||||||
|
localsettings.gui_type_chat = 2;
|
||||||
|
}
|
||||||
localsettings.chatopponent = chatopponent;
|
localsettings.chatopponent = chatopponent;
|
||||||
update_for_sidepanel();
|
update_for_sidepanel();
|
||||||
render_gametext();
|
render_gametext();
|
||||||
|
@ -7839,9 +7892,12 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (temp_scenario.opmode == 3) {
|
if (temp_scenario.opmode == 3) {
|
||||||
if (temp_scenario.gui_type===1) { localsettings.gui_type_chat = 1; }
|
if(localsettings.gui_type_chat!=3)
|
||||||
else if(temp_scenario.gui_type===2) { localsettings.gui_type_chat = 2; }
|
{
|
||||||
else if(temp_scenario.gui_type===0) { localsettings.gui_type_chat = 0; }
|
if (temp_scenario.gui_type===1) { localsettings.gui_type_chat = 1; }
|
||||||
|
else if(temp_scenario.gui_type===2) { localsettings.gui_type_chat = 2; }
|
||||||
|
else if(temp_scenario.gui_type===0) { localsettings.gui_type_chat = 0; }
|
||||||
|
}
|
||||||
|
|
||||||
if (temp_scenario.multiline_replies===true) { localsettings.multiline_replies = true; }
|
if (temp_scenario.multiline_replies===true) { localsettings.multiline_replies = true; }
|
||||||
else if(temp_scenario.multiline_replies===false) { localsettings.multiline_replies = false; }
|
else if(temp_scenario.multiline_replies===false) { localsettings.multiline_replies = false; }
|
||||||
|
@ -10402,6 +10458,27 @@ Current version indicated by LITEVER below.
|
||||||
document.getElementById("saveslotselecteddropdown").innerHTML = choices;
|
document.getElementById("saveslotselecteddropdown").innerHTML = choices;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function find_unused_saveslot(onDoneCallback)
|
||||||
|
{
|
||||||
|
let slotpromises = [];
|
||||||
|
for(let i=0;i<SAVE_SLOTS;++i)
|
||||||
|
{
|
||||||
|
slotpromises.push(indexeddb_load("slot_"+i+"_meta",""));
|
||||||
|
}
|
||||||
|
Promise.all(slotpromises).then(slotlabels=>
|
||||||
|
{
|
||||||
|
let esid = -1;
|
||||||
|
for(let i=0;i<slotlabels.length;++i)
|
||||||
|
{
|
||||||
|
if(slotlabels[i]=="")
|
||||||
|
{
|
||||||
|
esid = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onDoneCallback(esid);
|
||||||
|
});
|
||||||
|
}
|
||||||
function display_saveloadcontainer()
|
function display_saveloadcontainer()
|
||||||
{
|
{
|
||||||
mainmenu_untab(true);
|
mainmenu_untab(true);
|
||||||
|
@ -10442,7 +10519,43 @@ Current version indicated by LITEVER below.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function save_to_slot(slot,islocal)
|
function quicksave()
|
||||||
|
{
|
||||||
|
if(last_used_saveslot==-1)
|
||||||
|
{
|
||||||
|
if(!safe_to_overwrite())
|
||||||
|
{
|
||||||
|
find_unused_saveslot((slot)=>{
|
||||||
|
if(slot!=-1)
|
||||||
|
{
|
||||||
|
save_to_slot(slot,true,false);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
msgbox("Unable to Save - No Available New Slots.","Storage Slots Full");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msgbox("Nothing to save - Current session is empty.","Not Saved");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
save_to_slot(last_used_saveslot,true,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function quickdelete()
|
||||||
|
{
|
||||||
|
if(last_used_saveslot!=-1)
|
||||||
|
{
|
||||||
|
delete_from_slot(last_used_saveslot,true,false);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
msgbox("Nothing to delete - Select a slot first.","No Action Taken");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function save_to_slot(slot,islocal,showcontainer)
|
||||||
{
|
{
|
||||||
let defaultsavename = (localsettings.opmode==1?"Untitled Story":(localsettings.opmode==2?"Untitled Adventure":(localsettings.opmode==3?"Untitled Chat":"Untitled Instruct")));
|
let defaultsavename = (localsettings.opmode==1?"Untitled Story":(localsettings.opmode==2?"Untitled Adventure":(localsettings.opmode==3?"Untitled Chat":"Untitled Instruct")));
|
||||||
let savename = defaultsavename + " " + new Date().toLocaleString();
|
let savename = defaultsavename + " " + new Date().toLocaleString();
|
||||||
|
@ -10462,8 +10575,19 @@ Current version indicated by LITEVER below.
|
||||||
userinput = defaultsavename;
|
userinput = defaultsavename;
|
||||||
}
|
}
|
||||||
indexeddb_save("slot_" + slot + "_data", newcompressedstory)
|
indexeddb_save("slot_" + slot + "_data", newcompressedstory)
|
||||||
indexeddb_save("slot_" + slot + "_meta", userinput).then(()=>{display_saveloadcontainer()});
|
indexeddb_save("slot_" + slot + "_meta", userinput).then(()=>{
|
||||||
|
if(showcontainer)
|
||||||
|
{
|
||||||
|
display_saveloadcontainer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
saveloadchangeslot(true);
|
||||||
|
populate_corpo_leftpanel();
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
last_used_saveslot = slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (testslot) {
|
if (testslot) {
|
||||||
|
@ -10482,6 +10606,7 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
const slotwrite = function () {
|
const slotwrite = function () {
|
||||||
warn_unsaved = false;
|
warn_unsaved = false;
|
||||||
|
last_used_saveslot = -1;
|
||||||
inputBox("Enter a label for this Server Storage Slot data", "Enter a label", savename, defaultsavename, () => {
|
inputBox("Enter a label for this Server Storage Slot data", "Enter a label", savename, defaultsavename, () => {
|
||||||
let userinput = getInputBoxValue();
|
let userinput = getInputBoxValue();
|
||||||
if (userinput.trim() == "") {
|
if (userinput.trim() == "") {
|
||||||
|
@ -10529,7 +10654,7 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function load_from_slot(slot,islocal)
|
function load_from_slot(slot,islocal,switch_to_corpo)
|
||||||
{
|
{
|
||||||
const proceed_load_from_slot = function() {
|
const proceed_load_from_slot = function() {
|
||||||
if(islocal)
|
if(islocal)
|
||||||
|
@ -10539,11 +10664,21 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
hide_popups();
|
hide_popups();
|
||||||
import_compressed_story(loadedstorycompressed,false);
|
import_compressed_story(loadedstorycompressed,false);
|
||||||
|
last_used_saveslot = slot;
|
||||||
|
if(switch_to_corpo)
|
||||||
|
{
|
||||||
|
localsettings.gui_type_chat = 3;
|
||||||
|
localsettings.gui_type_story = 3;
|
||||||
|
localsettings.gui_type_adventure = 3;
|
||||||
|
localsettings.gui_type_instruct = 3;
|
||||||
|
render_gametext(false,false);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
msgbox("Unable to load story from browser storage","Browser Storage Load Failed");
|
msgbox("Unable to load story from browser storage","Browser Storage Load Failed");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
last_used_saveslot = -1;
|
||||||
fetch(custom_kobold_endpoint + koboldcpp_savedata_load_endpoint, {
|
fetch(custom_kobold_endpoint + koboldcpp_savedata_load_endpoint, {
|
||||||
method: 'POST', // or 'PUT'
|
method: 'POST', // or 'PUT'
|
||||||
headers: get_kobold_header(),
|
headers: get_kobold_header(),
|
||||||
|
@ -10627,15 +10762,32 @@ Current version indicated by LITEVER below.
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function delete_from_slot(slot,islocal)
|
function delete_from_slot(slot,islocal,showcontainer)
|
||||||
{
|
{
|
||||||
let slotnumshown = (parseInt(slot)+1);
|
let slotnumshown = (parseInt(slot)+1);
|
||||||
if (islocal) {
|
if (islocal) {
|
||||||
|
let postdel = function(){
|
||||||
|
if(showcontainer)
|
||||||
|
{
|
||||||
|
display_saveloadcontainer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
saveloadchangeslot(true);
|
||||||
|
populate_corpo_leftpanel();
|
||||||
|
}
|
||||||
|
};
|
||||||
msgboxYesNo("Delete story in Browser Storage Slot " + slotnumshown + "?", "Delete Browser Storage Slot " + slotnumshown, () => {
|
msgboxYesNo("Delete story in Browser Storage Slot " + slotnumshown + "?", "Delete Browser Storage Slot " + slotnumshown, () => {
|
||||||
indexeddb_save("slot_" + slot + "_data", "");
|
indexeddb_save("slot_" + slot + "_data", "");
|
||||||
indexeddb_save("slot_" + slot + "_meta", "").then(() => { display_saveloadcontainer() });
|
indexeddb_save("slot_" + slot + "_meta", "").then(() => {
|
||||||
|
postdel();
|
||||||
|
if(slot==last_used_saveslot)
|
||||||
|
{
|
||||||
|
last_used_saveslot = -1;
|
||||||
|
}
|
||||||
|
});
|
||||||
}, () => {
|
}, () => {
|
||||||
display_saveloadcontainer();
|
postdel();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
msgboxYesNo("Delete story in Server Storage Slot " + slotnumshown + "?", "Delete Server Storage Slot " + slotnumshown, () => {
|
msgboxYesNo("Delete story in Server Storage Slot " + slotnumshown + "?", "Delete Server Storage Slot " + slotnumshown, () => {
|
||||||
|
@ -10679,14 +10831,14 @@ Current version indicated by LITEVER below.
|
||||||
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
||||||
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
||||||
let islocal = (selectedlocation=="1");
|
let islocal = (selectedlocation=="1");
|
||||||
save_to_slot(selectedslot,islocal);
|
save_to_slot(selectedslot,islocal,true);
|
||||||
}
|
}
|
||||||
function load_from_curr_slot()
|
function load_from_curr_slot()
|
||||||
{
|
{
|
||||||
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
||||||
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
||||||
let islocal = (selectedlocation=="1");
|
let islocal = (selectedlocation=="1");
|
||||||
load_from_slot(selectedslot,islocal);
|
load_from_slot(selectedslot,islocal,false);
|
||||||
}
|
}
|
||||||
function download_from_curr_slot()
|
function download_from_curr_slot()
|
||||||
{
|
{
|
||||||
|
@ -10700,7 +10852,7 @@ Current version indicated by LITEVER below.
|
||||||
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
let selectedslot = document.getElementById("saveslotselecteddropdown").value;
|
||||||
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
let selectedlocation = document.getElementById("saveslotlocationdropdown").value;
|
||||||
let islocal = (selectedlocation=="1");
|
let islocal = (selectedlocation=="1");
|
||||||
delete_from_slot(selectedslot,islocal);
|
delete_from_slot(selectedslot,islocal,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
var cached_model_list = null;
|
var cached_model_list = null;
|
||||||
|
@ -12203,6 +12355,12 @@ Current version indicated by LITEVER below.
|
||||||
if(selval=="0" || selval=="2" || selval=="3") //do not save any other value
|
if(selval=="0" || selval=="2" || selval=="3") //do not save any other value
|
||||||
{
|
{
|
||||||
localsettings.gui_type_instruct = selval;
|
localsettings.gui_type_instruct = selval;
|
||||||
|
if(selval=="3")
|
||||||
|
{
|
||||||
|
localsettings.gui_type_chat = selval;
|
||||||
|
localsettings.gui_type_story = selval;
|
||||||
|
localsettings.gui_type_adventure = selval;
|
||||||
|
}
|
||||||
render_gametext(true);
|
render_gametext(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12240,10 +12398,12 @@ Current version indicated by LITEVER below.
|
||||||
if (document.getElementById('opmode').value == 1) {
|
if (document.getElementById('opmode').value == 1) {
|
||||||
document.getElementById('gui_type').value = localsettings.gui_type_story;
|
document.getElementById('gui_type').value = localsettings.gui_type_story;
|
||||||
document.getElementById('uipicker_aesthetic').classList.remove('hidden');
|
document.getElementById('uipicker_aesthetic').classList.remove('hidden');
|
||||||
|
document.getElementById('uipicker_corpo').classList.remove('hidden');
|
||||||
}
|
}
|
||||||
if (document.getElementById('opmode').value == 2) {
|
if (document.getElementById('opmode').value == 2) {
|
||||||
document.getElementById('gui_type').value = localsettings.gui_type_adventure;
|
document.getElementById('gui_type').value = localsettings.gui_type_adventure;
|
||||||
document.getElementById('uipicker_aesthetic').classList.remove('hidden');
|
document.getElementById('uipicker_aesthetic').classList.remove('hidden');
|
||||||
|
document.getElementById('uipicker_corpo').classList.remove('hidden');
|
||||||
}
|
}
|
||||||
if (document.getElementById('opmode').value == 3) {
|
if (document.getElementById('opmode').value == 3) {
|
||||||
document.getElementById('gui_type').value = localsettings.gui_type_chat;
|
document.getElementById('gui_type').value = localsettings.gui_type_chat;
|
||||||
|
@ -12716,6 +12876,7 @@ Current version indicated by LITEVER below.
|
||||||
documentdb_data = "";
|
documentdb_data = "";
|
||||||
}
|
}
|
||||||
warn_unsaved = false;
|
warn_unsaved = false;
|
||||||
|
last_used_saveslot = -1;
|
||||||
show_corpo_leftpanel(false);
|
show_corpo_leftpanel(false);
|
||||||
update_toggle_lightmode(false); //load theme but dont save or toggle it
|
update_toggle_lightmode(false); //load theme but dont save or toggle it
|
||||||
render_gametext(save); //necessary to trigger an autosave to wipe out current story in case they exit browser after newgame.
|
render_gametext(save); //necessary to trigger an autosave to wipe out current story in case they exit browser after newgame.
|
||||||
|
@ -17936,6 +18097,7 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
document.getElementById("inputrow").classList.remove("show_mode");
|
document.getElementById("inputrow").classList.remove("show_mode");
|
||||||
}
|
}
|
||||||
|
populate_corpo_leftpanel_topper();
|
||||||
|
|
||||||
if (gametext_arr.length == 0 && synchro_pending_stream=="" && pending_response_id=="") {
|
if (gametext_arr.length == 0 && synchro_pending_stream=="" && pending_response_id=="") {
|
||||||
|
|
||||||
|
@ -18551,6 +18713,68 @@ Current version indicated by LITEVER below.
|
||||||
return turns;
|
return turns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function repack_adventure_history(input)
|
||||||
|
{
|
||||||
|
const regex = /\n\n> .+?\n/g;
|
||||||
|
const result = [];
|
||||||
|
let lastIndex = 0;
|
||||||
|
let match;
|
||||||
|
while ((match = regex.exec(input)) !== null) {
|
||||||
|
const start = match.index;
|
||||||
|
const end = regex.lastIndex;
|
||||||
|
|
||||||
|
if (start > lastIndex) {
|
||||||
|
// Opponent's turn (text before this match)
|
||||||
|
result.push({
|
||||||
|
msg: input.slice(lastIndex, start).trim(),
|
||||||
|
myturn: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// My turn
|
||||||
|
let mymsg = match[0].trim();
|
||||||
|
if(mymsg.startsWith("> "))
|
||||||
|
{
|
||||||
|
mymsg = mymsg.substring(2);
|
||||||
|
}
|
||||||
|
result.push({
|
||||||
|
msg: mymsg,
|
||||||
|
myturn: true
|
||||||
|
});
|
||||||
|
|
||||||
|
lastIndex = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Any remaining text after last match is opponent's turn
|
||||||
|
if (lastIndex < input.length) {
|
||||||
|
result.push({
|
||||||
|
msg: input.slice(lastIndex).trim(),
|
||||||
|
myturn: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter out empty messages
|
||||||
|
return result.filter(t => t.msg.length > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function repack_story_history(input)
|
||||||
|
{
|
||||||
|
let arr = input.split("\n\n");
|
||||||
|
let result = [];
|
||||||
|
for(let i=0;i<arr.length;++i)
|
||||||
|
{
|
||||||
|
if(arr[i].trim()=="")
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result.push({
|
||||||
|
msg: arr[i],
|
||||||
|
myturn: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
function corpo_chunk_prev()
|
function corpo_chunk_prev()
|
||||||
{
|
{
|
||||||
let incomplete_resp = (synchro_pending_stream != "" || pending_response_id != "");
|
let incomplete_resp = (synchro_pending_stream != "" || pending_response_id != "");
|
||||||
|
@ -18583,6 +18807,14 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
chatunits = repack_chat_history(currctx);
|
chatunits = repack_chat_history(currctx);
|
||||||
}
|
}
|
||||||
|
else if(localsettings.opmode==2)
|
||||||
|
{
|
||||||
|
chatunits = repack_adventure_history(currctx);
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==1)
|
||||||
|
{
|
||||||
|
chatunits = repack_story_history(currctx);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chatunits = repack_instruct_history(currctx);
|
chatunits = repack_instruct_history(currctx);
|
||||||
|
@ -18601,6 +18833,31 @@ Current version indicated by LITEVER below.
|
||||||
gametext_arr.push(chunk);
|
gametext_arr.push(chunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(localsettings.opmode==2) //adventure mode
|
||||||
|
{
|
||||||
|
for(let i=0;i<=idx;++i)
|
||||||
|
{
|
||||||
|
let cont = chatunits[i].msg;
|
||||||
|
if(chatunits[i].myturn)
|
||||||
|
{
|
||||||
|
cont = `\n\n> ${cont}\n\n`;
|
||||||
|
}
|
||||||
|
gametext_arr.push(cont);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==1) //story mode
|
||||||
|
{
|
||||||
|
for(let i=0;i<=idx;++i)
|
||||||
|
{
|
||||||
|
let cont = chatunits[i].msg;
|
||||||
|
if(i!=idx)
|
||||||
|
{
|
||||||
|
cont = `${cont}\n\n`;
|
||||||
|
}
|
||||||
|
gametext_arr.push(cont);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -18666,6 +18923,14 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
chatunits = repack_chat_history(currctx);
|
chatunits = repack_chat_history(currctx);
|
||||||
}
|
}
|
||||||
|
else if(localsettings.opmode==2)
|
||||||
|
{
|
||||||
|
chatunits = repack_adventure_history(currctx);
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==1)
|
||||||
|
{
|
||||||
|
chatunits = repack_story_history(currctx);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chatunits = repack_instruct_history(currctx);
|
chatunits = repack_instruct_history(currctx);
|
||||||
|
@ -18700,6 +18965,37 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(localsettings.opmode==2) //adventure mode
|
||||||
|
{
|
||||||
|
for(let i=0;i<chatunits.length;++i)
|
||||||
|
{
|
||||||
|
let cont = (i==idx?newtxt:chatunits[i].msg);
|
||||||
|
if(cont!="")
|
||||||
|
{
|
||||||
|
let chunk = cont;
|
||||||
|
if(chatunits[i].myturn)
|
||||||
|
{
|
||||||
|
chunk = `\n\n> ${chunk}\n\n`;
|
||||||
|
}
|
||||||
|
gametext_arr.push(chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==1) //story mode
|
||||||
|
{
|
||||||
|
for(let i=0;i<chatunits.length;++i)
|
||||||
|
{
|
||||||
|
let cont = (i==idx?newtxt:chatunits[i].msg);
|
||||||
|
if(cont!="")
|
||||||
|
{
|
||||||
|
if(i<chatunits.length-1)
|
||||||
|
{
|
||||||
|
cont = `${cont}\n\n`;
|
||||||
|
}
|
||||||
|
gametext_arr.push(cont);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else //instruct and the rest
|
else //instruct and the rest
|
||||||
{
|
{
|
||||||
let ste = "";
|
let ste = "";
|
||||||
|
@ -18767,6 +19063,14 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
chatunits = repack_chat_history(input);
|
chatunits = repack_chat_history(input);
|
||||||
}
|
}
|
||||||
|
else if(localsettings.opmode==2)
|
||||||
|
{
|
||||||
|
chatunits = repack_adventure_history(input);
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==1)
|
||||||
|
{
|
||||||
|
chatunits = repack_story_history(input);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chatunits = repack_instruct_history(input);
|
chatunits = repack_instruct_history(input);
|
||||||
|
@ -18815,7 +19119,7 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
namepart = curr.name;
|
namepart = curr.name;
|
||||||
}
|
}
|
||||||
else if(localsettings.inject_chatnames_instruct && localsettings.instruct_has_markdown)
|
else if(localsettings.opmode==4 && localsettings.inject_chatnames_instruct && localsettings.instruct_has_markdown)
|
||||||
{
|
{
|
||||||
let validprefixes = [];
|
let validprefixes = [];
|
||||||
if(curr.myturn)
|
if(curr.myturn)
|
||||||
|
@ -18886,13 +19190,19 @@ Current version indicated by LITEVER below.
|
||||||
(curr.myturn ? `` : `<button title="Retry Chunk" onclick="corpo_retry_chunk(${i})" class="corpo_hover_btn" type="button" style="background-image: var(--img_corpo_retry);"></button>`)
|
(curr.myturn ? `` : `<button title="Retry Chunk" onclick="corpo_retry_chunk(${i})" class="corpo_hover_btn" type="button" style="background-image: var(--img_corpo_retry);"></button>`)
|
||||||
+ `</div>`);
|
+ `</div>`);
|
||||||
|
|
||||||
newbodystr += `<div class="corpostyleitem">
|
newbodystr += `<div class="corpostyleitem">`;
|
||||||
<div><img ${(curr.myturn ? "" : `onclick="corpo_click_avatar()"`)} src="${(curr.myturn ? human_square : niko_square)}" class="corpoavatar"/></div>
|
|
||||||
|
if(localsettings.opmode==1)
|
||||||
|
{
|
||||||
|
newbodystr += `<div style="width:100%">`;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
newbodystr += `<div><img ${(curr.myturn ? "" : `onclick="corpo_click_avatar()"`)} src="${(curr.myturn ? human_square : niko_square)}" class="corpoavatar"/></div>
|
||||||
<div style="width:100%">
|
<div style="width:100%">
|
||||||
<div class="corpostyleitemheading">`+ namepart + `</div>
|
<div class="corpostyleitemheading">`+ namepart + `</div>`;
|
||||||
`+ bodypart + chunkbtns + `
|
}
|
||||||
</div>
|
|
||||||
</div>`;
|
newbodystr += bodypart + chunkbtns + `</div></div>`;
|
||||||
}
|
}
|
||||||
if(incomplete_resp)
|
if(incomplete_resp)
|
||||||
{
|
{
|
||||||
|
@ -18902,13 +19212,22 @@ Current version indicated by LITEVER below.
|
||||||
{
|
{
|
||||||
namepart = "";
|
namepart = "";
|
||||||
}
|
}
|
||||||
newbodystr += `<div class="corpostyleitem">
|
newbodystr += `<div class="corpostyleitem">`;
|
||||||
<div><img src="`+niko_square+`" class="corpoavatar"/></div>
|
|
||||||
<div>
|
if (localsettings.opmode == 1) {
|
||||||
<div class="corpostyleitemheading">`+namepart+`</div>
|
newbodystr += `
|
||||||
|
<div>
|
||||||
|
<div class="corpostyleitemcontent"><p><span class="pending_text">`+ futuretext + `</span></p></div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
newbodystr += `<div><img src="` + niko_square + `" class="corpoavatar"/></div>
|
||||||
|
<div>
|
||||||
|
<div class="corpostyleitemheading">`+ namepart +`</div>
|
||||||
<div class="corpostyleitemcontent"><p><span class="pending_text">`+ futuretext +`</span></p></div>
|
<div class="corpostyleitemcontent"><p><span class="pending_text">`+ futuretext +`</span></p></div>
|
||||||
</div>
|
</div>`;
|
||||||
</div>`;
|
}
|
||||||
|
newbodystr += `</div>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return newbodystr;
|
return newbodystr;
|
||||||
|
@ -18932,6 +19251,24 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function populate_corpo_leftpanel_topper()
|
||||||
|
{
|
||||||
|
let panel = document.getElementById('corpoleftpanelitemstopper');
|
||||||
|
let panelitems = `<div onclick="btn_memory()" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_gear); padding-left: 44px;">Context</div>
|
||||||
|
<div onclick="btn_editmode()" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_corpo_edit); padding-left: 44px;">Raw Editor</div>
|
||||||
|
<div onclick="update_toggle_lightmode(true)" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_corpo_theme); padding-left: 44px;">Light / Dark Theme</div>`;
|
||||||
|
|
||||||
|
if(localsettings.opmode==3||localsettings.opmode==4)
|
||||||
|
{
|
||||||
|
panelitems += `<div onclick="show_groupchat_select()" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_chat_mono); padding-left: 44px;">Chat Select</div>`;
|
||||||
|
}
|
||||||
|
else if(localsettings.opmode==2)
|
||||||
|
{
|
||||||
|
let amode = (localsettings.adventure_switch_mode==0?"Story Mode":(localsettings.adventure_switch_mode==1?"Action Mode":"Dice Mode"))
|
||||||
|
panelitems += `<div onclick="btn_adventure_mode()" class="corpo_leftpanel_btn" type="button" >Adventure: ${amode}</div>`;
|
||||||
|
}
|
||||||
|
panel.innerHTML = panelitems;
|
||||||
|
}
|
||||||
function populate_corpo_leftpanel()
|
function populate_corpo_leftpanel()
|
||||||
{
|
{
|
||||||
let slotpromises = [];
|
let slotpromises = [];
|
||||||
|
@ -18941,22 +19278,16 @@ Current version indicated by LITEVER below.
|
||||||
}
|
}
|
||||||
Promise.all(slotpromises).then(slotlabels=>
|
Promise.all(slotpromises).then(slotlabels=>
|
||||||
{
|
{
|
||||||
let panel = document.getElementById('corpoleftpanelitems');
|
let panel = document.getElementById('corpoleftpanelitemsinner');
|
||||||
let panelitems = `
|
let panelitems = ``;
|
||||||
<div onclick="btn_memory()" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_gear); padding-left: 44px;">Context</div>
|
populate_corpo_leftpanel_topper();
|
||||||
<div onclick="btn_editmode()" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_corpo_edit); padding-left: 44px;">Raw Editor</div>
|
|
||||||
<div onclick="update_toggle_lightmode(true)" class="corpo_leftpanel_btn" type="button" style="background-image: var(--img_corpo_theme); padding-left: 44px;">Light / Dark Theme</div>
|
|
||||||
<div style="padding:2px;font-size:14px;margin-left:8px;font-weight:600;line-height:1.1;margin-top:22px">Quick Slot Load</div>
|
|
||||||
<hr style="margin-top:4px;margin-bottom:6px" />
|
|
||||||
`;
|
|
||||||
|
|
||||||
for(let i=0;i<slotlabels.length;++i)
|
for(let i=0;i<slotlabels.length;++i)
|
||||||
{
|
{
|
||||||
let testslot = slotlabels[i];
|
let testslot = slotlabels[i];
|
||||||
let entry = "";
|
let entry = "";
|
||||||
if(testslot)
|
if(testslot)
|
||||||
{
|
{
|
||||||
entry = `<div onclick="load_from_slot(`+i+`, true)" class="corpo_leftpanel_btn" type="button">`+testslot+`</div>`;
|
entry = `<div onclick="load_from_slot(`+i+`, true, true)" class="corpo_leftpanel_btn" type="button">`+testslot+`</div>`;
|
||||||
}
|
}
|
||||||
panelitems += entry;
|
panelitems += entry;
|
||||||
}
|
}
|
||||||
|
@ -21128,9 +21459,13 @@ Current version indicated by LITEVER below.
|
||||||
<div class="corpostyle">
|
<div class="corpostyle">
|
||||||
<div id="corpo_leftpannel" class="corpoleftpanel">
|
<div id="corpo_leftpannel" class="corpoleftpanel">
|
||||||
<button title="Hide Corpo Side Panel" class="corpo_leftpanel_close mainnav" onclick="show_corpo_leftpanel(false)">×</button>
|
<button title="Hide Corpo Side Panel" class="corpo_leftpanel_close mainnav" onclick="show_corpo_leftpanel(false)">×</button>
|
||||||
<p id="corpoleftpanelitems" class="corpoleftpanelitems">
|
<div id="corpoleftpanelitems" class="corpoleftpanelitems">
|
||||||
|
<div class="corpoleftpanelitemstopper" id="corpoleftpanelitemstopper"></div>
|
||||||
</p>
|
<div style="padding:2px;font-size:14px;margin-left:8px;font-weight:600;line-height:1.1;margin-top:12px">Quick Slot Load</div>
|
||||||
|
<hr style="margin-top:4px;margin-bottom:6px" />
|
||||||
|
<div class="corpoleftpanelitemsinner" id="corpoleftpanelitemsinner"></div>
|
||||||
|
<div style="margin-top: auto; margin-bottom:2px; width: 230px;"><div onclick="quicksave()" class="corpo_leftpanel_btn" type="button" style="width:110px;padding-left: 44px;display:inline-block;background-image: var(--img_save_mono);">Save</div><div onclick="quickdelete()" class="corpo_leftpanel_btn red" type="button" style="width:110px;padding-left: 44px;display:inline-block;background-image: var(--img_delete);">Delete</div></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button title="Show Corpo Side Panel" class="corpo_leftpanel_open mainnav" onclick="show_corpo_leftpanel(true)"><div class="corpo_arrow_right"></div></button>
|
<button title="Show Corpo Side Panel" class="corpo_leftpanel_open mainnav" onclick="show_corpo_leftpanel(true)"><div class="corpo_arrow_right"></div></button>
|
||||||
<div class="corporightpanel">
|
<div class="corporightpanel">
|
||||||
|
|
|
@ -3220,11 +3220,11 @@ Change Mode<br>
|
||||||
if not title or title=="":
|
if not title or title=="":
|
||||||
title = "Untitled Save"
|
title = "Untitled Save"
|
||||||
storybody = incoming_story.get('data', None) #should be a compressed string
|
storybody = incoming_story.get('data', None) #should be a compressed string
|
||||||
if slotid >= 0 and slotid < net_save_slots: # we shall provide 4 network save slots
|
if slotid >= 0 and slotid < net_save_slots: # we shall provide some fixed network save slots
|
||||||
saveneeded = False
|
saveneeded = False
|
||||||
if storybody and storybody!="":
|
if storybody and storybody!="":
|
||||||
storybody = str(storybody)
|
storybody = str(storybody)
|
||||||
if len(storybody) > (1024*1024*8): #limit story to 8mb
|
if len(storybody) > (1024*1024*10): #limit each story to 10mb
|
||||||
response_code = 400
|
response_code = 400
|
||||||
response_body = (json.dumps({"success":False, "error":"Story is too long!"}).encode())
|
response_body = (json.dumps({"success":False, "error":"Story is too long!"}).encode())
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -3605,7 +3605,11 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
|
||||||
|
|
||||||
// output
|
// output
|
||||||
output_norm = create_tensor(tn(LLM_TENSOR_OUTPUT_NORM, "weight"), {n_embd}, 0);
|
output_norm = create_tensor(tn(LLM_TENSOR_OUTPUT_NORM, "weight"), {n_embd}, 0);
|
||||||
output = create_tensor(tn(LLM_TENSOR_OUTPUT, "weight"), {n_embd, n_vocab}, 0);
|
output = create_tensor(tn(LLM_TENSOR_OUTPUT, "weight"), {n_embd, n_vocab}, TENSOR_NOT_REQUIRED);
|
||||||
|
// if output is NULL, init from the input tok embed
|
||||||
|
if (output == NULL) {
|
||||||
|
output = create_tensor(tn(LLM_TENSOR_TOKEN_EMBD, "weight"), {n_embd, n_vocab}, TENSOR_DUPLICATED);
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < n_layer; ++i) {
|
for (int i = 0; i < n_layer; ++i) {
|
||||||
auto & layer = layers[i];
|
auto & layer = layers[i];
|
||||||
|
@ -4891,7 +4895,7 @@ struct llm_build_deci : public llm_graph_context {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FFN-free layer of Llama-3_1-Nemotron-Ultra-253B
|
// FFN-free layer of Llama-3_1-Nemotron-Ultra-253B
|
||||||
if (n_head == 0 && n_ff == 0) {
|
if (n_ff == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue