Compare commits

..

598 Commits

Author SHA1 Message Date
Cohee
99e3c22311 Refactor firstLoadInit to include initCustomSelectedSamplers and addDebugFunctions 2025-05-11 12:28:33 +03:00
Cohee
09f2b2f731 Handle unknown chat completion sources gracefully by logging an error and returning an empty string 2025-05-11 11:09:15 +03:00
Cohee
fc1020a8e4 Refactor sequence breaker parsing in getTextGenGenerationData function 2025-05-11 11:07:13 +03:00
Cohee
9305c29780 Merge pull request #3986 from 50h100a/pr_xtcdry
Update parameters for Mancer: +XTC, +DRY, -Mirostat
2025-05-11 10:56:31 +03:00
50h100a
2aa5addb1d Mancer parameters:
- Add XTC
- Add DRY
- Remove Mirostat
2025-05-10 19:04:32 -04:00
Cohee
e6530cb22d Install jimp plugins explicitly 2025-05-10 18:19:22 +03:00
Cohee
44b7a09cb6 Prompt Manager: add source display of pulled prompts (#3981)
* Prompt Manager: add source display of pulled prompts

* Fix copilot comments
2025-05-10 16:28:18 +03:00
Cohee
4c56f3068a Merge pull request #3983 from cloak1505/staging 2025-05-10 16:13:36 +03:00
cloak1505
cc75768668 Actual copy and paste
Turns out the doc is already alphabetized but with dead providers moved to the top, so I didn't have to alphabetize the whole list and manually remove the dead ones.
2025-05-10 05:42:15 -05:00
cloak1505
c7963d683f Update and alphabetize OpenRouter providers list 2025-05-09 23:41:19 -05:00
Cohee
b2ed69aac2 Merge pull request #3980 from SillyTavern/fix-lcpp-caption
Fix llama.cpp captioning
2025-05-09 23:29:06 +03:00
Cohee
aef005007f Do not remove data URI prefix from llamacpp caption requests 2025-05-09 23:23:34 +03:00
Cohee
8a4da487dd llamacpp: use generic CC endpoint for captioning 2025-05-09 22:33:25 +03:00
Cohee
c6a64d8526 xAI: fix model not saving to presets 2025-05-09 00:24:36 +03:00
Cohee
104d4ccebc Merge pull request #3971 from SillyTavern/ccllaauuddee
Assorted Claude adjustments
2025-05-09 00:02:30 +03:00
Cohee
596353389b DeepSeek: don't send empty required arrays in tool definitions 2025-05-08 21:22:58 +03:00
Cohee
c1c77a6a60 Claude: add web search tool, adjust prefill voiding
Closes #3968
2025-05-08 20:51:38 +03:00
Cohee
da7f97b663 Claude: "Auto" effort = no thinking 2025-05-08 20:28:35 +03:00
Cohee
b71b94d410 Merge pull request #3964 from SillyTavern/click-to-edit
Decouple "click to edit" from document mode
2025-05-07 23:29:06 +03:00
Cohee
fa8ea7c60d mistral-medium-2505 2025-05-07 20:09:56 +03:00
Cohee
7a4d6ecfde Migrate old preference for "click to edit" setting based on chat display style 2025-05-07 11:12:41 +00:00
Cohee
5c027634ff Merge pull request #3961 from DocShotgun/staging 2025-05-07 00:32:48 +03:00
DocShotgun
3be991591f Remove special handling of nsigma for llama.cpp
* 0 now changed to disable/no-op upstream
2025-05-06 14:11:00 -07:00
Cohee
5e31a21d8d Decouple "click to edit" from document mode 2025-05-06 22:02:20 +03:00
Cohee
0f1bb766f6 Merge pull request #3963 from sirius422/staging
Add support for gemini-2.5-pro-preview-05-06
2025-05-06 19:43:49 +03:00
DocShotgun
4a5d0df92f Translate nsigma 0 to -1 to disable for llama.cpp 2025-05-06 09:31:55 -07:00
sirius422
edb9702055 Add support for gemini-2.5-pro-preview-05-06 2025-05-07 00:29:26 +08:00
DocShotgun
bf8b3b5013 Remove tfs_z alias for llama.cpp
* This sampler is no longer supported in llama.cpp
2025-05-06 00:39:25 -07:00
DocShotgun
bf66a39579 Update llama.cpp textgen settings
* Add min_keep, a llama.cpp-exclusive setting for constraining the effect of truncation samplers
* Enable nsigma for llama.cpp, and add llama.cpp alias top_n_sigma, add nsigma to the llama.cpp sampler order block
* Allow a negative value of nsigma as this represents 'disabled' in llama.cpp (while 0 is deterministic)
* Remove tfs and top_a as these are not supported by llama.cpp (tfs was removed, and top_a was never supported)
* Correct the identification string for typical_p in the llama.cpp sampler order block
* Add penalties to the llama.cpp sampler order block
2025-05-06 00:32:29 -07:00
Cohee
6625e4036e Add clipboard script commands
Closes #3958
2025-05-05 21:58:06 +03:00
Cohee
c626700226 Merge pull request #3955 from SillyTavern/pin-styles
Add style pin feature for greeting messages
2025-05-05 21:09:15 +03:00
Cohee
835c731bcd Merge pull request #3957 from RivelleDays/staging
Update zh-tw.json
2025-05-05 16:44:29 +03:00
Rivelle
78b42905f4 Update zh-tw.json 2025-05-05 21:21:44 +08:00
Rivelle
7b777fb803 Update zh-tw.json 2025-05-05 20:24:12 +08:00
Cohee
fc43ae3891 Merge branch 'staging' into pin-styles 2025-05-04 23:06:19 +03:00
Cohee
df07fa8c94 Merge pull request #3803 from SillyTavern/ffmpeg-videobg
Upload video bg via converter extension
2025-05-04 23:03:19 +03:00
Cohee
573ada296e Merge branch 'staging' into ffmpeg-videobg 2025-05-04 22:05:15 +03:00
Cohee
636ecef28a Merge pull request #3953 from Samueras/release 2025-05-04 20:55:23 +03:00
Samueras
3db2db1c65 Removed Swipe_right from legacy export
Removed Swipe_right from legacy export
2025-05-04 18:20:40 +02:00
Samueras
f0fbd7e3d4 added swipe left and right to st-context
Added swipe_right and swipe_left to st-context as a swipe group.
2025-05-04 18:17:44 +02:00
Samueras
99f47de88b Export Swipe left and right
Exporting the swipe_left and the swipe_right functions
2025-05-04 18:15:28 +02:00
Cohee
ca29de4704 Add style pin feature for greeting messages 2025-05-04 17:48:36 +03:00
Cohee
bb9fe64652 Merge pull request #3930 from Yokayo/staging
Update ru-ru translation
2025-05-04 14:10:12 +03:00
Cohee
4e0685f998 Revert comment 2025-05-04 14:05:44 +03:00
Cohee
bf9ef8fa0f Remove debug logs 2025-05-04 14:00:55 +03:00
Samueras
3165537ce8 Update script.js
Added trailing comma
2025-05-04 12:12:50 +02:00
Samueras
5f79c0c262 Export swipe_right in public/script.js 2025-05-04 12:05:45 +02:00
Samueras
27f2fac916 Export swipe_right in public/script.js and add swipe_right to getContext in st-context.js 2025-05-04 11:59:17 +02:00
Cohee
1e57342639 Use objects for pagination select creation 2025-05-04 12:56:23 +03:00
Cohee
b25322b844 Merge pull request #3933 from SillyTavern/feat/ext-installer-branch
Add branch selection on extension installer
2025-05-04 12:35:05 +03:00
Cohee
a122109e0c Add new model option 'embed-v4.0' to Cohere vectorization settings
Closes #3951
2025-05-04 12:26:44 +03:00
Yokayo
b9383ace1e eslint fixes 2 2025-05-03 18:16:02 +07:00
Yokayo
e27fca6628 eslint fixes 2025-05-03 18:14:26 +07:00
Yokayo
1822c4f91b More work on tl 2025-05-03 18:12:18 +07:00
Cohee
ec2876aefe Merge pull request #3941 from cloak1505/meth-patch
Remove Pygmalion instruct template (duplicate of Metharme)
2025-05-03 01:25:48 +03:00
Cohee
5fa64361c2 Merge pull request #3948 from InspectorCaracal/patch-3
Adds a check for jailbreaks existing in new TC PHI
2025-05-03 01:19:16 +03:00
Cohee
07a6017443 Remove redundant condition 2025-05-03 01:18:58 +03:00
InspectorCaracal
b8f7675d8c don't inject empty jb 2025-05-02 14:57:51 -06:00
Cohee
becaee8f35 Merge pull request #3946 from InspectorCaracal/add-sys-name
Add a named argument of "name" to the `/sys` slash command
2025-05-02 00:58:37 +03:00
Cal
c677f0324a Add argument to command 2025-05-01 15:16:51 -06:00
Cohee
a089727591 Extract templates, replace pagination format 2025-05-01 17:46:02 +03:00
Cohee
62b02bec3f Merge pull request #3940 from wickedcode01/bug-fixed
Fix the issue where deleting files on Windows may cause the application to crash.
2025-05-01 17:00:11 +03:00
Cohee
60232c73cc Merge pull request #3942 from huisman/update_ollama_github
Update links to ollama gihub
2025-05-01 15:03:02 +03:00
huisman
2301b5324a Update ollama links to current ollama github url 2025-05-01 11:29:39 +00:00
cloak1505
db2971c82d Remove Pygmalion instruct template (duplicate of Metharme)
ST already applies user sequence as stop string, so Pygmalion's <|user|> stop_sequence is meaningless.
2025-05-01 03:24:28 -05:00
wickedcode
d3bb625efe fix: recommend to use unlinkSync instead of rmSync, which has a better compatibility handling non-English characters 2025-05-01 03:09:25 -04:00
wickedcode
7431b0e8aa fix: replace rmSync with unlinkSync to resolve an issue deleting files with non-English characters in their names 2025-05-01 02:23:19 -04:00
Cohee
2c0dcdc449 Refactor git operations to use baseDir 2025-04-30 23:54:14 +03:00
Cohee
63b48b9211 Log a warning on an unknown input type 2025-04-30 22:58:43 +03:00
Cohee
ef59afcec1 Specify tag support in messaging 2025-04-30 22:56:35 +03:00
Cohee
9cff3861b4 Fix path.join to extension 2025-04-30 22:41:50 +03:00
Cohee
757b7d5371 Merge branch 'staging' into feat/ext-installer-branch 2025-04-30 22:38:55 +03:00
Cohee
b3a3b9d347 Fix npm audit in tests 2025-04-30 22:36:24 +03:00
Cohee
999a43b2e5 Merge branch 'staging' into feat/ext-installer-branch 2025-04-30 22:35:01 +03:00
Cohee
048ea943bc Merge pull request #3926 from SillyTavern/tc-phi
TC sysprompt: Add Post-History Instructions control
2025-04-30 22:34:22 +03:00
Cohee
511ae39b0b Move margin class 2025-04-30 22:23:12 +03:00
Cohee
63e7139a81 Clean-up i18n 2025-04-30 22:00:09 +03:00
Cohee
8dc7aa0c20 Add post_history field to default prompts 2025-04-30 21:07:06 +03:00
Cohee
8c42de7565 Merge branch 'staging' into tc-phi 2025-04-30 21:04:36 +03:00
Cohee
7deef1aa12 Merge pull request #3937 from Ristellise/staging
Check for `error` as well when parsing streaming responses
2025-04-30 16:31:05 +03:00
Shinon
98e96b8c07 Check for error as well when parsing streaming responses 2025-04-30 21:23:13 +08:00
Cohee
a5d63b064a Merge pull request #3928 from BismuthGlass/feature/regex-test-match
Add both `test` and `match` regex commands
2025-04-29 21:44:17 +03:00
Cohee
6aeced98a6 Prefer const. I love const 2025-04-29 21:22:51 +03:00
Crow
6cb1eb3fe6 Change return to empty string on no single match 2025-04-29 15:21:45 +01:00
Yokayo
e4d389a5b6 eslint fix 2025-04-29 17:24:49 +07:00
Yokayo
7eb23a2fcc Work on tl 2025-04-29 17:23:18 +07:00
Yokayo
db67633af6 Merge branch 'SillyTavern:staging' into staging 2025-04-29 17:16:15 +07:00
Crow
0cd0ce2374 Fix example formatting on /replace 2025-04-29 06:38:30 +01:00
Crow
5ddc8f17a0 Fix pattern checking on /replace 2025-04-29 06:37:48 +01:00
Crow
1c40ea10f4 Format examples correctly 2025-04-29 06:37:08 +01:00
Crow
729830c2fc Validate pattern 2025-04-29 06:19:59 +01:00
Cohee
71e92af09d Fix console verbiage for global extensions 2025-04-29 02:02:20 +03:00
Cohee
3340009a29 Add branch management functionality for extensions 2025-04-29 02:00:25 +03:00
Cohee
310b0f30cd Add branch selection on extension installer
Closes #3865
2025-04-28 22:53:22 +03:00
Cohee
0ca4cc08bb Sync OpenRouter providers list 2025-04-28 21:57:47 +03:00
Yokayo
666d5712c7 A bit more clarity 2025-04-28 19:03:18 +07:00
Yokayo
c453e94486 eslint fixes #2 2025-04-28 18:56:43 +07:00
Yokayo
f0d01d35a6 eslint fixes 2025-04-28 18:55:10 +07:00
Yokayo
11908f7363 Work on tl 2025-04-28 18:45:16 +07:00
Crow
d5002863e0 Add both test and match regex commands
These commands match the behavior of the javascript `Regex.test()`
and `String.match()` / `String.matchAll()` functions.
2025-04-28 11:13:48 +01:00
Cohee
775ae0f557 TC sysprompt: Add Post-History Instructions control
Closes #3920
2025-04-28 00:14:57 +03:00
Cohee
97e1f482c1 Add class to AdvancedFormatting 2025-04-27 23:19:21 +03:00
Cohee
05daddb60c Fix KoboldCpp saved vectors retrieval 2025-04-27 23:18:39 +03:00
Cohee
ed895b7c3e Merge pull request #3889 from BismuthGlass/feature/wi_global_matches
World Info chat-independent data matching
2025-04-27 21:00:57 +03:00
Cohee
6fb664fe24 Merge pull request #3919 from cloak1505/gemini-patch
Prune Google models
2025-04-27 20:36:47 +03:00
Cohee
0f8b610454 Prettify captioning model redirects 2025-04-27 20:36:14 +03:00
cloak1505
d8bc38c0b0 Make the redirection note slightly less eye bleeding 2025-04-27 12:31:19 -05:00
Cohee
54e880ef32 Align matching sources in two columns 2025-04-27 19:35:17 +03:00
Cohee
28ca8176f8 Merge pull request #3857 from wrvsrx/allow-readonly-install
Allow read-only installation
2025-04-27 19:12:12 +03:00
Cohee
0aad86c0b6 Add /colab to .dockerignore and .npmignore 2025-04-27 19:07:52 +03:00
Cohee
12badb3d67 Fix Docker build 2025-04-27 18:29:27 +03:00
Cohee
31cc05ae46 Move setPermissionsSync to util 2025-04-27 18:23:57 +03:00
Cohee
3e0697b7c7 Lintfix 2025-04-27 15:16:46 +03:00
Cohee
7c54a74ffa Add another ugli ahh list for no grounding models 2025-04-27 15:11:23 +03:00
Cohee
15daf19a08 Streaming endpoint is no longer busted
But still ass
2025-04-27 14:58:23 +03:00
Cohee
61c7f53d22 Move endpoint version to conifg. Refactor ugli model lists 2025-04-27 14:56:51 +03:00
Cohee
10f51b703b Merge pull request #3921 from A1KESH1/Update-zh-cn-translations
Update zh-cn translation
2025-04-27 14:06:17 +03:00
爱克狮
dd1c506694 Update zh-cn.json 2025-04-27 16:50:42 +08:00
爱克狮
9c9ed1593a Update zh-cn translation 2025-04-27 16:44:31 +08:00
cloak1505
acc05e633d gemini-exp to max_1mil context 2025-04-26 20:38:35 -05:00
cloak1505
4599797baf Revert responsive Google models per Cohee's executive order
I was wrong on a few models. At least Gemini still fits on a 1440p monitor.
2025-04-26 20:04:50 -05:00
cloak1505
340be02777 Default HARM_CATEGORY_CIVIC_INTEGRITY to OFF
All models support either all BLOCK_NONE, or all OFF.
2025-04-26 18:43:56 -05:00
Cohee
3e11a90b3c Add message and example counts to itemization templates 2025-04-27 02:26:43 +03:00
cloak1505
fc09be75a6 Almost done with Google pruning
* Put back 1.5-latest
* Put back missing flash 002 (same deal about safetySettings like pro 001 vs 002)
* Remove dead models and gemma from BLOCK_NONE check
2025-04-26 17:54:34 -05:00
cloak1505
af64ac001a Update caption_multimodal_model
And fix optgroup typo
2025-04-26 14:33:47 -05:00
cloak1505
c6a047651b Add 'learn' to visionSupportedModels
Also remove dead gemini-exp models
2025-04-26 14:23:10 -05:00
cloak1505
023976444f Oops, gemini-1.5-pro-001 is still live 2025-04-26 14:04:31 -05:00
cloak1505
05e60ff00b Exclude gemini-2.0-flash-lite from web search 2025-04-26 13:04:00 -05:00
cloak1505
a764e5ce54 Exclude LearnLM from web search 2025-04-26 12:51:26 -05:00
cloak1505
01d52f140a Update "Use system prompt" 2025-04-26 12:19:06 -05:00
cloak1505
28d42e5200 Prune Google models 2025-04-26 11:39:44 -05:00
Cohee
37c97db969 Merge pull request #3916 from SillyTavern/fix-instruct-regex
Check instruct activation regex before selecting context template
2025-04-26 14:25:35 +03:00
Cohee
84f339cdd6 Merge pull request #3913 from SillyTavern/fix-continue-suffix
Fix continuation suffix trimming
2025-04-26 01:47:52 +03:00
Cohee
a927ab557a Check instruct activation regex before selecting bound context template match 2025-04-26 01:47:07 +03:00
Cohee
6848b38bb7 Merge pull request #3900 from equal-l2/vision-cleanup
Vision cleanup
2025-04-26 01:21:42 +03:00
Cohee
e621f0d967 Remove model name check in convertGooglePrompt 2025-04-26 00:34:21 +03:00
Cohee
76aa17e08f Merge pull request #3911 from cloak1505/staging
Normalize instruct names behavior and repair Lightning 1.1's system prompt
2025-04-26 00:10:01 +03:00
cloak1505
321efa354a Update index.json 2025-04-25 15:35:44 -05:00
cloak1505
82c86c9ce6 Clean Lightning 1.1 2025-04-25 14:57:42 -05:00
Cohee
dafc4e8098 Merge pull request #3915 from SillyTavern/feat/refactor-wi-init
Refactor WI init to init function for more consistent startup
2025-04-25 22:28:55 +03:00
Cohee
005a495e96 Move config migration from post-install to src 2025-04-25 22:22:44 +03:00
Wolfsblvt
6eb89bd21c fix some linting 2025-04-25 20:58:28 +02:00
Wolfsblvt
05c010223b Move function above init
Well, I like that init is last in nearly all files...
2025-04-25 20:49:47 +02:00
Wolfsblvt
a667e14c8b Make global WI placeholder translatable 2025-04-25 20:45:13 +02:00
Cohee
cb32fb354c Merge pull request #3914 from cloak1505/google-patch
Print full Google response
2025-04-25 21:45:05 +03:00
Wolfsblvt
470a0964f7 Initialize world info during app startup
Moves world info event binding from jQuery document-ready handler
to explicit initialization function for better control flow
Ensures world info setup occurs after core dependencies are loaded
2025-04-25 20:43:13 +02:00
Cohee
776d220374 Why was it a warning level 2025-04-25 21:40:59 +03:00
cloak1505
93ea8b6a22 ESLint woes 2025-04-25 13:37:56 -05:00
cloak1505
ea7ff5b1c2 inspect depth 5 2025-04-25 13:22:33 -05:00
cloak1505
bd1d393e5d Print full Google response 2025-04-25 13:05:14 -05:00
Cohee
421c924c22 Do not append empty joiners 2025-04-25 21:01:53 +03:00
Cohee
5c4794812f Move creatorNotes macro init 2025-04-25 20:54:24 +03:00
Cohee
b3e51c8b1c Fix continuation suffix trimming
Fixes #3901
2025-04-25 20:20:53 +03:00
Cohee
74f441d0ba Merge pull request #3912 from kallewoof/202504-glm-4-sop-nl
trivial: remove extraneous \n after sop token
2025-04-25 19:14:56 +03:00
Karl-Johan Alm
cf7edd99a7 trivial: remove extraneous \n after sop token 2025-04-26 00:08:02 +09:00
cloak1505
2151ae7aaa Normalize instruct "names_behavior" to "force" for those that don't require "none" or "always 2025-04-25 09:40:49 -05:00
cloak1505
81fec97f54 Repair Lightning 1.1's system prompt 2025-04-25 09:22:10 -05:00
Cohee
4ce7e97ab3 Merge pull request #3908 from cloak1505/staging
Remove last message role restriction for Cohere
2025-04-25 13:27:59 +03:00
Cohee
abb6706601 Merge pull request #3906 from kallewoof/202504-glm-4-presets
chat preset: GLM-4
2025-04-25 13:25:08 +03:00
Karl-Johan Alm
2d366117dd chat preset: GLM-4 2025-04-25 15:22:51 +09:00
Crow
b233cc2480 Add extra field docs 2025-04-25 03:23:14 +01:00
Crow
bb9f765ce3 Add pointer cursor to Additional Matching Sources drawer header 2025-04-25 03:17:13 +01:00
Crow
a3d7b540c7 Change field names to match required fields 2025-04-25 03:11:36 +01:00
cloak1505
a4442899f6 Remove last message role restriction for Cohere 2025-04-24 19:35:05 -05:00
Crow
b5280bbfc7 Add type data for v2DataWorldInfoEntryExtensionInfos match fields 2025-04-25 00:51:47 +01:00
Crow
9248bf1f63 Add creatorNotes macro expansion 2025-04-25 00:49:56 +01:00
Crow
6ddd395211 Move new globalScanData args to the end 2025-04-25 00:49:12 +01:00
Crow
178391e450 Add i18n for Additional Matching Sources header 2025-04-24 23:25:35 +01:00
Crow
f8b9c1f9f5 Move matching sources to bottom of entry editor 2025-04-24 20:30:13 +01:00
Crow
994f51c18e Add back chat param 2025-04-24 20:22:47 +01:00
Crow
5504021374 Add missing machCharacterPersonality to World Info Definition 2025-04-24 20:21:52 +01:00
Crow
4d483e7814 Change handleOptionalSelect name 2025-04-24 20:21:24 +01:00
Crow
7b1baed0d7 Revert world_entry_form_control css class changes 2025-04-24 20:16:10 +01:00
Crow
d7780ee4bb Fix character card lorebook imports / exports 2025-04-24 20:13:18 +01:00
Crow
be591b2494 Revert original settings to their former place 2025-04-24 19:15:32 +01:00
equal-l2
3fd12b28dc Merge branch 'staging' into vision-cleanup 2025-04-25 01:49:40 +09:00
equal-l2
903839c9c5 Use array syntax for excluding non-vision OpenAI models
Co-authored-by: Wolfsblvt <wolfsblvt@gmail.com>
2025-04-25 01:40:13 +09:00
Cohee
c16be2ec0e Change UI for failed integrity checks 2025-04-24 15:20:43 +00:00
Cohee
5b031ed5b4 Merge pull request #3902 from SillyTavern/openrouter-reasoning-effort
Add reasoning effort control for CC OpenRouter
2025-04-23 22:08:32 +03:00
Cohee
5241b22a73 Add reasoning effort control for CC OpenRouter
Closes #3890
2025-04-23 21:38:31 +03:00
Cohee
01c6544e22 Move server-main to /src 2025-04-23 20:50:46 +03:00
Cohee
d97aa0a270 CONFIG_FILE => CONFIG_PATH 2025-04-23 20:46:36 +03:00
Cohee
cfc41163e2 Merge pull request #3893 from SillyTavern/gemini-2.5-thinking
Thinking Budget 2.5: Electric Googaloo
2025-04-23 20:36:02 +03:00
Cohee
50cdaadba0 Only verify parts length 2025-04-23 20:05:28 +03:00
Cohee
cf44ac8c1f Don't add sys instruction if empty 2025-04-23 20:04:00 +03:00
equal-l2
3e8f9e2680 Fix for eslint 2025-04-24 00:02:43 +09:00
Cohee
5509b088e2 Add a blurb for OpenAI reasoning effort 2025-04-23 14:57:14 +00:00
Cohee
24f6b11cb9 Auto == medium for Claude 2025-04-23 14:54:54 +00:00
Cohee
bdf4241d18 Default to "Auto" reasoning effort 2025-04-23 14:54:34 +00:00
Cohee
d6c4b6f419 Google: Multipart system instruction 2025-04-23 14:50:01 +00:00
equal-l2
44c5ce9a30 Exclude o1-mini from vision supported models 2025-04-23 23:45:58 +09:00
equal-l2
65aec223a3 Vision models clean-up 2025-04-23 23:45:58 +09:00
Cohee
6878c79fc8 Prevent send on Enter when IME composing
Fixes #2398
2025-04-23 09:26:15 +00:00
wrvsrx
26a520af10 Support specifing config.yaml in cli 2025-04-23 11:18:30 +08:00
Cohee
f81bbbea08 Fix effort blurb title 2025-04-23 01:02:28 +03:00
Cohee
f61d600c05 ok buddy claude 2025-04-23 00:59:12 +03:00
Cohee
e43023fde7 Cut option labels 2025-04-23 00:54:03 +03:00
Cohee
266fa5cbf8 Make auto (undefined) actually work 2025-04-23 00:45:49 +03:00
Cohee
5c8b8f4b98 Refactor getReasoningEffort 2025-04-23 00:44:14 +03:00
Cohee
bee3cee740 Go team dropdown 2025-04-23 00:38:28 +03:00
Cohee
0520f3ccf4 Fix gpt-4o-mini snapshots 2025-04-22 23:28:49 +03:00
Cohee
fe4f0c2ea6 Merge pull request #3898 from awaae001/staging
feat(slash-commands): Add /goto-floor command and implement message highlighting
2025-04-22 22:37:08 +03:00
Cohee
870abe0776 Code clean-up 2025-04-22 22:36:01 +03:00
awaae001
b39b7998ce refactor(slash-commands): 优化消息定位和滚动效果 2025-04-23 01:34:29 +08:00
awaae001
59ebf2e5b8 refactor(slash-commands): 重命名 goto-floor 命令为 chat-jump
- 将命令名称从 'goto-floor' 修改为 'chat-jump',以更好地反映其功能
2025-04-23 01:12:57 +08:00
awaae001
ee11f021eb refactor(slash-commands): 优化 /goto-floor 命令并添加高亮功能
- 重新组织消息加载和滚动逻辑,提高命令成功率
- 添加消息元素高亮功能,使用 flashHighlight 或临时 CSS 类
2025-04-23 01:04:52 +08:00
awaae001
ceeaeea123 feat(slash-commands): 优化 /goto-floor 命令并加载所有消息
- 在执行 /goto-floor 命令前加载所有消息,确保目标元素存在
- 添加加载消息的步骤,解决因懒加载导致的元素找不到问题
2025-04-23 00:45:05 +08:00
awaae001
6d0318eb36 refactor(slash-commands): 优化 /goto-floor 命令的代码格式和注释
- 修正 EDLint 标记错误
2025-04-23 00:05:35 +08:00
awaae001
485d07b91f feat(slash-commands): 添加 /goto-floor 命令并实现消息高亮
- 新增 /goto-floor 命令,允许用户滚动到指定的消息索引
- 实现消息高亮功能,滚动到指定消息后进行突出显示
- 添加相关的 CSS 样式,确保高亮效果在不同浏览器中兼容
2025-04-22 23:51:40 +08:00
Cohee
4bcfe6c2be 0.7 is fine too 2025-04-21 21:21:41 +03:00
Cohee
b9a6361662 Merge pull request #3887 from Erquint/staging
Make scrollbars make sense.
2025-04-21 21:19:49 +03:00
Cohee
a95056db40 Thinking Budget 2.5: Electric Googaloo 2025-04-21 21:10:40 +03:00
Cohee
361b557509 Remove padding from enlarged image container 2025-04-21 19:51:30 +03:00
Cohee
6ace6a07d7 Revert font-size on html, increase sb width 2025-04-21 19:45:08 +03:00
Cohee
689637b36c Merge pull request #3891 from SillyTavern/staging
Staging
2025-04-21 18:51:57 +03:00
Cohee
d726aa5563 Update release version 2025-04-21 18:09:17 +03:00
Cohee
98b12e2bba Make rem units scale with the font size slider 2025-04-21 17:46:44 +03:00
Gness Erquint
320b188d47 Using em instead of rem for scrollbar width. 2025-04-21 17:39:24 +03:00
Gness Erquint
2fa1c69f3e Show scrollbar track only when hovered. 2025-04-21 17:34:55 +03:00
Crow
4db07402c4 Change double quotes to single quotes 2025-04-20 23:26:47 +01:00
Crow
b38673a5cd Fix matching issues for depth prompt 2025-04-20 23:15:30 +01:00
Crow
14582e67a0 Fix world info entry saves for match fields 2025-04-20 22:56:06 +01:00
Crow
2683549be8 Fix save bug 2025-04-20 22:40:44 +01:00
Cohee
b3e012bea3 Merge pull request #3888 from KTibow/patch-1
change language when context size exceeded
2025-04-21 00:26:40 +03:00
Kendell R
dd3d3226eb update per cohee recommendations 2025-04-20 14:20:13 -07:00
Kendell R
c63ef20919 change language when context size exceeded 2025-04-20 13:58:11 -07:00
Crow
f1b6a329c9 Remove newlines 2025-04-20 21:57:33 +01:00
Crow
a261e87d4c Pass global scan data to WI prompt generator 2025-04-20 21:56:01 +01:00
Crow
50379f6b6e Change character note to character depth prompt 2025-04-20 21:42:48 +01:00
Crow
d2ffefd24c Implement WI matching on global data 2025-04-20 21:09:19 +01:00
Crow
aa75fe2877 Revert global WI settings changes 2025-04-20 21:09:19 +01:00
Crow
b685c4f5bf Change match options to checkboxes 2025-04-20 21:09:19 +01:00
Crow
7748c315d7 Add WIGlobalScanData type 2025-04-20 21:09:19 +01:00
Crow
349d46d74a Change matchCreatorNotes name 2025-04-20 21:09:19 +01:00
Crow
8deaefc3a6 Fix field names 2025-04-20 21:09:19 +01:00
Crow
297cfe3098 Change matchCharacterMetadata to matchCreatorsNotes 2025-04-20 21:09:19 +01:00
Crow
750e8c89a7 Add WIEntry support for new match options 2025-04-20 21:09:19 +01:00
Crow
5bed367a32 Add controls for different WI matching targets
To accomodate new settings, the WI Entry panels were reworked
slightly to add a drawer. Both Global and Entry settings are
present.
2025-04-20 21:09:19 +01:00
Gness Erquint
7be1b039ac Make scrollbars make sense. 2025-04-20 22:44:33 +03:00
Cohee
fc892b4514 Merge pull request #3884 from Cyberes/improve-generic-import
downloadGenericPng() handle missing file PNG extension
2025-04-19 22:44:19 +03:00
Cohee
afe29c61cc Use getHostFromUrl for error log 2025-04-19 22:43:16 +03:00
Cohee
c28d0dec79 Merge pull request #3885 from Cyberes/whitelist-import-char-archive
add char-archive to whitelistImportDomains
2025-04-19 22:41:46 +03:00
Cohee
7f22def794 Merge pull request #3881 from DreamGenX/dg_lucid
DreamGen Lucid
2025-04-19 22:01:37 +03:00
Cyberes
13099c43a9 add char-archive to whitelistImportDomains 2025-04-19 12:30:14 -06:00
Cyberes
1a1464800f downloadGenericPng() handle missing file PNG extension, log generic import url, add error message for when generic import site is not whitelisted 2025-04-19 12:22:43 -06:00
DreamGenX
21f98f11e5 DreamGen Lucid 2025-04-19 15:18:06 +02:00
DreamGenX
dc6407ee8f DreamGen Lucid 2025-04-19 15:04:00 +02:00
Cohee
586ce36167 Merge pull request #3868 from YunZLu/staging
Fix Edge Browser TTS Compatibility
2025-04-19 01:15:14 +03:00
Cohee
3ba7291c35 Merge pull request #3873 from Teashrock/staging
Implemented /getglobalbooks STScript command
2025-04-19 01:05:43 +03:00
Cohee
75d0cf828a Fix callback return types 2025-04-19 01:05:14 +03:00
Cohee
9d8283e4c7 Fix assets_menu selector 2025-04-18 22:42:12 +03:00
Cohee
352a8c3c97 Fix TTS provider settings
Fixes #3877
2025-04-18 22:03:17 +03:00
Teashrock
e3f5949cc1 Implemented /getglobalbooks STScript command 2025-04-18 12:32:52 +03:00
Cohee
41e6161b1d Merge pull request #3870 from DAurielS/2.5-flash
Add Gemini 2.5 Flash Preview to Model List (Makersuite)
2025-04-18 12:02:43 +03:00
Daryl
7ef9ba4f03 Added support for system instructions for gemini 2.5 flash 2025-04-17 17:49:52 -04:00
Daryl
e0b7c9ef4c Fixed image viewing capabilities and added option for caption extension 2025-04-17 17:34:35 -04:00
Daryl
53dd3aed4e Cleaning up and checking for vision support 2025-04-17 16:48:27 -04:00
Daryl
c89c1beffd Added support for Gemini 2.5 Flash Preview 04/17 from Google AI Studio 2025-04-17 16:18:34 -04:00
YunZLu
41c2dd16f2 fix(eslint): resolve no-trailing-spaces error 2025-04-18 04:12:37 +08:00
YunZLu
d7cc70256a cleaned all redundant comments 2025-04-18 03:58:04 +08:00
Cohee
8f63edfd30 Fix handling of text parts in convertGooglePrompt function
Fixes #3855
2025-04-17 21:23:58 +03:00
Cohee
dfd78077ec Prevent fetch response status forwarding
Fixes #3864
2025-04-17 13:39:09 +00:00
YunZLu
d511875db9 Fix Edge Browser TTS Compatibility
Edge-compatible fallback for empty Web Speech voice lists
2025-04-17 19:46:49 +08:00
Cohee
7b2f1f7c7a Add o3 and o4-mini 2025-04-16 23:12:40 +03:00
Cohee
ead05934a0 CI: Fix eslint checkout step to use pull request head SHA and repository 2025-04-16 21:44:21 +03:00
Cohee
722b0698e9 Fix reasoning content bleeding into multi-swipes 2025-04-16 21:35:35 +03:00
Cohee
8aa6350c31 Merge pull request #3861 from BismuthGlass/feature/fix-nested-drawers
Fix nested inline-drawer behavior
2025-04-16 21:26:09 +03:00
Subwolf
c3717ff06a Merge pull request #3852 from subzero5544/xAI-grok-reverse-proxy-testing
Adding reverse proxy support to xai chat completion
2025-04-16 21:14:38 +03:00
Crow
3be02b7217 Fix nested inline-drawer behavior 2025-04-16 18:26:42 +01:00
Cohee
8e829c900b Merge pull request #3858 from pl752/staging
Added option to use secondary API URL in vector extension
2025-04-16 20:02:47 +03:00
pl752
07fb92b37d Added vector secondary url placeholder example 2025-04-16 17:39:29 +05:00
pl752
f8bccb472f Adjusted naming and validation 2025-04-16 17:34:58 +05:00
pl752
bfe50403af Forgot semicolons 2025-04-16 16:45:01 +05:00
pl752
5cf3198da1 Added option to use secondary API URL in vector extension 2025-04-16 16:04:33 +05:00
wrvsrx
bf97686dfc Allow read-only installation
Fix #3453.

Thanks to #3499, #3500 and #3521, most of the obstacles to read-only installation have been resolved. This PR addresses the final piece, ensuring that SillyTavern no longer changes directories to `serverDirectory` and outputs files there. Instead, it outputs or copies necessary files to the directory where it is being run. Now, `serverDirectory` is read-only for SillyTavern (i.e., SillyTavern will not attempt to modify `serverDirectory`). Additionally, this PR sets the permissions for copied `default-user` files to be writable, so even if SillyTavern is installed as read-only, the copied `default-user` folder can still be modified.
2025-04-16 09:52:08 +08:00
Cohee
5510e6da31 Enable multi-swipe for xAI 2025-04-14 22:36:56 +03:00
Cohee
36e3627705 gpt-4.1 2025-04-14 20:54:18 +03:00
Cohee
0895bc6c1d Replace getExtensionPromptMaxDepth with a constant 2025-04-14 09:57:10 +03:00
Cohee
78bda9954d Increase maximum injection depth and WI order (#3800) 2025-04-13 21:31:57 +03:00
Cohee
57d30dae59 Merge pull request #3846 from invisietch/staging
chore: add llama 4 chat templates & separate system from user role in chat template for llama 3
2025-04-13 19:22:25 +03:00
invisietch
897632b583 fix: system prompt not the same as user prompt for L3/4 2025-04-13 15:12:09 +01:00
invisietch
6f05c087b9 chore: update index 2025-04-13 14:26:20 +01:00
invisietch
fc9b2173c0 fix: add <|begin_of_text|> to story string 2025-04-13 14:14:43 +01:00
invisietch
61ca7775d2 fix: start/end header tags 2025-04-13 14:09:54 +01:00
invisietch
f95077ac9f chore: add llama 4 chat templates 2025-04-13 14:04:52 +01:00
Cohee
22f1aee70b Add web search fee notice for OpenRouter
Closes #3833
2025-04-13 14:15:49 +03:00
Cohee
35395fcb39 Increase unlocked slider limits 2025-04-13 13:35:50 +03:00
Cohee
4dfc33b2a0 Merge pull request #3839 from SillyTavern/gork-ai
xAI grok
2025-04-13 13:28:35 +03:00
Cohee
5eeba8894e Fix xAI example messages conversion 2025-04-12 14:14:57 +03:00
Cohee
91fc50b82d Merge branch 'staging' into gork-ai 2025-04-11 21:15:54 +03:00
Cohee
2982d7af52 Merge pull request #3838 from bmen25124/custom_req_proxy
Added proxy support to ChatCompletionService
2025-04-11 21:14:26 +03:00
Cohee
93acbcaa76 Merge pull request #3836 from Erquint/staging
Enable image inlining for visual models when connected to Mistral AI Le Platforme.
2025-04-11 21:10:27 +03:00
Cohee
1f27a39f29 Refactor mistral max context 2025-04-11 21:09:06 +03:00
Cohee
70d65f2d05 Remove tools from grok-vision requests 2025-04-11 20:41:20 +03:00
Cohee
173207ec54 Fix Together image models listing 2025-04-11 20:36:28 +03:00
Cohee
0c4c86ef06 Add xAI for image generation extension 2025-04-11 20:32:06 +03:00
Cohee
c1544fb60c Add logo 2025-04-11 20:06:04 +03:00
Cohee
6adce75933 Remove penalties from 3-mini requests 2025-04-11 20:02:42 +03:00
Cohee
30a9fa2b9d Fix bad copy paste 2025-04-11 19:53:34 +03:00
bmen25124
fc5e0563ba Added ability to override request payload 2025-04-11 19:07:00 +03:00
Cohee
17cdc78a91 Add xAI for image captioning 2025-04-11 19:05:03 +03:00
bmen25124
4736f533a5 Added proxy support to ChatCompletionService 2025-04-11 19:04:32 +03:00
Gness Erquint
1d2122b867 Correct editing mistake in "Set correct Mistral AI token context limits." 2025-04-11 18:01:42 +03:00
Gness Erquint
2040c43371 Revert "Powers of 2 for token context limits. No -1 offset."
This reverts commit 2d77fb3e30.
2025-04-11 17:58:39 +03:00
Gness Erquint
2d77fb3e30 Powers of 2 for token context limits. No -1 offset. 2025-04-11 17:40:53 +03:00
Gness Erquint
0c4b0cfb03 Set correct Mistral AI token context limits. 2025-04-11 17:20:39 +03:00
Cohee
c0228861e5 Merge pull request #3837 from Dakraid/chore/update-fal-filter-openrouter-providers
Update FAL.AI model filter and OpenRouter Providers
2025-04-11 15:15:59 +03:00
Cohee
797de862cf Fix linter 2025-04-11 15:15:29 +03:00
Kristian Schlikow
e062a33f56 Use the proper quotes 2025-04-11 12:14:15 +00:00
Kristian Schlikow
f238e58731 Remove unnecessary new line 2025-04-11 12:12:14 +00:00
Kristian Schlikow
c5ebe4b4b1 Update the model filter for FAL.AI and update the list of providers for OpenRouter 2025-04-11 12:09:13 +00:00
Gness Erquint
43caa0c6d4 Enable image inlining for visual models when connected to Mistral AI Le Platforme. 2025-04-11 11:09:10 +03:00
Cohee
1c52099ed6 Add xAI as chat completion source 2025-04-10 22:59:10 +03:00
Cohee
c3b1573c91 Force resave CC preset after renaming
Fixes #3828
2025-04-09 22:09:10 +03:00
Cohee
820f4439ad Exclude .ts files from PR lint check 2025-04-09 21:58:32 +03:00
Cohee
491752599c Localize messages 2025-04-09 21:36:00 +03:00
Cohee
471004b828 Skill issue 2025-04-09 19:57:07 +03:00
Cohee
e9178e52eb Update upload to use fetch 2025-04-09 19:45:33 +03:00
Cohee
2fa6a11650 Merge branch 'staging' into ffmpeg-videobg 2025-04-09 19:37:11 +03:00
Cohee
f302c67b95 Merge pull request #3827 from SillyTavern/fix/wi-rename-same-name
Prevent similarily-ish world info, preset and chat file renames (preventing data loss on on case-insensitive systems)
2025-04-09 19:35:16 +03:00
Cohee
c522baf4f7 Make texts translatable 2025-04-09 19:18:05 +03:00
Wolfsblvt
ceceb8f3f0 Change same name logs to toast 2025-04-09 01:21:20 +02:00
Cohee
b5f430de6f Merge pull request #3826 from SillyTavern/custom-png-encode
Replace png encode dependency with optimized CRC32 calculation
2025-04-08 22:49:35 +03:00
Wolfsblvt
47652d7fe9 Prevent similarily-ish chat name renames 2025-04-08 21:16:11 +02:00
Wolfsblvt
55ed5b325c Prevent similarily-ish preset renames
Adds validation to prevent renaming presets to names that are identical when ignoring case and accents
Avoids accidental duplicates by ensuring meaningful name changes during preset renames
2025-04-08 21:14:09 +02:00
Wolfsblvt
6895892d5a Prevent similarily-ish world info renames
Adds validation to block renaming world info entries when new name matches existing name after ignoring case and accents

This avoids unnecessary operations and potential data duplication issues caused by superficial name changes that don't meaningfully differ in normalized form
2025-04-08 20:58:22 +02:00
Murad "Gness Erquint" Beybalaev
d3ab02df5a "Zoom right in" tooltip for media embeds. (#3804)
* "Zoom right in" tooltip for media embeds.

* Let's not say "right in" in the expand&zoom tooltip then.

Maintainer request in PR: https://github.com/SillyTavern/SillyTavern/pull/3804#discussion_r2032999775

* Update public/index.html

Yeah

Co-authored-by: Murad "Gness Erquint" Beybalaev <gness.na@gmail.com>

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-04-08 21:51:47 +03:00
Cohee
ba397fa70a Replace png encode dependency with optimized CRC32 calculation 2025-04-08 21:50:33 +03:00
Cohee
5929d5c0e4 Groq: sync supported models 2025-04-06 23:08:31 +03:00
Cohee
965c2ee29a Merge pull request #3819 from SillyTavern/feat/reasoning-set-collapse-state
Add collapse argument to `/reasoning-set` slash command
2025-04-06 23:01:23 +03:00
Wolfsblvt
6c8714c016 Add collapse argument to /reasoning-set command
Allows controlling visibility of reasoning blocks through slash commands by adding a boolean 'collapse' parameter
Respects default expansion settings when not explicitly provided

This gives users direct control over block visibility during command execution rather than relying solely on global preferences
2025-04-06 21:21:37 +02:00
Cohee
3d79885ddd Merge pull request #3816 from Ecalose/gemini_sys_prompt
fix gemini system prompt
2025-04-06 13:53:36 +03:00
Cohee
b8057b3c4f Decrease session extension interval to 10 minutes 2025-04-06 13:52:57 +03:00
Cohee
44f27a1cb7 Merge branch 'staging' into gemini_sys_prompt 2025-04-06 13:33:30 +03:00
Cohee
d2f2fee989 Merge pull request #3815 from gwentman/gemini2.5propreview
Add support of  gemini-2.5-pro-preview-03-25 API
2025-04-06 13:32:32 +03:00
Cohee
df7c2226f6 Fix Gemini captioning 2025-04-06 13:31:16 +03:00
Ecalose
ec02547b0e fix gemini system prompt 2025-04-06 16:10:49 +08:00
gwentman
18cc17142f add support to the gemini 2.5 pro preview api 2025-04-06 17:10:24 +10:00
Cohee
e753e432be Refactor redirectToHome function to use URL object 2025-04-05 21:54:01 +03:00
Cohee
571356ffd9 Merge pull request #3810 from SillyTavern/onbeforeunload
Add beforeunload event listener to prompt user when chat is saving
2025-04-04 21:56:57 +03:00
Cohee
6f543e860f #3809 Add beforeunload event listener to prompt user when chat is saving 2025-04-04 15:58:06 +00:00
Cohee
7987f02dee Exclude <style> tags from quote and underscore italics processing
Fixes #3808
2025-04-04 13:53:56 +00:00
Cohee
c7ce0fe66a Fix localized API URL examples
Fixes #3807
2025-04-04 10:57:22 +00:00
Cohee
d05373cdd2 Upload video bg via converter extension 2025-04-03 23:48:01 +03:00
Cohee
d50698861a Merge pull request #3799 from SillyTavern/export-unset-chat
Unset chat field on import/export
2025-04-03 09:00:26 +03:00
Cohee
b26369ca86 Unset private fields from JSON exports 2025-04-02 22:09:48 +03:00
Cohee
76c59cbc52 Unset chat field on import/export
Closes #3781
2025-04-02 22:08:20 +03:00
Cohee
ee26581df1 Fix WASM load hanging on some Node versions <20.6.0 2025-04-02 17:48:13 +00:00
Cohee
0a521d7a35 Merge pull request #3793 from Erquint/staging
Clickable image attachments — no more fiddling with the spyglass button.
2025-04-01 22:26:52 +03:00
Cohee
943e14f797 Fix style 2025-04-01 22:03:14 +03:00
Cohee
b31a53ab99 Fix selector 2025-04-01 22:01:12 +03:00
Cohee
058fef1146 Update Jimp and add WASM plugins (#3784)
* Update jimp, use WASM format plugins

* Fix Jimp import path in thumbnails endpoint

* Fix size variable

* Add fetch patch to handle file URLs

* Fix JPEG thumbnailing

* Enhance fetch patch to validate file paths and support specific extensions

* Add default msBmp format

* Update jsconfig

* Update JPEG color space in thumbnail generation to YCbCr

* Install jimp plugins explicitly

* Refactor fetch patch utility functions
2025-04-01 21:55:21 +03:00
Cohee
70fe5b6e01 Add Gemini embedding model for vector storage 2025-04-01 21:42:26 +03:00
Cohee
80e821d12d Add support for KoboldCpp embeddings in Vector Storage (#3795)
* Add support for KoboldCpp embeddings in vector processing

* Add validation for KoboldCpp embeddings to handle empty data

* Improve toast handling
2025-04-01 21:21:29 +03:00
Cohee
9c4404cae9 Remove unused imports 2025-04-01 20:24:59 +03:00
Cohee
3458f58c63 Refactor ensureThumbnailCache to accept directoriesList parameter 2025-04-01 11:16:00 +03:00
Cohee
f0338cc325 Merge pull request #3792 from bmen25124/con_prof_api_err
Added api check for ConnectionManagerRequestService.handleDropdown
2025-04-01 10:24:35 +03:00
Gness Erquint
864859dd6b Made attached images clickable — no more fiddling with the spyglass pictogram. Augmented the "Enlarge" button's function to retain it. 2025-04-01 05:35:24 +03:00
bmen25124
50b2eeb61f Added api check for ConnectionManagerRequestService.handleDropdown 2025-04-01 04:39:41 +03:00
Wolfsblvt
fef36bfc39 Fix deleting swipes overwriting reasoning
- Well, someone forgot about syncing extras and mes data again....
- Built the oppositive function of `syncMesToSwipe`, so we can now call `syncSwipeToMes`

Fixes #3787
2025-03-31 13:35:55 +00:00
Cohee
26d0f01d69 Merge pull request #3775 from SillyTavern/feat/ext-manager-toolbar
Move extension buttons to a separate toolbar
2025-03-30 19:22:19 +03:00
Cohee
469c731ff4 Merge pull request #3786 from SillyTavern/tilde-codeblock
Improve tilde code blocks in message formatting and TTS processing
2025-03-30 14:03:12 +03:00
Cohee
65a6e428d1 Improve tilde code blocks in message formatting and TTS processing 2025-03-30 13:25:15 +03:00
Cohee
60603a008c Update GitHub Actions workflow to use the current branch reference for checkout 2025-03-29 19:27:47 +02:00
Cohee
2271d7a220 Merge pull request #3776 from SillyTavern/fix/raw-quotes
Add opt-in for rawQuotes in SlashCommand registration
2025-03-29 19:07:09 +02:00
Cohee
819ce198a8 Add raw quotes indicator in slash command autocomplete 2025-03-29 18:04:11 +02:00
Cohee
c673ebcc22 Merge branch 'staging' into fix/raw-quotes 2025-03-29 17:51:34 +02:00
Cohee
572b60d0c1 Merge branch 'staging' into feat/ext-manager-toolbar 2025-03-29 17:43:18 +02:00
Cohee
c85e55bcca Merge pull request #3783 from SillyTavern/fix/remove-pm-export-popup
Remove prompt manager export popup
2025-03-29 17:41:26 +02:00
Cohee
1323ac1d13 Remove prompt manager export popup
Fixes #3782
2025-03-29 16:05:31 +02:00
Cohee
157046ff46 Merge pull request #3778 from SillyTavern/fix/persona-select-rerender-first-message
Fix persona select on new chat not rerendering first message (and not replacing `{{user}}` macro)
2025-03-28 23:42:58 +02:00
Cohee
bdcf9b088e Revert "Fix backward compatibility with escaped leading quote"
This reverts commit deb13e9c97.
2025-03-28 21:00:02 +02:00
Cohee
deb13e9c97 Fix backward compatibility with escaped leading quote 2025-03-28 10:29:32 +02:00
Cohee
c05b6b0ae8 Add JSDoc to rawQuotes 2025-03-28 10:28:02 +02:00
Wolfsblvt
97040a98a0 Remove 'In Progress' label when marking issues as done
Automatically removes the '🧑‍💻 In Progress' label while adding completion labels
to keep issue tracking clean and accurate after merging. Updates log messages
to reflect both label additions and removals consistently across workflows
2025-03-28 01:58:22 +01:00
Wolfsblvt
d95524032e Centralize first message retrigger on persona changes
Moves retrigger logic to setUserAvatar entry point
to avoid duplicate calls when updating personas
Removes redundant triggers from name/avatar handlers

Fixes #3774
2025-03-28 01:28:36 +01:00
Wolfsblvt
6dc33e9637 Cast this_chid to number in personas.js
Ensure numeric type for character ID comparisons
Explicitly converts this_chid to Number in multiple functions
to prevent type mismatch issues when checking character connections
and persona states
2025-03-28 01:25:13 +01:00
Cohee
533aeffa36 Add opt-in for rawQuotes in SlashCommand registration
Closes #2739
Supersedes #2921
2025-03-27 23:22:38 +02:00
Cohee
0a85178846 Merge pull request #3766 from bmen25124/custom_request_stop_string_cleanup
Added stop string cleanup, better stopping string param
2025-03-27 23:06:43 +02:00
Cohee
d93aba5706 Fix useStopStrings defaulting 2025-03-27 22:52:01 +02:00
Cohee
68c572f2eb Merge branch 'staging' into custom_request_stop_string_cleanup 2025-03-27 22:41:11 +02:00
Cohee
74efb598f1 Merge pull request #3768 from bmen25124/move_lorebook_entry
Added move button for lorebook entries
2025-03-27 22:36:28 +02:00
Cohee
62395f409f There's no ==== operator (yet) 2025-03-27 22:34:30 +02:00
Cohee
561bed9cc2 Replace goofy comment 2025-03-27 22:30:06 +02:00
Cohee
5f00f2beb0 Add quotes to item title being moved 2025-03-27 22:28:14 +02:00
Cohee
496f86e16e Use non-strict equality instead to avoid explicit typecast 2025-03-27 22:27:23 +02:00
Cohee
3ce715c52f Fix deletion from originalData 2025-03-27 22:24:39 +02:00
Cohee
f4d467048b Fix type error 2025-03-27 22:20:28 +02:00
Cohee
280608f061 Use real class name 2025-03-27 22:19:49 +02:00
Cohee
e9c8b8c24e Save both files immediately 2025-03-27 22:17:53 +02:00
Cohee
ae050be2d1 Lint fix 2025-03-27 22:02:24 +02:00
Cohee
02df7d78e2 Move extension buttons to a separate toolbar 2025-03-27 21:51:35 +02:00
Cohee
216c698610 Merge pull request #3771 from Erquint/no_updates_for_disabled_ext
No updates for disabled extensions, unless you insist.
2025-03-27 21:49:45 +02:00
Cohee
01c793eae2 Merge branch 'staging' into no_updates_for_disabled_ext 2025-03-27 20:59:49 +02:00
Cohee
a8558ba6fb Merge pull request #3765 from SillyTavern/feat/wi-content-expando
Add expand editor for WI content
2025-03-27 20:57:57 +02:00
Cohee
a2e3519218 Fix eslint 2025-03-27 20:54:06 +02:00
Cohee
1639289b18 Merge pull request #3763 from qvink/empty_message_injection
Fix for generation interceptors messing with WI timed effects
2025-03-27 20:53:39 +02:00
Cohee
e5d5f953ec Add symbols to getContext 2025-03-27 20:48:13 +02:00
Cohee
de091daa40 Clean-up comments 2025-03-27 20:46:27 +02:00
Cohee
f1479de5bd Merge pull request #3773 from equal-l2/remove-block-entropy
Remove Block Entropy references
2025-03-27 20:44:31 +02:00
Cohee
0d111652b5 Remove from auto-connect logic 2025-03-27 20:38:34 +02:00
equal-l2
2a31f6af2d Remove Block Entropy references
Block Entropy shut down their service at the end of 2024.
2025-03-28 00:47:30 +09:00
qvink
dac5f6910c adding comments 2025-03-27 09:40:42 -06:00
qvink
1dcd837eb1 lint 2025-03-27 09:38:14 -06:00
qvink
f1a053c3b8 using symbols instead 2025-03-27 09:31:52 -06:00
Gness Erquint
976d4f39e6 No updates for disabled extensions, unless you insist. 2025-03-27 17:27:17 +03:00
bmen25124
f33b31dc19 Removed type from icon element 2025-03-27 14:42:50 +03:00
bmen25124
8970c8274c Removed jqueryElement.data usages 2025-03-27 14:38:54 +03:00
bmen25124
bc08d42d0e Progress on move entry
* Fixed header alignment
* Building HTML with browser api instead of string.
* jqueryElement.data(key, value) usages converted to jqueryElement.attr(data-key, value)
* Logs simplified
* Removed success toastry message
2025-03-27 06:21:52 +03:00
bmen25124
f14c73bfcc Added move button for lorebook entries 2025-03-27 04:53:16 +03:00
bmen25124
4e207c2cf0 Removed duplicate codes 2025-03-26 23:38:02 +03:00
bmen25124
972b1e5fa7 Fixed variable naming, better jsdoc 2025-03-26 23:30:09 +03:00
bmen25124
a7d48b1aed Added overridable instruct settings, removed macro override 2025-03-26 23:21:48 +03:00
bmen25124
c5f251c6e3 Added stop string cleanup, better stopping string param 2025-03-26 22:35:10 +03:00
Cohee
8d06582b58 Add expand editor for WI content
Closes #3764
2025-03-26 21:15:41 +02:00
qvink
251d242a0d custom flag in message.extra, also apply to chat completion 2025-03-26 13:10:50 -06:00
qvink
72f91a4994 use custom flag instead 2025-03-26 09:28:42 -06:00
Cohee
f4eb32c71c Merge pull request #3760 from SillyTavern/feat/expressions-none-default-option
Add 'none' expression classifier API option and set as default
2025-03-26 11:10:13 +02:00
qvink
abb908e62c semi 2025-03-25 22:36:05 -06:00
qvink
9d88c1578b don't format messages with undefined content 2025-03-25 22:31:44 -06:00
Wolfsblvt
ebf3920f9f Merge pull request #3761 from Bronya-Rand/staging
chore: make layer updates exportable
2025-03-26 03:14:07 +01:00
Azariel Del Carmen
b96bed7240 chore: make layer updates exportable 2025-03-25 20:09:48 -05:00
Wolfsblvt
cbfc1f7a0e Add 'none' classifier API option and set as default
Introduces a no-op API selection to disable expression classification
Shows warnings when no valid API is selected to prevent silent failures
Updates migration logic and settings UI to use new default value

This allows users to explicitly opt-out of automatic expression detection
while maintaining backwards compatibility with existing configurations
2025-03-26 01:50:26 +01:00
Cohee
2588646b0f Merge pull request #3759 from cloak1505/staging
Fix typo for 2.5 Pro Exp vision support
2025-03-25 23:40:56 +02:00
Cohee
75be96e1f7 Merge pull request #3754 from SillyTavern/fix-openrouter-oauth
OpenRouter: Fix OAuth flow with enabled accounts
2025-03-25 23:20:42 +02:00
cloak1505
b6e5df1983 Fix typo for 2.5 Pro Exp vision support 2025-03-25 15:07:59 -05:00
Cohee
264d77414a Gemini 2.5 Pro 2025-03-25 21:21:23 +02:00
Wolfsblvt
d70c346b12 Expression API on new install defaults to 'local' 2025-03-25 05:17:06 +01:00
Cohee
4ced7abaa3 OpenRouter: Fix OAuth flow with enabled accounts 2025-03-24 20:22:59 +02:00
Cohee
c2e6593343 Add error handling to autorun 2025-03-24 10:03:23 +00:00
Cohee
be7750d6fd Limit cache read parallelism
#3747
2025-03-24 02:21:48 +02:00
Cohee
c69623278f Revert to sync file read in card parser
#3747
2025-03-24 02:03:05 +02:00
Cohee
d4b8983d47 Add forgiveParseErrors option to DiskCache instance creation
#3747
2025-03-23 23:20:38 +02:00
Cohee
921850a62b Split accessing cache instance and processing data
#3747
2025-03-23 23:09:21 +02:00
Cohee
4048a0a09a Merge pull request #3717 from Scarlet-t/staging
added button to rename chat completion preset
2025-03-23 21:29:24 +02:00
Cohee
b9c5703568 Return to old id for delete 2025-03-23 21:26:27 +02:00
Cohee
a070d13723 Revert non-rename changes 2025-03-23 21:25:50 +02:00
Cohee
6d7943d2a0 Clean-up changes diff 2025-03-23 21:24:14 +02:00
Cohee
2af33a9e18 Add error handling to accessing disk cache
Fixes #3747
2025-03-23 21:05:36 +02:00
Cohee
9717259776 Merge pull request #3737 from qvink/staging
Adding option to disable removal of "{{user}}:" and "{{char}}:" in generateRaw()
2025-03-23 18:05:12 +02:00
qvink
66832fc98a removing whitespace trimming in trimWrongNames block 2025-03-23 09:41:03 -06:00
Cohee
e44b123330 Add no select style to select2-dropdown
Fixes #3745
2025-03-23 14:49:20 +02:00
InspectorCaracal
235a1372e8 fix group chid data attr 2025-03-23 14:45:10 +02:00
Cohee
0e76530f43 Merge pull request #3746 from InspectorCaracal/patch-1
Fix group chid data attr in `performGroupMemberAction`
2025-03-23 14:43:14 +02:00
Cohee
a8f1bf7a17 Merge pull request #3744 from bmen25124/updateEditor_export_new_parm
Exported reloadEditor
2025-03-23 14:42:07 +02:00
InspectorCaracal
6bb91dd0df fix group chid data attr 2025-03-22 23:41:29 -06:00
bmen25124
80e1226d28 Exported reloadEditor 2025-03-23 03:40:04 +03:00
qvink
36adb6992e the cooler ternary 2025-03-22 16:43:08 -06:00
qvink
900575ee1a adding missing colon 2025-03-22 16:30:54 -06:00
qvink
9a3e3433c7 Adding missing doc string 2025-03-22 15:54:57 -06:00
qvink
841f814137 Reverting cleanUpMessage() functionality changes. 2025-03-22 15:52:37 -06:00
Cohee
ce2fd8800d Merge branch 'release' into staging 2025-03-22 19:39:34 +02:00
Cohee
74addf1241 Fix TogetherAI models list 2025-03-22 19:39:23 +02:00
Cohee
5969bf3992 Merge pull request #3732 from SillyTavern/disk-cache
Add disk cache for parsed character JSONs
2025-03-22 19:11:04 +02:00
Cohee
834c9751f8 Merge branch 'staging' into disk-cache 2025-03-22 18:52:01 +02:00
Cohee
50334890a6 Merge pull request #3742 from bmen25124/custom_request_stream
Added stream support to "custom-request"
2025-03-22 18:44:02 +02:00
Cohee
0b937237c3 Refactor getStreamingReply to use nullish coalescing for show_thoughts 2025-03-22 18:27:49 +02:00
Cohee
a20c8978f9 Refactor DiskCache to use a synchronization queue and update cache key generation 2025-03-22 17:03:41 +02:00
Cohee
4f52c369fa Merge pull request #3743 from BrendanMcCauley/3710
Fix activatePooledorder()
2025-03-22 11:14:08 +02:00
Brendan McCauley
5472ddc8e6 Fix activatePooledorder() 2025-03-21 19:58:26 -04:00
Cohee
50340103de Increase cache clean-up interval 2025-03-22 01:18:23 +02:00
Cohee
b625319f0c Optimize cache verification 2025-03-22 01:10:22 +02:00
Cohee
8e66ab4d51 Fix cache removal queue processing 2025-03-21 22:47:45 +02:00
Wolfsblvt
1f9472e7b2 Try fix linter with explicit permissions 2025-03-21 21:00:53 +01:00
Cohee
82b885e5ef Sorry we don't know why lint didn't work 2025-03-21 21:49:26 +02:00
bmen25124
7df6a78f33 Better overrideShowThoughts value 2025-03-21 22:19:13 +03:00
bmen25124
17e0058763 Changed options type 2025-03-21 22:16:57 +03:00
bmen25124
7619396053 Better naming 2025-03-21 22:09:41 +03:00
qvink
f713948a1b formatting 2025-03-21 12:32:06 -06:00
qvink
c4175697ef cleanUpMessages() now uses object args. Adding option to trim names. 2025-03-21 12:18:48 -06:00
bmen25124
ec474f5571 Added stream support to "custom-request" 2025-03-21 20:44:09 +03:00
Cohee
3ca6e0e8fc Update readme.md 2025-03-21 10:46:27 +02:00
qvink
ff21ee24d1 removing redundant .indexOf(). Adding extra length to account for the colon. 2025-03-20 21:46:16 -06:00
qvink
39ebffa282 Fix for removal of "{{user}}:" from generations 2025-03-20 20:00:26 -06:00
Cohee
ef56eda2c2 Merge pull request #3730 from SillyTavern/feat/command-buttons-multiple
Add support for toggleable buttons/multiselect in `/buttons` command
2025-03-20 10:42:57 +02:00
Cohee
e3c465258e Merge pull request #3731 from SillyTavern/fix-srw-trim
Fix replacing user_prompt_bias on display
2025-03-20 10:37:46 +02:00
Cohee
4490c3edd5 Dispose diskCache during preSetupTasks cleanup 2025-03-20 10:24:27 +02:00
Cohee
3355c682ca Convert to class 2025-03-20 10:21:41 +02:00
Wolfsblvt
40f2eae3f3 Make it return empty array on cancel 2025-03-19 22:46:11 +01:00
Cohee
df4700914c Remove debug log 2025-03-19 23:33:15 +02:00
Cohee
60e4993a89 Refactor cache entry removal to use Set for removalQueue 2025-03-19 23:32:37 +02:00
Cohee
587c528f6d Implement cache entry removal queue in diskCache 2025-03-19 23:31:30 +02:00
Cohee
9c7d3d7400 Add cache validation func to startup 2025-03-19 23:03:39 +02:00
Cohee
0e2290dacf Enable disk cache by default 2025-03-19 22:45:26 +02:00
Cohee
1a2c54ce39 Disable TTL on disk cache 2025-03-19 22:40:49 +02:00
Cohee
694df8ca55 Merge branch 'staging' into disk-cache 2025-03-19 22:40:11 +02:00
Cohee
c5d4bdcd0b Merge branch 'staging' into fix-srw-trim 2025-03-19 22:28:27 +02:00
Cohee
fb2f8dce10 Merge pull request #3721 from SillyTavern/or-prompt-post-processing
OpenRouter: Allow applying prompt post-processing
2025-03-19 22:16:09 +02:00
Wolfsblvt
8eee1d09a8 Add support for toggleable /buttons
Enhances the buttons slash command with toggleable multi-select capability
Introduces a 'multiple' parameter to enable selecting several options
Updates button styling with visual indicators for toggle states
Modifies return value to handle array of selections when multiple is enabled
2025-03-19 21:13:28 +01:00
Cohee
297a767746 Merge branch 'staging' into or-prompt-post-processing 2025-03-19 22:07:35 +02:00
Cohee
c047e1acd9 Merge pull request #3729 from Erquint/staging
Use Node.js path parser to extract the filename stem in the chats search.
2025-03-19 22:07:06 +02:00
Cohee
ec98746ac6 Merge pull request #3728 from SillyTavern/actions/eslint-checker
Add ESLint PR check action
2025-03-19 22:04:15 +02:00
Cohee
af0939038b Fix undefined type references 2025-03-19 21:26:38 +02:00
Wolfsblvt
df5b79a1a4 Move run-eslint to PR Manager workflow 2025-03-19 20:24:26 +01:00
Cohee
a183c8f69a Fix the rest of lints 2025-03-19 21:21:04 +02:00
Cohee
d7dbe736f8 Downgrade jsdoc plugin 2025-03-19 21:20:28 +02:00
Cohee
0af4a3ebd7 Fix unfixable lints 2025-03-19 21:10:42 +02:00
Wolfsblvt
73520b923f break some linting... 2025-03-19 20:01:31 +01:00
Wolfsblvt
b88f9fb1ff break some linting 2025-03-19 19:59:17 +01:00
Wolfsblvt
39a385ab04 Update eslint workflows version + formatting
- Add explicit version numbers (to prevent update conflicts)
- Separate the steps and give them names, for better readability on workflow log
- Only run on opened/synchronize
2025-03-19 19:58:00 +01:00
Murad "Gness Erquint" Beybalaev
6872ad9489 More pointless lint. 2025-03-19 21:26:43 +03:00
Murad "Gness Erquint" Beybalaev
5a2311b806 Linter's gonna lint… 2025-03-19 21:24:08 +03:00
Gness Erquint
cc54158f09 Use Node.js path parser to extract the stem in the chats search. 2025-03-19 21:17:42 +03:00
Cohee
20cdcc37fc Fix fixable lints 2025-03-19 20:00:33 +02:00
Cohee
8a4a338455 Add unlinted file 2025-03-19 19:51:29 +02:00
Cohee
a7a3badb8e Add ESLint PR check action 2025-03-19 19:46:32 +02:00
Cohee
9b76b6dd3c Merge branch 'staging' into or-prompt-post-processing 2025-03-19 19:32:55 +02:00
Cohee
190f2f9085 Merge pull request #3727 from Erquint/staging
Chat titles are now included in the search. Query terms don't have to occur in the same message anymore.
2025-03-19 19:32:21 +02:00
Cohee
d3e62fe56c Fix lint 2025-03-19 19:31:09 +02:00
Murad "Gness Erquint" Beybalaev
a3c57fb05f Correct the chat search comment. 2025-03-19 20:27:35 +03:00
Wolfsblvt
0e746f0368 Fix workflow permissions for done labeling 2025-03-19 18:26:42 +01:00
Cohee
6bfa54e9b4 Merge pull request #3725 from SillyTavern/feat/expressions-filter-available
Adds filtering to expressions to ignore labels that do not have sprites available
2025-03-19 19:18:02 +02:00
Cohee
f5ecd1fa5f Reduce warning level to debug 2025-03-19 19:15:07 +02:00
Gness Erquint
bbdd98a155 Prepend title to chat messages array before concatenating the string. 2025-03-19 19:40:28 +03:00
Cohee
0607ac98db Fix replacing user_prompt_bias on display 2025-03-19 15:52:51 +00:00
Murad "Gness Erquint" Beybalaev
d48ebdb0d4 Join searched messages by linebreak to avoid searching for implicit whitespace. 2025-03-19 18:38:05 +03:00
Wolfsblvt
2e936e804a Fix default value for filter argument 2025-03-19 10:17:08 +01:00
Wolfsblvt
42730bbe92 Fix sprite upload on empty expression
- When no sprite was defined before, it falsely tried to derive the filename from the existing filename when "allow multiple" was not enabled. It now correctly just utilizes the expression name, not relying on filename anymore.
2025-03-19 09:52:20 +02:00
Cohee
d5d3516e18 Merge pull request #3724 from SillyTavern/fix/expressions-upload-new
Fix not being able to upload sprite when no sprite existed for an expression
2025-03-19 09:51:45 +02:00
Cohee
7784b71c55 Merge pull request #3726 from SillyTavern/feat/expressions-remove-reasoning
Clean reasoning from LLM/webLLM classify response on expression classification
2025-03-19 09:44:05 +02:00
Gness Erquint
35fa634f1d Chat titles are now included in the search. Query terms don't have to occur in the same message anymore. 2025-03-19 06:13:54 +03:00
Wolfsblvt
a8899f7d81 Clean reasoning from classify response
- If a reasoning model is used (via LLM, or R1 distill via webLLM), it'll likely return reasoning. That should not be used for the search of classification inside the response
2025-03-19 03:30:53 +01:00
Wolfsblvt
5a6058d319 Adds sprite-based filtering for expressions
- Functionality only available for LLM/webLLM
- New toggle to filter expressions on availalbe sprites
- `getExpressionsList` filters cached expressions when checked (using sprite folder name/override)
- `/expression-list` slash command has "filter" arg to filter list
- `/expression-classify` slash command has "filter" arg now, to use filtered list for classification
- `getExpressionLabel` uses filtered expressions when LLM/webLLM
2025-03-19 03:06:50 +01:00
Wolfsblvt
8366b7de60 Fix workflow circular dependency 2025-03-19 02:38:09 +01:00
Wolfsblvt
0be952b9a0 Fix sprite upload on empty expression
- When no sprite was defined before, it falsely tried to derive the filename from the existing filename when "allow multiple" was not enabled. It now correctly just utilizes the expression name, not relying on filename anymore.
2025-03-19 02:17:17 +01:00
Wolfsblvt
33a72d10a0 Label PR by size last (and pray) 2025-03-18 23:03:02 +01:00
Jenny
ab2ff7ee34 added back import/export logic for cc presets 2025-03-18 21:17:44 +00:00
Cohee
fcaea46a54 Apply post-process before setting cache at depth 2025-03-18 23:17:26 +02:00
Cohee
7d034cba11 Remove forced newline separator from group join wrappers (#3722)
* Remove forced newline separator from group join wrappers

* Remove unnecessary ternary

* Do not trim field wrappers
2025-03-18 23:12:49 +02:00
Cohee
c1697dc3b3 Merge pull request #3720 from bmen25124/group_wrapper_events
Added group wrapper events
2025-03-18 21:45:34 +02:00
Cohee
46d5f79fd9 OpenRouter: Allow applying prompt post-processing
Fixes #3689
2025-03-18 21:33:11 +02:00
bmen25124
6a4b8c3870 Added group wrapper events 2025-03-18 22:21:25 +03:00
Cohee
283edd94b9 Merge pull request #3718 from SillyTavern/feat/an-macro
Add macros for Author's Notes
2025-03-18 21:08:18 +02:00
Wolfsblvt
909c7f1037 Merge pull request #3719 from SillyTavern/fix-workflows-v2-v1.1
Fixing GitHub Workflows - again (maybe this time it works)
2025-03-18 19:51:26 +01:00
Wolfsblvt
5bda6eac13 Switch pr workflow back to pull_request_target 2025-03-18 19:49:30 +01:00
Wolfsblvt
8d37f9f38c Replace workflow secrets with automatic secret 2025-03-18 19:48:04 +01:00
Wolfsblvt
68965d0791 Update auto labeling
- Fix labeling of issues not using word boundaries
- Add new PR by branch name labels
2025-03-18 19:45:02 +01:00
Cohee
8309c30a3e Merge branch 'staging' into feat/an-macro 2025-03-18 20:27:37 +02:00
Cohee
4df98b0341 Add macro for charDepthPrompt 2025-03-18 20:27:15 +02:00
Wolfsblvt
490aa991d2 Maybe it's a permissions issue 2025-03-18 19:24:07 +01:00
Wolfsblvt
819d698938 Try fix PR size labeling by conditional 2025-03-18 19:14:44 +01:00
Cohee
b6c1c9a40d MistralAI: Add new models 2025-03-18 19:53:02 +02:00
Cohee
c716494622 Merge pull request #3711 from qvink/fix_genraw_prompt_bias
Fixing user_prompt_bias being incorrectly added using generateRaw()
2025-03-18 19:11:50 +02:00
Cohee
6e4bd00ef8 Update parameter naming 2025-03-18 19:09:57 +02:00
Cohee
1122c675e5 Merge pull request #3715 from GhostXia/staging
change 01ai endpoint
2025-03-18 19:02:04 +02:00
Cohee
e2eec77a19 Update HTML link 2025-03-18 19:00:01 +02:00
Cohee
3c61074d78 Add macros for Author's Notes
Closes #3716
2025-03-18 18:15:59 +02:00
Jenny
1943325653 added button to rename chat completion preset 2025-03-18 15:15:51 +00:00
Cohee
8d279dd94d Fix saveChat positional argument migration 2025-03-18 10:33:52 +00:00
Cohee
e2f9489684 Merge pull request #3698 from SillyTavern/integrity
Add integrity check when saving solo chat files
2025-03-18 12:28:38 +02:00
GhostXia
eb52872b13 change 01ai endpoint 2025-03-18 17:19:22 +08:00
qvink
3412d1ce1f adding option to cleanUpMessage() to not include the user prompt bias, and removing the user prompt bias from generateRaw() results. 2025-03-17 20:44:32 -06:00
Cohee
c92ca8dbfb Merge branch 'staging' into integrity 2025-03-18 01:51:07 +02:00
Cohee
03d590415b Merge pull request #3700 from SillyTavern/reasoning-template
Reasoning templates
2025-03-18 01:49:06 +02:00
Cohee
4965ada785 Shorten the popup header text 2025-03-18 01:41:27 +02:00
Cohee
785cacbcb6 Add migration of positional arguments 2025-03-18 01:39:23 +02:00
Cohee
cbb69adf53 Merge pull request #3709 from SillyTavern/fix-expression-override-display
Fix Expression Override not resetting if empty
2025-03-18 01:05:58 +02:00
Cohee
b3406f8abf Merge branch 'release' into staging 2025-03-18 00:59:15 +02:00
Cohee
594a3720ad Fix TTS 2025-03-18 00:59:04 +02:00
Cohee
b1346910a4 Adjust reasoning template migration procedure 2025-03-18 00:47:20 +02:00
Cohee
271c93a504 Rename DeepSeek template, add Blank reasoning template 2025-03-18 00:32:31 +02:00
Cohee
6ff06ff04b Use performFuzzySearch 2025-03-18 00:29:03 +02:00
Wolfsblvt
5585220d0a Fix Expression Override not resetting if empty
- When switching chars, override field gets correctly loaded. The display value won't be reset when the override was empty. This was likely unintended.
2025-03-17 23:23:58 +01:00
Cohee
49949f2f8e Merge pull request #3705 from Yokayo/staging
Update ru-ru translation
2025-03-18 00:01:15 +02:00
Cohee
058bddfe81 Merge pull request #3708 from SillyTavern/fix-swipes-reasoning
Fix deleting swipes overwriting reasoning
2025-03-17 23:53:36 +02:00
Wolfsblvt
ca53323a08 Fix deleting swipes overwriting reasoning
- Well, someone forgot about syncing extras and mes data again....
- Built the oppositive function of `syncMesToSwipe`, so we can now call `syncSwipeToMes`
2025-03-17 20:59:08 +01:00
Yokayo
e7c9960a45 Fix 2025-03-18 02:15:13 +07:00
Cohee
3f95f30a2b Merge pull request #3706 from bmen25124/custom_request_chat_comp_url
Added "custom_url" to ChatCompletionService
2025-03-17 15:37:58 +02:00
Yokayo
1dade2970b Reasoning keys 2025-03-17 20:21:11 +07:00
bmen25124
86de927ab9 Added "custom_url" to ChatCompletionService 2025-03-17 14:54:59 +03:00
Cohee
fba2d809d0 Merge branch 'release' into staging 2025-03-17 09:47:11 +00:00
Cohee
b01e2824be Remove trim from /start-reply-with 2025-03-17 09:46:52 +00:00
Yokayo
40c3674da1 Update tl 2025-03-17 16:09:36 +07:00
Cohee
df48428d1d Merge pull request #3702 from SillyTavern/hotfix-pr-workflow-v2
Hotfix pr workflow v2
2025-03-16 23:46:11 +02:00
Cohee
f245c48b17 Merge pull request #3701 from bmen25124/exports_for_chat_rebuild
New exported methods
2025-03-16 23:43:57 +02:00
Cohee
c022858e5b Fix structuredClone 2025-03-16 23:37:18 +02:00
Cohee
0bdb131c22 Refine Docker CLI documentation 2025-03-16 23:25:42 +02:00
bmen25124
8dc66bd21b Better WI type readability, fixed clone and type opeators. 2025-03-17 00:13:39 +03:00
Wolfsblvt
111fa0dee5 Use older version of PR size labeler 2025-03-16 22:09:28 +01:00
Wolfsblvt
d887eb2258 Revert "Fix PR workflow by chaining actions"
This reverts commit aacbc5b6db.
2025-03-16 22:08:22 +01:00
bmen25124
1593951281 Cloned preset before using 2025-03-17 00:00:37 +03:00
Cohee
cf2671c6d7 Merge branch 'staging' into reasoning-template 2025-03-16 22:51:28 +02:00
Cohee
a8716d7c69 Merge branch 'release' into staging 2025-03-16 22:51:09 +02:00
Cohee
ecfad12b59 Merge pull request #3699 from SillyTavern/hotfix-pr-workflow
Fix PR workflow by chaining actions
2025-03-16 22:50:52 +02:00
Wolfsblvt
aacbc5b6db Fix PR workflow by chaining actions 2025-03-16 21:48:50 +01:00
bmen25124
0e41db615e New exports 2025-03-16 23:44:02 +03:00
Cohee
d314752547 Add reasoning template to connection profiles 2025-03-16 22:39:43 +02:00
Cohee
fa641e9946 Handle empty files in readFirstLine 2025-03-16 22:16:53 +02:00
Cohee
8bd17de2f3 Invert conditions 2025-03-16 21:49:36 +02:00
Cohee
5145e30be3 Don't bail early if empty token provided from UI 2025-03-16 21:45:07 +02:00
Cohee
5fca39fae7 Fix force flag not being passed 2025-03-16 21:39:31 +02:00
Cohee
5ab284f1f5 Merge branch 'staging' into integrity 2025-03-16 21:28:37 +02:00
Cohee
8ec83fd5d9 Fix corruption due to this_chid shift (#3669)
* continue works same as swipe continued message isn't depth counted

* correct early-out check

* update regex depth setting tooltips for accuracy

* update max tooltip

* remove redundant check

* Fix corruption due to this_chid shift
Fixes #3667

* Unshallow current character on reload

* Allow -1 as a min depth value

* Use selectCharacterById, fix rename logic

* Remove pointless local variables

* Add 'switchMenu' param to selectCharacterById

---------

Co-authored-by: Reithan <bo122081@hotmail.com>
2025-03-16 19:14:27 +02:00
Cohee
62342b35e2 Reasoning template 2025-03-16 15:01:31 +02:00
Cohee
400d29e97e Add chat integrity check to saveChat 2025-03-16 02:24:20 +02:00
Cohee
684ee98168 Add config, increase cache TTL, use async file reads 2025-03-15 19:43:26 +02:00
Cohee
b8f8be8cf9 Merge branch 'staging' into disk-cache 2025-03-15 19:27:56 +02:00
Cohee
3c65b2dcf3 Implement disk caching for character data using node-persist 2025-03-09 20:41:04 +02:00
236 changed files with 7582 additions and 3411 deletions

View File

@@ -13,3 +13,4 @@ access.log
/cache
.DS_Store
/public/scripts/extensions/third-party
/colab

View File

@@ -3,6 +3,9 @@ module.exports = {
extends: [
'eslint:recommended',
],
plugins: [
'jsdoc',
],
env: {
es6: true,
},
@@ -78,6 +81,7 @@ module.exports = {
'public/scripts/extensions/tts/lib/**',
],
rules: {
'jsdoc/no-undefined-types': ['warn', { disableReporting: true, markVariablesAsUsed: true }],
'no-unused-vars': ['error', { args: 'none' }],
'no-control-regex': 'off',
'no-constant-condition': ['error', { checkLoops: false }],

View File

@@ -14,7 +14,7 @@
- '(🐧 Linux)'
🦊 Firefox:
- '(firefox|mozilla)'
- '\b(firefox|mozilla)\b'
📱 Mobile:
- '(iphone|ios|android|📱 Termux)'
- '\b(iphone|ios|android|📱 Termux)\b'

View File

@@ -34,6 +34,9 @@
🦊 Firefox:
- head-branch: ['\bfirefox\b']
🧑‍🤝‍🧑 Group Chat:
- head-branch: ['\bgroups?\b']
🖼️ Image Gen:
- head-branch: ['\bimage-gen\b']
@@ -58,6 +61,9 @@
📜 Prompt:
- head-branch: ['\bprompt\b']
🧠 Reasoning:
- head-branch: ['\breasoning\b', '\breason\b', '\bthinking\b']
🚚 Refactor:
- head-branch: ['\brefactor(s|ed)?\b']

38
.github/readme.md vendored
View File

@@ -192,28 +192,43 @@ You will need two mandatory directory mappings and a port mapping to allow Silly
##### Volume Mappings
* [config] - The directory where SillyTavern configuration files will be stored on your host machine
* [data] - The directory where SillyTavern user data (including characters) will be stored on your host machine
* [plugins] - (optional) The directory where SillyTavern server plugins will be stored on your host machine
* [extensions] - (optional) The directory where global UI extensions will be stored on your host machine
* `CONFIG_PATH` - The directory where SillyTavern configuration files will be stored on your host machine
* `DATA_PATH` - The directory where SillyTavern user data (including characters) will be stored on your host machine
* `PLUGINS_PATH` - (optional) The directory where SillyTavern server plugins will be stored on your host machine
* `EXTENSIONS_PATH` - (optional) The directory where global UI extensions will be stored on your host machine
##### Port Mappings
* [PublicPort] - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security.
* `PUBLIC_PORT` - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security.
##### Additional Settings
* [DockerNet] - The docker network that the container should be created with a connection to. If you don't know what it is, see the [official Docker documentation](https://docs.docker.com/reference/cli/docker/network/).
* [version] - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" and "release" tags that point to the nightly images of the respective branches, but this may not be appropriate, if you are utilizing extensions that could be broken, and may need time to update.
* `SILLYTAVERN_VERSION` - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" that points to the nightly image of the respective branch.
#### Install command
#### Running the container
1. Open your Command Line
2. Run the following command
2. Run the following command in a folder where you want to store the configuration and data files:
`docker run --name='sillytavern' --net='[DockerNet]' -p '8000:8000/tcp' -v '[plugins]':'/home/node/app/plugins':'rw' -v '[config]':'/home/node/app/config':'rw' -v '[data]':'/home/node/app/data':'rw' -v '[extensions]':'/home/node/app/public/scripts/extensions/third-party':'rw' 'ghcr.io/sillytavern/sillytavern:[version]'`
```bash
SILLYTAVERN_VERSION="latest"
PUBLIC_PORT="8000"
CONFIG_PATH="./config"
DATA_PATH="./data"
PLUGINS_PATH="./plugins"
EXTENSIONS_PATH="./extensions"
> Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config.
docker run \
--name="sillytavern" \
-p "$PUBLIC_PORT:8000/tcp" \
-v "$CONFIG_PATH:/home/node/app/config:rw" \
-v "$DATA_PATH:/home/node/app/data:rw" \
-v "$EXTENSIONS_PATH:/home/node/app/public/scripts/extensions/third-party:rw" \
-v "$PLUGINS_PATH:/home/node/app/plugins:rw" \
ghcr.io/sillytavern/sillytavern:"$SILLYTAVERN_VERSION"
```
> By default the container will run in the foreground. If you want to run it in the background, add the `-d` flag to the `docker run` command.
### Building the image yourself
@@ -335,6 +350,7 @@ Start.bat --port 8000 --listen false
| Option | Description | Type |
|-------------------------|----------------------------------------------------------------------|----------|
| `--version` | Show version number | boolean |
| `--configPath` | Override the path to the config.yaml file | string |
| `--dataRoot` | Root directory for data storage | string |
| `--port` | Sets the port under which SillyTavern will run | number |
| `--listen` | SillyTavern will listen on all network interfaces | boolean |

View File

@@ -32,7 +32,7 @@ jobs:
with:
configuration-path: .github/issues-auto-labels.yml
enable-versioned-regex: 0
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
label-on-labels:
name: 🏷️ Label Issues by Labels
@@ -46,7 +46,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '👍 Approved'
- name: ❌ Remove progress labels when issue is marked done or stale
@@ -56,7 +56,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🧑‍💻 In Progress,🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove temporary labels when confirmed labels are added
@@ -66,7 +66,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove no bug labels when "🪲 Confirmed" is added
@@ -76,7 +76,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '✖️ Not Reproducible,✖️ Not A Bug'
remove-stale-label:
@@ -92,7 +92,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '⚰️ Stale,🕸️ Inactive,🚏 Awaiting User Response,🛑 No Response'
@@ -113,4 +113,4 @@ jobs:
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/issues-auto-comments.yml
github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -31,15 +31,15 @@ jobs:
- name: Label Linked Issues
id: label_linked_issues
env:
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
for ISSUE in $(echo $issues | jq -r '.[]'); do
if [ "${{ github.ref }}" == "refs/heads/staging" ]; then
LABEL="✅ Done (staging)"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL" --remove-label "🧑‍💻 In Progress"
elif [ "${{ github.ref }}" == "refs/heads/release" ]; then
LABEL="✅ Done"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL" --remove-label "🧑‍💻 In Progress"
fi
echo "Added label '$LABEL' to issue #$ISSUE"
echo "Added label '$LABEL' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

View File

@@ -22,7 +22,7 @@ jobs:
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 183
days-before-close: 7
operations-per-run: 30
@@ -56,7 +56,7 @@ jobs:
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30
@@ -83,7 +83,7 @@ jobs:
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30

View File

@@ -23,6 +23,6 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: remove-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number || github.event.pull_request.number }}
labels: '🚏 Awaiting User Response,🧑‍💻 In Progress,📌 Keep Open,🚫 Merge Conflicts,🔬 Needs Testing,🔨 Needs Work,⚰️ Stale,⛔ Waiting For External/Upstream'

View File

@@ -24,6 +24,6 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number || github.event.pull_request.number }}
labels: '👷 Maintainer'

View File

@@ -1,6 +1,7 @@
name: 🔀 Pull Request Manager
on:
workflow_dispatch: # Allow to manually call this workflow
pull_request_target:
types: [opened, synchronize, reopened, edited, labeled, unlabeled, closed]
pull_request_review_comment:
@@ -11,9 +12,63 @@ permissions:
pull-requests: write
jobs:
run-eslint:
name: ✅ Check ESLint on PR
runs-on: ubuntu-latest
# Only needs to run when code is changed
if: github.event.action == 'opened' || github.event.action == 'synchronize'
# Override permissions, linter likely needs write access to issues
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
with:
ref: ${{ github.event.pull_request.head.sha }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Setup Node.js
# Setup Node.js environment
# https://github.com/marketplace/actions/setup-node-js-environment
uses: actions/setup-node@v4.3.0
with:
node-version: 20
- name: Run npm install
run: npm ci
- name: Run ESLint
# Action ESLint
# https://github.com/marketplace/actions/action-eslint
uses: sibiraj-s/action-eslint@v3.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
eslint-args: '--ignore-path=.gitignore --quiet'
extensions: 'js'
annotations: true
ignore-patterns: |
dist/
lib/
label-by-size:
name: 🏷️ Label PR by Size
# This job should run after all others, to prevent possible concurrency issues
needs: [label-by-branches, label-by-files, remove-stale-label, check-merge-blocking-labels, write-auto-comments]
runs-on: ubuntu-latest
# Only needs to run when code is changed
if: always() && (github.event.action == 'opened' || github.event.action == 'synchronize')
# Override permissions, the labeler needs issues write access
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Label PR Size
@@ -21,7 +76,7 @@ jobs:
# https://github.com/marketplace/actions/pull-request-size-labeler
uses: codelytv/pr-size-labeler@v1.10.2
with:
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
xs_label: '🟩 ⬤○○○○'
xs_max_size: '20'
s_label: '🟩 ⬤⬤○○○'
@@ -32,7 +87,6 @@ jobs:
l_max_size: '1000'
xl_label: '🟥 ⬤⬤⬤⬤⬤'
fail_if_xl: 'false'
github_api_url: 'https://api.github.com'
files_to_ignore: |
"package-lock.json"
"public/lib/*"
@@ -40,8 +94,8 @@ jobs:
label-by-branches:
name: 🏷️ Label PR by Branches
runs-on: ubuntu-latest
# Only label once when PR is created or branches are changed, to allow manual label removal
if: github.event.action == 'opened' || (github.event.action == 'synchronize' && (github.event.changes.base || github.event.changes.head))
# Only label once when PR is created or when base branch is changed, to allow manual label removal
if: github.event.action == 'opened' || (github.event.action == 'synchronize' && github.event.changes.base)
steps:
- name: Checkout Repository
@@ -55,11 +109,13 @@ jobs:
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-branch.yml
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
label-by-files:
name: 🏷️ Label PR by Files
runs-on: ubuntu-latest
# Only needs to run when code is changed
if: github.event.action == 'opened' || github.event.action == 'synchronize'
steps:
- name: Checkout Repository
@@ -73,14 +129,20 @@ jobs:
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-files.yml
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-label:
name: 🗑️ Remove Stale Label on Comment
runs-on: ubuntu-latest
# Only runs when this is not done by the github actions bot
# Only runs on comments not done by the github actions bot
if: github.event_name == 'pull_request_review_comment' && github.actor != 'github-actions[bot]'
# Override permissions, issue labeler needs issues write access
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Remove Stale Label
# 🤖 Issues Helper
@@ -88,7 +150,7 @@ jobs:
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
labels: '⚰️ Stale'
@@ -144,7 +206,7 @@ jobs:
write-auto-comments:
name: 💬 Post PR Comments Based on Labels
needs: [label-by-size, label-by-branches, label-by-files]
needs: [label-by-branches, label-by-files]
runs-on: ubuntu-latest
# Run, even if the previous jobs were skipped/failed
if: always()
@@ -161,7 +223,7 @@ jobs:
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/pr-auto-comments.yml
github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
# This runs on merged PRs to staging, reading the PR body and directly linked issues. Check `issues-updates-on-merge.yml`:`update-linked-issues` for commit-based updates.
update-linked-issues:
@@ -169,6 +231,12 @@ jobs:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'staging'
# Override permissions, We need to be able to write to issues
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Extract Linked Issues From PR Description
id: extract_issues
@@ -182,7 +250,7 @@ jobs:
PR_NUMBER=${{ github.event.pull_request.number }}
REPO=${{ github.repository }}
API_URL="https://api.github.com/repos/$REPO/pulls/$PR_NUMBER/issues"
ISSUES=$(curl -s -H "Authorization: token ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}" "$API_URL" | jq -r '.[].number' | jq -R -s -c 'split("\n")[:-1]')
ISSUES=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$API_URL" | jq -r '.[].number' | jq -R -s -c 'split("\n")[:-1]')
echo "linked_issues=$ISSUES" >> $GITHUB_ENV
- name: Merge Issue Lists
@@ -194,9 +262,9 @@ jobs:
- name: Label Linked Issues
id: label_linked_issues
env:
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
for ISSUE in $(echo $final_issues | jq -r '.[]'); do
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "✅ Done (staging)"
echo "Added label '✅ Done (staging)' to issue #$ISSUE"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "✅ Done (staging)" --remove-label "🧑‍💻 In Progress"
echo "Added label '✅ Done (staging)' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

View File

@@ -23,6 +23,6 @@ jobs:
uses: eps1lon/actions-label-merge-conflict@v3.0.3
with:
dirtyLabel: '🚫 Merge Conflicts'
repoToken: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repoToken: ${{ secrets.GITHUB_TOKEN }}
commentOnDirty: >
⚠️ This PR has conflicts that need to be resolved before it can be merged.

View File

@@ -12,3 +12,4 @@ access.log
.vscode
.git
/public/scripts/extensions/third-party
/colab

View File

@@ -12,15 +12,13 @@ WORKDIR ${APP_HOME}
# Set NODE_ENV to production
ENV NODE_ENV=production
# Install app dependencies
COPY package*.json post-install.js ./
# Bundle app source
COPY . ./
RUN \
echo "*** Install npm packages ***" && \
npm i --no-audit --no-fund --loglevel=error --no-progress --omit=dev && npm cache clean --force
# Bundle app source
COPY . ./
# Copy default chats, characters and user avatars to <folder>.default folder
RUN \
rm -f "config.yaml" || true && \

View File

@@ -114,6 +114,8 @@ backups:
chat:
# Enable automatic chat backups
enabled: true
# Verify integrity of chat files before saving
checkIntegrity: true
# Maximum number of chat backups to keep per user (starting from the most recent). Set to -1 to keep all backups.
maxTotalBackups: -1
# Interval in milliseconds to throttle chat backups per user
@@ -140,6 +142,8 @@ performance:
lazyLoadCharacters: false
# The maximum amount of memory that parsed character cards can use. Set to 0 to disable memory caching.
memoryCacheCapacity: '100mb'
# Enables disk caching for character cards. Improves performances with large card libraries.
useDiskCache: true
# Allow secret keys exposure via API
allowKeysExposure: false
@@ -151,6 +155,7 @@ whitelistImportDomains:
- cdn.discordapp.com
- files.catbox.moe
- raw.githubusercontent.com
- char-archive.evulid.cc
# API request overrides (for KoboldAI and Text Completion APIs)
## Note: host includes the port number if it's not the default (80 or 443)
## Format is an array of objects:
@@ -229,6 +234,10 @@ claude:
# should be ideal for most use cases.
# Any value other than a non-negative integer will be ignored and caching at depth will not be enabled.
cachingAtDepth: -1
# -- GOOGLE GEMINI API CONFIGURATION --
gemini:
# API endpoint version ("v1beta" or "v1alpha")
apiVersion: 'v1beta'
# -- SERVER PLUGIN CONFIGURATION --
enableServerPlugins: false
# Attempt to automatically update server plugins on startup

View File

@@ -540,7 +540,7 @@
"type": "context"
},
{
"filename": "presets/context/Pygmalion.json",
"filename": "presets/context/Metharme.json",
"type": "context"
},
{
@@ -563,6 +563,10 @@
"filename": "presets/context/Llama 3 Instruct.json",
"type": "context"
},
{
"filename": "presets/context/Llama 4 Instruct.json",
"type": "context"
},
{
"filename": "presets/context/Phi.json",
"type": "context"
@@ -615,10 +619,6 @@
"filename": "presets/instruct/OpenOrca-OpenChat.json",
"type": "instruct"
},
{
"filename": "presets/instruct/Pygmalion.json",
"type": "instruct"
},
{
"filename": "presets/instruct/Story.json",
"type": "instruct"
@@ -663,6 +663,10 @@
"filename": "presets/instruct/Llama 3 Instruct.json",
"type": "instruct"
},
{
"filename": "presets/instruct/Llama 4 Instruct.json",
"type": "instruct"
},
{
"filename": "presets/instruct/Phi.json",
"type": "instruct"
@@ -747,6 +751,10 @@
"filename": "presets/sysprompt/Neutral - Chat.json",
"type": "sysprompt"
},
{
"filename": "presets/sysprompt/Lightning 1.1.json",
"type": "sysprompt"
},
{
"filename": "presets/instruct/Mistral V1.json",
"type": "instruct"
@@ -786,5 +794,21 @@
{
"filename": "presets/context/DeepSeek-V2.5.json",
"type": "context"
},
{
"filename": "presets/instruct/GLM-4.json",
"type": "instruct"
},
{
"filename": "presets/context/GLM-4.json",
"type": "context"
},
{
"filename": "presets/reasoning/DeepSeek.json",
"type": "reasoning"
},
{
"filename": "presets/reasoning/Blank.json",
"type": "reasoning"
}
]

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": false,
"trim_sentences": false,
"single_line": true,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": false,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "<|START_OF_TURN_TOKEN|><|SYSTEM_TOKEN|>New Roleplay:<|END_OF_TURN_TOKEN|>",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "***",
"chat_start": "***",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": false,
"trim_sentences": true,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "<|eot_id|>\n<|start_header_id|>user<|end_header_id|>\n\nWrite an example narrative / conversation that is not part of the main story.",
"chat_start": "<|eot_id|>\n<|start_header_id|>user<|end_header_id|>\n\nStart the role-play between {{char}} and {{user}}.",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": false,
"trim_sentences": true,
"single_line": false,

View File

@@ -0,0 +1,10 @@
{
"story_string": "[gMASK]<sop>{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}\n",
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,
"name": "GLM-4"
}

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "### Example:",
"chat_start": "### START ROLEPLAY:",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -1,9 +1,8 @@
{
"story_string": "{{system}}\n{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{char}}'s description:{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality:{{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{user}}'s persona: {{persona}}\n{{/if}}",
"example_separator": "Example of an interaction:",
"chat_start": "This is the history of the roleplay:",
"story_string": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\n{{system}}\n{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{char}}'s description:{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality:{{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{user}}'s persona: {{persona}}\n{{/if}}\n\n",
"example_separator": "Example of an interaction:\n",
"chat_start": "This is the history of the roleplay:\n",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -0,0 +1,10 @@
{
"story_string": "<|begin_of_text|><|header_start|>system<|header_end|>\n\n{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}<|eot|>",
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,
"name": "Llama 4 Instruct"
}

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,9 +3,8 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,
"name": "Pygmalion"
"name": "Metharme"
}

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "***",
"chat_start": "***",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "This is how {{char}} should talk",
"chat_start": "\nThen the roleplay chat between {{user}} and {{char}} begins.\n",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "",
"chat_start": "",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -3,7 +3,6 @@
"example_separator": "### New Roleplay:",
"chat_start": "### New Roleplay:",
"use_stop_strings": false,
"allow_jailbreak": false,
"always_force_name2": true,
"trim_sentences": false,
"single_line": false,

View File

@@ -6,7 +6,7 @@
"stop_sequence": "<|im_end|>",
"wrap": true,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -8,7 +8,7 @@
"stop_sequence": "<|END_OF_TURN_TOKEN|>",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"skip_examples": false,
"output_suffix": "<|END_OF_TURN_TOKEN|>",

View File

@@ -1,22 +1,22 @@
{
"input_sequence": "<|user|>",
"output_sequence": "<|model|>",
"input_sequence": "<|user|>\n",
"output_sequence": "<|assistant|>\n",
"first_output_sequence": "",
"last_output_sequence": "",
"system_sequence": "",
"stop_sequence": "<|user|>",
"system_sequence_prefix": "<|system|>\n",
"system_sequence_suffix": "",
"stop_sequence": "",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "<|system|>",
"system_sequence_suffix": "",
"first_output_sequence": "",
"skip_examples": false,
"output_suffix": "",
"input_suffix": "",
"system_sequence": "",
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
"last_system_sequence": "",
"name": "Pygmalion"
"system_same_as_user": true,
"name": "GLM-4"
}

View File

@@ -6,7 +6,7 @@
"stop_sequence": "<end_of_turn>",
"wrap": true,
"macro": true,
"names_behavior": "none",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -1,7 +1,7 @@
{
"input_sequence": "### Instruction:",
"output_sequence": "### Response: (length = unlimited)",
"last_output_sequence": "",
"output_sequence": "### Response:",
"last_output_sequence": "### Response: (length = unlimited)",
"system_sequence": "",
"stop_sequence": "",
"wrap": true,
@@ -12,8 +12,8 @@
"system_sequence_suffix": "",
"first_output_sequence": "",
"skip_examples": false,
"output_suffix": "",
"input_suffix": "",
"output_suffix": "\n\n",
"input_suffix": "\n\n",
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,

View File

@@ -6,7 +6,7 @@
"stop_sequence": "<|eot_id|>",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",
@@ -16,7 +16,7 @@
"input_suffix": "<|eot_id|>",
"system_suffix": "<|eot_id|>",
"user_alignment_message": "",
"system_same_as_user": true,
"system_same_as_user": false,
"last_system_sequence": "",
"name": "Llama 3 Instruct"
}

View File

@@ -0,0 +1,22 @@
{
"input_sequence": "<|header_start|>user<|header_end|>\n\n",
"output_sequence": "<|header_start|>assistant<|header_end|>\n\n",
"last_output_sequence": "",
"system_sequence": "<|header_start|>system<|header_end|>\n\n",
"stop_sequence": "<|eot|>",
"wrap": false,
"macro": true,
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",
"first_output_sequence": "",
"skip_examples": false,
"output_suffix": "<|eot|>",
"input_suffix": "<|eot|>",
"system_suffix": "<|eot|>",
"user_alignment_message": "",
"system_same_as_user": false,
"last_system_sequence": "",
"name": "Llama 4 Instruct"
}

View File

@@ -6,7 +6,7 @@
"stop_sequence": "",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -6,7 +6,7 @@
"stop_sequence": "",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -6,7 +6,7 @@
"stop_sequence": "",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -6,7 +6,7 @@
"stop_sequence": "</s>",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"system_sequence_prefix": "",
"system_sequence_suffix": "",

View File

@@ -8,7 +8,7 @@
"stop_sequence": "<|end|>",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"skip_examples": false,
"output_suffix": "<|end|>\n",

View File

@@ -8,7 +8,7 @@
"stop_sequence": "<|end_of_text|>",
"wrap": false,
"macro": true,
"names_behavior": "always",
"names_behavior": "force",
"activation_regex": "",
"skip_examples": false,
"output_suffix": "<|end_of_text|>\n",

View File

@@ -0,0 +1,6 @@
{
"name": "Blank",
"prefix": "",
"suffix": "",
"separator": ""
}

View File

@@ -0,0 +1,6 @@
{
"name": "DeepSeek",
"prefix": "<think>\n",
"suffix": "\n</think>",
"separator": "\n\n"
}

View File

@@ -1,4 +1,5 @@
{
"name": "Actor",
"content": "You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model. Currently your role is {{char}}, which is described in detail below. As {{char}}, continue the exchange with {{user}}."
"content": "You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model. Currently your role is {{char}}, which is described in detail below. As {{char}}, continue the exchange with {{user}}.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Assistant - Expert",
"content": "You are a helpful assistant. Please answer truthfully and write out your thinking step by step to be sure you get the right answer. If you make a mistake or encounter an error in your thinking, say so out loud and attempt to correct it. If you don't know or aren't sure about something, say so clearly. You will act as a professional logician, mathematician, and physicist. You will also act as the most appropriate type of expert to answer any particular question or solve the relevant problem; state which expert type your are, if so. Also think of any particular named expert that would be ideal to answer the relevant question or solve the relevant problem; name and act as them, if appropriate."
"content": "You are a helpful assistant. Please answer truthfully and write out your thinking step by step to be sure you get the right answer. If you make a mistake or encounter an error in your thinking, say so out loud and attempt to correct it. If you don't know or aren't sure about something, say so clearly. You will act as a professional logician, mathematician, and physicist. You will also act as the most appropriate type of expert to answer any particular question or solve the relevant problem; state which expert type your are, if so. Also think of any particular named expert that would be ideal to answer the relevant question or solve the relevant problem; name and act as them, if appropriate.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Assistant - Simple",
"content": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions."
"content": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Blank",
"content": ""
"content": "",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Chain of Thought",
"content": "Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation."
"content": "Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation.",
"post_history": ""
}

View File

@@ -0,0 +1,5 @@
{
"name": "Lightning 1.1",
"content": "Take the role of {{char}} in a play that leaves a lasting impression on {{user}}. Write {{char}}'s next reply.\nNever skip or gloss over {{char}}s actions. Progress the scene at a naturally slow pace.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Neutral - Chat",
"content": "Write {{char}}'s next reply in a fictional chat between {{char}} and {{user}}."
"content": "Write {{char}}'s next reply in a fictional chat between {{char}} and {{user}}.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Roleplay - Detailed",
"content": "Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions. Keep the story immersive and engaging."
"content": "Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions. Keep the story immersive and engaging.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Roleplay - Immersive",
"content": "[System note: Write one reply only. Do not decide what {{user}} says or does. Write at least one paragraph, up to four. Be descriptive and immersive, providing vivid details about {{char}}'s actions, emotions, and the environment. Write with a high degree of complexity and burstiness. Do not repeat this message.]"
"content": "[System note: Write one reply only. Do not decide what {{user}} says or does. Write at least one paragraph, up to four. Be descriptive and immersive, providing vivid details about {{char}}'s actions, emotions, and the environment. Write with a high degree of complexity and burstiness. Do not repeat this message.]",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Roleplay - Simple",
"content": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}."
"content": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Text Adventure",
"content": "[Enter Adventure Mode. Narrate the story based on {{user}}'s dialogue and actions after \">\". Describe the surroundings in vivid detail. Be detailed, creative, verbose, and proactive. Move the story forward by introducing fantasy elements and interesting characters.]"
"content": "[Enter Adventure Mode. Narrate the story based on {{user}}'s dialogue and actions after \">\". Describe the surroundings in vivid detail. Be detailed, creative, verbose, and proactive. Move the story forward by introducing fantasy elements and interesting characters.]",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Writer - Creative",
"content": "You are an intelligent, skilled, versatile writer.\n\nYour task is to write a role-play based on the information below."
"content": "You are an intelligent, skilled, versatile writer.\n\nYour task is to write a role-play based on the information below.",
"post_history": ""
}

View File

@@ -1,4 +1,5 @@
{
"name": "Writer - Realistic",
"content": "Continue writing this story and portray characters realistically."
"content": "Continue writing this story and portray characters realistically.",
"post_history": ""
}

View File

@@ -2,7 +2,7 @@
"compilerOptions": {
"module": "ESNext",
"target": "ES2023",
"moduleResolution": "Node",
"moduleResolution": "Bundler",
"strictNullChecks": true,
"strictFunctionTypes": true,
"checkJs": true,

1424
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,28 @@
"@agnai/sentencepiece-js": "^1.1.1",
"@agnai/web-tokenizers": "^0.1.3",
"@iconfu/svg-inject": "^1.2.3",
"@jimp/core": "^1.6.0",
"@jimp/js-bmp": "^1.6.0",
"@jimp/js-gif": "^1.6.0",
"@jimp/js-tiff": "^1.6.0",
"@jimp/plugin-blit": "^1.6.0",
"@jimp/plugin-circle": "^1.6.0",
"@jimp/plugin-color": "^1.6.0",
"@jimp/plugin-contain": "^1.6.0",
"@jimp/plugin-cover": "^1.6.0",
"@jimp/plugin-crop": "^1.6.0",
"@jimp/plugin-displace": "^1.6.0",
"@jimp/plugin-fisheye": "^1.6.0",
"@jimp/plugin-flip": "^1.6.0",
"@jimp/plugin-mask": "^1.6.0",
"@jimp/plugin-quantize": "^1.6.0",
"@jimp/plugin-resize": "^1.6.0",
"@jimp/plugin-rotate": "^1.6.0",
"@jimp/plugin-threshold": "^1.6.0",
"@jimp/wasm-avif": "^1.6.0",
"@jimp/wasm-jpeg": "^1.6.0",
"@jimp/wasm-png": "^1.6.0",
"@jimp/wasm-webp": "^1.6.0",
"@mozilla/readability": "^0.6.0",
"@popperjs/core": "^2.11.8",
"@zeldafan0225/ai_horde": "^5.2.0",
@@ -18,6 +40,7 @@
"cookie-parser": "^1.4.6",
"cookie-session": "^2.1.0",
"cors": "^2.8.5",
"crc": "^4.3.2",
"csrf-sync": "^4.0.3",
"diff-match-patch": "^1.0.5",
"dompurify": "^3.2.4",
@@ -36,7 +59,6 @@
"ip-regex": "^5.0.0",
"ipaddr.js": "^2.2.0",
"is-docker": "^3.0.0",
"jimp": "^0.22.10",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"mime-types": "^2.1.35",
@@ -47,7 +69,6 @@
"node-persist": "^4.0.4",
"open": "^8.4.2",
"png-chunk-text": "^1.0.0",
"png-chunks-encode": "^1.0.0",
"png-chunks-extract": "^1.0.0",
"proxy-agent": "^6.5.0",
"rate-limiter-flexible": "^5.0.5",
@@ -90,7 +111,7 @@
"type": "git",
"url": "https://github.com/SillyTavern/SillyTavern.git"
},
"version": "1.12.13",
"version": "1.12.14",
"scripts": {
"start": "node server.js",
"debug": "node --inspect server.js",
@@ -132,7 +153,6 @@
"@types/node": "^18.19.80",
"@types/node-persist": "^3.1.8",
"@types/png-chunk-text": "^1.0.3",
"@types/png-chunks-encode": "^1.0.2",
"@types/png-chunks-extract": "^1.0.2",
"@types/response-time": "^2.3.8",
"@types/select2": "^4.0.63",
@@ -140,6 +160,7 @@
"@types/write-file-atomic": "^4.0.3",
"@types/yargs": "^17.0.33",
"@types/yauzl": "^2.10.3",
"eslint": "^8.57.1"
"eslint": "^8.57.1",
"eslint-plugin-jsdoc": "^48.10.0"
}
}

View File

@@ -3,133 +3,17 @@
*/
import fs from 'node:fs';
import path from 'node:path';
import crypto from 'node:crypto';
import process from 'node:process';
import yaml from 'yaml';
import _ from 'lodash';
import chalk from 'chalk';
import { createRequire } from 'node:module';
import { addMissingConfigValues } from './src/config-init.js';
/**
* Colorizes console output.
*/
const color = chalk;
const keyMigrationMap = [
{
oldKey: 'disableThumbnails',
newKey: 'thumbnails.enabled',
migrate: (value) => !value,
},
{
oldKey: 'thumbnailsQuality',
newKey: 'thumbnails.quality',
migrate: (value) => value,
},
{
oldKey: 'avatarThumbnailsPng',
newKey: 'thumbnails.format',
migrate: (value) => (value ? 'png' : 'jpg'),
},
{
oldKey: 'disableChatBackup',
newKey: 'backups.chat.enabled',
migrate: (value) => !value,
},
{
oldKey: 'numberOfBackups',
newKey: 'backups.common.numberOfBackups',
migrate: (value) => value,
},
{
oldKey: 'maxTotalChatBackups',
newKey: 'backups.chat.maxTotalBackups',
migrate: (value) => value,
},
{
oldKey: 'chatBackupThrottleInterval',
newKey: 'backups.chat.throttleInterval',
migrate: (value) => value,
},
{
oldKey: 'enableExtensions',
newKey: 'extensions.enabled',
migrate: (value) => value,
},
{
oldKey: 'enableExtensionsAutoUpdate',
newKey: 'extensions.autoUpdate',
migrate: (value) => value,
},
{
oldKey: 'extras.disableAutoDownload',
newKey: 'extensions.models.autoDownload',
migrate: (value) => !value,
},
{
oldKey: 'extras.classificationModel',
newKey: 'extensions.models.classification',
migrate: (value) => value,
},
{
oldKey: 'extras.captioningModel',
newKey: 'extensions.models.captioning',
migrate: (value) => value,
},
{
oldKey: 'extras.embeddingModel',
newKey: 'extensions.models.embedding',
migrate: (value) => value,
},
{
oldKey: 'extras.speechToTextModel',
newKey: 'extensions.models.speechToText',
migrate: (value) => value,
},
{
oldKey: 'extras.textToSpeechModel',
newKey: 'extensions.models.textToSpeech',
migrate: (value) => value,
},
{
oldKey: 'minLogLevel',
newKey: 'logging.minLogLevel',
migrate: (value) => value,
},
{
oldKey: 'cardsCacheCapacity',
newKey: 'performance.memoryCacheCapacity',
migrate: (value) => `${value}mb`,
},
{
oldKey: 'cookieSecret',
newKey: 'cookieSecret',
migrate: () => void 0,
remove: true,
},
];
/**
* Gets all keys from an object recursively.
* @param {object} obj Object to get all keys from
* @param {string} prefix Prefix to prepend to all keys
* @returns {string[]} Array of all keys in the object
*/
function getAllKeys(obj, prefix = '') {
if (typeof obj !== 'object' || Array.isArray(obj) || obj === null) {
return [];
}
return _.flatMap(Object.keys(obj), key => {
const newPrefix = prefix ? `${prefix}.${key}` : key;
if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
return getAllKeys(obj[key], newPrefix);
} else {
return [newPrefix];
}
});
}
/**
* Converts the old config.conf file to the new config.yaml format.
*/
@@ -156,71 +40,6 @@ function convertConfig() {
}
}
/**
* Compares the current config.yaml with the default config.yaml and adds any missing values.
*/
function addMissingConfigValues() {
try {
const defaultConfig = yaml.parse(fs.readFileSync(path.join(process.cwd(), './default/config.yaml'), 'utf8'));
let config = yaml.parse(fs.readFileSync(path.join(process.cwd(), './config.yaml'), 'utf8'));
// Migrate old keys to new keys
const migratedKeys = [];
for (const { oldKey, newKey, migrate, remove } of keyMigrationMap) {
if (_.has(config, oldKey)) {
if (remove) {
_.unset(config, oldKey);
migratedKeys.push({
oldKey,
newValue: void 0,
});
continue;
}
const oldValue = _.get(config, oldKey);
const newValue = migrate(oldValue);
_.set(config, newKey, newValue);
_.unset(config, oldKey);
migratedKeys.push({
oldKey,
newKey,
oldValue,
newValue,
});
}
}
// Get all keys from the original config
const originalKeys = getAllKeys(config);
// Use lodash's defaultsDeep function to recursively apply default properties
config = _.defaultsDeep(config, defaultConfig);
// Get all keys from the updated config
const updatedKeys = getAllKeys(config);
// Find the keys that were added
const addedKeys = _.difference(updatedKeys, originalKeys);
if (addedKeys.length === 0 && migratedKeys.length === 0) {
return;
}
if (addedKeys.length > 0) {
console.log('Adding missing config values to config.yaml:', addedKeys);
}
if (migratedKeys.length > 0) {
console.log('Migrating config values in config.yaml:', migratedKeys);
}
fs.writeFileSync('./config.yaml', yaml.stringify(config));
} catch (error) {
console.error(color.red('FATAL: Could not add missing config values to config.yaml'), error);
}
}
/**
* Creates the default config files if they don't exist yet.
*/
@@ -283,58 +102,13 @@ function createDefaultFiles() {
}
}
/**
* Returns the MD5 hash of the given data.
* @param {Buffer} data Input data
* @returns {string} MD5 hash of the input data
*/
function getMd5Hash(data) {
return crypto
.createHash('md5')
.update(new Uint8Array(data))
.digest('hex');
}
/**
* Copies the WASM binaries from the sillytavern-transformers package to the dist folder.
*/
function copyWasmFiles() {
if (!fs.existsSync('./dist')) {
fs.mkdirSync('./dist');
}
const listDir = fs.readdirSync('./node_modules/sillytavern-transformers/dist');
for (const file of listDir) {
if (file.endsWith('.wasm')) {
const sourcePath = `./node_modules/sillytavern-transformers/dist/${file}`;
const targetPath = `./dist/${file}`;
// Don't copy if the file already exists and is the same checksum
if (fs.existsSync(targetPath)) {
const sourceChecksum = getMd5Hash(fs.readFileSync(sourcePath));
const targetChecksum = getMd5Hash(fs.readFileSync(targetPath));
if (sourceChecksum === targetChecksum) {
continue;
}
}
fs.copyFileSync(sourcePath, targetPath);
console.log(`${file} successfully copied to ./dist/${file}`);
}
}
}
try {
// 0. Convert config.conf to config.yaml
convertConfig();
// 1. Create default config files
createDefaultFiles();
// 2. Copy transformers WASM binaries from node_modules
copyWasmFiles();
// 3. Add missing config values
addMissingConfigValues();
// 2. Add missing config values
addMissingConfigValues(path.join(process.cwd(), './config.yaml'));
} catch (error) {
console.error(error);
}

View File

@@ -146,3 +146,15 @@ input.extension_missing[type="checkbox"] {
.extensions_info .extension_actions {
flex-wrap: nowrap;
}
.extensions_toolbar {
top: 0;
position: sticky;
display: flex;
flex-direction: row;
background-color: var(--SmartThemeBlurTintColor);
gap: 5px;
z-index: 1;
margin-bottom: 10px;
padding: 5px;
}

View File

@@ -359,10 +359,15 @@
content: attr(external_piece_text);
display: block;
width: 100%;
font-weight: 600;
font-weight: 500;
text-align: center;
}
.completion_prompt_manager_popup_entry_form_control #completion_prompt_manager_popup_entry_form_prompt:disabled {
visibility: hidden;
}
#completion_prompt_manager_popup_entry_source_block {
display: flex;
justify-content: center;
}

View File

@@ -87,7 +87,7 @@
}
#rm_group_members:empty::before {
content: 'Group is empty';
content: attr(group_empty_text);
font-weight: bolder;
width: 100%;
@@ -115,7 +115,7 @@
}
#rm_group_add_members:empty::before {
content: 'No characters available';
content: attr(no_characters_text);
font-weight: bolder;
width: 100%;

View File

@@ -13,6 +13,7 @@
backdrop-filter: blur(calc(var(--SmartThemeBlurStrength)*2));
color: var(--SmartThemeBodyColor);
z-index: 40000;
user-select: none;
}
.select2-container .select2-selection .select2-selection__clear {

View File

@@ -124,6 +124,10 @@
cursor: initial;
}
.world_entry .inline-drawer-header-pointer {
cursor: pointer;
}
.world_entry .killSwitch {
cursor: pointer;
}

11
public/global.d.ts vendored
View File

@@ -55,4 +55,15 @@ declare global {
* @param provider Translation provider
*/
async function translate(text: string, lang: string, provider: string = null): Promise<string>;
interface ConvertVideoArgs {
buffer: Uint8Array;
name: string;
}
/**
* Converts a video file to an animated WebP format using FFmpeg.
* @param args - The arguments for the conversion function.
*/
function convertVideoToAnimatedWebp(args: ConvertVideoArgs): Promise<Uint8Array>;
}

46
public/img/xai.svg Normal file
View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="katman_1"
x="0px"
y="0px"
viewBox="0 0 438.67001 481.44999"
xml:space="preserve"
sodipodi:docname="XAI_Logo.svg"
width="438.67001"
height="481.45001"
inkscape:version="1.3 (0e150ed, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs4" /><sodipodi:namedview
id="namedview4"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.39645207"
inkscape:cx="219.44645"
inkscape:cy="238.36425"
inkscape:window-width="1512"
inkscape:window-height="856"
inkscape:window-x="0"
inkscape:window-y="38"
inkscape:window-maximized="1"
inkscape:current-layer="katman_1" />&#10;<g
id="g4"
transform="translate(-201.61,-56.91)">&#10; <polygon
points="631.96,538.36 640.28,93.18 557.09,211.99 565.4,538.36 "
id="polygon1" />&#10; <polygon
points="379.35,284.53 430.13,357.05 640.28,56.91 538.72,56.91 "
id="polygon2" />&#10; <polygon
points="353.96,465.84 303.17,393.31 201.61,538.36 303.17,538.36 "
id="polygon3" />&#10; <polygon
points="531.69,538.36 303.17,211.99 201.61,211.99 430.13,538.36 "
id="polygon4" />&#10;</g>&#10;</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -197,6 +197,9 @@
<div id="update_oai_preset" class="menu_button menu_button_icon" title="Update current preset" data-i18n="[title]Update current preset">
<i class="fa-fw fa-solid fa-save"></i>
</div>
<div data-preset-manager-rename="openai" class="menu_button menu_button_icon" title="Rename current preset" data-i18n="[title]Rename current preset">
<i class="fa-fw fa-solid fa-pencil"></i>
</div>
<div id="new_oai_preset" class="menu_button menu_button_icon" title="Save preset as" data-i18n="[title]Save preset as">
<i class="fa-fw fa-solid fa-file-circle-plus"></i>
</div>
@@ -643,7 +646,7 @@
<input type="number" id="openai_max_tokens" name="openai_max_tokens" class="text_pole" min="1" max="65536">
</div>
</div>
<div class="range-block" data-source="openai,custom">
<div class="range-block" data-source="openai,custom,xai">
<div class="range-block-title" data-i18n="Multiple swipes per generation">
Multiple swipes per generation
</div>
@@ -682,7 +685,7 @@
</span>
</div>
</div>
<div class="range-block" data-source="openai,claude,windowai,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai,nanogpt,deepseek">
<div class="range-block" data-source="openai,claude,windowai,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai,nanogpt,deepseek,xai">
<div class="range-block-title" data-i18n="Temperature">
Temperature
</div>
@@ -695,7 +698,7 @@
</div>
</div>
</div>
<div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq,mistralai,nanogpt,deepseek">
<div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq,mistralai,nanogpt,deepseek,xai">
<div class="range-block-title" data-i18n="Frequency Penalty">
Frequency Penalty
</div>
@@ -708,7 +711,7 @@
</div>
</div>
</div>
<div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq,mistralai,nanogpt,deepseek">
<div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq,mistralai,nanogpt,deepseek,xai">
<div class="range-block-title" data-i18n="Presence Penalty">
Presence Penalty
</div>
@@ -734,7 +737,7 @@
</div>
</div>
</div>
<div class="range-block" data-source="openai,claude,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai,nanogpt,deepseek">
<div class="range-block" data-source="openai,claude,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai,nanogpt,deepseek,xai">
<div class="range-block-title" data-i18n="Top P">
Top P
</div>
@@ -971,7 +974,7 @@
</div>
</div>
</div>
<div class="range-block" data-source="openai,openrouter,mistralai,custom,cohere,groq,nanogpt">
<div class="range-block" data-source="openai,openrouter,mistralai,custom,cohere,groq,nanogpt,xai">
<div class="range-block-title justifyLeft" data-i18n="Seed">
Seed
</div>
@@ -1281,7 +1284,7 @@
<input class="neo-range-slider" type="range" id="min_p_textgenerationwebui" name="volume" min="0" max="1" step="0.001">
<input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="min_p_textgenerationwebui" id="min_p_counter_textgenerationwebui">
</div>
<div data-tg-type-mode="except" data-tg-type="generic" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<div data-tg-type-mode="except" data-tg-type="generic,llamacpp" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<small>
<span data-i18n="Top A">Top A</span>
<div class="fa-solid fa-circle-info opacity50p" title="Top A sets a threshold for token selection based on the square of the highest token probability.&#13;E.g if the Top-A value is 0.2 and the top token's probability is 50%, tokens with probabilities below 5% (0.2 * 0.5^2) are excluded.&#13;Set to 0 to disable." data-i18n="[title]Top_A_desc"></div>
@@ -1289,7 +1292,7 @@
<input class="neo-range-slider" type="range" id="top_a_textgenerationwebui" name="volume" min="0" max="1" step="0.01">
<input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_a_textgenerationwebui" id="top_a_counter_textgenerationwebui">
</div>
<div data-tg-type-mode="except" data-tg-type="generic" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<div data-tg-type-mode="except" data-tg-type="generic,llamacpp" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<small>
<span data-i18n="TFS">TFS</span>
<div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Tail_Free_Sampling_desc" title="Tail-Free Sampling (TFS) searches for a tail of low-probability tokens in the distribution,&#13;by analyzing the rate of change in token probabilities using derivatives. It retains tokens up to a threshold (e.g., 0.3) based on the normalized second derivative.&#13;The closer to 0, the more discarded tokens. Set to 1.0 to disable."></div>
@@ -1305,7 +1308,7 @@
<input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01">
<input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui">
</div>
<div data-tg-type="aphrodite,koboldcpp" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<div data-tg-type="aphrodite,koboldcpp,llamacpp" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<small>
<span data-i18n="Top nsigma">Top nsigma</span>
<div class="fa-solid fa-circle-info opacity50p" title="A sampling method that filters logits based on their statistical properties. It keeps tokens within n standard deviations of the maximum logit value, providing a simpler alternative to top-p/top-k sampling while maintaining sampling stability across different temperatures."></div>
@@ -1313,6 +1316,14 @@
<input class="neo-range-slider" type="range" id="nsigma_textgenerationwebui" name="volume" min="0" max="5" step="0.01">
<input class="neo-range-input" type="number" min="0" max="5" step="0.01" data-for="nsigma_textgenerationwebui" id="nsigma_counter_textgenerationwebui">
</div>
<div data-tg-type="llamacpp" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<small>
<span data-i18n="Min Keep">Min Keep</span>
<div class="fa-solid fa-circle-info opacity50p" title="A sampling modifier that ensures that truncation samplers such as top-p, min-p, typical-p, and xtc return at least this many tokens. Set to 0 to disable."></div>
</small>
<input class="neo-range-slider" type="range" id="min_keep_textgenerationwebui" name="volume" min="0" max="50" step="1">
<input class="neo-range-input" type="number" min="0" max="50" step="1" data-for="min_keep_textgenerationwebui" id="min_keep_counter_textgenerationwebui">
</div>
<div data-tg-type="ooba,mancer,aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
<small>
<span data-i18n="Eta Cutoff">Eta Cutoff</span>
@@ -1395,7 +1406,7 @@
</div>
</div>
<div data-tg-type="koboldcpp, aphrodite, tabby, ooba, llamacpp" id="xtc_block" class="wide100p">
<div data-tg-type="koboldcpp, aphrodite, mancer, tabby, ooba, llamacpp" id="xtc_block" class="wide100p">
<h4 class="wide100p textAlignCenter">
<label data-i18n="Exclude Top Choices (XTC)">Exclude Top Choices (XTC)</label>
<a href="https://github.com/oobabooga/text-generation-webui/pull/6335" target="_blank">
@@ -1416,7 +1427,7 @@
</div>
</div>
<div data-tg-type="aphrodite, ooba, koboldcpp, tabby, llamacpp" id="dryBlock" class="wide100p">
<div data-tg-type="aphrodite, mancer, ooba, koboldcpp, tabby, llamacpp, dreamgen" id="dryBlock" class="wide100p">
<h4 class="wide100p textAlignCenter" title="DRY penalizes tokens that would extend the end of the input into a sequence that has previously occurred in the input. Set multiplier to 0 to disable." data-i18n="[title]DRY_Repetition_Penalty_desc">
<label data-i18n="DRY Repetition Penalty">DRY Repetition Penalty</label>
<a href="https://github.com/oobabooga/text-generation-webui/pull/5677" target="_blank">
@@ -1482,7 +1493,7 @@
</div>
</div>
</div>
<div data-tg-type="ooba,infermaticai,koboldcpp,llamacpp,mancer,ollama,tabby" id="mirostat_block_ooba" class="wide100p">
<div data-tg-type="ooba,infermaticai,koboldcpp,llamacpp,ollama,tabby" id="mirostat_block_ooba" class="wide100p">
<h4 class="wide100p textAlignCenter">
<label data-i18n="Mirostat (mode=1 is only for llama.cpp)">Mirostat</label>
<div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Mirostat_desc" title="Mirostat is a thermostat for output perplexity.&#13;Mirostat matches the output perplexity to that of the input, thus avoiding the repetition trap&#13;(where, as the autoregressive inference produces text, the perplexity of the output tends toward zero)&#13;and the confusion trap (where the perplexity diverges).&#13;For details, see the paper Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020).&#13;Mode chooses the Mirostat version. 0=disable, 1=Mirostat 1.0 (llama.cpp only), 2=Mirostat 2.0."></div>
@@ -1571,7 +1582,7 @@
<div class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative" title="Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative."></div>
</label>
</label>
<label data-tg-type="ooba, llamacpp, tabby, koboldcpp" class="checkbox_label flexGrow flexShrink" for="ban_eos_token_textgenerationwebui">
<label data-tg-type="ooba, llamacpp, tabby, koboldcpp, dreamgen" class="checkbox_label flexGrow flexShrink" for="ban_eos_token_textgenerationwebui">
<input type="checkbox" id="ban_eos_token_textgenerationwebui" />
<label>
<small data-i18n="Ban EOS Token">Ban EOS Token</small>
@@ -1766,11 +1777,12 @@
<div data-name="temperature" draggable="true"><span>Temperature</span><small></small></div>
<div data-name="top_k" draggable="true"><span>Top K</span><small></small></div>
<div data-name="top_p" draggable="true"><span>Top P</span><small></small></div>
<div data-name="typical_p" draggable="true"><span>Typical P</span><small></small></div>
<div data-name="tfs_z" draggable="true"><span>Tail Free Sampling</span><small></small></div>
<div data-name="typ_p" draggable="true"><span>Typical P</span><small></small></div>
<div data-name="min_p" draggable="true"><span>Min P</span><small></small></div>
<div data-name="xtc" draggable="true"><span>Exclude Top Choices</span><small></small></div>
<div data-name="dry" draggable="true"><span>DRY</span><small></small></div>
<div data-name="penalties" draggable="true"><span>Rep/Freq/Pres Penalties</span><small></small></div>
<div data-name="top_n_sigma" draggable="true"><span>Top N-Sigma</span><small></small></div>
</div>
<div id="llamacpp_samplers_default_order" class="menu_button menu_button_icon">
<span data-i18n="Load default order">Load default order</span>
@@ -1951,18 +1963,21 @@
</span>
</div>
</div>
<div class="range-block" data-source="makersuite,openrouter">
<div class="range-block" data-source="makersuite,openrouter,claude">
<label for="openai_enable_web_search" class="checkbox_label flexWrap widthFreeExpand">
<input id="openai_enable_web_search" type="checkbox" />
<span data-i18n="Enable web search">Enable web search</span>
</label>
<div class="flexBasis100p toggle-description justifyLeft">
<span>
<span data-i18n="Use search capabilities provided by the backend.">
Use search capabilities provided by the backend.
</span>
<b data-source="openrouter" data-i18n="openrouter_web_search_fee">
Not free, adds a $0.02 fee to each prompt.
</b>
</div>
</div>
<div class="range-block" data-source="openai,cohere,mistralai,custom,claude,openrouter,groq,deepseek,makersuite,ai21">
<div class="range-block" data-source="openai,cohere,mistralai,custom,claude,openrouter,groq,deepseek,makersuite,ai21,xai">
<label for="openai_function_calling" class="checkbox_label flexWrap widthFreeExpand">
<input id="openai_function_calling" type="checkbox" />
<span data-i18n="Enable function calling">Enable function calling</span>
@@ -1972,7 +1987,7 @@
<span data-i18n="enable_functions_desc_3">Can be utilized by various extensions to provide additional functionality.</span>
</div>
</div>
<div class="range-block" data-source="openai,openrouter,makersuite,claude,custom,01ai">
<div class="range-block" data-source="openai,openrouter,mistralai,makersuite,claude,custom,01ai,xai">
<label for="openai_image_inlining" class="checkbox_label flexWrap widthFreeExpand">
<input id="openai_image_inlining" type="checkbox" />
<span data-i18n="Send inline images">Send inline images</span>
@@ -1984,7 +1999,7 @@
<code><i class="fa-solid fa-wand-magic-sparkles"></i></code>
<span data-i18n="image_inlining_hint_3">menu to attach an image file to the chat.</span>
</div>
<div class="flex-container flexFlowColumn wide100p textAlignCenter marginTop10" data-source="openai,custom">
<div class="flex-container flexFlowColumn wide100p textAlignCenter marginTop10" data-source="openai,custom,xai">
<div class="flex-container oneline-dropdown">
<label for="openai_inline_image_quality" data-i18n="Inline Image Quality">
Inline Image Quality
@@ -2019,7 +2034,7 @@
<input id="use_makersuite_sysprompt" type="checkbox" />
<span>
<span data-i18n="Use system prompt">Use system prompt</span>
<i class="opacity50p fa-solid fa-circle-info" title="Gemini 1.5/2.0 Pro/Flash"></i>
<i class="opacity50p fa-solid fa-circle-info" title="Gemini 1.5+, LearnLM"></i>
</span>
</label>
<div class="toggle-description justifyLeft marginBot5">
@@ -2028,7 +2043,7 @@
</span>
</div>
</div>
<div class="range-block" data-source="deepseek,openrouter,custom,claude">
<div class="range-block" data-source="deepseek,openrouter,custom,claude,xai">
<label for="openai_show_thoughts" class="checkbox_label widthFreeExpand">
<input id="openai_show_thoughts" type="checkbox" />
<span>
@@ -2042,16 +2057,20 @@
</span>
</div>
</div>
<div class="flex-container flexFlowColumn wide100p textAlignCenter marginTop10" data-source="openai,custom,claude">
<div class="flex-container oneline-dropdown" title="Constrains effort on reasoning for reasoning models.&#10;Currently supported values are low, medium, and high.&#10;Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response." data-i18n="[title]Constrains effort on reasoning for reasoning models.">
<div class="flex-container flexFlowColumn wide100p textAlignCenter marginTop10" data-source="openai,custom,claude,xai,makersuite,openrouter">
<div class="flex-container oneline-dropdown" title="Constrains effort on reasoning for reasoning models.&#10;Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response." data-i18n="[title]Constrains effort on reasoning for reasoning models.">
<label for="openai_reasoning_effort">
<span data-i18n="Reasoning Effort">Reasoning Effort</span>
<i data-source="claude" class="opacity50p fa-solid fa-circle-info" title="Allocates a portion of the response length for thinking (low: 10%, medium: 25%, high: 50%), but minimum 1024 tokens."></i>
<i data-source="openai,custom,xai,openrouter" class="opacity50p fa-solid fa-circle-info" title="OpenAI-style options: low, medium, high. Minimum and maximum are aliased to low and high. Auto does not send an effort level." data-i18n="[title]OpenAI-style options: low, medium, high. Minimum and maximum are aliased to low and high. Auto does not send an effort level."></i>
<i data-source="claude,makersuite" class="opacity50p fa-solid fa-circle-info" title="Allocates a portion of the response length for thinking (low: 10%, medium: 25%, high: 50%). Other options are model-dependent." data-i18n="[title]Allocates a portion of the response length for thinking (low: 10%, medium: 25%, high: 50%). Other options are model-dependent."></i>
</label>
<select id="openai_reasoning_effort">
<option data-i18n="openai_reasoning_effort_auto" value="auto">Auto</option>
<option data-i18n="openai_reasoning_effort_minimum" value="min">Mininum</option>
<option data-i18n="openai_reasoning_effort_low" value="low">Low</option>
<option data-i18n="openai_reasoning_effort_medium" value="medium">Medium</option>
<option data-i18n="openai_reasoning_effort_high" value="high">High</option>
<option data-i18n="openai_reasoning_effort_maximum" value="max">Maximum</option>
</select>
</div>
</div>
@@ -2188,7 +2207,7 @@
<input id="horde_trusted_workers_only" type="checkbox" />
<span data-i18n="Trusted workers only">Trusted workers only</span>
</label>
<small id="adjustedHordeParams">Context: --, Response: --</small>
<small id="adjustedHordeParams"><span data-i18n="Context">Context</span>: --, <span data-i18n="Response">Response</span>: --</small>
<h4 data-i18n="API key">API key</h4>
<small>
<span data-i18n="Get it here:">Get it here: </span> <a target="_blank" href="https://aihorde.net/register" data-i18n="Register">Register</a> (<a id="horde_kudos" href="javascript:void(0);" data-i18n="View my Kudos">View my Kudos</a>)<br>
@@ -2429,7 +2448,7 @@
</div>
<div class="flex1">
<h4 data-i18n="Server url">Server URL</h4>
<small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<input id="generic_api_url_text" name="generic_api_url" class="text_pole wide100p" value="" autocomplete="off" data-server-history="generic">
</div>
<datalist id="generic_model_fill"></datalist>
@@ -2458,7 +2477,7 @@
</div>
<div class="flex1">
<h4 data-i18n="Server url">Server URL</h4>
<small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ooba_blocking">
</div>
<input id="custom_model_textgenerationwebui" class="text_pole wide100p" placeholder="Custom model (optional)" data-i18n="[placeholder]Custom model (optional)" type="text">
@@ -2488,8 +2507,8 @@
<option value="search" data-i18n="Search" hidden>A-Z</option>
<option value="asc">A-Z</option>
<option value="desc">Z-A</option>
<option value="date_asc">Date Asc</option>
<option value="date_desc">Date Desc</option>
<option data-i18n="Date Asc" value="date_asc">Date Asc</option>
<option data-i18n="Date Desc" value="date_desc">Date Desc</option>
</select>
<select id="featherless_category_selection" class="text_pole">
<option value="" disabled selected data-i18n="category">category</option>
@@ -2499,7 +2518,7 @@
<option value="All" data-i18n="All">All</option>
</select>
<select id="featherless_class_selection" class="text_pole">
<option value="" selected data-i18n="class">All Classes</option>
<option value="" selected data-i18n="All Classes">All Classes</option>
</select>
<div id="featherless_model_pagination_container" class="flex1"></div>
<i id="featherless_model_grid_toggle" class="fa-solid fa-table-cells-large menu_button" data-i18n="[title]Toggle grid view" title="Toggle grid view"></i>
@@ -2531,7 +2550,7 @@
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:8000">Example: http://127.0.0.1:8000</small>
<small data-i18n="Example: http://127.0.0.1:8000">Example: http://127.0.0.1:8000</small>
<input id="vllm_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="vllm">
</div>
<div>
@@ -2577,7 +2596,7 @@
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<input id="aphrodite_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="aphrodite">
</div>
<div>
@@ -2606,19 +2625,19 @@
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:8080">Example: http://127.0.0.1:8080</small>
<small data-i18n="Example: http://127.0.0.1:8080">Example: http://127.0.0.1:8080</small>
<input id="llamacpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="llamacpp">
</div>
</div>
<div data-tg-type="ollama">
<div class="flex-container flexFlowColumn">
<a href="https://github.com/jmorganca/ollama" target="_blank">
jmorganca/ollama
<a href="https://github.com/ollama/ollama" target="_blank">
ollama/ollama
</a>
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:11434">Example: http://127.0.0.1:11434</small>
<small data-i18n="Example: http://127.0.0.1:11434">Example: http://127.0.0.1:11434</small>
<input id="ollama_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ollama">
</div>
<div class="flex1">
@@ -2653,7 +2672,7 @@
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<small data-i18n="Example: http://127.0.0.1:5000">Example: http://127.0.0.1:5000</small>
<input id="tabby_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="tabby">
</div>
<div class="flex1">
@@ -2705,7 +2724,7 @@
</div>
<div class="flex1">
<h4 data-i18n="API url">API URL</h4>
<small data-i18n="Example: 127.0.0.1:5001">Example: http://127.0.0.1:5001</small>
<small data-i18n="Example: http://127.0.0.1:5001">Example: http://127.0.0.1:5001</small>
<input id="koboldcpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="koboldcpp">
</div>
</div>
@@ -2742,7 +2761,6 @@
<optgroup>
<option value="01ai">01.AI (Yi)</option>
<option value="ai21">AI21</option>
<option value="blockentropy">Block Entropy</option>
<option value="claude">Claude</option>
<option value="cohere">Cohere</option>
<option value="deepseek">DeepSeek</option>
@@ -2754,9 +2772,10 @@
<option value="perplexity">Perplexity</option>
<option value="scale">Scale</option>
<option value="windowai">Window AI</option>
<option value="xai">xAI (Grok)</option>
</optgroup>
</select>
<div class="inline-drawer wide100p" data-source="openai,claude,mistralai,makersuite,deepseek">
<div class="inline-drawer wide100p" data-source="openai,claude,mistralai,makersuite,deepseek,xai">
<div class="inline-drawer-toggle inline-drawer-header">
<b data-i18n="Reverse Proxy">Reverse Proxy</b>
<div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
@@ -2819,7 +2838,7 @@
</div>
</div>
</div>
<div id="ReverseProxyWarningMessage" data-source="openai,claude,mistralai,makersuite,deepseek">
<div id="ReverseProxyWarningMessage" data-source="openai,claude,mistralai,makersuite,deepseek,xai">
<div class="reverse_proxy_warning">
<b>
<div data-i18n="Using a proxy that you're not running yourself is a risk to your data privacy.">
@@ -2878,12 +2897,17 @@
</optgroup>
<optgroup label="GPT-4o mini">
<option value="gpt-4o-mini">gpt-4o-mini</option>
<option value="gpt-4o-2024-11-20">gpt-4o-2024-11-20</option>
<option value="gpt-4o-2024-08-06">gpt-4o-2024-08-06</option>
<option value="gpt-4o-2024-05-13">gpt-4o-2024-05-13</option>
<option value="chatgpt-4o-latest">chatgpt-4o-latest</option>
<option value="gpt-4o-mini-2024-07-18">gpt-4o-mini-2024-07-18</option>
</optgroup>
<optgroup label="o1 and o1-mini">
<optgroup label="GPT-4.1">
<option value="gpt-4.1">gpt-4.1</option>
<option value="gpt-4.1-2025-04-14">gpt-4.1-2025-04-14</option>
<option value="gpt-4.1-mini">gpt-4.1-mini</option>
<option value="gpt-4.1-mini-2025-04-14">gpt-4.1-mini-2025-04-14</option>
<option value="gpt-4.1-nano">gpt-4.1-nano</option>
<option value="gpt-4.1-nano-2025-04-14">gpt-4.1-nano-2025-04-14</option>
</optgroup>
<optgroup label="o1">
<option value="o1">o1</option>
<option value="o1-2024-12-17">o1-2024-12-17</option>
<option value="o1-mini">o1-mini</option>
@@ -2892,9 +2916,15 @@
<option value="o1-preview-2024-09-12">o1-preview-2024-09-12</option>
</optgroup>
<optgroup label="o3">
<option value="o3">o3</option>
<option value="o3-2025-04-16">o3-2025-04-16</option>
<option value="o3-mini">o3-mini</option>
<option value="o3-mini-2025-01-31">o3-mini-2025-01-31</option>
</optgroup>
<optgroup label="o4">
<option value="o4-mini">o4-mini</option>
<option value="o4-mini-2025-04-16">o4-mini-2025-04-16</option>
</optgroup>
<optgroup label="GPT-4.5">
<option value="gpt-4.5-preview">gpt-4.5-preview</option>
<option value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option>
@@ -3125,46 +3155,50 @@
<div>
<h4 data-i18n="Google Model">Google Model</h4>
<select id="model_google_select">
<optgroup label="Primary">
<option value="gemini-2.0-flash">Gemini 2.0 Flash</option>
<option value="gemini-1.5-pro">Gemini 1.5 Pro</option>
<option value="gemini-1.5-flash">Gemini 1.5 Flash</option>
<option value="gemini-1.0-pro">Gemini 1.0 Pro (Deprecated)</option>
<option value="gemini-pro">Gemini Pro (1.0) (Deprecated)</option>
<option value="gemini-ultra">Gemini Ultra (1.0)</option>
<option value="gemini-1.0-ultra-latest">Gemini 1.0 Ultra</option>
<optgroup label="Gemini 2.5">
<option value="gemini-2.5-pro-preview-05-06">gemini-2.5-pro-preview-05-06</option>
<option value="gemini-2.5-pro-preview-03-25">gemini-2.5-pro-preview-03-25</option>
<option value="gemini-2.5-pro-exp-03-25">gemini-2.5-pro-exp-03-25</option>
<option value="gemini-2.5-flash-preview-04-17">gemini-2.5-flash-preview-04-17</option>
</optgroup>
<optgroup label="Gemini 2.0">
<option value="gemini-2.0-pro-exp-02-05">gemini-2.0-pro-exp-02-05 → 2.5-pro-exp-03-25</option>
<option value="gemini-2.0-pro-exp">gemini-2.0-pro-exp → 2.5-pro-exp-03-25</option>
<option value="gemini-exp-1206">gemini-exp-1206 → 2.5-pro-exp-03-25</option>
<option value="gemini-2.0-flash-001">gemini-2.0-flash-001</option>
<option value="gemini-2.0-flash-exp-image-generation">gemini-2.0-flash-exp-image-generation</option>
<option value="gemini-2.0-flash-exp">gemini-2.0-flash-exp</option>
<option value="gemini-2.0-flash">gemini-2.0-flash</option>
<option value="gemini-2.0-flash-thinking-exp-01-21">gemini-2.0-flash-thinking-exp-01-21 → 2.5-flash-preview-04-17</option>
<option value="gemini-2.0-flash-thinking-exp-1219">gemini-2.0-flash-thinking-exp-1219 → 2.5-flash-preview-04-17</option>
<option value="gemini-2.0-flash-thinking-exp">gemini-2.0-flash-thinking-exp → 2.5-flash-preview-04-17</option>
<option value="gemini-2.0-flash-lite-001">gemini-2.0-flash-lite-001</option>
<option value="gemini-2.0-flash-lite-preview-02-05">gemini-2.0-flash-lite-preview-02-05</option>
<option value="gemini-2.0-flash-lite-preview">gemini-2.0-flash-lite-preview</option>
</optgroup>
<optgroup label="Gemini 1.5">
<option value="gemini-1.5-pro-latest">gemini-1.5-pro-latest</option>
<option value="gemini-1.5-pro-002">gemini-1.5-pro-002</option>
<option value="gemini-1.5-pro-001">gemini-1.5-pro-001</option>
<option value="gemini-1.5-pro">gemini-1.5-pro</option>
<option value="gemini-1.5-flash-latest">gemini-1.5-flash-latest</option>
<option value="gemini-1.5-flash-002">gemini-1.5-flash-002</option>
<option value="gemini-1.5-flash-001">gemini-1.5-flash-001</option>
<option value="gemini-1.5-flash">gemini-1.5-flash</option>
<option value="gemini-1.5-flash-8b-001">gemini-1.5-flash-8b-001</option>
<option value="gemini-1.5-flash-8b-exp-0924">gemini-1.5-flash-8b-exp-0924</option>
<option value="gemini-1.5-flash-8b-exp-0827">gemini-1.5-flash-8b-exp-0827</option>
<option value="gemini-1.5-flash-8b">gemini-1.5-flash-8b</option>
</optgroup>
<optgroup label="Gemma">
<option value="gemma-3-27b-it">Gemma 3 27B</option>
<option value="gemma-3-27b-it">gemma-3-27b-it</option>
<option value="gemma-3-12b-it">gemma-3-12b-it</option>
<option value="gemma-3-4b-it">gemma-3-4b-it</option>
<option value="gemma-3-1b-it">gemma-3-1b-it</option>
</optgroup>
<optgroup label="Subversions">
<option value="gemini-2.0-pro-exp">Gemini 2.0 Pro Experimental</option>
<option value="gemini-2.0-pro-exp-02-05">Gemini 2.0 Pro Experimental 2025-02-05</option>
<option value="gemini-2.0-flash-lite-preview">Gemini 2.0 Flash-Lite Preview</option>
<option value="gemini-2.0-flash-lite-preview-02-05">Gemini 2.0 Flash-Lite Preview 2025-02-05</option>
<option value="gemini-2.0-flash-001">Gemini 2.0 Flash [001]</option>
<option value="gemini-2.0-flash-thinking-exp">Gemini 2.0 Flash Thinking Experimental</option>
<option value="gemini-2.0-flash-thinking-exp-01-21">Gemini 2.0 Flash Thinking Experimental 2025-01-21</option>
<option value="gemini-2.0-flash-thinking-exp-1219">Gemini 2.0 Flash Thinking Experimental 2024-12-19</option>
<option value="gemini-2.0-flash-exp">Gemini 2.0 Flash Experimental</option>
<option value="gemini-2.0-flash-exp-image-generation">Gemini 2.0 Flash (Image Generation) Experimental</option>
<option value="gemini-exp-1114">Gemini Experimental 2024-11-14</option>
<option value="gemini-exp-1121">Gemini Experimental 2024-11-21</option>
<option value="gemini-exp-1206">Gemini Experimental 2024-12-06</option>
<option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro Experimental 2024-08-01</option>
<option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro Experimental 2024-08-27</option>
<option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option>
<option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option>
<option value="gemini-1.5-pro-002">Gemini 1.5 Pro [002]</option>
<option value="gemini-1.5-flash-8b">Gemini 1.5 Flash 8B</option>
<option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash Experimental 2024-08-27</option>
<option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B Experimental 2024-08-27</option>
<option value="gemini-1.5-flash-8b-exp-0924">Gemini 1.5 Flash 8B Experimental 2024-09-24</option>
<option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option>
<option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option>
<option value="gemini-1.5-flash-002">Gemini 1.5 Flash [002]</option>
<option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest] (Deprecated)</option>
<option value="gemini-1.0-pro-001">Gemini 1.0 Pro (Tuning) [001] (Deprecated)</option>
<optgroup label="LearnLM">
<option value="learnlm-2.0-flash-experimental">learnlm-2.0-flash-experimental</option>
<option value="learnlm-1.5-pro-experimental">learnlm-1.5-pro-experimental</option>
</optgroup>
</select>
</div>
@@ -3193,6 +3227,7 @@
<option value="mistral-small-latest">mistral-small-latest</option>
<option value="mistral-medium-latest">mistral-medium-latest</option>
<option value="mistral-large-latest">mistral-large-latest</option>
<option value="mistral-saba-latest">mistral-saba-latest</option>
<option value="codestral-latest">codestral-latest</option>
<option value="codestral-mamba-latest">codestral-mamba-latest</option>
<option value="pixtral-12b-latest">pixtral-12b-latest</option>
@@ -3208,13 +3243,21 @@
<option value="mistral-small-2312">mistral-small-2312</option>
<option value="mistral-small-2402">mistral-small-2402</option>
<option value="mistral-small-2409">mistral-small-2409</option>
<option value="mistral-small-2501">mistral-small-2501</option>
<option value="mistral-small-2503">mistral-small-2503</option>
<option value="mistral-medium-2312">mistral-medium-2312</option>
<option value="mistral-medium-2505">mistral-medium-2505</option>
<option value="mistral-large-2402">mistral-large-2402</option>
<option value="mistral-large-2407">mistral-large-2407</option>
<option value="mistral-large-2411">mistral-large-2411</option>
<option value="mistral-large-pixtral-2411">mistral-large-pixtral-2411</option>
<option value="mistral-saba-2502">mistral-saba-2502</option>
<option value="codestral-2405">codestral-2405</option>
<option value="codestral-2405-blue">codestral-2405-blue</option>
<option value="codestral-mamba-2407">codestral-mamba-2407</option>
<option value="codestral-2411-rc5">codestral-2411-rc5</option>
<option value="codestral-2412">codestral-2412</option>
<option value="codestral-2501">codestral-2501</option>
<option value="pixtral-12b-2409">pixtral-12b-2409</option>
<option value="pixtral-large-2411">pixtral-large-2411</option>
</optgroup>
@@ -3237,28 +3280,29 @@
<option value="qwen-2.5-32b">qwen-2.5-32b</option>
<option value="qwen-2.5-coder-32b">qwen-2.5-coder-32b</option>
</optgroup>
<optgroup label="DeepSeek / Alibaba Cloud">
<optgroup label="DeepSeek">
<option value="deepseek-r1-distill-qwen-32b">deepseek-r1-distill-qwen-32b</option>
</optgroup>
<optgroup label="DeepSeek / Meta">
<option value="deepseek-r1-distill-llama-70b">deepseek-r1-distill-llama-70b</option>
</optgroup>
<optgroup label="Google">
<option value="gemma2-9b-it">gemma2-9b-it</option>
</optgroup>
<optgroup label="Meta">
<option value="llama-3.1-8b-instant">llama-3.1-8b-instant </option>
<option value="meta-llama/llama-4-scout-17b-16e-instruct">meta-llama/llama-4-scout-17b-16e-instruct</option>
<option value="meta-llama/llama-4-maverick-17b-128e-instruct">meta-llama/llama-4-maverick-17b-128e-instruct</option>
<option value="llama-3.1-8b-instant">llama-3.1-8b-instant</option>
<option value="llama-3.2-11b-vision-preview">llama-3.2-11b-vision-preview </option>
<option value="llama-3.2-1b-preview">llama-3.2-1b-preview </option>
<option value="llama-3.2-3b-preview">llama-3.2-3b-preview </option>
<option value="llama-3.2-90b-vision-preview">llama-3.2-90b-vision-preview </option>
<option value="llama-3.3-70b-specdec">llama-3.3-70b-specdec </option>
<option value="llama-3.3-70b-specdec">llama-3.3-70b-specdec</option>
<option value="llama-3.3-70b-versatile">llama-3.3-70b-versatile </option>
<option value="llama-guard-3-8b">llama-guard-3-8b </option>
<option value="llama3-70b-8192">llama3-70b-8192 </option>
<option value="llama3-8b-8192">llama3-8b-8192 </option>
<option value="llama-guard-3-8b">llama-guard-3-8b</option>
<option value="llama3-70b-8192">llama3-70b-8192</option>
<option value="llama3-8b-8192">llama3-8b-8192</option>
</optgroup>
<optgroup label="Mistral AI">
<option value="mistral-saba-24b">mistral-saba-24b</option>
<option value="mixtral-8x7b-32768">mixtral-8x7b-32768</option>
</optgroup>
</select>
@@ -3363,20 +3407,6 @@
</select>
</div>
</form>
<form id="blockentropy_form" data-source="blockentropy">
<h4 data-i18n="Block Entropy API Key">Block Entropy API Key</h4>
<div class="flex-container">
<input id="api_key_blockentropy" name="api_key_blockentropy" class="text_pole flex1" value="" type="text" autocomplete="off">
<div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_blockentropy"></div>
</div>
<div data-for="api_key_blockentropy" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
For privacy reasons, your API key will be hidden after you reload the page.
</div>
<h4 data-i18n="Select a Model">Select a Model</h4>
<div class="flex-container">
<select id="model_blockentropy_select" class="text_pole"></select>
</div>
</form>
<form id="custom_form" data-source="custom">
<h4 data-i18n="Custom Endpoint (Base URL)">Custom Endpoint (Base URL)</h4>
<div class="flex-container">
@@ -3407,17 +3437,10 @@
<div class="flex-container">
<select id="model_custom_select" class="text_pole model_custom_select"></select>
</div>
<h4 data-i18n="Prompt Post-Processing">Prompt Post-Processing</h4>
<select id="custom_prompt_post_processing" class="text_pole" title="Applies additional processing to the prompt before sending it to the API." data-i18n="[title]Applies additional processing to the prompt before sending it to the API.">
<option data-i18n="prompt_post_processing_none" value="">None</option>
<option data-i18n="prompt_post_processing_merge" value="merge">Merge consecutive roles</option>
<option data-i18n="prompt_post_processing_semi" value="semi">Semi-strict (alternating roles)</option>
<option data-i18n="prompt_post_processing_strict" value="strict">Strict (user first, alternating roles)</option>
</select>
</form>
<div id="01ai_form" data-source="01ai">
<h4>
<a data-i18n="01.AI API Key" href="https://platform.01.ai/" target="_blank" rel="noopener noreferrer">
<a data-i18n="01.AI API Key" href="https://platform.lingyiwanwu.com/" target="_blank" rel="noopener noreferrer">
01.AI API Key
</a>
</h4>
@@ -3432,6 +3455,40 @@
<select id="model_01ai_select">
</select>
</div>
<div id="xai_form" data-source="xai">
<h4>
<a data-i18n="xAI API Key" href="https://console.x.ai/" target="_blank" rel="noopener noreferrer">
xAI API Key
</a>
</h4>
<div class="flex-container">
<input id="api_key_xai" name="api_key_xai" class="text_pole flex1" value="" type="text" autocomplete="off">
<div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_xai"></div>
</div>
<div data-for="api_key_xai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page.">
For privacy reasons, your API key will be hidden after you reload the page.
</div>
<h4 data-i18n="xAI Model">xAI Model</h4>
<select id="model_xai_select">
<option value="grok-3-beta">grok-3-beta</option>
<option value="grok-3-fast-beta">grok-3-fast-beta</option>
<option value="grok-3-mini-beta">grok-3-mini-beta</option>
<option value="grok-3-mini-fast-beta">grok-3-mini-fast-beta</option>
<option value="grok-2-vision-1212">grok-2-vision-1212</option>
<option value="grok-2-1212">grok-2-1212</option>
<option value="grok-vision-beta">grok-vision-beta</option>
<option value="grok-beta">grok-beta</option>
</select>
</div>
<div id="prompt_post_porcessing_form" data-source="custom,openrouter">
<h4 data-i18n="Prompt Post-Processing">Prompt Post-Processing</h4>
<select id="custom_prompt_post_processing" class="text_pole" title="Applies additional processing to the prompt before sending it to the API." data-i18n="[title]Applies additional processing to the prompt before sending it to the API.">
<option data-i18n="prompt_post_processing_none" value="">None</option>
<option data-i18n="prompt_post_processing_merge" value="merge">Merge consecutive roles</option>
<option data-i18n="prompt_post_processing_semi" value="semi">Semi-strict (alternating roles)</option>
<option data-i18n="prompt_post_processing_strict" value="strict">Strict (user first, alternating roles)</option>
</select>
</div>
<div class="flex-container flex">
<div id="api_button_openai" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div>
<div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div>
@@ -3457,7 +3514,7 @@
<div class="drawer-toggle">
<div class="drawer-icon fa-solid fa-font fa-fw closedIcon" title="AI Response Formatting" data-i18n="[title]AI Response Formatting"></div>
</div>
<div id="AdvancedFormatting" class="drawer-content">
<div id="AdvancedFormatting" class="drawer-content closedDrawer">
<div class="flex-container alignItemsBaseline">
<h3 class="margin0 flex1 flex-container alignItemsBaseline">
<span data-i18n="Advanced Formatting">
@@ -3576,11 +3633,6 @@
<small data-i18n="Names as Stop Strings">Names as Stop Strings</small>
</label>
</div>
<label class="checkbox_label" title="Includes Post-History Instructions at the end of the prompt, if defined in the character card AND ''Prefer Char. Instructions'' is enabled.&#10;THIS IS NOT RECOMMENDED FOR TEXT COMPLETION MODELS, CAN LEAD TO BAD OUTPUT." data-i18n="[title]context_allow_post_history_instructions">
<input id="context_allow_jailbreak" type="checkbox" />
<small data-i18n="Allow Post-History Instructions">Allow Post-History Instructions</small>
</label>
</div>
</div>
</div>
@@ -3782,9 +3834,7 @@
</label>
</div>
</h4>
<div id="SystemPromptBlock">
<div id="SystemPromptBlock" class="marginBot10">
<div class="flex-container" title="Select your current System Prompt" data-i18n="[title]Select your current System Prompt">
<select id="sysprompt_select" data-preset-manager-for="sysprompt" class="flex1 text_pole"></select>
<div class="flex-container margin0 justifyCenter gap3px">
@@ -3806,10 +3856,14 @@
</label>
<textarea id="sysprompt_content" class="text_pole textarea_compact autoSetHeight"></textarea>
</div>
</div>
<div>
&nbsp;
<div>
<label for="sysprompt_post_history" class="flex-container">
<small data-i18n="Post-History Instructions">Post-History Instructions</small>
<i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="sysprompt_post_history" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
</label>
<textarea id="sysprompt_post_history" class="text_pole textarea_compact autoSetHeight"></textarea>
</div>
</div>
<div>
@@ -3917,6 +3971,19 @@
<summary data-i18n="Reasoning Formatting">
Reasoning Formatting
</summary>
<div class="flex-container" title="Select your current Reasoning Template" data-i18n="[title]Select your current Reasoning Template">
<select id="reasoning_select" data-preset-manager-for="reasoning" class="flex1 text_pole"></select>
<div class="flex-container margin0 justifyCenter gap3px">
<input type="file" hidden data-preset-manager-file="reasoning" accept=".json, .settings">
<i data-preset-manager-update="reasoning" class="menu_button fa-solid fa-save" title="Update current template" data-i18n="[title]Update current template"></i>
<i data-preset-manager-rename="reasoning" class="menu_button fa-pencil fa-solid" title="Rename current template" data-i18n="[title]Rename current template"></i>
<i data-preset-manager-new="reasoning" class="menu_button fa-solid fa-file-circle-plus" title="Save template as" data-i18n="[title]Save template as"></i>
<i data-preset-manager-import="reasoning" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i>
<i data-preset-manager-export="reasoning" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i>
<i data-preset-manager-restore="reasoning" class="menu_button fa-solid fa-recycle" title="Restore current template" data-i18n="[title]Restore current template"></i>
<i data-preset-manager-delete="reasoning" class="menu_button fa-solid fa-trash-can" title="Delete template" data-i18n="[title]Delete template"></i>
</div>
</div>
<div class="flex-container">
<div class="flex1" title="Inserted before the reasoning content." data-i18n="[title]reasoning_prefix">
<small data-i18n="Prefix">Prefix</small>
@@ -4441,10 +4508,11 @@
<small data-i18n="Tags as Folders">Tags as Folders</small>
<i title="Recent change: Tags must be marked as folders in the Tag Management menu to appear as such. Click here to bring it up." data-i18n="[title]Tags_as_Folders_desc" class="tags_view right_menu_button fa-solid fa-circle-exclamation"></i>
</label>
<label for="click_to_edit" class="checkbox_label" title="Click the message text in the chat log to edit it." data-i18n="[title]Click the message text in the chat log to edit it.">
<input id="click_to_edit" type="checkbox" />
<small data-i18n="Click to Edit">Click to Edit</small>
</label>
</div>
</div>
</div>
<div name="UserSettingsSecondColumn" id="UI-Customization" class="flex-container flexFlowColumn wide100p flexNoGap flex1">
@@ -4722,6 +4790,10 @@
<input id="show_group_chat_queue" type="checkbox" />
<small data-i18n="Show group chat queue">Show group chat queue</small>
</label>
<label class="checkbox_label" for="pin_styles" title="Always render style tags from greetings, even if the message is unloaded due to lazy loading." data-i18n="[title]Always render style tags from greetings, even if the message is unloaded due to lazy loading.">
<input id="pin_styles" type="checkbox" />
<small data-i18n="Pin greeting message styles">Pin greeting message styles</small>
</label>
<div class="inline-drawer wide100p flexFlowColumn">
<div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Automatically reject and re-generate AI message based on configurable criteria." data-i18n="[title]Automatically reject and re-generate AI message based on configurable criteria">
<b><span data-i18n="Auto-swipe">Auto-swipe</span></b>
@@ -4908,7 +4980,7 @@
<div id="bg_menu_content" class="bg_list">
<form id="form_bg_download" class="bg_example no-border no-shadow" action="javascript:void(null);" method="post" enctype="multipart/form-data">
<label class="input-file">
<input type="file" id="add_bg_button" name="avatar" accept="image/png, image/jpeg, image/jpg, image/gif, image/bmp">
<input type="file" id="add_bg_button" name="avatar" accept="image/*, video/*">
<div class="bg_example no-border no-shadow add_bg_but" style="background-image: url('/img/addbg3.png');"></div>
</label>
</form>
@@ -5099,7 +5171,7 @@
<div id="persona_depth_position_settings" class="flex-container">
<div class="flex1">
<label for="persona_depth_value" data-i18n="Depth:">Depth:</label>
<input id="persona_depth_value" class="text_pole" type="number" min="0" max="999" step="1">
<input id="persona_depth_value" class="text_pole" type="number" min="0" max="9999" step="1">
</div>
<div class="flex1">
<label for="persona_depth_role" data-i18n="Role:">Role:</label>
@@ -5475,7 +5547,7 @@
<div class="inline-drawer-content">
<div id="currentGroupMembers" name="Current Group Members" class="flex-container flexFlowColumn overflowYAuto flex1">
<div id="rm_group_members_pagination" class="rm_group_members_pagination group_pagination"></div>
<div id="rm_group_members" class="rm_group_members overflowYAuto flex-container"></div>
<div id="rm_group_members" class="rm_group_members overflowYAuto flex-container" group_empty_text="Group is empty." data-i18n="[group_empty_text]Group is empty."></div>
</div>
</div>
</div>
@@ -5493,7 +5565,7 @@
<div class="tags rm_tag_filter"></div>
</div>
<div id="rm_group_add_members_pagination" class="group_pagination"></div>
<div id="rm_group_add_members" class="overflowYAuto flex-container"></div>
<div id="rm_group_add_members" class="overflowYAuto flex-container" no_characters_text="No characters available" data-i18n="[no_characters_text]No characters available"></div>
</div>
</div>
</div>
@@ -5752,7 +5824,7 @@
@ Depth
</span>
</h4>
<input id="depth_prompt_depth" name="depth_prompt_depth" class="text_pole textarea_compact m-t-0" type="number" min="0" max="999" value="4" form="form_create" />
<input id="depth_prompt_depth" name="depth_prompt_depth" class="text_pole textarea_compact m-t-0" type="number" min="0" max="9999" value="4" form="form_create" />
<h4>
<span data-i18n="Role">
Role
@@ -5913,7 +5985,7 @@
<div class="tag_view_color_picker" data-value="color"></div>
<div class="tag_view_color_picker" data-value="color2"></div>
<div class="tag_view_name" contenteditable="true"></div>
<div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;entries</div>
<div class="tag_view_counter"><span class="tag_view_counter_value"></span>&nbsp;<span data-i18n="tag_entries">entries</span></div>
<div title="Delete tag" class="tag_delete fa-solid fa-trash-can right_menu_button" data-i18n="[title]Delete tag"></div>
</div>
</div>
@@ -5973,11 +6045,11 @@
</div>
<div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap">
<label for="depth" class="WIEntryHeaderTitleMobile" data-i18n="Depth:">Depth:</label>
<input title="Depth" class="text_pole wideMax100px margin0" type="number" name="depth" data-i18n="[title]Depth" placeholder="" min="0" max="999" />
<input title="Depth" class="text_pole wideMax100px margin0" type="number" name="depth" data-i18n="[title]Depth" placeholder="" min="0" max="9999" />
</div>
<div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap">
<label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Order:">Order:</label>
<input title="Order" data-i18n="[title]Order" class="text_pole wideMax100px margin0" type="number" name="order" placeholder="" min="0" max="999" />
<input title="Order" data-i18n="[title]Order" class="text_pole wideMax100px margin0" type="number" name="order" placeholder="" min="0" max="9999" />
</div>
<div class="world_entry_form_control wi-enter-footer-text flex-container flexNoGap probabilityContainer">
<label for="order" class="WIEntryHeaderTitleMobile" data-i18n="Trigger %:">Trigger %:</label>
@@ -5986,6 +6058,7 @@
</div>
</div>
</div>
<i class="menu_button move_entry_button fa-solid fa-right-left" title="Move Entry to Another Lorebook" data-i18n="[title]Move Entry to Another Lorebook"></i>
<i class="menu_button duplicate_entry_button fa-solid fa-paste" title="Duplicate world info entry" data-i18n="[title]Duplicate world info entry" type="submit" value=""></i>
<i class="menu_button delete_entry_button fa-solid fa-trash-can" title="Delete world info entry" data-i18n="[title]Delete world info entry" type="submit" value=""></i>
</div>
@@ -6074,8 +6147,11 @@
<label for="content ">
<small>
<span class="alignitemscenter flex-container flexnowrap wide100p justifySpaceBetween">
<span data-i18n="Content" class="alignitemscenter flex-container flexNoGap mdhotkey_location">
Content
<span class="alignitemscenter flex-container">
<span data-i18n="Content" class="mdhotkey_location">
Content
</span>
<i class="editor_maximize fa-solid fa-maximize right_menu_button" title="Expand the editor" data-i18n="[title]Expand the editor"></i>
</span>
<span>
(<span data-i18n="extension_token_counter">Tokens:</span>&nbsp; <span class="world_entry_form_token_counter" data-first-run="true">counting...</span>)&nbsp;
@@ -6229,6 +6305,54 @@
</label>
</div>
</div>
<div class="inline-drawer wide100p flexFlowColumn">
<div class="inline-drawer-toggle inline-drawer-header inline-drawer-header-pointer userSettingsInnerExpandable">
<strong data-i18n="Additional Matching Sources">Additional Matching Sources</strong>
<div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
</div>
<div class="inline-drawer-content flex-container flexFlowRow flexGap10 paddingBottom5px">
<small class="flex-container flex1 flexFlowColumn">
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchCharacterDescription" />
<span data-i18n="Character Description">
Character Description
</span>
</label>
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchCharacterPersonality" />
<span data-i18n="Character Personality">
Character Personality
</span>
</label>
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchScenario" />
<span data-i18n="Scenario">
Scenario
</span>
</label>
</small>
<small class="flex-container flex1 flexFlowColumn">
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchPersonaDescription" />
<span data-i18n="Persona Description">
Persona Description
</span>
</label>
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchCharacterDepthPrompt" />
<span data-i18n="Character's Note">
Character's Note
</span>
</label>
<label class="checkbox flex-container alignItemsCenter flexNoGap">
<input type="checkbox" name="matchCreatorNotes" />
<span data-i18n="Creator's Notes">
Creator's Notes
</span>
</label>
</small>
</div>
</div>
</div>
</div>
</form>
@@ -6335,7 +6459,7 @@
<span data-i18n="prompt_manager_depth">Depth</span>
</label>
<div class="text_muted" data-i18n="Injection depth. 0 = after the last message, 1 = before the last message, etc.">Injection depth. 0 = after the last message, 1 = before the last message, etc.</div>
<input id="completion_prompt_manager_popup_entry_form_injection_depth" class="text_pole" type="number" name="injection_depth" min="0" max="999" value="4" />
<input id="completion_prompt_manager_popup_entry_form_injection_depth" class="text_pole" type="number" name="injection_depth" min="0" max="9999" value="4" />
</div>
</div>
<div class="completion_prompt_manager_popup_entry_form_control">
@@ -6353,6 +6477,11 @@
</label>
</div>
</div>
<div id="completion_prompt_manager_popup_entry_source_block">
<b data-i18n="Source:">Source:</b>
<span>&nbsp;</span>
<span id="completion_prompt_manager_popup_entry_source"></span>
</div>
<textarea id="completion_prompt_manager_popup_entry_form_prompt" class="text_pole" name="prompt">
</textarea>
</div>
@@ -6432,13 +6561,10 @@
<div class="mes_reasoning"></div>
</details>
<div class="mes_text"></div>
<div class="mes_img_container" data-img-prompt-type="">
<div class="mes_img_container">
<div class="mes_img_controls">
<div title="Enlarge" class="right_menu_button fa-lg fa-solid fa-magnifying-glass mes_img_enlarge" data-i18n="[title]Enlarge"></div>
<div title="Expand and zoom" class="right_menu_button fa-lg fa-solid fa-magnifying-glass mes_img_enlarge" data-i18n="[title]Expand and zoom"></div>
<div title="Caption" class="right_menu_button fa-lg fa-solid fa-envelope-open-text mes_img_caption" data-i18n="[title]Caption"></div>
<div title="Include just this swipe in prompts" class="right_menu_button fa-lg fa-solid fa-1 mes_img_prompt_type" data-img-prompt-type="one" data-i18n="[title]Include just this swipe in prompts"></div>
<div title="Include all swipes in prompts" class="right_menu_button fa-lg fa-solid fa-infinity mes_img_prompt_type" data-img-prompt-type="all" data-i18n="[title]Include all swipes in prompts"></div>
<div title="Exclude this image from prompts" class="right_menu_button fa-lg fa-solid fa-0 mes_img_prompt_type" data-img-prompt-type="none" data-i18n="[title]Exclude this image from prompts"></div>
<div title="Delete" class="right_menu_button fa-lg fa-solid fa-trash-can mes_img_delete" data-i18n="[title]Delete"></div>
</div>
<div class="mes_img_swipes">
@@ -6566,7 +6692,7 @@
<div class="ch_name"></div>
<small class="ch_additional_info group_select_counter"></small>
</div>
<small class="character_name_block_sub_line">in this group</small>
<small class="character_name_block_sub_line" data-i18n="in this group">in this group</small>
<i class='group_fav_icon fa-solid fa-star'></i>
<input class="ch_fav" value="" hidden />
<div class="group_select_block_list ch_description"></div>
@@ -6599,7 +6725,7 @@
</div>
<div class="flex-container wide100pLess70px character_select_container height100p alignitemscenter">
<div class="wide100p character_name_block">
<span class="ch_name">Go back</span>
<span class="ch_name" data-i18n="Go back">Go back</span>
</div>
</div>
</div>
@@ -6698,7 +6824,7 @@
<label class="checkbox_label alignItemsCenter" for="extension_floating_position_depth">
<input type="radio" id="extension_floating_position_depth" name="extension_floating_position" value="1" />
<span data-i18n="In-chat @ Depth">In-chat @ Depth</span>
<input id="extension_floating_depth" class="text_pole textarea_compact widthNatural" type="number" min="0" max="999" />
<input id="extension_floating_depth" class="text_pole textarea_compact widthNatural" type="number" min="0" max="9999" />
<span data-i18n="as">as</span>
<select id="extension_floating_role" class="text_pole widthNatural">
<option data-i18n="System" value="0">System</option>
@@ -6713,7 +6839,7 @@
<span data-i18n="Insertion Frequency">Insertion Frequency</span>
<small data-i18n="(0 = Disable, 1 = Always)">(0 = Disable, 1 = Always)</small>
</label>
<input id="extension_floating_interval" class="text_pole widthUnset" type="number" min="0" max="999" />
<input id="extension_floating_interval" class="text_pole widthUnset" type="number" min="0" max="9999" />
</div>
<br>
<span><span data-i18n="User inputs until next insertion:">User inputs until next insertion:</span> <span id="extension_floating_counter">(disabled)</span></span>
@@ -6783,7 +6909,7 @@
<label class="checkbox_label alignItemsCenter" for="extension_default_position_depth">
<input type="radio" id="extension_default_position_depth" name="extension_default_position" value="1" />
<span data-i18n="In-chat @ Depth">In-chat @ Depth</span>
<input id="extension_default_depth" class="text_pole textarea_compact widthNatural" type="number" min="0" max="999" />
<input id="extension_default_depth" class="text_pole textarea_compact widthNatural" type="number" min="0" max="9999" />
<span data-i18n="as">as</span>
<select id="extension_default_role" class="text_pole widthNatural">
<option data-i18n="System" value="0">System</option>
@@ -6797,7 +6923,7 @@
<span data-i18n="Insertion Frequency">Insertion Frequency</span>
<small data-i18n="(0 = Disable, 1 = Always)">(0 = Disable, 1 = Always)</small>
</label>
<input id="extension_default_interval" class="text_pole widthUnset" type="number" min="0" max="999" />
<input id="extension_default_interval" class="text_pole widthUnset" type="number" min="0" max="9999" />
</div>
</div>
</div>

View File

@@ -318,23 +318,23 @@
"flag": "وضع علامة",
"API key (optional)": "مفتاح API (اختياري)",
"Server url": "رابط الخادم",
"Example: 127.0.0.1:5000": "مثال: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "مثال: http://127.0.0.1:5000",
"Custom model (optional)": "نموذج مخصص (اختياري)",
"vllm-project/vllm": "vllm-project/vllm (وضع غلاف OpenAI API)",
"vLLM API key": "مفتاح واجهة برمجة التطبيقات vLLM",
"Example: 127.0.0.1:8000": "مثال: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "مثال: http://127.0.0.1:8000",
"vLLM Model": "نموذج vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (وضع التغليف لواجهة برمجة التطبيقات OpenAI)",
"Aphrodite API key": "مفتاح واجهة برمجة التطبيقات Aphrodite",
"Aphrodite Model": "نموذج أفروديت",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (خادم إخراج)",
"Example: 127.0.0.1:8080": "مثال: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "مثال: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "مثال: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "مثال: http://127.0.0.1:11434",
"Ollama Model": "نموذج Ollama",
"Download": "تحميل",
"Tabby API key": "مفتاح API لـ Tabby",
"koboldcpp API key (optional)": "مفتاح koboldcpp API (اختياري)",
"Example: 127.0.0.1:5001": "مثال: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "مثال: http://127.0.0.1:5001",
"Authorize": "تفويض",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai",
"Bypass status check": "تجاوز فحص الحالة",
@@ -411,7 +411,6 @@
"Chat Start": "بداية الدردشة",
"Add Chat Start and Example Separator to a list of stopping strings.": "أضف بداية الدردشة وفاصل الأمثلة إلى قائمة سلاسل التوقف.",
"Use as Stop Strings": "استخدم كسلاسل التوقف",
"context_allow_jailbreak": "يتضمن كسر الحماية في نهاية المطالبة، إذا تم تحديده في بطاقة الشخصية و''Prefer Char. تم تمكين الهروب من السجن.\nلا يُنصح بهذا بالنسبة لنماذج إكمال النص، فقد يؤدي إلى نتائج سيئة.",
"Allow Jailbreak": "السماح بالجيلبريك",
"Context Order": "ترتيب السياق",
"Summary": "ملخص",

View File

@@ -318,23 +318,23 @@
"flag": "Flagge",
"API key (optional)": "API-Schlüssel (optional)",
"Server url": "Server-URL",
"Example: 127.0.0.1:5000": "Beispiel: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Beispiel: http://127.0.0.1:5000",
"Custom model (optional)": "Benutzerdefiniertes Modell (optional)",
"vllm-project/vllm": "vllm-project/vllm (OpenAI API-Wrappermodus)",
"vLLM API key": "vLLM-API-Schlüssel",
"Example: 127.0.0.1:8000": "Beispiel: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Beispiel: http://127.0.0.1:8000",
"vLLM Model": "vLLM-Modell",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Wrappermodus für OpenAI API)",
"Aphrodite API key": "Aphrodite API-Schlüssel",
"Aphrodite Model": "Aphrodite-Modell",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Output-Server)",
"Example: 127.0.0.1:8080": "Beispiel: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Beispiel: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Beispiel: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Beispiel: http://127.0.0.1:11434",
"Ollama Model": "Ollama-Modell",
"Download": "Herunterladen",
"Tabby API key": "Tabby API-Schlüssel",
"koboldcpp API key (optional)": "koboldcpp API-Schlüssel (optional)",
"Example: 127.0.0.1:5001": "Beispiel: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Beispiel: http://127.0.0.1:5001",
"Authorize": "Autorisieren",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet",
"Bypass status check": "Umgehe Statusüberprüfung",
@@ -411,7 +411,6 @@
"Chat Start": "Chat-Start",
"Add Chat Start and Example Separator to a list of stopping strings.": "Fügen Sie einer Liste von Stoppzeichenfolgen „Chat-Start“ und „Beispieltrennzeichen“ hinzu.",
"Use as Stop Strings": "Verwende als Stoppzeichenfolgen",
"context_allow_jailbreak": "Schließt Jailbreak am Ende der Eingabeaufforderung ein, wenn dies in der Charakterkarte definiert ist UND „Charakter-Jailbreak bevorzugen“ aktiviert ist.\nDIES WIRD FÜR TEXTVERVOLLSTÄNDIGUNGSMODELLE NICHT EMPFOHLEN, KANN ZU SCHLECHTEN AUSGABEN FÜHREN.",
"Allow Jailbreak": "Jailbreak zulassen",
"Context Order": "Kontextreihenfolge",
"Summary": "Zusammenfassung",

View File

@@ -318,23 +318,23 @@
"flag": "bandera",
"API key (optional)": "Clave API (opcional)",
"Server url": "URL del servidor",
"Example: 127.0.0.1:5000": "Ejemplo: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Ejemplo: http://127.0.0.1:5000",
"Custom model (optional)": "Modelo personalizado (opcional)",
"vllm-project/vllm": "vllm-project/vllm (modo contenedor de API OpenAI)",
"vLLM API key": "Clave API vLLM",
"Example: 127.0.0.1:8000": "Ejemplo: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Ejemplo: http://127.0.0.1:8000",
"vLLM Model": "Modelo vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modo envolvente para API de OpenAI)",
"Aphrodite API key": "Clave de API de Aphrodite",
"Aphrodite Model": "Modelo Afrodita",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Servidor de salida)",
"Example: 127.0.0.1:8080": "Ejemplo: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Ejemplo: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Ejemplo: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Ejemplo: http://127.0.0.1:11434",
"Ollama Model": "Modelo Ollama",
"Download": "Descargar",
"Tabby API key": "Clave API de Tabby",
"koboldcpp API key (optional)": "Clave API de koboldcpp (opcional)",
"Example: 127.0.0.1:5001": "Ejemplo: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Ejemplo: http://127.0.0.1:5001",
"Authorize": "Autorizar",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenga su token de API de OpenRouter utilizando el flujo OAuth. Será redirigido a openrouter.ai",
"Bypass status check": "Saltar la verificación del estado",
@@ -411,7 +411,6 @@
"Chat Start": "Inicio de chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Agregue Inicio de chat y Separador de ejemplo a una lista de cadenas de parada.",
"Use as Stop Strings": "Usar como Cadenas de Parada",
"context_allow_jailbreak": "Incluye Jailbreak al final del mensaje, si está definido en la tarjeta de personaje Y está habilitado \"Prefer Char. Jailbreak\".\nESTO NO SE RECOMIENDA PARA MODELOS DE COMPLETO DE TEXTO, PUEDE PRODUCIR UN RESULTADO INCORRECTO.",
"Allow Jailbreak": "Permitir Jailbreak",
"Context Order": "Orden de contexto",
"Summary": "Resumen",

View File

@@ -301,23 +301,23 @@
"flag": "fanion",
"API key (optional)": "Clé API (optionnelle)",
"Server url": "URL du serveur",
"Example: 127.0.0.1:5000": "Exemple : 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Exemple : http://127.0.0.1:5000",
"Custom model (optional)": "Modèle personnalisé (optionnel)",
"vllm-project/vllm": "vllm-project/vllm (mode wrapper de l'API OpenAI)",
"vLLM API key": "Clé API vLLM",
"Example: 127.0.0.1:8000": "Exemple : http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Exemple : http://127.0.0.1:8000",
"vLLM Model": "Modèle vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (mode wrapper pour l'API OpenAI)",
"Aphrodite API key": "Clé API Aphrodite",
"Aphrodite Model": "Modèle Aphrodite",
"ggerganov/llama.cpp": "ggerganov/llama.cpp",
"Example: 127.0.0.1:8080": "Exemple : 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Exemple : 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Exemple : http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Exemple : http://127.0.0.1:11434",
"Ollama Model": "Modèle Ollama",
"Download": "Télécharger",
"Tabby API key": "Clé API de Tabby",
"koboldcpp API key (optional)": "Clé API koboldcpp (facultatif)",
"Example: 127.0.0.1:5001": "Exemple : 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Exemple : http://127.0.0.1:5001",
"Authorize": "Autoriser",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenez votre jeton API OpenRouter en utilisant le flux OAuth. Vous serez redirigé vers openrouter.ai",
"Bypass status check": "Contourner la vérification de l'état",
@@ -1448,7 +1448,6 @@
"Add Character and User names to a list of stopping strings.": "Ajouter les noms de personnages et d'utilisateurs à une liste de chaînes d'arrêt.",
"Names as Stop Strings": "Noms comme chaînes d'arrêt",
"context_allow_post_history_instructions": "Inclut les instructions post-historiques à la fin du prompt, si elles sont définies dans la fiche de personnage ET si l'option 'Préférer les instructions de personnage' est activée.\nN'EST PAS RECOMMANDÉ POUR LES MODÈLES DE COMPLÉTION DE TEXTE, CAR IL PEUT ENTRAÎNER DE MAUVAIS RÉSULTATS.",
"Allow Post-History Instructions": "Autoriser les instructions post-histoire",
"Instruct Template": "Modèle d'instruction",
"instruct_derived": "Dériver des métadonnées du modèle, si possible.",
"instruct_enabled": "Activer le mode d'instruction",

View File

@@ -318,23 +318,23 @@
"flag": "merki",
"API key (optional)": "API lykill (valkvæmt)",
"Server url": "URL þjóns",
"Example: 127.0.0.1:5000": "Dæmi: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Dæmi: http://127.0.0.1:5000",
"Custom model (optional)": "Sérsniðið módel (valkvæmt)",
"vllm-project/vllm": "vllm-project/vllm (OpenAI API umbúðastilling)",
"vLLM API key": "vLLM API lykill",
"Example: 127.0.0.1:8000": "Dæmi: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Dæmi: http://127.0.0.1:8000",
"vLLM Model": "vLLM líkan",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (OpenAI forritunargrensl)",
"Aphrodite API key": "Aphrodite API lykill",
"Aphrodite Model": "Afródíta fyrirmynd",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (úttak þjónn)",
"Example: 127.0.0.1:8080": "Dæmi: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Dæmi: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Dæmi: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Dæmi: http://127.0.0.1:11434",
"Ollama Model": "Ollama módel",
"Download": "Niðurhal",
"Tabby API key": "Tabby API lykill",
"koboldcpp API key (optional)": "koboldcpp API lykill (valfrjálst)",
"Example: 127.0.0.1:5001": "Dæmi: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Dæmi: http://127.0.0.1:5001",
"Authorize": "Heimild",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Fáðu API lykilinn þinn fyrir OpenRouter með því að nota OAuth strauminn. Þú verður endurvísað(ð/ur) á openrouter.ai",
"Bypass status check": "Hlaupa framhjá stöðutík",
@@ -411,7 +411,6 @@
"Chat Start": "Chat Start",
"Add Chat Start and Example Separator to a list of stopping strings.": "Bættu Chat Start og Example Separator við lista yfir stöðvunarstrengi.",
"Use as Stop Strings": "Nota sem Stoppa Strengir",
"context_allow_jailbreak": "Inniheldur Jailbreak í lok hvetjunnar, ef það er skilgreint á stafkortinu OG ''Velst Char. Jailbreak'' er virkt.\nÞETTA ER EKKI MÆLT FYRIR TEXTAÚRSLUNARGERÐ, GETUR leitt til lélegrar úttaks.",
"Allow Jailbreak": "Leyfa jailbreak",
"Context Order": "Samhengisröð",
"Summary": "Samantekt",

View File

@@ -318,23 +318,23 @@
"flag": "bandiera",
"API key (optional)": "Chiave API (opzionale)",
"Server url": "URL del server",
"Example: 127.0.0.1:5000": "Esempio: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Esempio: http://127.0.0.1:5000",
"Custom model (optional)": "Modello personalizzato (opzionale)",
"vllm-project/vllm": "vllm-project/vllm (modalità wrapper API OpenAI)",
"vLLM API key": "Chiave API vLLM",
"Example: 127.0.0.1:8000": "Esempio: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Esempio: http://127.0.0.1:8000",
"vLLM Model": "Modello vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modalità wrapper per l'API OpenAI)",
"Aphrodite API key": "Chiave API di Aphrodite",
"Aphrodite Model": "Modello di Afrodite",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Server di output)",
"Example: 127.0.0.1:8080": "Esempio: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Esempio: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Esempio: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Esempio: http://127.0.0.1:11434",
"Ollama Model": "Modello Ollama",
"Download": "Scarica",
"Tabby API key": "Chiave API di Tabby",
"koboldcpp API key (optional)": "Chiave API koboldcpp (opzionale)",
"Example: 127.0.0.1:5001": "Esempio: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Esempio: http://127.0.0.1:5001",
"Authorize": "Autorizzare",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Ottieni il tuo token API di OpenRouter utilizzando il flusso OAuth. Sarai reindirizzato su openrouter.ai",
"Bypass status check": "Ignora controllo stato",
@@ -411,7 +411,6 @@
"Chat Start": "Inizio chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Aggiungi Inizio chat e Separatore di esempio a un elenco di stringhe di arresto.",
"Use as Stop Strings": "Usa come stringhe di arresto",
"context_allow_jailbreak": "Include il jailbreak alla fine del prompt, se definito nella carta personaggio E ''Preferisci Char. Il jailbreak'' è abilitato.\nQUESTO NON È CONSIGLIATO PER I MODELLI DI COMPLETAMENTO DEL TESTO, PUÒ PORTARE A UN RISULTATO CATTIVO.",
"Allow Jailbreak": "Consenti jailbreak",
"Context Order": "Ordine del contesto",
"Summary": "Riepilogo",

View File

@@ -318,23 +318,23 @@
"flag": "フラグ",
"API key (optional)": "APIキーオプション",
"Server url": "サーバーURL",
"Example: 127.0.0.1:5000": "例: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "例: http://127.0.0.1:5000",
"Custom model (optional)": "カスタムモデル(オプション)",
"vllm-project/vllm": "vllm-project/vllm (OpenAI API ラッパーモード)",
"vLLM API key": "vLLM API キー",
"Example: 127.0.0.1:8000": "例: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "例: http://127.0.0.1:8000",
"vLLM Model": "vLLM モデル",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engineOpenAI APIエンドポイントのパッケージングモード",
"Aphrodite API key": "アフロディーテAPIキー",
"Aphrodite Model": "アフロディーテモデル",
"ggerganov/llama.cpp": "ggerganov/llama.cpp出力サーバー",
"Example: 127.0.0.1:8080": "例: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "例: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "例: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "例: http://127.0.0.1:11434",
"Ollama Model": "Ollamaモデル",
"Download": "ダウンロード",
"Tabby API key": "TabbyのAPIキー",
"koboldcpp API key (optional)": "koboldcpp API キー (オプション)",
"Example: 127.0.0.1:5001": "例: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "例: http://127.0.0.1:5001",
"Authorize": "承認",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuthフローを使用してOpenRouter APIトークンを取得します。 openrouter.aiにリダイレクトされます",
"Bypass status check": "ステータスのチェックをバイパスする",
@@ -411,7 +411,6 @@
"Chat Start": "チャット開始",
"Add Chat Start and Example Separator to a list of stopping strings.": "停止文字列のリストにチャット開始と例の区切り文字を追加します。",
"Use as Stop Strings": "ストップ文字列として使用",
"context_allow_jailbreak": "文字カードで定義されていて、「文字 Jailbreak を優先」が有効になっている場合は、プロンプトの最後に Jailbreak が含まれます。\nこれはテキスト補完モデルには推奨されません。出力が悪くなる可能性があります。",
"Allow Jailbreak": "脱獄を許可する",
"Context Order": "コンテキスト順序",
"Summary": "まとめ",

View File

@@ -320,23 +320,23 @@
"flag": "깃발",
"API key (optional)": "API 키 (선택 사항)",
"Server url": "서버 URL",
"Example: 127.0.0.1:5000": "예시: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "예시: http://127.0.0.1:5000",
"Custom model (optional)": "사용자 정의 모델 (선택 사항)",
"vllm-project/vllm": "vllm-project/vllm(OpenAI API 래퍼 모드)",
"vLLM API key": "vLLM API 키",
"Example: 127.0.0.1:8000": "예: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "예: http://127.0.0.1:8000",
"vLLM Model": "vLLM 모델",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (OpenAI API의 래퍼 모드)",
"Aphrodite API key": "Aphrodite API 키",
"Aphrodite Model": "Aphrodite 모델",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (출력 서버)",
"Example: 127.0.0.1:8080": "예: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "예: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "예: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "예: http://127.0.0.1:11434",
"Ollama Model": "Ollama 모델",
"Download": "다운로드",
"Tabby API key": "Tabby API 키",
"koboldcpp API key (optional)": "koboldcpp API 키(선택사항)",
"Example: 127.0.0.1:5001": "예: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "예: http://127.0.0.1:5001",
"Authorize": "승인하기",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.",
"Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)",
@@ -421,7 +421,6 @@
"Chat Start": "채팅 시작",
"Add Chat Start and Example Separator to a list of stopping strings.": "중지 문자열 목록에 채팅 시작 및 예제 구분 기호를 추가합니다.",
"Use as Stop Strings": "중지 문자열로 사용",
"context_allow_jailbreak": "캐릭터 카드에 정의되어 있고 ''Prefer Char. Jailbreak''가 활성화되어 있는 경우 프롬프트 끝에 Jailbreak를 포함합니다.\n이는 텍스트 완성 모델에 권장되지 않으며, 나쁜 출력으로 이어질 수 있습니다.",
"Allow Jailbreak": "탈옥 허용",
"Context Order": "컨텍스트 순서",
"Summary": "요약",
@@ -1520,7 +1519,6 @@
"Always": "항상 추가함",
"Separators as Stop Strings": "구분 기호를 정지 문자열로 사용하기",
"Names as Stop Strings": "캐릭터의 이름들을 정지 문자열로 사용하기",
"Allow Post-History Instructions": "Post-History 지침 허용",
"Image Captioning": "이미지 캡셔닝",
"Automatically caption images": "자동으로 이미지에 대한 설명 문장으로 나타내기",
"Edit captions before saving": "저장하기 전에 이미지에 대한 설명 문장 편집하기",

View File

@@ -318,23 +318,23 @@
"flag": "vlag",
"API key (optional)": "API-sleutel (optioneel)",
"Server url": "Server-URL",
"Example: 127.0.0.1:5000": "Voorbeeld: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Voorbeeld: http://127.0.0.1:5000",
"Custom model (optional)": "Aangepast model (optioneel)",
"vllm-project/vllm": "vllm-project/vllm (OpenAI API-wrappermodus)",
"vLLM API key": "vLLM API-sleutel",
"Example: 127.0.0.1:8000": "Voorbeeld: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Voorbeeld: http://127.0.0.1:8000",
"vLLM Model": "vLLM-model",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Wrappermodus voor OpenAI API)",
"Aphrodite API key": "Aphrodite API-sleutel",
"Aphrodite Model": "Aphrodite-model",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Output-server)",
"Example: 127.0.0.1:8080": "Voorbeeld: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Voorbeeld: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Voorbeeld: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Voorbeeld: http://127.0.0.1:11434",
"Ollama Model": "Ollama-model",
"Download": "Downloaden",
"Tabby API key": "Tabby API-sleutel",
"koboldcpp API key (optional)": "koboldcpp API-sleutel (optioneel)",
"Example: 127.0.0.1:5001": "Voorbeeld: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Voorbeeld: http://127.0.0.1:5001",
"Authorize": "Toestemming geven",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Haal uw OpenRouter API-token op met behulp van OAuth-flow. U wordt doorgestuurd naar openrouter.ai",
"Bypass status check": "Omzeil statuscontrole",
@@ -411,7 +411,6 @@
"Chat Start": "Chatstart",
"Add Chat Start and Example Separator to a list of stopping strings.": "Voeg Chat Start en Voorbeeldscheidingsteken toe aan een lijst met stoptekenreeksen.",
"Use as Stop Strings": "Gebruik als stopreeksen",
"context_allow_jailbreak": "Inclusief jailbreak aan het einde van de prompt, indien gedefinieerd in de karakterkaart EN ''Prefer Char. Jailbreak'' is ingeschakeld.\nDIT WORDT NIET AANBEVOLEN VOOR MODELLEN VOOR HET INVOEREN VAN TEKST. KAN TOT SLECHTE UITVOER LEIDEN.",
"Allow Jailbreak": "Jailbreak toestaan",
"Context Order": "Contextvolgorde",
"Summary": "Samenvatting",

View File

@@ -318,23 +318,23 @@
"flag": "bandeira",
"API key (optional)": "Chave da API (opcional)",
"Server url": "URL do servidor",
"Example: 127.0.0.1:5000": "Exemplo: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Exemplo: http://127.0.0.1:5000",
"Custom model (optional)": "Modelo personalizado (opcional)",
"vllm-project/vllm": "vllm-project/vllm (modo wrapper da API OpenAI)",
"vLLM API key": "Chave de API vLLM",
"Example: 127.0.0.1:8000": "Exemplo: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Exemplo: http://127.0.0.1:8000",
"vLLM Model": "Modelo vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Modo Wrapper para API OpenAI)",
"Aphrodite API key": "Chave da API Aphrodite",
"Aphrodite Model": "Modelo Afrodite",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Servidor de Saída)",
"Example: 127.0.0.1:8080": "Exemplo: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Exemplo: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Exemplo: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Exemplo: http://127.0.0.1:11434",
"Ollama Model": "Modelo Ollama",
"Download": "Baixar",
"Tabby API key": "Chave da API do Tabby",
"koboldcpp API key (optional)": "Chave API koboldcpp (opcional)",
"Example: 127.0.0.1:5001": "Exemplo: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Exemplo: http://127.0.0.1:5001",
"Authorize": "Autorizar",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenha seu token da API do OpenRouter usando o fluxo OAuth. Você será redirecionado para openrouter.ai",
"Bypass status check": "Ignorar verificação de status",
@@ -411,7 +411,6 @@
"Chat Start": "Início do Chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Adicione o início do bate-papo e o separador de exemplo a uma lista de strings de parada.",
"Use as Stop Strings": "Usar como Strings de Parada",
"context_allow_jailbreak": "Inclui Jailbreak no final do prompt, se definido no cartão de personagem E ''Prefer Char. Jailbreak'' está habilitado.\nISTO NÃO É RECOMENDADO PARA MODELOS DE COMPLEMENTAÇÃO DE TEXTO, PODE LEVAR A UMA SAÍDA RUIM.",
"Allow Jailbreak": "Permitir jailbreak",
"Context Order": "Ordem de Contexto",
"Summary": "Resumo",

View File

@@ -23,9 +23,8 @@
"Mirostat Mode": "Режим",
"Mirostat Tau": "Tau",
"Mirostat Eta": "Eta",
"Variability parameter for Mirostat outputs": "Параметр изменчивости для выходных данных Mirostat.",
"Variability parameter for Mirostat outputs": "Вариативность для выходных данных Mirostat.",
"Learning rate of Mirostat": "Скорость обучения Mirostat.",
"Strength of the Contrastive Search regularization term. Set to 0 to disable CS": "Сила условия регуляризации контрастивного поиска. Установите значение 0, чтобы отключить CS.",
"Temperature Last": "Температура последней",
"LLaMA / Mistral / Yi models only": "Только для моделей LLaMA / Mistral / Yi. Перед этим обязательно выберите подходящий токенизатор.\nПоследовательности, которых не должно быть на выходе.\nОдна на строку. Текст или [идентификаторы токенов].\nМногие токены имеют пробел впереди. Используйте счетчик токенов, если не уверены.",
"Example: some text [42, 69, 1337]": "Пример:\nкакой-то текст\n[42, 69, 1337]",
@@ -53,20 +52,18 @@
"Presence Penalty": "Штраф за присутствие",
"Top A": "Top А",
"Tail Free Sampling": "Tail Free Sampling",
"Rep. Pen. Slope": "Rep. Pen. Slope",
"Rep. Pen. Slope": "Рост штрафа за повтор к концу промпта",
"Top K": "Top K",
"Top P": "Top P",
"Do Sample": "Включить сэмплинг",
"Add BOS Token": "Добавлять BOS-токен",
"Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Добавлять BOS-токен в начале промпта. Если выключить, ответы могут стать более креативными.",
"Ban EOS Token": "Запретить EOS-токен",
"Ban the eos_token. This forces the model to never end the generation prematurely": "Запрет EOS-токена не позволит модели завершить генерацию преждевременно",
"Ban the eos_token. This forces the model to never end the generation prematurely": "Запрет EOS-токена не позволит модели завершить генерацию самостоятельно (только при достижении лимита токенов)",
"Skip Special Tokens": "Пропускать спец. токены",
"Beam search": "Поиск Beam",
"Number of Beams": "Количество Beam",
"Beam search": "Beam Search",
"Length Penalty": "Штраф за длину",
"Early Stopping": "Преждевременная остановка",
"Contrastive search": "Контрастный поиск",
"Early Stopping": "Прекращать сразу",
"Penalty Alpha": "Penalty Alpha",
"Seed": "Зерно",
"Epsilon Cutoff": "Epsilon Cutoff",
@@ -89,7 +86,7 @@
"Text Completion presets": "Пресеты для Text Completion",
"Documentation on sampling parameters": "Документация по параметрам сэмплеров",
"Set all samplers to their neutral/disabled state.": "Установить все сэмплеры в нейтральное/отключенное состояние.",
"Only enable this if your model supports context sizes greater than 8192 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 8192 токенов.\nУвеличивайте только если вы знаете, что делаете.",
"Only enable this if your model supports context sizes greater than 8192 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 8192 токенов.\nУвеличивайте только если вы понимаете, что делаете.",
"Wrap in Quotes": "Заключать в кавычки",
"Wrap entire user message in quotes before sending.": "Перед отправкой заключать всё сообщение пользователя в кавычки.",
"Leave off if you use quotes manually for speech.": "Оставьте выключенным, если вручную выставляете кавычки для прямой речи.",
@@ -109,13 +106,13 @@
"Adjust response length to worker capabilities": "Подстраивать длину ответа под возможности рабочих машин",
"API key": "API-ключ",
"Tabby API key": "Tabby API-ключ",
"Get it here:": "Получить здесь:",
"Get it here:": "Получите здесь:",
"Register": "Зарегистрироваться",
"TogetherAI Model": "Модель TogetherAI",
"Example: 127.0.0.1:5001": "Пример: http://127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Пример: http://127.0.0.1:5001",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (сервер вывода)",
"Example: 127.0.0.1:8080": "Пример: http://127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Пример: http://127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Пример: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Пример: http://127.0.0.1:11434",
"Ollama Model": "Модель Ollama",
"Download": "Скачать",
"TogetherAI API Key": "TogetherAI API-ключ",
@@ -136,7 +133,7 @@
"Server url": "URL-адрес сервера",
"Custom model (optional)": "Пользовательская модель (необязательно)",
"Bypass API status check": "Обход проверки статуса API",
"Example: 127.0.0.1:5000": "Пример: http://127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Пример: http://127.0.0.1:5000",
"Bypass status check": "Обход проверки статуса",
"Mancer API key": "Ключ от Mancer API",
"to get your OpenAI API key.": "для получения ключа от API OpenAI",
@@ -165,9 +162,9 @@
"Story String": "Строка истории",
"Example Separator": "Разделитель примеров сообщений",
"Chat Start": "Начало чата",
"Activation Regex": "Regex для активации",
"Activation Regex": "Рег. выражение для активации",
"Instruct Mode": "Режим Instruct",
"Wrap Sequences with Newline": "Отделять строки символом новой строки",
"Wrap Sequences with Newline": "Каждая строка из шаблона на новой строке",
"Include Names": "Добавлять имена",
"Force for Groups and Personas": "Также для групп и персон",
"System Prompt": "Системный промпт",
@@ -289,10 +286,10 @@
"Author's Note": "Заметки автора",
"Replace empty message": "Заменять пустые сообщения",
"Send this text instead of nothing when the text box is empty.": "Этот текст будет отправлен в случае отсутствия текста на отправку.",
"Unrestricted maximum value for the context slider": "Убрать потолок для ползунка контекста. Включайте только если точно знаете, что делаете",
"Unrestricted maximum value for the context slider": "Убрать потолок для ползунка контекста. Включайте только если точно понимаете, что делаете",
"Chat Completion Source": "Источник для Chat Completion",
"Avoid sending sensitive information to the Horde.": "Избегайте отправки личной информации Horde",
"Review the Privacy statement": "Ознакомиться с заявлением о конфиденциальности",
"Avoid sending sensitive information to the Horde.": "Избегайте отправки личной информации Horde.",
"Review the Privacy statement": "Ознакомьтесь с заявлением о конфиденциальности",
"Trusted workers only": "Только доверенные рабочие машины",
"For privacy reasons, your API key will be hidden after you reload the page.": "Из соображений безопасности ваш API-ключ будет скрыт после перезагрузки страницы.",
"-- Horde models not loaded --": "--Модель Horde не загружена--",
@@ -302,7 +299,7 @@
"AI Horde": "AI Horde",
"NovelAI": "NovelAI",
"OpenAI API key": "Ключ для API OpenAI",
"Trim spaces": "Обрезать пробелы",
"Trim spaces": "Обрезать пробелы в начале и конце",
"Trim Incomplete Sentences": "Удалять неоконченные предложения",
"Include Newline": "Добавлять новую строку",
"Non-markdown strings": "Строки без разметки",
@@ -513,7 +510,7 @@
"New preset": "Новый пресет",
"Delete preset": "Удалить пресет",
"API Connections": "Соединения с API",
"Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Может помочь с плохими ответами ставя в очередь только подтвержденных работников. Может замедлить время ответа.",
"Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Может помочь при плохих ответах, делая запросы только к доверенным рабочим машинам. Может замедлить время ответа.",
"Clear your API key": "Стереть ключ от API",
"Refresh models": "Обновить модели",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Получите свой OpenRouter API токен используя OAuth. У вас будет открыта вкладка openrouter.ai",
@@ -554,7 +551,7 @@
"Token counts may be inaccurate and provided just for reference.": "Счетчик токенов может быть неточным, используйте как ориентир",
"Click to select a new avatar for this character": "Нажмите чтобы выбрать новый аватар для этого персонажа",
"Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Пример:\n [{{user}} is a 28-year-old Romanian cat girl.]",
"Toggle grid view": "Переключить вид сетки",
"Toggle grid view": "Сменить вид сетки",
"Add to Favorites": "Добавить в Избранное",
"Advanced Definition": "Расширенное описание",
"Character Lore": "Лор персонажа",
@@ -627,7 +624,7 @@
"UI Theme": "Тема UI",
"This message is invisible for the AI": "Это сообщение невидимо для ИИ",
"Sampler Priority": "Приоритет сэмплеров",
"Ooba only. Determines the order of samplers.": "Только oobabooga. Определяет порядок сэмплеров.",
"Ooba only. Determines the order of samplers.": "Только для oobabooga. Определяет порядок сэмплеров.",
"Load default order": "Загрузить стандартный порядок",
"Max Tokens Second": "Макс. кол-во токенов в секунду",
"CFG": "CFG",
@@ -698,8 +695,8 @@
"Medium": "Средний",
"Aggressive": "Агрессивный",
"Very aggressive": "Очень агрессивный",
"Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling.&#13;В единицах 1e-4; разумное значение - 3.&#13;Установите в 0, чтобы отключить.&#13;См. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.",
"Learn how to contribute your idle GPU cycles to the Horde": "Узнайте, как внести свой вклад в свои свободные GPU-циклы в орду",
"Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling.\nВ единицах 1e-4; разумное значение - 3.\nУстановите в 0, чтобы отключить.\nСм. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.",
"Learn how to contribute your idle GPU cycles to the Horde": "Узнайте, как использовать время простоя вашего GPU для помощи Horde",
"Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Используйте соответствующий токенизатор для моделей Google через их API. Медленная обработка подсказок, но предлагает намного более точный подсчет токенов.",
"Load koboldcpp order": "Загрузить порядок из koboldcpp",
"Use Google Tokenizer": "Использовать токенизатор Google",
@@ -744,7 +741,7 @@
"Last Assistant Prefix": "Последний префикс ассистента",
"System Instruction Prefix": "Префикс системной инструкции",
"User Filler Message": "Принудительное сообщение пользователя",
"Permanent": "перманентных",
"Permanent": "постоянных",
"Alt. Greetings": "Др. варианты",
"Smooth Streaming": "Плавный стриминг",
"Save checkpoint": "Сохранить чекпоинт",
@@ -967,7 +964,7 @@
"char_import_3": "Персонаж с JanitorAI (прямая ссылка или UUID)",
"char_import_4": "Персонаж с Pygmalion.chat (прямая ссылка или UUID)",
"char_import_5": "Персонаж с AICharacterCards.com (прямая ссылка или ID)",
"char_import_6": "Прямая ссылка на PNG-файл (чтобы узнать список разрешённых хостов, загляните в",
"char_import_6": "Прямая ссылка на PNG-файл (список разрешённых хостов находится в",
"char_import_7": ")",
"Grammar String": "Грамматика",
"GBNF or EBNF, depends on the backend in use. If you're using this you should know which.": "GBNF или EBNF, зависит от бэкенда. Если вы это используете, то, скорее всего, сами знаете, какой именно.",
@@ -1019,7 +1016,7 @@
"prompt_manager_relative": "Относительная",
"prompt_manager_depth": "Глубина",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Глубина вставки. 0 = после последнего сообщения, 1 = перед последним сообщением, и т.д.",
"The prompt to be sent.": "Отправляемый ИИ промпт.",
"The prompt to be sent.": "Текст промпта.",
"prompt_manager_forbid_overrides": "Запретить перезапись",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Карточка персонажа не сможет перезаписать этот промпт, даже если настройки отдают приоритет именно ей.",
"image_inlining_hint_1": "Отправлять картинки как часть промпта, если позволяет модель (такой функционал поддерживают GPT-4V, Claude 3 или Llava 13B). Чтобы добавить в чат изображение, используйте на нужном сообщении действие",
@@ -1227,7 +1224,6 @@
"JSON-serialized array of strings.": "Список строк в формате JSON.",
"Mirostat_desc": "Mirostat - своего рода термометр, измеряющий перплексию для выводимого текста.\nMirostat подгоняет перплексию генерируемого текста к перплексии входного текста, что позволяет избежать повторов.\n(когда по мере генерации текста авторегрессионным инференсом, перплексия всё больше приближается к нулю)\n а также ловушки перплексии (когда перплексия начинает уходить в сторону)\nБолее подробное описание в статье Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020).\nРежим выбирает версию Mirostat. 0=отключить, 1=Mirostat 1.0 (только llama.cpp), 2=Mirostat 2.0.",
"Helpful tip coming soon.": "Подсказку скоро добавим.",
"Temperature_Last_desc": "Использовать Temperature сэмплер в последнюю очередь. Это почти всегда разумно.\nПри включении: сначала выборка набора правдоподобных токенов, затем применение Temperature для корректировки их относительных вероятностей (технически, логитов).\nПри отключении: сначала применение Temperature для корректировки относительных вероятностей ВСЕХ токенов, затем выборка правдоподобных токенов из этого.\nОтключение Temperature Last увеличивает вероятности в хвосте распределения, что увеличивает шансы получить несогласованный ответ.",
"Speculative Ngram": "Speculative Ngram",
"Use a different speculative decoding method without a draft model": "Use a different speculative decoding method without a draft model.\rUsing a draft model is preferred. Speculative ngram is not as effective.",
"Spaces Between Special Tokens": "Spaces Between Special Tokens",
@@ -1236,7 +1232,7 @@
"Top P & Min P": "Top P & Min P",
"llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.": "llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.",
"Helps the model to associate messages with characters.": "Помогает модели связывать сообщения с персонажами.",
"character_names_default": "Except for groups and past personas. Otherwise, make sure you provide names in the prompt.",
"character_names_default": "Добавлять префиксы для групповых чатов и предыдущих персон. В остальных случаях указывайте имена в промпте иными способами.",
"Completion": "Completion Object",
"character_names_completion": "Только латинские буквы, цифры и знак подчёркивания. Работает не для всех бэкендов, в частности для Claude, MistralAI, Google.",
"Use AI21 Tokenizer": "Использовать токенайзер AI21",
@@ -1256,13 +1252,11 @@
"DreamGen Model": "Модель DreamGen",
"vllm-project/vllm": "vllm-project/vllm (режим враппера OpenAI API)",
"vLLM API key": "Ключ от API vLLM",
"Example: 127.0.0.1:8000": "Example: http://127.0.0.1:8000",
"vLLM Model": "Модель vLLM",
"Aphrodite Model": "Модель Aphrodite",
"Peek a password": "Посмотреть пароль",
"Clear your cookie": "Clear your cookie",
"Add Chat Start and Example Separator to a list of stopping strings.": "Использовать Начало чата и Разделитель примеров сообщений в качестве стоп-строк.",
"context_allow_jailbreak": "Если в карточке есть джейлбрейк И ПРИ ЭТОМ включена опция \"Приоритет джейлбрейку из карточки персонажа\", то этот джейлбрейк добавляется в конец промпта.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.",
"Context Order": "Context Order",
"Summary": "Summary",
"Example Dialogues": "Примеры диалогов",
@@ -1283,7 +1277,7 @@
"Will be inserted as a last prompt line when using system/neutral generation.": "Will be inserted as a last prompt line when using system/neutral generation.",
"If a stop sequence is generated, everything past it will be removed from the output (inclusive).": "Если ИИ генерирует стоп-строку, то всё после неё будет вырезано из ответа (включая и саму стоп-строку).",
"Will be inserted at the start of the chat history if it doesn't start with a User message.": "Вставляется в начале истории чата, если она начинается не с сообщения пользователя.",
"Global World Info/Lorebook activation settings": "Настройки активации глобального лорбука / Информации о мире",
"Global World Info/Lorebook activation settings": "Глобальные настройки активации лорбука / Информации о мире",
"Click to expand": "Щёлкните, чтобы развернуть",
"Insertion Strategy": "Как инжектить",
"Only the entries with the most number of key matches will be selected for Inclusion Group filtering": "Only the entries with the most number of key matches will be selected for Inclusion Group filtering",
@@ -1652,10 +1646,9 @@
"mui_reset": "Сброс",
"Quick 'Impersonate' button": "Быстрое перевоплощение",
"Show a button in the input area to ask the AI to impersonate your character for a single message": "Показать в поле ввода кнопку, по нажатии на которую ИИ сгенерирует одно сообщение от лица вашего персонажа.",
"Separators as Stop Strings": "Разделители как стоп-строки",
"Names as Stop Strings": "Имена как стоп-строки",
"Separators as Stop Strings": "Разделители в качестве стоп-строк",
"Names as Stop Strings": "Имена в качестве стоп-строк",
"Add Character and User names to a list of stopping strings.": "Добавлять имена персонажа и пользователя в список стоп-строк.",
"Allow Post-History Instructions": "Разрешить инструкции после истории",
"context_allow_post_history_instructions": "Добавлять в конец промпта инструкции после истории. Работает только при наличии таких инструкций в карточке И при включенной опции ''Приоритет инструкциям из карточек''.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.",
"First User Prefix": "Первый префикс пользователя",
"Inserted before the first User's message.": "Вставляется перед первым сообщением пользователя.",
@@ -1734,7 +1727,7 @@
"markdown_hotkeys_desc": "Включить горячие клавиши для вставки символов разметки в некоторых полях ввода. См. '/help hotkeys'.",
"Save and Update": "Сохранить и обновить",
"Profile name:": "Название профиля:",
"API returned an error": "API вернуло ошибку",
"API returned an error": "API ответило ошибкой",
"Failed to save preset": "Не удалось сохранить пресет",
"Preset name should be unique.": "Название пресета должно быть уникальным.",
"Invalid file": "Невалидный файл",
@@ -1756,8 +1749,7 @@
"dot quota_error": "имеется достаточно кредитов.",
"If you have sufficient credits, please try again later.": "Если кредитов достаточно, то повторите попытку позднее.",
"Proxy preset '${0}' not found": "Пресет '${0}' не найден",
"Window.ai returned an error": "Window.ai вернул ошибку",
"Get it here:": "Загрузите здесь:",
"Window.ai returned an error": "Window.ai ответил ошибкой",
"Extension is not installed": "Расширение не установлено",
"Update or remove your reverse proxy settings.": "Измените или удалите ваши настройки прокси.",
"An error occurred while importing prompts. More info available in console.": "В процессе импорта произошла ошибка. Подробную информацию см. в консоли.",
@@ -1866,7 +1858,7 @@
"Group Chat could not be saved": "Не удалось сохранить групповой чат",
"Deleted group member swiped. To get a reply, add them back to the group.": "Вы пытаетесь свайпнуть удалённого члена группы. Чтобы получить ответ, добавьте этого персонажа обратно в группу.",
"Currently no group selected.": "В данный момент не выбрано ни одной группы.",
"Not so fast! Wait for the characters to stop typing before deleting the group.": "Чуть помедленнее! Перед удалением группы дождитесь, пока персонаж закончит печатать.",
"Not so fast! Wait for the characters to stop typing before deleting the group.": "Чуть помедленнее! Перед удалением группы дождитесь, пока персонажи закончат печатать.",
"Delete the group?": "Удалить группу?",
"This will also delete all your chats with that group. If you want to delete a single conversation, select a \"View past chats\" option in the lower left menu.": "Вместе с ней будут удалены и все её чаты. Если требуется удалить только один чат, воспользуйтесь кнопкой \"Все чаты\" в меню в левом нижнем углу.",
"Can't peek a character while group reply is being generated": "Невозможно открыть карточку персонажа во время генерации ответа",
@@ -1922,8 +1914,8 @@
"Cannot restore GUI preset": "Пресет для Gui восстановить нельзя",
"Default preset cannot be restored": "Невозможно восстановить пресет по умолчанию",
"Default template cannot be restored": "Невозможно восстановить шаблон по умолчанию",
"Resetting a <b>default preset</b> will restore the default settings": "Сброс <b>стандартного пресета</b> восстановит настройки по умолчанию.",
"Resetting a <b>default template</b> will restore the default settings.": "Сброс <b>стандартного шаблона</b> восстановит настройки по умолчанию.",
"Resetting a <b>default preset</b> will restore the default settings.": "Сброс <b>комплектного пресета</b> восстановит настройки по умолчанию.",
"Resetting a <b>default template</b> will restore the default settings.": "Сброс <b>комплектного шаблона</b> восстановит настройки по умолчанию.",
"Are you sure?": "Вы уверены?",
"Default preset restored": "Стандартный пресет восстановлен",
"Default template restored": "Стандартный шаблон восстановлен",
@@ -1997,7 +1989,7 @@
"Default persona deleted": "Удалена персона по умолчанию",
"The locked persona was deleted. You will need to set a new persona for this chat.": "Удалена привязанная к чату персона. Вам будет необходимо выбрать новую фиксированную персону для этого чата.",
"Persona deleted": "Персона удалена",
"You must bind a name to this persona before you can set it as the default.": "Прежде чем установить эту персону в качестве персоны по умолчанию, ей необходимо задать имя.",
"You must bind a name to this persona before you can set it as the default.": "Прежде чем установить эту персону в качестве персоны по умолчанию, ей необходимо присвоить имя.",
"Persona name not set": "У персоны отсутствует имя",
"Are you sure you want to remove the default persona?": "Вы точно хотите снять статус персоны по умолчанию?",
"This persona will no longer be used by default when you open a new chat.": "Эта персона больше не будет автоматически выбираться при старте нового чата",
@@ -2038,7 +2030,7 @@
"[Currently loaded]": "[Загруженная сейчас]",
"Search providers...": "Искать по провайдерам...",
"Automatically chooses an alternative provider if chosen providers can't serve your request.": "Автоматически переключаться на другого провайдера, если текущий не может обслужить запрос.",
"Example: 127.0.0.1:8000": "Пример: 127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Пример: http://127.0.0.1:8000",
"Edit a connection profile": "Редактировать профиль соединения",
"System Prompt Name": "Название системного промпта",
"Use System Prompt": "Использовать системный промпт",
@@ -2054,11 +2046,11 @@
"prompt_post_processing_merge": "Объединять идущие подряд сообщения с одной ролью",
"prompt_post_processing_semi": "Semi-strict (чередовать роли)",
"prompt_post_processing_strict": "Strict (чередовать роли, сначала пользователь)",
"Select Horde models": "Выбрать модель из Horde",
"Select Horde models": "Выберите модель из Horde",
"Model ID (optional)": "Идентификатор модели (необязательно)",
"Derive context size from backend": "Использовать бэкенд для определения размера контекста",
"Rename current preset": "Переименовать пресет",
"No Worlds active. Click here to select.": "Нет активных миров. Нажмите, чтобы выбрать.",
"No Worlds active. Click here to select.": "Активных миров нет, ЛКМ для выбора.",
"Title/Memo": "Название",
"Strategy": "Статус",
"Position": "Позиция",
@@ -2177,7 +2169,7 @@
"instruct_derived": "Считывать из метаданных модели (по возможности)",
"Confirm token parsing with": "Чтобы убедиться в правильности выделения токенов, используйте",
"Reasoning Effort": "Рассуждения",
"Constrains effort on reasoning for reasoning models.": "Регулирует объём внутренних рассуждений модели (reasoning), для моделей которые поддерживают эту возможность.\nНа данный момент поддерживаются три значения: Подробные, Обычные, Поверхностные.\nПри менее подробном рассуждении ответ получается быстрее, а также экономятся токены, уходящие на рассуждения.",
"Constrains effort on reasoning for reasoning models.": "Регулирует объём внутренних рассуждений модели (reasoning), для моделей, которые поддерживают эту возможность.\nПри менее подробном рассуждении ответ получается быстрее, а также экономятся токены, уходящие на рассуждения.",
"openai_reasoning_effort_low": "Поверхностные",
"openai_reasoning_effort_medium": "Обычные",
"openai_reasoning_effort_high": "Подробные",
@@ -2203,5 +2195,229 @@
"Input:": "Входные данные:",
"Tokenized text:": "Токенизированный текст:",
"Token IDs:": "Идентификаторы токенов:",
"Tokens:": "Токенов:"
"Tokens:": "Токенов:",
"Max prompt cost:": "Макс. стоимость промпта:",
"Reset custom sampler selection": "Сбросить подборку семплеров",
"Here you can toggle the display of individual samplers. (WIP)": "Здесь можно включить или выключить отображение каждого из сэмплеров отдельно. (WIP)",
"Request Model Reasoning": "Запрашивать цепочку рассуждений",
"Reasoning": "Рассуждения / Reasoning",
"Auto-Parse": "Авто-парсинг",
"reasoning_auto_parse": "Автоматически считывать блоки рассуждений, расположенные между префиксом и суффиксом рассуждений. Для работы должно быть указано и то, и другое.",
"Auto-Expand": "Разворачивать",
"reasoning_auto_expand": "Автоматически разворачивать блоки рассуждений.",
"Show Hidden": "Показывать время",
"reasoning_show_hidden": "Отображать затраченное на рассуждения время для моделей со скрытой цепочкой рассуждений",
"Add to Prompts": "Добавлять в промпт",
"reasoning_add_to_prompts": "Добавлять существующие блоки рассуждений в промпт. Для добавления новых используйте меню редактирования сообщений.",
"reasoning_max_additions": "Макс. кол-во блоков рассуждений в промпте, считается от последнего сообщения",
"Max": "Макс.",
"Reasoning Formatting": "Форматирование рассуждений",
"Prefix": "Префикс",
"Suffix": "Постфикс",
"Separator": "Разделитель",
"reasoning_separator": "Вставляется между рассуждениями и содержанием самого сообщения.",
"reasoning_prefix": "Вставляется перед рассуждениями.",
"reasoning_suffix": "Вставляется после рассуждений.",
"Seed_desc": "Фиксированное значение зерна позволяет получать предсказуемые, одинаковые результаты на одинаковых настройках. Поставьте -1 для рандомного зерна.",
"# of Beams": "Кол-во лучей",
"The number of sequences generated at each step with Beam Search.": "Кол-во вариантов, генерируемых Beam Search на каждом шаге работы.",
"Penalize sequences based on their length.": "Штрафует строки в зависимости от длины",
"Controls the stopping condition for beam search. If checked, the generation stops as soon as there are '# of Beams' sequences. If not checked, a heuristic is applied and the generation is stopped when it's very unlikely to find better candidates.": "Определяет, когда останавливать работу Beam Search. Поставив галочку, вы укажете поиску остановиться тогда, когда будет достигнуто кол-во лучей из соответствующего поля. Если галочку не отмечать, то генерация остановится тогда, когда сочтёт, что дальше найти лучших кандидатов слишком маловероятно.",
"A greedy, brute-force algorithm used in LLM sampling to find the most likely sequence of words or tokens. It expands multiple candidate sequences at once, maintaining a fixed number (beam width) of top sequences at each step.": "Жадный алгоритм LLM-сэмплинга, подбирающий наиболее вероятную последовательность слов или токенов путём исследования и расширения сразу нескольких вариантов. На каждом шаге он удерживает фиксированное кол-во самых подходящих вариантов (ширина луча).",
"Smooth_Sampling_desc": "Изменяет распределение с помощью квадратичных и кубических преобразований. Снижение Коэффициента сглаживания даёт более креативные ответы, обычно идеальное значение находится в диапазоне 0.2-0.3 (при кривой сглаживания=1.0). Повышение значения Кривой сглаживания сделает кривую круче, что приведёт к более агрессивной фильтрации маловероятных вариантов. Установив Кривую сглаживания = 1.0, вы фактически нейтрализуете этот параметр и будете работать только с Коэффициентом",
"Temperature_Last_desc": "Применять сэмплер Температуры в последнюю очередь. Почти всегда оправдано.\nПри включении: сначала все токены семплируются, и затем температура регулирует распределение у оставшихся (технически, у оставшихся логитов).\nПри выключении: сначала температура настраивает распределение ВСЕХ токенов, и потом они семплируются уже с этим обновлённым распределением.\nПри отключении этой опции токены в хвосте получают больше шансов попасть в итоговую последовательность, что может привести к менее связным и логичным ответам.",
"Swipe # for All Messages": "Номер свайпа на всех сообщениях",
"Display swipe numbers for all messages, not just the last.": "Отображать номер свайпа для всех сообщений, а не только для последнего.",
"Penalty Range": "Окно для штрафа",
"Never": "Никогда",
"Groups and Past Personas": "Для групп и прошлых персон",
"Always": "Всегда",
"Request model reasoning": "Запрашивать рассуждения",
"Allows the model to return its thinking process.": "Позволяет модели высылать в ответе свою цепочку рассуждений.",
"Rename Persona": "Переименовать персону",
"Change Persona Image": "Изменить изображение персоны",
"Duplicate Persona": "Клонировать персону",
"Delete Persona": "Удалить персону",
"Enter a new name for this persona:": "Введите новое имя персоны:",
"Connections": "Связи",
"Click to select this as default persona for the new chats. Click again to remove it.": "Нажмите, чтобы установить эту персону стандартной для всех новых чатов. Нажмите ещё раз, чтобы отключить.",
"Character": "Персонаж",
"Click to lock your selected persona to the current character. Click again to remove the lock.": "Нажмите, чтобы закрепить эту персону для текущего персонажа. Нажмите ещё раз, чтобы открепить.",
"Chat": "Чат",
"[No character connections. Click one of the buttons above to connect this persona.]": "[Связи отсутствуют. Нажмите на одну из кнопок выше, чтобы создать.]",
"Global Settings": "Общие настройки",
"Allow multiple persona connections per character": "Разрешить привязывать несколько персон к одному персонажу",
"When multiple personas are connected to a character, a popup will appear to select which one to use": "При связывании нескольких персон с персонажем, будет появляться окошко с предложением выбрать нужную.",
"Auto-lock a chosen persona to the chat": "Автоматически привязывать выбранную персону к чату",
"Whenever a persona is selected, it will be locked to the current chat and automatically selected when the chat is opened.": "При выборе новой персоны она автоматически будет привязана к текущему чату, и будет выбираться при его открытии.",
"Current Persona": "Текущая персона",
"The chat has been successfully converted!": "Чат успешно преобразован!",
"Manual": "Когда вы скажете",
"Auto Mode delay": "Задержка авто-режима",
"Use tag as folder": "Тег-папка",
"All connections to ${0} have been removed.": "Все связи с персонажем ${0} были удалены.",
"Personas Unlocked": "Персоны отвязаны",
"Remove All Connections": "Удалить все связи",
"Persona ${0} selected and auto-locked to current chat": "Персона ${0} выбрана и автоматически закреплена за этим чатом",
"This persona is only temporarily chosen. Click for more info.": "Данная персона выбрана лишь временно. Нажмите, чтобы узнать больше.",
"Temporary Persona": "Временная персона",
"A different persona is locked to this chat, or you have a different default persona set. The currently selected persona will only be temporary, and resets on reload. Consider locking this persona to the chat if you want to permanently use it.": "К этому чату уже привязана иная персона, либо у вас выбрана иная персона по-умолчанию. Выбранная в данный момент персона будет временной, и сбросится после перезагрузки. Если хотите всегда использовать её в этом чате, советуем её прикрепить.",
"Current Persona: ${0}": "Выбранная персона: ${0}",
"Chat persona: ${0}": "Персона для этого чата: ${0}",
"Default persona: ${0}": "Персона по умолчанию (стандартная): ${0}",
"Persona ${0} is now unlocked from this chat.": "Персона ${0} отвязана от этого чата.",
"Persona Unlocked": "Персона отвязана",
"Persona ${0} is now unlocked from character ${1}.": "Персона ${0} отвязана от персонажа ${1}.",
"Persona Not Found": "Персона не найдена",
"Persona Locked": "Персона закреплена",
"User persona ${0} is locked to character ${1}${2}": "Персона ${0} прикреплена к персонажу ${1}${2}",
"Persona Name Not Set": "У персоны отсутствует имя",
"You must bind a name to this persona before you can set a lorebook.": "Перед привязкой лорбука персоне необходимо присвоить имя.",
"Default Persona Removed": "Персона по умолчанию снята",
"Persona is locked to the current character": "Персона закреплена за текущим персонажем",
"Persona is locked to the current chat": "Персона закреплена за текущим чатом",
"characters": "перс.",
"character": "персонаж",
"in this group": "в группе",
"Chatting Since": "Первая беседа",
"Context": "Контекст",
"Response": "Ответ",
"Connected": "Подключено",
"Enter new background name:": "Введите новое название для фона:",
"AI Horde Website": "Сайт AI Horde",
"Enable web search": "Включить поиск в Интернете",
"Use search capabilities provided by the backend.": "Разрешить использование предоставляемых бэкендом функций поиска.",
"Request inline images": "Запрашивать inline-изображения",
"Allows the model to return image attachments.": "Разрешить модели отправлять вложения в виде картинок.",
"Request inline images_desc_2": "Не совместимо со следующим функционалом: вызов функций, поиск в Интернете, системный промпт.",
"Connected Personas": "Связанные персоны",
"[Currently no personas connected]": "[Связанных персон нет]",
"The following personas are connected to the current character.\n\nClick on a persona to select it for the current character.\nShift + Click to unlink the persona from the character.": "С этим персонажем связаны следующие персоны.\n\nНажмите на персону, чтобы выбрать её для данного персонажа.\nShift + ЛКМ, чтобы её отвязать.",
"Persona Connections": "Связи с персонами",
"Pooled order": "Если уже давно не отвечали",
"Attach a File": "Приложить файл",
"Attach a file or image to a current chat.": "Приложить файл или изображение к текущему чату",
"Remove the file": "Удалить файл",
"Delete the Chat File?": "Удалить чат?",
"Forbidden": "Доступ запрещён",
"To view your API keys here, set the value of allowKeysExposure to true in config.yaml file and restart the SillyTavern server.": "Чтобы видеть здесь ваши API-ключи, установите параметр allowKeysExposure в config.yaml в положение true, после чего перезапустите сервер SillyTavern.",
"Invalid endpoint URL. Requests may fail.": "Некорректный адрес эндпоинта. Запросы могут не проходить.",
"How to install extensions?": "Как устанавливать расширения?",
"Click the flashing button to install extensions.": "Чтобы их установить, нажмите на мигающую кнопку.",
"ext_regex_reasoning_desc": "Содержимое блоков рассуждений. При отмеченной галочке \"Только промпт\" будут также обработаны добавленные в промпт рассуждения.",
"Macro in Find Regex": "Макросы в рег. выражении",
"Don't substitute": "Не заменять",
"Substitute (raw)": "Заменять в \"чистом\" виде",
"Substitute (escaped)": "Заменять после экранирования",
"ext_regex_other_options_desc": "По умолчанию, расширение вносит изменения в сам файл чата.\nПри включении одной из опций (или обеих), файл чата останется нетронутым, при этом сами изменения по-прежнему будут действовать.",
"ext_regex_flags_help": "Нажмите, чтобы узнать больше о флагах в рег. выражениях.",
"Applies to all matches": "Заменяет все вхождения",
"Applies to the first match": "Заменяет первое вхождение",
"Case insensitive": "Не чувствительно к регистру",
"Case sensitive": "Чувствительно к регистру",
"Find Regex is empty": "Рег. выражение не указано",
"Click the button to save it as a file.": "Нажмите на кнопку справа, чтобы сохранить его в файл.",
"Export as JSONL": "Экспорт в формате JSONL",
"Thought for some time": "Какое-то время заняли размышления",
"Thinking...": "В раздумьях...",
"Thought for ${0}": "Размышления заняли ${0}",
"Hidden reasoning - Add reasoning block": "Рассуждения скрыты - Добавить блок рассуждений",
"Add reasoning block": "Добавить блок рассуждений",
"Edit reasoning": "Редактировать рассуждения",
"Copy reasoning": "Скопировать рассуждения",
"Confirm Edit": "Подтвердить",
"Remove reasoning": "Удалить рассуждения",
"Cancel edit": "Отменить редактирование",
"Remove Reasoning": "Удалить рассуждения",
"Are you sure you want to clear the reasoning?<br />Visible message contents will stay intact.": "Вы точно хотите удалить блок рассуждений?<br />Основное сообщение останется на месте.",
"Reasoning Parse": "Парсинг рассуждений",
"Both prefix and suffix must be set in the Reasoning Formatting settings.": "В настройках форматирования рассуждений должны быть заданы префикс и суффикс.",
"Invalid return type '${0}', defaulting to 'reasoning'.": "Некорректный возвращаемый тип, используем стандартный 'reasoning'.",
"Reasoning already exists.": "Рассуждения уже присутствуют.",
"Edit Message": "Редактирование",
"Status check bypassed": "Проверка статуса отключена",
"Valid": "Работает",
"Use Group Scoring": "Использовать Group Scoring",
"Only the entries with the most number of key matches will be selected for Inclusion Group filtering": "До групповых фильтров будут допущены только записи с наибольшим кол-вом совпадений",
"Can be used to automatically activate Quick Replies": "Используется для автоматической активации быстрых ответов (Quick Replies)",
"( None )": "(Отсутствует)",
"Tie this entry to specific characters or characters with specific tags": "Привязать запись к опред. персонажам или персонажам с заданными тегами",
"Move Entry to Another Lorebook": "Переместить запись в другой лорбук",
"There are no other lorebooks to move to.": "Некуда перемещать: не найдено других лорбуков.",
"Select Target Lorebook": "Выберите куда переместить",
"Move '${0}' to:": "Переместить '${0}' в:",
"Please select a target lorebook.": "Выберите лорбук, в который будет перемещена запись.",
"Scan depth cannot be negative": "Глубина сканирования не может быть отрицательной",
"Scan depth cannot exceed ${0}": "Глубина сканирования не может превышать ${0}",
"Select your current Reasoning Template": "Выберите текущий Шаблон рассуждений",
"Delete template": "Удалить шаблон",
"Reasoning Template": "Шаблон рассуждений",
"openai_reasoning_effort_auto": "Авто",
"openai_reasoning_effort_minimum": "Минимальные",
"openai_reasoning_effort_maximum": "Максимальные",
"OpenAI-style options: low, medium, high. Minimum and maximum are aliased to low and high. Auto does not send an effort level.": "OpenAI принимает следующее: low (Поверхностные), medium (Обычные), high (Подробные). Minimum (Минимальные) - то же самое, что low. Maximum (Максимальные) - то же самое, что high. При выборе Auto (Авто) значение не отсылается вообще.",
"Allocates a portion of the response length for thinking (low: 10%, medium: 25%, high: 50%). Other options are model-dependent.": "Резервирует часть ответа для рассуждений (Поверхностные: 10% ответа, Обычные: 25%, Подробные: 50%). Остальные значения зависят от конкретной модели.",
"xAI Model": "Модель xAI",
"xAI API Key": "Ключ от API xAI",
"HuggingFace Token": "Токен HuggingFace",
"Endpoint URL": "Адрес эндпоинта",
"Example: https://****.endpoints.huggingface.cloud": "Пример: https://****.endpoints.huggingface.cloud",
"Featherless Model Selection": "Выбор модели из Featherless",
"category": "категория",
"Top": "Топовые",
"All Classes": "Все классы",
"Date Asc": "Дата, возрастание",
"Date Desc": "Дата, убывание",
"Background Image": "Фоновое изображение",
"Delete the background?": "Удалить фон?",
"Tags_as_Folders_desc": "Чтобы тег отображался как папка, его нужно отметить таковым в меню управления тегами. Нажмите сюда, чтобы открыть его.",
"tag_entries": "раз исп.",
"Multiple personas are connected to this character.\nSelect a persona to use for this chat.": "К этому персонажу привязано несколько персон.\nВыберите персону, которую хотите использовать в этом чате.",
"Select Persona": "Выберите персону",
"Completion Object": "Как часть Completion Object",
"Move ${0} to:": "Переместить '${0}' в:",
"Chat Scenario Override": "Перезапись сценария чата",
"Unique to this chat.": "Действует только в рамках текущего чата.",
"All group members will use the following scenario text instead of what is specified in their character cards.": "Все участники группы будут использовать этот сценарий вместо того, который указан в карточке.",
"Checkpoints inherit the scenario override from their parent, and can be changed individually after that.": "Чекпоинты наследуют сценарий родителя, после отделения его можно менять.",
"Delete Tag": "Удалить тег",
"Do you want to delete the tag": "Вы точно хотите удалить тег",
"If you want to merge all references to this tag into another tag, select it below:": "Если хотите заменить ссылки на этот тег на какой-то другой, то выберите из списка:",
"Open Folder (Show all characters even if not selected)": "Открытая папка (показать всех персонажей, включая невыбранных)",
"Closed Folder (Hide all characters unless selected)": "Закрытая папка (скрыть всех персонажей, кроме выбранных)",
"No Folder": "Не папка",
"Show only favorites": "Показать только избранных персонажей",
"Show only groups": "Показать только группы",
"Show only folders": "Показать только папки",
"Manage tags": "Панель управления тегами",
"Show Tag List": "Показать список тегов",
"Clear all filters": "Сбросить все фильтры",
"There are no items to display.": "Отображать абсолютно нечего.",
"Characters and groups hidden by filters or closed folders": "Персонажи и группы скрыты настройками фильтров либо закрытыми папками",
"Otterly empty": "Всё что можно, всё выдрано",
"Here be dragons": "Список настолько очистился, что в него вернулись драконы",
"Kiwibunga": "Настолько пусто, что киви прилетела посидеть",
"Pump-a-Rum": "Пу-пу-пу",
"Croak it": "Только кваканье лягушек и стрёкот сверчков",
"${0} character hidden.": "Персонажей скрыто: ${0}.",
"${0} characters hidden.": "Персонажей скрыто: ${0}.",
"/ page": "/ стр.",
"Context Length": "Размер контекста",
"Added On": "Добавлена",
"Class": "Класс",
"Bulk_edit_characters": "Массовое редактирование персонажей\n\nЛКМ, чтобы выделить либо отменить выделение персонажа\nShift+ЛКМ, чтобы массово выделить либо отменить выделение персонажей\nПКМ, чтобы выбрать действие",
"Bulk select all characters": "Выбрать всех персонажей",
"Duplicate": "Клонировать",
"Next page": "След. страница",
"Previous page": "Пред. страница",
"Group: ${0}": "Группа: ${0}",
"You deleted a character/chat and arrived back here for safety reasons! Pick another character!": "Вы удалили персонажа или чат, и мы из соображений безопасности перенесли вас на эту страницу! Выберите другого персонажа!",
"Group is empty.": "Группа пуста.",
"No characters available": "Персонажей нет",
"Choose what to export": "Выберите, что экспортировать",
"Text Completion Preset": "Пресет для режима Text Completion",
"Update enabled": "Обновить включенные",
"Could not connect to API": "Не удалось подключиться к API",
"Connected to API": "Соединение с API установлено",
"Go back": "Назад"
}

View File

@@ -318,23 +318,23 @@
"flag": "прапорцем",
"API key (optional)": "Ключ API (необов'язково)",
"Server url": "URL-адреса сервера",
"Example: 127.0.0.1:5000": "Приклад: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Приклад: http://127.0.0.1:5000",
"Custom model (optional)": "Власна модель (необов'язково)",
"vllm-project/vllm": "vllm-project/vllm (режим оболонки OpenAI API)",
"vLLM API key": "Ключ API vLLM",
"Example: 127.0.0.1:8000": "Приклад: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Приклад: http://127.0.0.1:8000",
"vLLM Model": "Модель vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (режим OpenAI API)",
"Aphrodite API key": "Ключ API для Aphrodite",
"Aphrodite Model": "Модель Афродіта",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (сервер виведення)",
"Example: 127.0.0.1:8080": "Приклад: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Приклад: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Приклад: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Приклад: http://127.0.0.1:11434",
"Ollama Model": "Модель Ollama",
"Download": "Завантажити",
"Tabby API key": "Ключ API для Tabby",
"koboldcpp API key (optional)": "API-ключ koboldcpp (необов’язково)",
"Example: 127.0.0.1:5001": "Приклад: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Приклад: http://127.0.0.1:5001",
"Authorize": "Авторизувати",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Отримайте свій токен API OpenRouter за допомогою OAuth. Вас буде перенаправлено на openrouter.ai",
"Bypass status check": "Обійти перевірку статусу",
@@ -411,7 +411,6 @@
"Chat Start": "Початок чату",
"Add Chat Start and Example Separator to a list of stopping strings.": "Додайте початок чату та роздільник прикладів до списку рядків зупинки.",
"Use as Stop Strings": "Використовувати як рядки зупинки",
"context_allow_jailbreak": "Включає втечу з в’язниці в кінці підказки, якщо визначено в картці символів ТА «Переважати символ. Втечу з в'язниці'' увімкнено.\nЦЕ НЕ РЕКОМЕНДУЄТЬСЯ ДЛЯ МОДЕЛЕЙ ЗАВЕРШЕННЯ ТЕКСТУ, МОЖЕ ПРИЗВЕСТИ ДО ПОГАНОГО РЕЗУЛЬТАТУ.",
"Allow Jailbreak": "Дозволити втечу з в'язниці",
"Context Order": "Порядок контексту",
"Summary": "Резюме",

View File

@@ -318,23 +318,23 @@
"flag": "cờ",
"API key (optional)": "Key API (tùy chọn)",
"Server url": "URL máy chủ",
"Example: 127.0.0.1:5000": "Ví dụ: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Ví dụ: http://127.0.0.1:5000",
"Custom model (optional)": "Model tùy chỉnh (tùy chọn)",
"vllm-project/vllm": "vllm-project/vllm (Chế độ trình bao bọc API OpenAI)",
"vLLM API key": "Key API vLLM",
"Example: 127.0.0.1:8000": "Ví dụ: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Ví dụ: http://127.0.0.1:8000",
"vLLM Model": "Model vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Chế độ đóng gói cho Giao diện lập trình ứng dụng OpenAI)",
"Aphrodite API key": "Key API Aphrodite",
"Aphrodite Model": "Moddel cho Aphrodite",
"ggerganov/llama.cpp": "ggerganov/llama.cpp",
"Example: 127.0.0.1:8080": "Ví dụ: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Ví dụ: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Ví dụ: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Ví dụ: http://127.0.0.1:11434",
"Ollama Model": "Model Ollama",
"Download": "Tải xuống",
"Tabby API key": "Key API Tabby",
"koboldcpp API key (optional)": "Key API koboldcpp (tùy chọn)",
"Example: 127.0.0.1:5001": "Ví dụ: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Ví dụ: http://127.0.0.1:5001",
"Cho phép": "Ủy quyền",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai",
"Bypass status check": "Bỏ qua check trạng thái",
@@ -411,7 +411,6 @@
"Chat Start": "Bắt đầu Chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Thêm Bắt đầu trò chuyện và Dấu phân cách ví dụ vào danh sách các chuỗi dừng.",
"Use as Stop Strings": "Sử dụng như chuỗi dừng",
"context_allow_jailbreak": "Bao gồm Bẻ khóa ở cuối Prompt, nếu được xác định trong thẻ ký tự VÀ ''Thích Char. Bẻ khóa'' được bật.\nĐIỀU NÀY KHÔNG ĐƯỢC KHUYẾN NGHỊ CHO CÁC MÔ HÌNH HOÀN THÀNH VĂN BẢN, CÓ THỂ DẪN ĐẾN ĐẦU RA XẤU.",
"Allow Jailbreak": "Cho phép bẻ khóa",
"Context Order": "Thứ tự bối cảnh",
"Summary": "Bản tóm tắt",

Some files were not shown because too many files have changed in this diff Show More