Compare commits

..

1116 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
bmen25124
d42a81f97c New connection manager events, ConnectionManagerRequestService (#3603) 2025-03-16 16:58:34 +02:00
Cohee
62342b35e2 Reasoning template 2025-03-16 15:01:31 +02:00
Cohee
46b9bb7854 Merge pull request #3695 from Succubyss/gpt_tokenizer_tweak
gpt-4.5 detection tweak
2025-03-16 02:42:55 +02:00
Succubyss
fff1dd59c3 minor 4.5 detection tweak 2025-03-15 19:27:42 -05:00
Cohee
f88e95d9be Merge branch 'release' into staging 2025-03-16 02:25:20 +02:00
Cohee
248132dd89 Set debug level to unshallow warnings 2025-03-16 02:25:07 +02:00
Cohee
400d29e97e Add chat integrity check to saveChat 2025-03-16 02:24:20 +02:00
Cohee
ead37defeb Merge pull request #3694 from SillyTavern/workflow-hotfixes
Workflow hotfixes
2025-03-16 01:06:19 +02:00
Wolfsblvt
f18cb91ef9 on push, check all pushed commits - duh 2025-03-16 00:02:24 +01:00
Wolfsblvt
892fe7bd34 Workflows ensure explicit versions of actions 2025-03-16 00:02:24 +01:00
Wolfsblvt
0126e5e5a3 Add explicit workflow permissions 2025-03-16 00:02:24 +01:00
Cohee
b8afa96de5 Replace link to docs about regex flags 2025-03-15 23:07:58 +02:00
Cohee
9c42391706 Uncomment cookieSecret config removal 2025-03-15 23:04:02 +02:00
Cohee
d8c8bfa8a4 Merge pull request #3690 from SillyTavern/staging
Staging
2025-03-15 22:47:35 +02:00
Cohee
1041d2ae9d Update README 2025-03-15 19:52:57 +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
a1586694b6 Fix start script for electron 2025-03-15 15:41:03 +02:00
Cohee
a7aa1ff79d Bump release version 2025-03-15 15:37:01 +02:00
Cohee
0c7d5c76e2 gemini-2.0-flash-exp-image-generation 2025-03-15 14:58:06 +02:00
Cohee
aa94774963 Add command-a tokenizer to manual selection list 2025-03-15 13:46:13 +02:00
Cohee
628fc810c7 Add docker-compose install guide 2025-03-15 13:13:33 +02:00
Cohee
fb9b0569b6 The numbers must go up 2025-03-15 12:58:36 +02:00
Cohee
dc4612a0e2 Merge pull request #3688 from Erquint/staging
No swiping hotkeys when modifiers are held.
2025-03-15 01:08:34 +02:00
Gness Erquint
e57396040d No swiping hotkeys when modifiers are held. 2025-03-15 00:43:37 +03:00
Wolfsblvt
bafb2cba95 Happy little icons for workflows 2025-03-14 21:34:48 +01:00
Cohee
f607c3bc0d Gemma 3 (#3686)
* Gemma 3

* Adjust safetySettings

* Disable sysprompt

* Add isGemma check to tool processing logic

* Disable a google search tool for gemma
2025-03-14 21:41:28 +02:00
Cohee
0017358f8b Gemini inline images (#3681)
* Gemini images for non-streaming

* Parse images on stream

* Add toggle for image request

* Add extraction params to extractImageFromData

* Add explicit break and return

* Add more JSdoc to processImageAttachment

* Add file name prefix

* Add object argument for saveReply

* Add defaults to saveReply params

* Use type for saveReply result

* Change type check in saveReply backward compat
2025-03-14 20:15:04 +02:00
Cohee
0d2bf00810 Decrease checks interval 2025-03-14 10:44:48 +02:00
Cohee
f362f94c2d Decrease connection timeout, set 'valid' status on 'invalid URL', don't wait if not needed
Fixes #3683
2025-03-14 10:43:00 +02:00
Cohee
c9e716d42f Merge pull request #3682 from SillyTavern/feat-add-regex-toggle-command
Add `/regex-toggle` slash command
2025-03-14 10:15:00 +02:00
Cohee
bef466a5a1 Merge pull request #3685 from kallewoof/202503-gemma-3
chat-template: gemma 3
2025-03-14 10:13:49 +02:00
Karl-Johan Alm
f180d22680 chat-template: gemma 3 2025-03-14 13:57:48 +09:00
Wolfsblvt
18fa33d816 On review feedback of /regex-toggle
- Add quiet arg to suppress success toast
- Fix return values
- Switch-case instead of nested ternaries
- state uses onOfToggle
2025-03-14 01:03:08 +01:00
Cohee
e60796548b Skip status check of invalid custom endpoint URLs
Fixes #3683
2025-03-14 01:40:38 +02:00
Wolfsblvt
0f5f8e163d Merge branch 'staging' into feat-add-regex-toggle-command 2025-03-14 00:26:33 +01:00
Wolfsblvt
95e60b0f79 Switch to action to label maintainers, duh 2025-03-14 00:24:11 +01:00
Wolfsblvt
669cd49574 god give me hope this is right? 2025-03-14 00:11:28 +01:00
Wolfsblvt
9917be0233 Another attempt at fixing maintainer labeleng 2025-03-14 00:09:57 +01:00
Wolfsblvt
7537192c9a Add /regex-toggle slash command
- Add /regex-toggle command, similarly to /extension-toggle
- toggles the state of both global and character-bound scripts
- Update jsdoc being inconsistent

Closes #3613
2025-03-13 23:55:08 +01:00
Wolfsblvt
eaa7b91f1d Workflows use checkout step for label apply
- Checkout might be needed/useful, otherwise config files are not present
- Do not remove labels from PR updates anymore. Has to be done manually. Otherwise manual labelling really isn't possible.
2025-03-13 23:47:11 +01:00
Wolfsblvt
ea989df6a1 Hard-code maintainer list for maintainer label 2025-03-13 23:08:29 +01:00
Wolfsblvt
166b404ea7 Remove PR auto-labels when not relevant anymore 2025-03-13 22:37:58 +01:00
Wolfsblvt
25792b53f2 Improve logging and workflow names 2025-03-13 22:28:32 +01:00
Wolfsblvt
aad4b449ee Merge pull request #3678 from SillyTavern/update-git-workflows
Update github workflows for better issue & PR management, automating chores
2025-03-13 22:14:56 +01:00
Wolfsblvt
5743972a26 Extract workflows for merge conflicts + issue done
- Extract merge conflicts check to its own workflow, plus make it run on push
- Add issues update as Done or Done staging based on extracted commit messages
2025-03-13 22:13:00 +01:00
Cohee
be37b6ff8f Merge pull request #3679 from bmen25124/command_a
Added command-a-03-2025 and command-a tokenizer
2025-03-13 22:14:03 +02:00
Wolfsblvt
cd0ca0363e Fix /inject id not being required, cause undefined 2025-03-13 20:35:39 +01:00
bmen25124
fdcff7a7f0 Fixd "model.id" check 2025-03-13 22:25:20 +03:00
Wolfsblvt
d9c868b2fe Move PR size message to auto label replies 2025-03-13 20:12:55 +01:00
Wolfsblvt
15dbadbfe0 Move unstale to the issue/pr manager
Doesn't make sense to run the scheduled workflow and then skip most of it's jobs.
And it looks weird in the PR boxy thingy
2025-03-13 19:57:30 +01:00
Wolfsblvt
707efac5b9 Fix PR labeling failing 2025-03-13 19:40:41 +01:00
Wolfsblvt
972eea1efd Rename some labels, add config label
- Rename PR size labels
- Add config.yaml label on config changes
- Add config.yaml to the backened changes label
- Awaiting User Response will not be blocked by Keep Open
2025-03-13 19:28:23 +01:00
bmen25124
a77f4045f8 Added command-a-03-2025 and command-a tokenizer 2025-03-13 21:16:08 +03:00
Wolfsblvt
cc3e08ddaa Merge branch 'staging' into update-git-workflows 2025-03-13 16:43:23 +01:00
Wolfsblvt
eb17e37002 Fix maintainer label, minor docs 2025-03-13 16:42:49 +01:00
Wolfsblvt
ecaee2dbbf Directly remove stale labels on comments 2025-03-13 16:35:15 +01:00
Wolfsblvt
84e7ddbf74 PR workflow, add labels based on files/branch name
- Add PR labels based on changed files
- Add PR labels based on branch names
2025-03-13 16:33:47 +01:00
Wolfsblvt
4f7695b0ce Update auto comments to make them more uniform 2025-03-13 16:28:28 +01:00
Wolfsblvt
5f726d2b25 A bit more auto-labeling on issue open 2025-03-13 12:08:49 +01:00
Wolfsblvt
e43b9a3d2c Rework auto labels based on labels a bit 2025-03-13 12:08:17 +01:00
Wolfsblvt
34363e6875 Add issue types to issue templates 2025-03-13 11:38:40 +01:00
Cohee
79a8080b7d Merge pull request #3671 from bmen25124/events_type_param
New context methods, added type parameter to message events
2025-03-13 01:50:59 +02:00
bmen25124
92dacdb386 better type name, simplified context 2025-03-13 02:27:03 +03:00
Cohee
4fdc28afbc Merge pull request #3673 from qvink/export_parse_reasoning
exporting parseReasoningFromString()
2025-03-13 01:20:53 +02:00
qvink
874affb2f2 exporting parseReasoningFromString() 2025-03-12 17:01:03 -06:00
Cohee
37819df542 Move reasoning continue regex depth adjustment 2025-03-12 23:59:53 +02:00
Cohee
160f7431d6 Fix isPrefix for continue on reasoning 2025-03-12 23:55:16 +02:00
Cohee
12824bb680 Clear cached WI on deletion
Fixes #3672
2025-03-12 23:38:10 +02:00
Cohee
6af3f2ee7e Remove unused splitSentences function from utils.js 2025-03-12 23:29:55 +02:00
Cohee
d7085b119d Fix npm audit in tests 2025-03-12 22:09:50 +02:00
Cohee
1b817cd897 Kokoro: chunk generation, add pre-process func
#3412
2025-03-12 21:35:09 +02:00
Cohee
e65b72ea41 Fix global.d.ts var declarations 2025-03-12 20:54:07 +02:00
Cohee
c9c5dfa8c0 Bump external packages 2025-03-12 20:53:35 +02:00
Cohee
f11ebb032b Merge branch 'release' into staging 2025-03-12 20:43:47 +02:00
Cohee
58e714fce4 Fix npm audit 2025-03-12 20:43:38 +02:00
bmen25124
ddb77732f2 New context methods, added type parameters to message events 2025-03-12 21:25:16 +03:00
Reithan
01ef823da9 Dont count Continue as message 0 (#3594)
* 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

* Allow -1 as a min depth value

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-03-12 19:59:15 +02:00
Cohee
1b02426df1 Unshallow current character on selectCharacterById 2025-03-12 11:13:48 +02:00
Cohee
c4021525ac Merge pull request #3664 from SillyTavern/hide-name
Add "name" argument to /hide and /unhide
2025-03-12 10:48:19 +02:00
Cohee
e7189a1260 Refactor hideMessageCallback and unhideMessageCallback to remove unnecessary console logs. Introduce onlyUniqueJson and sortIgnoreCaseAndAccents utility functions 2025-03-12 10:18:02 +02:00
Wolfsblvt
843bd1cf3c Add check for PRs with merge-blocking labels 2025-03-12 04:02:14 +01:00
Wolfsblvt
fc151284e4 update labels based on other labels 2025-03-12 03:21:23 +01:00
Wolfsblvt
f6f87f6d5b unstale issues/prs on comments right away 2025-03-12 02:56:38 +01:00
Wolfsblvt
7543a24ca7 Rewrite and expand auto comments 2025-03-12 02:44:24 +01:00
Wolfsblvt
89ab138882 Auto-label PRs based on files + targeting release 2025-03-12 01:55:37 +01:00
Wolfsblvt
0237b6a872 Auto-comment/label issues once on staging 2025-03-12 00:59:23 +01:00
Wolfsblvt
c22ad7c2e8 auto ask for feedback on "Alternative Exists" 2025-03-12 00:06:33 +01:00
Wolfsblvt
26c4d231a8 "add Maintainer label" job via on open workflow 2025-03-11 23:43:35 +01:00
Cohee
1026e1f8e9 Add "name" argument to /hide and /unhide. Add default value for unnamed argument 2025-03-11 23:14:31 +02:00
Wolfsblvt
d6dcededc9 Refactor workflows into more structured files 2025-03-11 21:43:27 +01:00
Cohee
ebe30dceac Merge pull request #3660 from SillyTavern/group-pooled-order
Add group pooled order
2025-03-11 22:17:31 +02:00
Cohee
370bd9a3a8 Refactor to not use array 2025-03-11 22:16:26 +02:00
Cohee
137927bb43 Merge pull request #3662 from SillyTavern/enable-md-hotkeys-in-expando
Add markdown hotkeys support for expando editor on textareas that support markdown
2025-03-11 13:03:23 +02:00
Wolfsblvt
90cfdebff8 Remove unnecessary markdown icon 2025-03-11 10:39:14 +01:00
Wolfsblvt
0cde7e7a7f Add md hotkey support for expando editor
- When original textarea supports markdown, the textarea of the expanded popup will also have markdown support
- Also add the small markdown icon at the top
2025-03-11 04:42:03 +01:00
Cohee
cf63b70997 Fix instruct macro checkbox missing control bindings
Fixes #3643
2025-03-11 01:31:28 +02:00
Cohee
ad225138b4 Add group pooled order
Closes #3650
2025-03-11 01:24:46 +02:00
Cohee
68b5be063f TC: Increased unlocked response to 32k 2025-03-11 00:24:28 +02:00
Cohee
bdbe043259 Fix "Response Length" slider showing wrong value (#3659)
- "Mad Lab Mode" was falsely "resetting" the slider control, for no obvious reason besides weird implementation.
2025-03-11 00:21:59 +02:00
Wolfsblvt
57a229d5fd Fix "Response Length" slider showing wrong value
- "Mad Lab Mode" was falsely "resetting" the slider control, for no obvious reason besides weird implementation.
2025-03-10 22:21:36 +01:00
felger
e23f3a6314 feature: 'kokoro-js' supports TTS #3412 (#3656)
* feature: 'kokoro-js' supports TTS #3412

* Linting, add credits for kokoro library

* Fix voice preview

* Fix display languages on previews

* Fix settings restoration. Debounce model init on settings change

* Fix engine sorting

* Move TTS processing to a web worker. Remove unused gain setting

* Speaking rate fix

* Update status when recreating a worker

* Pass voices list from TTS engine

* Call dispose function on provider change

* Extend worker init timeout to 10 minutes

---------

Co-authored-by: ryan <1014670860@qq.com>
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-03-10 22:54:54 +02:00
Wolfsblvt
c722d251ff Update merge conflicts workflow
- Change the action being used
- Add comment to notify PR author on merge conflicts
2025-03-10 20:33:09 +01:00
Wolfsblvt
a104de38b6 Remove unused maintainers response workflow 2025-03-10 20:11:24 +01:00
Wolfsblvt
26093c1ae4 Update remove labels on close workflow
- Added more labels that should be removed
- Included PRs and their labels to be auto-removed
2025-03-10 20:11:05 +01:00
Wolfsblvt
c8fbd51554 Update stale workflow
- Remove not needed "Maintainer Response" labeling
- Update to latest version
- Add link to source
2025-03-10 19:53:50 +01:00
Wolfsblvt
bf75e88931 Update PR size workflow 2025-03-10 19:40:02 +01:00
Cohee
13a3f4772e Merge pull request #3653 from SillyTavern/fix-group-create-tags
Fix group creation inheriting tags from characters[0]
2025-03-10 20:30:23 +02:00
Cohee
a3b2cc456f Clear group tags list on create click 2025-03-10 20:30:03 +02:00
Wolfsblvt
1e6f8c6637 Better wording for /input arg descriptions 2025-03-10 17:41:18 +01:00
Cohee
594cba30ca Merge pull request #3657 from SillyTavern/fix-buttons-popup-display
Fix `/buttons` buttons not being displayed on log popup texts
2025-03-10 17:41:16 +02:00
Wolfsblvt
e3bcc79bb7 Fix /buttons buttons not being displayed
- On long popup texts, the buttons of the `/popup` slash command will not be displayed, cause by an unneeded overflow CSS property

Fixes #3654
2025-03-10 15:35:01 +01:00
Cohee
73230272f3 Apply regex to multiswipe reasoning, set reasoning_type to Parsed 2025-03-10 10:48:31 +00:00
Cohee
71a3aefe86 Replace link to regex editor docs 2025-03-10 10:40:25 +00:00
Cohee
6024b29ea7 Merge pull request #3652 from SillyTavern/default-middleware
Use default middleware for parsing request body
2025-03-10 12:34:01 +02:00
Cohee
ee13cef37f Fix group creation inheriting tags from characters[0] 2025-03-10 01:37:25 +02:00
Cohee
67d013e40a Use default middleware for parsing request body 2025-03-10 00:48:58 +02:00
Cohee
64206d6f47 Merge pull request #3651 from SillyTavern/input-handling-args
Add `/input` arguments to execute closures on success and on cancel
2025-03-10 00:45:47 +02:00
Wolfsblvt
fc1c767280 onCancel and onSuccess handlers for /input command 2025-03-09 23:10:56 +01:00
Cohee
d4f6373bbc Merge pull request #3648 from SillyTavern/regex-info-block
Add info block for find regex flags
2025-03-09 23:30:38 +02:00
Wolfsblvt
fa03443fe7 Switch /input command definition to fromProps 2025-03-09 22:29:40 +01:00
Cohee
0f8a17b652 Refactor regex info block to use a shared function 2025-03-09 23:29:00 +02:00
Cohee
3c65b2dcf3 Implement disk caching for character data using node-persist 2025-03-09 20:41:04 +02:00
Cohee
070de9df2d (CC) Move continue nudge at the end of completion (#3611)
* Move continue nudge at the end of completion
Closes #3607

* Move continue message together with nudge
2025-03-09 18:17:02 +02:00
Cohee
34b2ef0fd7 Clean-up code 2025-03-09 17:47:23 +02:00
Cohee
eef9c3ef62 Add info block for find regex flags
#3647
2025-03-09 17:41:38 +02:00
Cohee
6f0f32d83d Add a second row to profile editing name 2025-03-09 16:59:58 +02:00
Cohee
7845994315 Add 'start-reply-with' to Connection Profiles (#3632)
* Connection Profiles: Add support for 'start-reply-with' command and allow empty values for 'stop-strings' command

* Add handling for empty profile values in makeFancyProfile function

* Fix application of empty values

* Handle undefined values

* Improve argument validation

* Replace || with &&

* I got it right this time, swear

* Who wrote this?
2025-03-09 16:55:49 +02:00
Cohee
d94c301b10 Merge pull request #3646 from SillyTavern/fix-persona-auto-lock
Fix persona auto-lock to chat not working when the persona was already selected
2025-03-09 16:48:21 +02:00
Wolfsblvt
67699d9cfa Fix persona auto-lock to chat not working
- When auto lock was enabled, it didn't auto-lock to chat when the persona was already selected (like choosing the same persona you have used before)
2025-03-09 15:27:48 +01:00
Cohee
a392593e53 Merge pull request #3634 from SillyTavern/continue-from-reasoning
Fix auto-parsing of continue from reasoning
2025-03-09 16:22:02 +02:00
Cohee
cabd6de85b Prevent rollover on keyboard left swipe if repeating (#3644)
* Prevent rollover on keyboard left swipe if repeating
Closes #3636

* Ditto for right swipe

* Remove goofy comment leftover
2025-03-09 16:12:24 +02:00
Cohee
c03da65821 Run parsing at least once before rendering reasoning DOM on continue 2025-03-09 16:08:29 +02:00
Cohee
5d74507e50 Remove goofy comment leftover 2025-03-09 14:09:39 +02:00
Cohee
19b7deaed0 Ditto for right swipe 2025-03-09 14:08:24 +02:00
Cohee
6aaa533410 Prevent rollover on keyboard left swipe if repeating
Closes #3636
2025-03-09 13:42:30 +02:00
Cohee
96d79ac4e9 Merge branch 'staging' into continue-from-reasoning 2025-03-09 01:19:25 +02:00
Cohee
b52b11d7bb Force settings content check on user creation
Closes #3641
2025-03-09 00:56:23 +02:00
Cohee
1cb9287684 Vectors WebLLM (#3631)
* Add WebLLM support for vectorization

* Load models when WebLLM extension installed

* Consistency updated

* Move checkWebLlm to initEngine

* Refactor vector request handling to use getAdditionalArgs

* Add error handling for unsupported WebLLM extension

* Add prefix to error causes
2025-03-09 00:51:44 +02:00
Cohee
0ea64050ff Parse reasoning in multi-swipe swipes 2025-03-08 23:06:56 +02:00
Cohee
d0068ecbab Clean-up swipe_info of multi-swipes 2025-03-08 22:48:42 +02:00
Cohee
ca14352972 Fix syncMesToSwipe checks
Ported from #3634
2025-03-08 22:33:26 +02:00
Cohee
50a0f41736 Sync mes to swipe on stream finished 2025-03-08 22:29:18 +02:00
Cohee
7e3946c152 Add tools parameter to AI21 request 2025-03-08 22:26:32 +02:00
Cohee
edabd1128b Add tags in toShallow
Closes #3638
2025-03-08 22:04:49 +02:00
Cohee
f38898e03f Merge pull request #3640 from Succubyss/patch-7
Re-enable logit bias and stop strings for 4.5
2025-03-08 21:56:11 +02:00
Cohee
98f92f6270 Fix syntax of model name check 2025-03-08 21:50:39 +02:00
Cohee
5d275998ed Merge branch 'staging' into patch-7 2025-03-08 21:46:38 +02:00
Succubyss
c3b5382882 Re-enable logit bias and stop strings for 4.5 2025-03-08 12:57:11 -06:00
Cohee
de0e65fe13 Enable tool calling for ai21 2025-03-08 17:25:37 +02:00
Cohee
ff5835278b Add Jamba 1.6 models
Closes #3633
2025-03-08 15:16:49 +02:00
Cohee
980ed76cc3 Fix auto-parsing of continue from reasoning
Continues #3606
2025-03-08 12:58:26 +02:00
Wolfsblvt
91fe2841e3 Fix reasoning rendering on auto-save message 2025-03-08 05:52:11 +01:00
Cohee
b813bcad8a Merge pull request #3629 from kingbri1/staging
Make mesExamples macros consistent
2025-03-07 22:55:31 +02:00
Cohee
0423cb7ad3 Do not apply instruct formatting if on CC 2025-03-07 22:53:30 +02:00
Cohee
5ff4c457c0 Merge pull request #3630 from cloak1505/staging
Update OpenRouter providers
2025-03-07 22:15:39 +02:00
cloak1505
c593c9fe2a Update OpenRouter providers 2025-03-07 13:47:12 -06:00
kingbri
e476063f32 Macros: Update mesExamplesRaw documentation
Works as a normal macro and not just with story string.

Signed-off-by: kingbri <8082010+kingbri1@users.noreply.github.com>
2025-03-07 13:08:30 -05:00
kingbri
95e0be7e9e MesExamples: Make macros consistent with story string
mesExamples in the story string is formatted while mesExamplesRaw
is unformatted. However mesExamples when used as a normal macro
is unformatted. This causes an inconsistency in usage which is now
corrected.

Signed-off-by: kingbri <8082010+kingbri1@users.noreply.github.com>
2025-03-07 13:03:44 -05:00
Cohee
a9c2af19e3 Add null checks for querySelector stscript_autocomplete_width
Closes #3582
2025-03-07 11:32:58 +00:00
Cohee
1a52314812 MistalAI: Add custom stop strings
Closes #3627
2025-03-07 11:29:14 +00:00
Cohee
7de516e5e7 Merge pull request #3621 from Sorro123/staging
Add gemini tools support.
2025-03-07 00:23:17 +02:00
Cohee
381956652b Remove tools assignment 2025-03-07 00:22:45 +02:00
Cohee
7fd0f3e2bf Merge branch 'staging' into geminiStructured 2025-03-07 00:22:18 +02:00
Cohee
bcb2096020 Merge pull request #3625 from SillyTavern/gemini-search
Add backend-provided websearch connectors for OpenRouter and Gemini
2025-03-07 00:18:15 +02:00
Cohee
fa699956e6 Fix functionResponse part merging 2025-03-07 00:09:11 +02:00
Cohee
c9277cec28 Gemini: Add tool calling 2025-03-06 23:52:35 +02:00
Cohee
e9cf606c70 Add backend-provided websearch connectors for OpenRouter and Gemini 2025-03-06 22:23:35 +02:00
bmen25124
50f1e3f0f2 Added translation to reasoning block (#3617)
* Added translate to reasoning block

* Added mising reset value

* Shortcut nullable type

* Added reasoning edited/deleted events, better naming

* Fixed async call

* Added await to saveChat calls

* Exported updateReasoningUI

* Removed translated reasoning on edit if auto mode is none

* Added new value check before updating reasoning block, fixed an issue that display value stays same when we edit the message.

* Translate reasoning before the main message

* Fixed auto mode translate for reasoning message

* Translate reasoning first. Prevent out of bounds access

* Fix translating reasoning on swipe generation

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-03-06 21:30:17 +02:00
Cohee
4d81dfb085 Merge pull request #3614 from SillyTavern/char-shallow
Lazy load characters
2025-03-06 20:57:24 +02:00
Cohee
8161690ce6 Merge branch 'staging' into char-shallow 2025-03-06 20:55:22 +02:00
Cohee
02a8c8c460 Fix server crash if request was aborted during out of quota retry 2025-03-06 20:54:10 +02:00
Seth Hoong
8565df13e4 Merge pull request #3618 from annoawesome/electron
Add support for Electron
2025-03-06 19:43:06 +02:00
Cohee
35b72cc6e6 Merge pull request #3624 from SillyTavern/server-events
Add server events emitter
2025-03-06 19:21:36 +02:00
Cohee
6b821409e0 Add server events emitter 2025-03-06 14:55:50 +00:00
Sorro
fc94ed64c1 Same changes but on staging 2025-03-06 01:22:45 +01:00
Cohee
c36607be6f Merge pull request #3610 from bmen25124/time_to_first_token
Added time to first token
2025-03-05 21:55:36 +02:00
Cohee
3b9fcfae60 Console log Ollama model pulls 2025-03-05 21:42:56 +02:00
Cohee
2d2bf48d3d Make Groq happier 2025-03-05 21:38:38 +02:00
Cohee
c167890d26 Add multimodal captioning for Cohere 2025-03-05 21:36:43 +02:00
Cohee
a09b9fa746 Added Aya Vision support (#3615) 2025-03-05 21:17:33 +02:00
bmen25124
fb5f3e0f97 Changed param order, saved a tree 2025-03-05 18:39:19 +03:00
bmen25124
3cb24507a7 Shortcut nullable type 2025-03-05 17:53:44 +03:00
bmen25124
5398684ea2 Token rate round from 1 to 3 2025-03-05 17:28:15 +03:00
bmen25124
d3263b0e0f Removed rounding from time to first token display 2025-03-05 17:16:53 +03:00
bmen25124
06beaccdae Formatting 2025-03-05 14:44:07 +03:00
bmen25124
17d2771a75 time_to_first_token moved to extras 2025-03-05 14:42:29 +03:00
Cohee
858b750346 Document the magic number for future generations 2025-03-05 09:26:16 +00:00
Cohee
f1b50caf1a Move types/bytes to devDependencies 2025-03-05 09:09:33 +00:00
equal-l2
782d866fcf Added Aya Vision support 2025-03-05 13:39:16 +09:00
Cohee
49db89fef0 package.json: Fix debug script 2025-03-05 00:57:57 +02:00
Cohee
507ce78c27 Fix crash on undefined url in /chats 2025-03-05 00:51:54 +02:00
Cohee
28bad6479c Use human-readable memory cache capacity in config 2025-03-05 00:45:34 +02:00
Cohee
13cfe1650f Add bytes parser lib 2025-03-05 00:40:20 +02:00
Cohee
5d69189f8f Hard limit hotswaps to 25 entries 2025-03-04 23:49:32 +02:00
Cohee
c48ecc67b2 Merge branch 'staging' into char-shallow 2025-03-04 23:32:47 +02:00
Cohee
3d813e4ef6 Move shallow toggle to config.yaml 2025-03-04 23:32:42 +02:00
Cohee
8d608bcd72 Add gallery folder and sort order controls (#3605)
* Add gallery folder and sort order controls
Closes #3601

* Refactor sort constants to use Object.freeze for immutability

* Add comment

* Remove excessive null propagation

* Update type hint for gallery.folders

* Use defaultSettings.sort as a fallback

* Throw in groups

* Handle rename/deletion events

* Merge init functions

* Fix multiple gallery file uplods

* Add min-height for gallery element

* Fix gallery endpoint not parsing body

* translatable toasts

* Pass folder path in request body

* Change restore pictogram

* Add title to gallery thumbnail images

* Allow optional folder parameter in image list endpoint and handle deprecated usage warning

* Add validation for folder parameter in image list endpoint

* Add border to gallery sort selection

* Remove override if default folder is set to input

* Use server-side path sanitation

* Sanitize gallery folder input before updating

---------

Co-authored-by: Wolfsblvt <wolfsblvt@gmail.com>
2025-03-04 23:16:56 +02:00
bmen25124
73d4922d70 Iinitial value from -1 to null, better calculation 2025-03-04 13:46:57 +03:00
Cohee
383806325a Add shallow character load mode 2025-03-04 10:00:12 +00:00
Cohee
70f762c006 Merge pull request #3609 from bmen25124/error_field_check_custom_request
Added error field check
2025-03-04 08:51:55 +02:00
bmen25124
bdbddd4ed3 Added time to first token for swipe 2025-03-04 05:50:02 +03:00
bmen25124
d14b5e51a9 Added time to first token 2025-03-04 05:19:38 +03:00
bmen25124
28fc498ee6 Added error field check 2025-03-04 03:39:00 +03:00
Cohee
5d255d758e Merge pull request #3606 from SillyTavern/reasoning-continue-fix
Fix continue duplicating reasoning block
2025-03-04 00:56:07 +02:00
Cohee
7be6e0d5af Fix continue duplicating reasoning block 2025-03-04 00:42:50 +02:00
bmen25124
7d568dd4e0 Generic generate methods (#3566)
* sendOpenAIRequest/getTextGenGenerationData methods are improved, now it can use custom API, instead of active ones

* Added missing model param

* Removed unnecessary variable

* active_oai_settings -> settings

* settings -> textgenerationwebui_settings

* Better presetToSettings names, simpler settings name in getTextGenGenerationData,

* Removed unused jailbreak_system

* Reverted most core changes, new custom-request.js file

* Forced stream to false, removed duplicate method, exported settingsToUpdate

* Rewrite typedefs to define props one by one

* Added extractData param for simplicity

* Fixed typehints

* Fixed typehints (again)

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-03-03 10:30:20 +02:00
Cohee
0088333ebf WI: Fix adding empty text to recursion buffer 2025-03-03 00:05:35 +02:00
Cohee
c9ebea1d0a Merge pull request #3590 from SillyTavern/update-libs
Update third-party dependencies
2025-03-02 23:35:56 +02:00
Cohee
59ee2e1302 Merge pull request #3596 from Tosd0/staging
zh-CN translation
2025-03-02 23:30:15 +02:00
Cohee
074f54d995 Unhide nsigma for kobocpp 2025-03-02 23:04:18 +02:00
Cohee
155956f45b Merge pull request #3593 from SillyTavern/tc-missing-samplers-on-restore
Add missing samplers to TC restore preset
2025-03-02 23:02:20 +02:00
Cohee
5ecfbf3933 Fix element id for nsigma 2025-03-02 23:01:34 +02:00
Sevenyine
b1acfec825 Supplemented translations 2025-03-02 16:44:53 +08:00
Sevenyine
6e6d1b24eb Delete unused i18n keys 2025-03-02 16:33:54 +08:00
Sevenyine
6e15e4875d Update i18n keys in other languages due to changes in index.html 2025-03-02 16:31:40 +08:00
Sevenyine
0a89d9ca6f zh-CN translation 2025-03-02 15:28:46 +08:00
Wolfsblvt
810d954d12 Add missing samplers to TC restore preset 2025-03-02 00:26:47 +01:00
Cohee
64e1fd5f71 Merge pull request #3592 from qvink/specify_api_for_preset_list
Allow specifying API in presetManager.getPresetList()
2025-03-02 01:07:03 +02:00
Cohee
590ad6235b Merge pull request #3586 from DAurielS/novelai-image-update
Added support for NovelAI Diffusion V4 Full via API to Image Generation extension.
2025-03-02 01:05:35 +02:00
Cohee
696a999238 Merge pull request #3591 from SillyTavern/revert-3587-fix-miscounted-messages-on-generate-and-swipe
Revert "Account for generated depth on non-continue"
2025-03-02 00:56:07 +02:00
Cohee
7522fa2e79 Revert "Account for generated depth on non-continue" 2025-03-02 00:55:52 +02:00
qvink
ede9f242af Allow specifying API in presetManager.getPresetList() 2025-03-01 15:54:18 -07:00
Daryl
3a2d29b5cb Responding to PR change reviews 2025-03-01 17:21:11 -04:00
Cohee
f1f7a14349 Merge pull request #3578 from SillyTavern/whitelist-hosts
Whitelist Docker hosts
2025-03-01 21:44:22 +02:00
Cohee
108d9fd74f docker-compose.yml improvements
1. Enable colorized console outputs
2. Set node environment to production
2025-03-01 21:16:28 +02:00
Cohee
4c242fefe8 More concise startup logs 2025-03-01 21:07:12 +02:00
Cohee
55a295f827 Remove version specification from docker-compose.yml 2025-03-01 21:03:53 +02:00
Cohee
a161118308 Execute postinstall in docker entrypoint 2025-03-01 21:03:48 +02:00
Cohee
947a307b25 Update function comment 2025-03-01 20:25:55 +02:00
Cohee
61132dd7b9 Set default for whitelistDockerHosts to true 2025-03-01 20:25:00 +02:00
Cohee
1d995fb92d Rewrite to only consider Docker 2025-03-01 20:22:33 +02:00
Cohee
8aa7ed8635 Rewrite whitelist resolve logic to skip unresolved hosts from whitelist 2025-03-01 19:57:36 +02:00
Cohee
68db63b629 Merge branch 'staging' into whitelist-hosts 2025-03-01 19:44:49 +02:00
Cohee
743f07167c Update third-party dependencies 2025-03-01 19:38:21 +02:00
Cohee
b95dd04fbe Merge pull request #3585 from SillyTavern/chalk-lib
Use chalk lib for console colorization
2025-03-01 19:04:31 +02:00
Cohee
afdf56ce68 Merge pull request #3587 from Reithan/fix-miscounted-messages-on-generate-and-swipe 2025-03-01 15:59:16 +02:00
Reithan
0bedb6e0ff Autoformat 2025-03-01 05:49:18 -08:00
Reithan
ccd6a1631a Account for generated depth on non-continue 2025-03-01 05:48:11 -08:00
Cohee
661b84033f Don't use String constructor in calculateDataSize 2025-03-01 14:30:48 +02:00
Cohee
45d8cac5a9 Fix /go command 2025-03-01 14:30:18 +02:00
Daryl
8271bf36c7 Updated the processReply method to NOT remove pipe | or hash # characters when the selected model is nai-diffusion-v4 curated or full. 2025-03-01 02:06:26 -04:00
Daryl
d788c2fbb5 Added support for NovelAI Diffusion V4 Full via API to Image Generation extension. 2025-03-01 01:30:42 -04:00
Cohee
8a750c6341 Restore chosen AllTalk version on load 2025-03-01 01:33:39 +02:00
Cohee
868e97804a Use chalk lib for console colorization 2025-03-01 00:56:50 +02:00
Cohee
63b95ef504 Add i18n attr for deprecation notice 2025-03-01 00:52:53 +02:00
Cohee
385ef46a2b Add deprecation warning for Extras API in extensions pane 2025-03-01 00:52:26 +02:00
Cohee
7e8471f28f Enhance logging for resolved whitelist hostnames with color formatting 2025-03-01 00:30:00 +02:00
Cohee
8fded75069 Merge branch 'staging' into whitelist-hosts 2025-03-01 00:04:47 +02:00
Cohee
969156d819 Merge pull request #3584 from SillyTavern/chid-unify-type
Always use string for this_chid
2025-03-01 00:04:21 +02:00
Cohee
639c0235f9 Handle 'object' case as indexOf 2025-02-28 23:37:35 +02:00
Cohee
284bac9b49 Add type of this_chid 2025-02-28 22:51:34 +02:00
Cohee
af5e9aa518 Fix shift-click in bulk for first in list 2025-02-28 22:44:10 +02:00
Cohee
e91387c60b Fix rate and pitch for system tts
Closes #2545
2025-02-28 22:18:53 +02:00
Cohee
b3eb6e071f Merge branch 'staging' into chid-unify-type 2025-02-28 22:04:14 +02:00
Cohee
40720971c5 Hide unsupported language warning for 'en' 2025-02-28 21:55:48 +02:00
Cohee
abe55ec905 Add class to language selector 2025-02-28 21:51:06 +02:00
Cohee
ea59dcc30e Equalize group action button heights 2025-02-28 21:34:10 +02:00
Cohee
4f224550f6 Hide "persona connections" in create form 2025-02-28 21:26:16 +02:00
Cohee
12335f4860 Improve type handling 2025-02-28 13:46:16 +00:00
Cohee
b2ce76c84c Return to using string type for this_chid 2025-02-28 13:37:36 +00:00
Cohee
b6af55134a Refactor context change checks during chat summarization 2025-02-28 12:54:52 +00:00
Cohee
1aae08be5b Fix char A/N and expressions folder for first in the list 2025-02-28 09:12:22 +00:00
Cohee
2461913f85 Fix Horde model selection not saving 2025-02-28 10:53:56 +02:00
Cohee
5555b3e7db Use character name for gallery URL 2025-02-28 10:49:15 +02:00
Cohee
76e45abfc6 Fix SD prefixes for first in the list 2025-02-28 10:38:42 +02:00
Cohee
50e49cd67b Fix gallery for first in the list 2025-02-28 10:36:26 +02:00
Cohee
16b62d9fb3 Fix tags selector for first in the list 2025-02-28 10:33:39 +02:00
Cohee
14aec43064 Fix A/N and CFG menus on first in the list 2025-02-28 10:26:03 +02:00
Cohee
76cb34fd06 Fix logprobs menu on empty chats 2025-02-28 10:25:36 +02:00
Cohee
83e75439ab Fix duplication and scenario override for first in the list 2025-02-28 10:21:33 +02:00
Cohee
f33464527b Fix deletion of the first char in the list 2025-02-28 10:18:57 +02:00
Cohee
2df140a6a9 Fix world info binding and alt.greetings editor for first char in the list
Possibly fixes #3579
2025-02-28 10:16:42 +02:00
Cohee
eac0d04fd3 Merge pull request #3580 from AyeeMinerva/staging
add printMessages in st-context.getContext()
2025-02-28 09:43:47 +02:00
AyeeMinerva
73035c1d1c add clearChat in st-context 2025-02-28 15:08:55 +08:00
AyeeMinerva
7c72c1d9f3 add printMessages in st-content
so that we can use this func in extension
2025-02-28 12:31:25 +08:00
Cohee
60e8ffbf90 Improve logging in resolveHostnames function to provide clearer output for resolved IP addresses 2025-02-28 00:39:32 +02:00
Cohee
50ad31f8e8 Update the resolveHostnames function to clarify its behavior and improve documentation 2025-02-28 00:36:27 +02:00
Cohee
978b2cdb21 Refactor whitelist middleware to return a promise and update server.js to handle async initialization 2025-02-28 00:25:59 +02:00
Cohee
58fe54954a Update whitelist entry in config.yaml to use gateway.docker.internal 2025-02-28 00:21:35 +02:00
Cohee
d286fff42c Merge branch 'staging' into whitelist-hosts 2025-02-28 00:17:31 +02:00
Cohee
5c146bdd67 Add gpt-4.5 to caption extension list 2025-02-27 23:31:46 +02:00
Cohee
9c4bffc487 Merge pull request #3577 from SillyTavern/the-best-model-tm
Add gpt-4.5-preview (best model ™️ - most expensive for sure)
2025-02-27 23:30:34 +02:00
Cohee
20b5c962db Merge pull request #3576 from SillyTavern/debug-track-dynamic-translations
Debug function to track missing dynamic translation fields (`t` and `translate` calls)
2025-02-27 23:28:15 +02:00
Cohee
a8f05c92ae Revert "Switch tracking key to accountStorage"
This reverts commit 549fae4015.
2025-02-27 23:22:08 +02:00
Wolfsblvt
549fae4015 Switch tracking key to accountStorage 2025-02-27 22:16:38 +01:00
Cohee
0bc4396427 Resolve hostnames from whitelist 2025-02-27 23:14:57 +02:00
Wolfsblvt
ea643cce6e Add gpt-4.5-preview 2025-02-27 22:08:29 +01:00
Wolfsblvt
f11a834895 Switch tracking from Array to Set 2025-02-27 21:26:45 +01:00
Cohee
f43b42544b Merge pull request #3567 from SillyTavern/cli-args-refactor
Refactor server startup
2025-02-27 22:17:08 +02:00
Wolfsblvt
b98556855d Fix undefined translation 2025-02-27 21:15:12 +01:00
Wolfsblvt
94441c54ae Update logging structure for dyn translations 2025-02-27 20:59:38 +01:00
Wolfsblvt
c6a2b4e429 Trace-log stacktrace of translations without key 2025-02-27 20:48:16 +01:00
Wolfsblvt
08e184de26 Debug Func to track missing dynamic translations
- Add debug function to the debug menu that enables tracking of missing dynamic translations (via `t` or `translate`) once enabled
- Only works with non-English language loaded
- Prints it together with the existing debug print
2025-02-27 20:45:10 +01:00
Cohee
60448f4ce8 Move security checks to users.js 2025-02-27 21:27:39 +02:00
Cohee
d5056a5563 Merge branch 'staging' into cli-args-refactor 2025-02-27 20:48:34 +02:00
Cohee
ae51c39c09 Merge pull request #3572 from SillyTavern/remove-group-starter
Remove group chat starter message
2025-02-27 20:45:50 +02:00
Cohee
6905fcd0a4 Merge pull request #3573 from SillyTavern/extensions-i18n
Add locale data loading for extensions
2025-02-27 20:41:18 +02:00
Cohee
d3006cc720 Load extension i18n before script 2025-02-27 17:41:59 +00:00
Cohee
73786610a6 Merge pull request #3574 from Reithan/update-tfs-and-dyna-temp-expo-to-3-sig-dig
Update TFS and DynaTemp Exponent to use 3 sig dig
2025-02-27 19:33:15 +02:00
Reithan
aaf066699b Update TFS and DynaTemp Exponent to use 3 sig dig 2025-02-27 09:20:07 -08:00
Cohee
e312ae6b3b Add locale data loading for extensions 2025-02-27 16:18:10 +00:00
Cohee
d613e1ee77 Remove group chat starter message 2025-02-27 13:29:21 +00:00
Cohee
c60af6659c Change extensions list to debug level 2025-02-26 20:54:25 +02:00
Cohee
02ab882e63 Fix deno startup 2025-02-26 20:53:17 +02:00
Cohee
7c7de3d965 Update README 2025-02-26 20:45:14 +02:00
Cohee
02cdec5a10 Validate SSL config for sanity before startup 2025-02-26 20:32:26 +02:00
Cohee
813ec537cd Fix default values for SSL command line 2025-02-26 20:24:22 +02:00
Cohee
a20928b02c Fix class method bind. Await open promise 2025-02-26 20:19:32 +02:00
Cohee
1ef04ffc4d Rewrite comments 2025-02-26 16:22:56 +00:00
Cohee
68eecc77bb Refactor IP interface query 2025-02-26 15:44:39 +00:00
Cohee
b64273ab94 Fix comments, update function interfaces 2025-02-26 15:36:01 +00:00
Cohee
e7fcd0072b Refactor server startup 2025-02-26 14:46:54 +00:00
Wolfsblvt
6c0538854d Switch order of persona connections 2025-02-26 11:00:38 +01:00
Cohee
cf14b75091 Merge pull request #3564 from SillyTavern/rename-past-chats-event
Add `RENAMED_PAST_CHAT` event
2025-02-26 10:52:25 +02:00
Wolfsblvt
eab4e8aebc Renamed to CHARACTER_RENAMED_IN_PAST_CHAT 2025-02-26 09:38:25 +01:00
Cohee
2a65688148 Merge pull request #3563 from stevelittlefish/better_forwarded_ip_error_message_stg
Show forwarded IP in whitelist denied message
2025-02-26 10:05:31 +02:00
Wolfsblvt
22d551be3a bonus: jsdoc and modern popup for rename 2025-02-26 01:44:45 +01:00
Wolfsblvt
4e1cb1eba4 Add RENAMED_PAST_CHAT event 2025-02-26 01:28:28 +01:00
Stephen Brown
6947ca7433 Show forwarded IP in whitelist denied message 2025-02-25 23:58:12 +00:00
Cohee
12ef33bca4 Merge pull request #3346 from SillyTavern/persona-improvements
Expand Persona links/locking to characters and allowing more control on which persona to choose/load
2025-02-26 00:55:05 +02:00
Cohee
2cfaa034fb Merge branch 'staging' into persona-improvements 2025-02-26 00:48:23 +02:00
Cohee
e98172bb0e Merge pull request #3521 from SillyTavern/immutable-config
Immutable config
2025-02-26 00:42:26 +02:00
Cohee
90be2eee71 Only navigate to persona if switched by connection 2025-02-26 00:13:55 +02:00
Cohee
4aa8672925 Fix typo in post-install.js comment 2025-02-26 00:08:59 +02:00
Cohee
acd8b817f4 Improve number type conversion in getConfigValue to handle NaN cases 2025-02-26 00:08:04 +02:00
Cohee
6541dcbc66 Comment out persona preservation on character swap with personas open 2025-02-26 00:03:46 +02:00
Cohee
0274d800f9 Navigate to current persona on switching chats 2025-02-25 23:50:49 +02:00
Cohee
cf792c8195 Don't choose chat persona if it's already chosen 2025-02-25 23:37:02 +02:00
Cohee
5af4217fda Merge persona description counter with position header 2025-02-25 23:32:13 +02:00
Wolfsblvt
fec0e248c5 Fix persona UI states sometimes not updating 2025-02-25 21:57:25 +01:00
Wolfsblvt
582b710d3c Merge branch 'staging' into persona-improvements 2025-02-25 21:46:46 +01:00
Cohee
0776f65193 Allow JSON array and objects in env.var configs 2025-02-25 22:20:17 +02:00
Cohee
4edb069bd8 Split avatar dimensions config read by types 2025-02-25 22:19:09 +02:00
Cohee
861c502e44 Return type casts where they were 2025-02-25 22:12:22 +02:00
Cohee
11d56a407d Merge branch 'staging' into immutable-config 2025-02-25 22:08:35 +02:00
Cohee
7b55d91d35 Merge pull request #3561 from SillyTavern/fix-syncing-swipe-data
Fix syncing swipe data on reasoning parse & utility function to sync swipe data
2025-02-25 21:53:43 +02:00
Cohee
8b135f9ca3 Remove async from event handler 2025-02-25 21:52:03 +02:00
Cohee
422517ec93 Cancel debounced chat save if regular save is performed 2025-02-25 21:38:24 +02:00
Cohee
5545a425ea No double check 2025-02-25 21:34:04 +02:00
Cohee
eceaa9cacc Replace debounced save with regular 2025-02-25 21:32:39 +02:00
Cohee
7def85a174 Add couple of extra type checks 2025-02-25 21:21:59 +02:00
Wolfsblvt
5955327f7b Add old preset name to OAI_PRESET_CHANGED_BEFORE 2025-02-25 17:32:36 +01:00
Wolfsblvt
d28f39d77a Save chat on reasoning parse 2025-02-25 17:23:12 +01:00
Wolfsblvt
8bdc00e0b9 Fix reasoning not always being synced to swipe 2025-02-25 17:10:13 +01:00
Wolfsblvt
4ab54016ad Utility func to sync all mes data to swipe 2025-02-25 17:00:41 +01:00
Cohee
f0c7ea062b Merge pull request #3558 from bmen25124/new_exports
New exports - getChatCompletionModel
2025-02-25 15:05:30 +02:00
bmen25124
7064ce81c7 Exported getChatCompletionModel with optional parameter 2025-02-25 15:45:35 +03:00
Cohee
20a982491a Merge pull request #3554 from bmen25124/new_exports
Exported getTextGenServer, extractMessageFromData methods. added opti…
2025-02-25 12:23:09 +02:00
Cohee
5f024823a9 Improve JSdocs 2025-02-25 10:22:03 +00:00
bmen25124
092ef26144 Exported getTextGenServer, extractMessageFromData, getPresetManager methods. Added optional parameters to some methods for generic usage. 2025-02-25 13:20:06 +03:00
Cohee
19fba66d2c Merge pull request #3551 from SillyTavern/claude-thonk
Claude 3.7 think mode
2025-02-25 00:53:20 +02:00
Cohee
f2e47d9276 Update reasoning effort tooltip to specify minimum token allocation 2025-02-24 23:48:04 +02:00
Cohee
b8ebed0f4c Claude 3.7 think mode 2025-02-24 23:43:13 +02:00
Cohee
db148d5142 Merge pull request #3548 from SillyTavern/sonnet-3.7
Sonnet 3.7
2025-02-24 21:15:32 +02:00
Cohee
c855cd2bf0 Bonus: add o1 to captioning list 2025-02-24 21:13:42 +02:00
Cohee
82b74628c6 Sonnet 3.7 2025-02-24 21:06:12 +02:00
Cohee
68234cdcef Merge pull request #3547 from PeterDaveHello/zh-tw
Improve zh-TW Traditional Chinese locale a bit
2025-02-24 18:48:36 +02:00
Cohee
e71427953b Merge pull request #3544 from qvink/get_chat_completion_presets_from_preset_manager
Get chat completion presets from preset manager
2025-02-24 18:45:10 +02:00
qvink
5dc8450559 Fixing getCompletionPresetByName, removing openai option from getSelectedPresetName 2025-02-24 09:31:03 -07:00
Peter Dave Hello
01b0a84b70 Improve zh-TW Traditional Chinese locale a bit
Fix some terms converted from Simplified Chinese, and also improve the
consistency and some spaces.
2025-02-24 22:59:19 +08:00
Cohee
e0d1b21006 Merge pull request #3542 from SillyTavern/summary-improvements
Assorted summary improvements
2025-02-24 09:24:03 +02:00
qvink
d2df04550a Adding function to get preset values by name 2025-02-23 22:11:33 -07:00
qvink
10a72b8c80 Merge branch 'staging' of github.com-qvink:SillyTavern/SillyTavern into get_chat_completion_presets_from_preset_manager 2025-02-23 21:24:13 -07:00
qvink
7eff895e88 Allowing the presetManager to return presets for chat completion 2025-02-23 21:23:43 -07:00
Cohee
296037d1c8 Remove redundant styles 2025-02-24 00:57:00 +02:00
Cohee
ae666c9012 OpenRouter (CC): explicit opt-out for reasoning 2025-02-23 22:13:11 +02:00
Cohee
7fc26c1d53 Merge pull request #3541 from RivelleDays/staging
Update zh-tw.json: Added Missing Translations & Support for Third-Party Extensions
2025-02-23 22:09:41 +02:00
Cohee
7a54b0cad7 Assorted summary improvements 2025-02-23 21:40:15 +02:00
Cohee
919df98c6e Merge pull request #3540 from PeterDaveHello/patch-1
Optimize Dockerfile to use `apk add` with `--no-cache`
2025-02-23 12:50:28 +02:00
Peter Dave Hello
2faaabbf5f Optimize Dockerfile to use apk add with --no-cache
Using the `apk add` command with the `--no-cache` parameter for package installation will prevent the package index from being cached and reduce the image size.
2025-02-23 18:39:22 +08:00
Rivelle
26c9c7e56b Update zh-tw.json 2025-02-23 17:57:27 +08:00
Wolfsblvt
7249d4470a Merge pull request #3539 from RivelleDays/staging
Update zh-tw.json
2025-02-23 06:17:31 +01:00
Rivelle
810bca46a0 Update zh-tw.json 2025-02-23 13:08:36 +08:00
Wolfsblvt
e27e045054 Update persona.js code documentation for exported 2025-02-23 04:58:48 +01:00
Wolfsblvt
76fa90ed9e Switch to char from persona panel decision tree 2025-02-23 02:33:51 +01:00
Wolfsblvt
5a22e64466 Improve tooltip for never_resize_avatars 2025-02-23 02:26:36 +01:00
Cohee
6df2dc11f7 Merge pull request #3538 from SillyTavern/reasoning-parse-on-edit
Reasoning edit/parse updates
2025-02-22 23:11:05 +02:00
Wolfsblvt
8aadada0e2 utility: let setInfoBlock also clear 2025-02-22 21:50:58 +01:00
Cohee
7f9960fa7a Clickable char personas 2025-02-22 22:48:51 +02:00
Wolfsblvt
e0f3a22b80 Refactor: move persona slash commands 2025-02-22 21:45:35 +01:00
Cohee
49d1a16a18 Update rename tooltip 2025-02-22 22:35:09 +02:00
Cohee
ac8c2799b8 Add missing personas on load 2025-02-22 22:26:34 +02:00
Cohee
ee6202c379 Remove margin right from persona name 2025-02-22 22:25:13 +02:00
Cohee
2194bdfd56 Rerender the list if migrated persona 2025-02-22 22:20:45 +02:00
Wolfsblvt
bb03c60c39 Refactor: move showCharConnections 2025-02-22 21:17:56 +01:00
Wolfsblvt
8f38298f90 fix linting errors 2025-02-22 20:48:41 +01:00
Wolfsblvt
9e7f485b65 Merge branch 'persona-improvements' of https://github.com/SillyTavern/SillyTavern into persona-improvements 2025-02-22 20:47:10 +01:00
Cohee
4a9503c056 Align message block baseline 2025-02-22 21:43:16 +02:00
Wolfsblvt
f37541d629 Remove unused old username functions 2025-02-22 20:42:35 +01:00
Cohee
caf3a64a0f Replace gray with opacity 2025-02-22 21:34:23 +02:00
Wolfsblvt
8bd4fd76ae Merge branch 'staging' into persona-improvements 2025-02-22 19:23:59 +01:00
Cohee
252ae9f534 Update access log configuration to enforce boolean type 2025-02-22 20:20:23 +02:00
Cohee
a73dfa7586 Merge branch 'staging' into immutable-config 2025-02-22 20:15:13 +02:00
Cohee
fb06e7afa1 Merge pull request #3403 from SillyTavern/support-multiple-expressions
Support multiple expressions
2025-02-22 20:13:43 +02:00
Cohee
3cf4be8e85 Remove unused import 2025-02-22 20:12:19 +02:00
Cohee
f2cac8e7f7 Revert "Return fallback expression if no group message found" 2025-02-22 20:02:34 +02:00
Cohee
4802e4bed2 Reasoning edit/parse updates
1. Parse reasoning on message edit
2. Reasoning edit follow 'auto-save' preference
2025-02-22 19:14:01 +02:00
Cohee
1a1afd00a1 Merge pull request #3537 from Kas1o/staging
Updated Groq model options to sync with official playground
2025-02-22 14:40:13 +02:00
Cohee
e7d38d95d0 Add max context size for llama-guard-3-8b model 2025-02-22 14:37:53 +02:00
Cohee
15769a7643 Add context sizes for new groq models 2025-02-22 14:36:32 +02:00
Cohee
9b631ed048 Support Qwen tokenizer fro Groq 2025-02-22 14:29:04 +02:00
Cohee
7188060ac8 Merge pull request #3526 from Zhen-Bo/feature/access-log-middleware
Add Separate Access Logging Middleware with Configuration Option
2025-02-22 14:18:38 +02:00
Cohee
3e26b93971 Do not register whitelist middleware if whitelist disabled 2025-02-22 14:14:40 +02:00
Kas1o
159852233f Updated Groq model options to sync with official playground 2025-02-22 20:09:04 +08:00
Cohee
a2ecb81378 Move minLogLevel to logging section 2025-02-22 13:58:08 +02:00
Cohee
b12cd9fe05 Merge branch 'staging' into feature/access-log-middleware 2025-02-22 13:49:36 +02:00
Cohee
d21b0f1b5e Add default fallback expression 2025-02-22 13:45:54 +02:00
KevinSun
42f850239f fix(middleware): skip logging for blocked connections to specific paths 2025-02-22 19:42:38 +08:00
Cohee
db988411fd Return fallback expression if no group message found 2025-02-22 13:40:43 +02:00
Cohee
3a25550f5b Merge pull request #3535 from yokuminto/release
add reasoning display switch in custom source
2025-02-22 13:22:50 +02:00
Cohee
5c79c8e162 [chore] Reformat new code 2025-02-22 12:47:19 +02:00
Cohee
30f97e0e64 Merge branch 'release' into staging 2025-02-22 12:41:18 +02:00
Cohee
938c8a9a36 Add /default do-not-edit notice 2025-02-22 12:41:09 +02:00
yokuminto
13f76c974e reasoning or reasoning_content 2025-02-22 16:09:42 +08:00
Wolfsblvt
afbe21b6b4 Make sendExpressionCall exportable
- For compatibility with existing extensions
2025-02-22 01:44:42 +01:00
Cohee
d32adb8d1d Fix requestProxyBypass command line default value
Closes #3528
2025-02-21 23:07:33 +02:00
Cohee
6e5db5c41a Perplexity: Add new models 2025-02-21 23:03:49 +02:00
Cohee
a7d7b6fb0f Fix group VN updates on switching to chat 2025-02-21 22:05:08 +02:00
Cohee
1adde74f38 Merge branch 'staging' into support-multiple-expressions 2025-02-21 21:06:20 +02:00
Cohee
1ad3f3d6c7 Merge pull request #3530 from SillyTavern/reasoning-block-coloring
Update reasoning block coloring to CSS vars
2025-02-21 20:53:05 +02:00
Wolfsblvt
0cc0d6763e Use hsl instead of color-mix for reasoning css 2025-02-21 19:40:36 +01:00
Cohee
e8cdad0bf2 Merge pull request #3531 from SillyTavern/fix-hidden-reasoning-plus-parsing
Fix hidden reasoning models blocking auto-parsing from working
2025-02-21 19:56:02 +02:00
Wolfsblvt
b0a2f241d2 Fix hidden reasoning not allowing manual parsing 2025-02-21 18:01:25 +01:00
Wolfsblvt
29c71fe8f1 Update reasoning block coloring to CSS vars 2025-02-21 17:30:56 +01:00
KevinSun
f755c3d4cb refactor(middleware): rename accessLogger to accessLogWriter 2025-02-21 23:56:31 +08:00
KevinSun
9c3e8c935b refactor(Middleware): only mount accessLogger when listen is enabled 2025-02-21 23:49:15 +08:00
KevinSun
bfc609c2a8 fix(middleware): skip New connection message and access.log writes for localhost 2025-02-21 22:17:12 +08:00
Cohee
4c7ede67f3 Merge branch 'release' into staging 2025-02-21 12:47:31 +00:00
Cohee
b17fdcbfd9 Fix assistant chat export format 2025-02-21 12:46:49 +00:00
KevinSun
db500188d8 feat(middleware): add separate access log middleware with config option 2025-02-21 20:32:23 +08:00
Cohee
aadae85a2a eventSource: Add autofire on emit for APP_READY 2025-02-21 02:52:45 +02:00
Cohee
cb6adc30ce Fix null confrimation when no custom expressions 2025-02-21 02:05:43 +02:00
Cohee
bdbcf8623e Fix force set emote in group 2025-02-21 01:46:10 +02:00
Cohee
e35217e7e3 Fix image loading resolve 2025-02-21 01:32:13 +02:00
Cohee
aca1cb7f99 Fix first reorder of group VN with reduced motion 2025-02-21 01:19:19 +02:00
Cohee
07160e0e60 Fix group VN mode not updating on kicking group members 2025-02-21 01:01:30 +02:00
Cohee
179153ae67 Fix group VN mode with reduced motion 2025-02-21 00:51:17 +02:00
Cohee
94f53835f4 Forbid custom expressions to be prefixed with defaults 2025-02-21 00:29:05 +02:00
Cohee
ab4d296b22 fix: return empty strings for branch name and commit hash in error response 2025-02-20 23:18:03 +02:00
Cohee
8ad7b5dcc5 Check if git repo root in plugin update 2025-02-20 23:13:23 +02:00
Cohee
00bb36f764 Fix setting basic auth creds with env 2025-02-20 22:38:47 +02:00
Cohee
73784642d2 Save setConfigValue export 2025-02-20 22:31:23 +02:00
Cohee
2b28065c9f Fix setting protocols with env 2025-02-20 22:28:30 +02:00
Cohee
eb31d7baa2 Merge branch 'staging' into immutable-config 2025-02-20 21:54:41 +02:00
Cohee
3f03936125 Add config value type converters for numbers and booleans 2025-02-20 21:53:48 +02:00
KevinSun
3f5b63bba0 Feature: Add configurable X-Real-IP header support for rate limiting (#3504)
* fix: correct client IP detection behind reverse proxy

* Revert "fix: correct client IP detection behind reverse proxy"

This reverts commit 7207506240.

* feat: support X-Real-IP header for reverse proxy setups

* feat: add option to use x-real-ip for rate limiting behind reverse proxy

* docs: update rate limiting configuration comments for X-Real-IP usage

* refactor: extract getIpAddress function to reduce code duplication

* revert(whitelist): rate limit settings shouldn't affect whitelist
2025-02-20 21:11:44 +02:00
Cohee
7571552fef STORAGE_KEYS.cookieSecret deprecated 2025-02-20 20:45:20 +02:00
Cohee
f6fe5fea77 Allow overriding config.yaml values with env vars
Closes #3520
2025-02-20 20:29:42 +02:00
Wolfsblvt
3574527780 fade "reroll if same" if no multi sprites enabled 2025-02-20 19:28:54 +01:00
Wolfsblvt
2834681a4b Fix sprite upload replace existing
- Also fix form not resetting on cancel of replace popup
2025-02-20 19:25:20 +01:00
Cohee
7ea2c5f8cf Move cookie secret to data root. Make config.yaml immutable 2025-02-20 20:16:44 +02:00
Wolfsblvt
19e2a2f7d2 safety check on upload on sprite name 2025-02-20 19:05:20 +01:00
Wolfsblvt
a58e026a40 Don't show del popup on placeholder sprite 2025-02-20 19:02:29 +01:00
Wolfsblvt
a40f568409 Fix sprite deletion 'no' option 2025-02-20 18:51:44 +01:00
Cohee
bad806312d Auto-extend session cookie every 30 minutes 2025-02-20 09:58:17 +02:00
Cohee
3bb8b887e1 Merge pull request #3512 from SillyTavern/session-autoextend
Auto-extend session cookie every 30 minutes
2025-02-20 09:57:19 +02:00
Cohee
135bf8a55b Add progress toast for sprite ZIP upload 2025-02-20 00:12:40 +02:00
Cohee
3d8a897c19 Auto-extend session cookie every 30 minutes 2025-02-19 23:42:28 +02:00
Wolfsblvt
bd6da695c8 cleanup examples for multi sprites 2025-02-19 22:30:51 +01:00
Wolfsblvt
531999dc04 Ensure unique suggested sprite names 2025-02-19 22:12:29 +01:00
Cohee
58bbfc0d4e Add types for global translation function 2025-02-19 22:18:09 +02:00
Cohee
380bd4ef4b refactor: update runWebpackCompiler to accept options object 2025-02-19 22:03:43 +02:00
Cohee
bb64e9b5c5 Merge pull request #3500 from SillyTavern/webpack-cache-dataroot
Move webpack cache to data root
2025-02-19 21:53:58 +02:00
Cohee
1ef5154770 Merge branch 'staging' into webpack-cache-dataroot 2025-02-19 21:34:02 +02:00
Cohee
57aa820dc3 Merge pull request #3510 from underscorex86/patch-3
autoswipe length tooltip
2025-02-19 21:27:41 +02:00
Wolfsblvt
c12f26441e Merge branch 'staging' into support-multiple-expressions 2025-02-19 20:22:02 +01:00
Cohee
e4269f5d1d Update i18n 2025-02-19 21:17:03 +02:00
Sneha C
947d4f215e autoswipe length tooltip
clarify that it is # of characters
2025-02-19 20:13:05 +04:00
Cohee
826e4f6d16 Merge pull request #3499 from SillyTavern/accesslog-dataroot
Move access.log to data root
2025-02-19 11:32:37 +02:00
Cohee
0f46128980 Set lib.js output path to data 2025-02-18 20:24:07 +02:00
Cohee
441e5c6f7e Move webpack cache to data root 2025-02-17 23:41:59 +02:00
Cohee
da3b620f74 Move access.log to data root 2025-02-17 22:58:06 +02:00
Wolfsblvt
1ea2134936 Add title tooltip to expression sprites
Closes #2596
2025-02-01 23:43:45 +01:00
Wolfsblvt
fb2ee756dd Update and fix default expressions + emojis
- Move "use default emojis" from its own toggle into the fallback dropdown
- Add "no fallback" to the fallback dropdown
- fix fallback expressions not being consistently used
- Switching fallback will now reroll/reset the relevant expression
- Add html attributes on the expression image
2025-02-01 07:52:04 +01:00
Wolfsblvt
25ffc4ac4a Merge branch 'staging' into support-multiple-expressions 2025-02-01 04:47:48 +01:00
Wolfsblvt
5c30244627 Fix visual novel mode for new expression thingy 2025-02-01 04:46:30 +01:00
Wolfsblvt
198d10e759 Allow setting specific sprites as expressions
- Update /expression-set command to allow setting specific sprites
- Enhance enum completion for /expression-set to show expressions/sprites and more their info
- Fix setting sprite folder reprinting stuff double
- Fix not being able to unset expressions
2025-01-30 02:42:05 +01:00
Wolfsblvt
73393a5d5e yoink talkinghead - goodbye extras dependency 2025-01-30 01:44:27 +01:00
Cohee
cbeb7ddcec Update persona upload methods to fetch 2025-01-30 02:30:51 +02:00
Wolfsblvt
3d817352ec Add rename personas functionality 2025-01-30 01:17:43 +01:00
Wolfsblvt
f9324c74cd Streamline persona toasts, infos and states
- Added "info" block to persona description panel to show when a temporary persona is in use. Hide the long text behind a tooltip
- Reduce toast spam even further, not showing toasts when persona panel is open
- Restyle connection state buttons a bit
- Designed common 'info-block' utility to show markdown-like info blocks, with CSS styling
2025-01-30 00:50:48 +01:00
Wolfsblvt
e5db40cf2d Add persona connection states to persona list
- Show persona connection/lock states in persona list (chat & char lock)
- Refactor persona images url to 'data-avatar-id' attribute
- Try make persona blocks' height consistent
- Fix persona list not correctly updating selected persona on navigating pages
- Fix group/char difference not correctly working
- Create common style template for hover-able images buttons/tags where the label only appears on hover
2025-01-29 22:54:22 +01:00
Wolfsblvt
2344d98e20 Move persona buttons to right panel
- Move all buttons from the persona list to the right panel, to the already existing ones
- Common CSS class/style for '.buttons_block'
- Common CSS style for a red button
- Refactored a few persona buttons' functionalities
2025-01-28 20:53:55 +01:00
Wolfsblvt
6081b9f0ce Merge branch 'staging' into persona-improvements 2025-01-28 18:57:20 +01:00
Wolfsblvt
6348d1f19a CSS fixes (hide overflow, sprites interactable) 2025-01-28 00:17:42 +01:00
Wolfsblvt
d316d51c0b Rework expression slash commands
- Common naming schema for slash commands, all starting with the name of the expression - moved the original names to aliases
- Make char name optional for /expression-last if not in group chat
- Removed legacy 'format' argument handling from /expression-classify
- Fixed /expression-upload to the new backend call, added optional 'spriteName' argument
2025-01-27 23:48:37 +01:00
Wolfsblvt
84a8a2bc2b Fix expression sprite sorting, fade additional
- Sort alphabetically, but keep the main expression file first
- Fade additional sprite images if "allow multiple" is not chosen
2025-01-27 23:01:29 +01:00
Wolfsblvt
7063af7363 Move new expression settings, add tooltip 2025-01-27 22:10:31 +01:00
Wolfsblvt
3d6f48786d Refactor expression popups to modern popup 2025-01-27 21:57:40 +01:00
Wolfsblvt
65ad79adce Fix expression delete 2025-01-27 21:50:13 +01:00
Wolfsblvt
ef127df623 Update sprite delete call 2025-01-27 08:33:14 +01:00
Wolfsblvt
3282c9426c Upload expressions update 2025-01-27 05:39:51 +01:00
Wolfsblvt
5c34c93a84 Merge branch 'staging' into support-multiple-expressions 2025-01-26 23:11:37 +01:00
Wolfsblvt
239c3f1db7 Add settings for multiple expressions 2025-01-26 23:11:22 +01:00
Wolfsblvt
913509f887 Don't look at this 2025-01-26 22:27:59 +01:00
Wolfsblvt
1f116d9afe Reduce persona toast spam 2025-01-26 22:13:32 +01:00
Wolfsblvt
2cfb9e8dab Fix lock icon state on auto-lock to chat 2025-01-26 20:50:10 +01:00
Cohee
8448d6c6e6 Merge branch 'staging' into persona-improvements 2025-01-26 21:18:51 +02:00
Cohee
9f54adbeb4 Comment dupe default persona button 2025-01-26 21:18:38 +02:00
Wolfsblvt
adede8b6be Roll on the sprite to use for an expression 2025-01-26 19:12:37 +01:00
Wolfsblvt
a072951102 Update backend returned sprites list 2025-01-26 00:15:46 +01:00
Wolfsblvt
9a79c6b1a4 Remove all connections button for the popups 2025-01-25 19:54:45 +01:00
Wolfsblvt
3fc4207cdb Temporary persona toast respects setting 2025-01-25 19:27:29 +01:00
Wolfsblvt
ef73ab43da Fix "Default" persona connection tooltip 2025-01-25 19:25:42 +01:00
Wolfsblvt
2ff1957ca8 Consistent headers in persona panel 2025-01-25 19:24:40 +01:00
Wolfsblvt
0141a60eb8 Add hint on how to use persona connections 2025-01-25 19:20:21 +01:00
Wolfsblvt
2253990898 Highlight personas from current chat in popup 2025-01-25 18:47:53 +01:00
Wolfsblvt
076e5e3186 Fix temporary persona toast
- Temporary persona toast was appearing when auto-lock was enabled, which didn't make sense
2025-01-25 18:23:00 +01:00
Wolfsblvt
e1bf781b10 Fix wrongly changed jQuery data "chid" attribute 2025-01-25 03:33:53 +01:00
Wolfsblvt
608e1c195b Add button to show connections for current char 2025-01-25 02:52:41 +01:00
Wolfsblvt
7c12a286c3 Fix one persona connected warning 2025-01-24 23:27:31 +01:00
Wolfsblvt
7454532641 Expand /persona-lock command for type
- Add new main alias for /lock, renamed to /persona-lock
- Allow no state to be provided to return the current lock state
- Deprecate the old usage of /lock without state, without breaking it
2025-01-24 23:24:35 +01:00
Wolfsblvt
91dabeff53 Add css class to allow multiple avatar lists 2025-01-24 21:57:47 +01:00
Wolfsblvt
7c9b347116 Refactor chid/grid attributes to data attributes
- We don't believe in imaginary HTML attributes that we make up, right?
2025-01-24 21:12:49 +01:00
Wolfsblvt
a611a3ac59 Merge branch 'staging' into persona-improvements 2025-01-24 20:42:04 +01:00
Wolfsblvt
beced225a3 Update persona toasts 2025-01-15 02:48:35 +01:00
Wolfsblvt
776dedea82 Persona settings for auto-lock & multi connection
- Add setting to auto-lock persona to chat. Triggered on chat changed (creation/loaded) and on persona selection.
- Add setting to allow multiple persona<->char connections, which then triggers the popup to select one
- If no multi connections allowed, the connect toggle will remove all existing connections from personas to that character
2025-01-15 02:20:48 +01:00
Wolfsblvt
08a4cee48f Add/expand persona auto selection from char / chat
- Persona selection on chat based on three levels:
  1. Chat Locking
  2. Char connected personas
  3. Default persona
- Add popup if multiple personas are connected to char
- Add utility function to print persona avatar lists
2025-01-15 01:18:31 +01:00
Wolfsblvt
255e75c6cf Show connected characters in persona panel
- Print list of connected characters in persona panel
- Fix smaller bugs with missing connections in persona description
2025-01-14 01:37:45 +01:00
Wolfsblvt
74fc259c9c Reworked persona lock buttons + lock to character
- Slight redesign of the persona panel right side, add headers
- Add buttons for all three different lock states (chat, character, default)
- Update lock and toggle lock functions to accept toggle type
- Write persona locking to chat functionality (saves to persona description object)
2025-01-14 00:59:21 +01:00
Wolfsblvt
82422b4500 Refactor persona panel with headings 2025-01-13 19:52:23 +01:00
Wolfsblvt
126e4fa698 Display additional images in expression list
- Update Expressions List to display additional images per expression
- Make additional images appear visually distinct
- Fix small issues with custom labels not always being shown
- Add tooltip on all expression images
- Modify /api/sprites/get endpoint to correctly parse the label from filenames that might be additional files
2025-01-08 01:20:25 +01:00
318 changed files with 19244 additions and 8207 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,
},
@@ -75,8 +78,10 @@ module.exports = {
'plugins/**',
'**/*.min.js',
'public/scripts/extensions/quick-reply/lib/**',
'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

@@ -1,4 +1,5 @@
name: Bug Report 🐛
type: Bug
description: Report something that's not working the intended way. Support requests for external programs (reverse proxies, 3rd party servers, other peoples' forks) will be refused! Please use English only.
title: '[BUG] <title>'
labels: ['🐛 Bug']

View File

@@ -1,4 +1,5 @@
name: Feature Request ✨
type: Feature
description: Suggest an idea for future development of this project. Please use English only.
title: '[FEATURE_REQUEST] <title>'
labels: ['🦄 Feature Request']
@@ -32,7 +33,7 @@ body:
id: solution
attributes:
label: Describe the solution you'd like
placeholder: An outline of how you would like this to be implemented, include as much details as possible
placeholder: An outline of how you would like this to be implemented, include as much details as possible
validations:
required: true

View File

@@ -1,2 +0,0 @@
🐛 Bug: ✅ Fixed
🦄 Feature Request: ✅ Implemented

View File

@@ -1,62 +0,0 @@
comment:
footer: |
---
> I am a bot, and this is an automated message 🤖
labels:
- name: ✖️ Invalid
labeled:
issue:
action: close
body: >
Hello @{{ issue.user.login }} your ticket has been marked as invalid.
Please ensure you follow the issue template, provide all requested info,
and be sure to check the docs + previous issues prior to raising tickets.
pr:
body: Thank you @{{ pull_request.user.login }} for suggesting this. Please follow the pull request templates.
action: close
- name: 👩‍💻 Good First Issue
labeled:
issue:
body: >
This issue has been marked as a good first issue for first-time contributors to implement!
This is a great way to support the project, while also improving your skills, you'll also be credited as a contributor once your PR is merged.
If you're new to SillyTavern [here are a collection of resources](https://docs.sillytavern.app/)
If you need any support at all, feel free to reach out via [Discord](https://discord.gg/sillytavern).
- name: ❌ wontfix
labeled:
issue:
action: close
body: >
This ticked has been marked as 'wontfix', which usually means it is out-of-scope, or not feasible at this time.
You can still fork the project and make the changes yourself.
- name: ✅ Fixed
labeled:
issue:
body: >
Hello @{{ issue.user.login }}! It looks like all or part of this issue has now been implemented.
- name: ‼️ High Priority
labeled:
issue:
body: >
This ticket has been marked as high priority, and has been bumped to the top of the priority list.
You should expect an implementation to be pushed out soon. Thank you for your patience.
- name: 💀 Spam
labeled:
issue:
action: close
locking: lock
lock_reason: spam
body: >
This issue has been identified as spam, and is now locked.
Users who repeatedly raise spam issues may be blocked or reported.
- name: ⛔ Don't Merge
labeled:
pr:
body: This PR has been temporarily blocked from merging.

69
.github/issues-auto-comments.yml vendored Normal file
View File

@@ -0,0 +1,69 @@
labels:
- name: ✖️ Invalid
labeled:
issue:
action: close
body: >
Hey @{{ issue.user.login }}, this issue has been marked as invalid.
Please double-check that you've followed the issue template, included all necessary details, and reviewed the docs & previous issues before submitting.
If provided, follow the instructions given by maintainers.
- name: 👩‍💻 Good First Issue
labeled:
issue:
body: >
🏆 This issue has been marked as a good first issue for contributors to implement!
This is a great way to support the project. While also improving your skills, you'll also be credited as a contributor once your PR is merged.
If you're new to SillyTavern [here is the official documentation](https://docs.sillytavern.app/). The official contribution guide can be found [here](https://github.com/SillyTavern/SillyTavern/blob/release/CONTRIBUTING.md).
If you need any support, feel free to reach out via [Discord](https://discord.gg/sillytavern), or let us know in this issue or via [discussions](https://github.com/SillyTavern/SillyTavern/discussions).
- name: ❌ wontfix
labeled:
issue:
action: close
body: >
❌ This issue has been marked as 'wontfix', which usually means it is out-of-scope, not feasible at this time or will not be implemented for various reasons.
If you have any questions about this, feel free to reach out.
- name: 🛑 Out of Scope
labeled:
issue:
action: close
body: >
🛑 This issue has been marked as 'out of scope', as this can't or won't be implemented.
If you have any questions about this, feel free to reach out.
- name: ✅ Done (staging)
labeled:
issue:
body: >
✅ It looks like all or part of this issue has now been implemented as part of the `staging` branch.
If you currently are on the `release` branch, you can switch to `staging` to test this right away.
Note that `staging` is considered less stable than the official releases. To switch, follow existing instructions,
or simply enter the following command: `git switch staging`
- name: ✅ Done
labeled:
issue:
body: >
✅ It looks like all or part of this issue has now been implemented as part of the latest release.
- name: ‼️ High Priority
labeled:
issue:
body: >
🚨 This issue has been marked high priority, meaning it's important to the maintainers or community.
While we can't promise immediate changes, it is on our radar and will be addressed whenever possible. Thanks for your patience!
- name: 💀 Spam
labeled:
issue:
action: close
locking: lock
lock_reason: spam
body: >
💀 This issue has been flagged as spam and is now locked.
Please avoid posting spam - it disrupts the community and wastes everyone's time.

View File

@@ -1,7 +1,3 @@
# Add/remove 'critical' label if issue contains the words 'urgent' or 'critical'
#critical:
# - '(critical|urgent)'
🪟 Windows:
- '(🪟 Windows)'
@@ -15,4 +11,10 @@
- '(📱 Termux)'
🐧 Linux:
- '(🐧 Linux)'
- '(🐧 Linux)'
🦊 Firefox:
- '\b(firefox|mozilla)\b'
📱 Mobile:
- '\b(iphone|ios|android|📱 Termux)\b'

51
.github/pr-auto-comments.yml vendored Normal file
View File

@@ -0,0 +1,51 @@
labels:
- name: ✖️ Invalid
labeled:
pr:
action: close
body: >
Hey @{{ pull_request.user.login }}, thanks for your contribution!
Unfortunately, this PR has been marked as invalid.
Please check that you've followed the PR template, included all relevant details, and are targeting the correct branch (`staging` for regular contributions, `release` only for hotfixes).
If you need help, feel free to ask!
- name: ⛔ Don't Merge
labeled:
pr:
body: >
🚨 This PR has been temporarily blocked from merging.
- name: 💥💣 Breaking Changes
labeled:
pr:
body: >
⚠️ Heads up! This PR introduces breaking changes.
Make sure these changes are well-documented and that users will be properly informed when this is released.
- name: ⛔ Waiting For External/Upstream
labeled:
pr:
body: >
⛔ This PR is awaiting external or upstream changes or approval.
It can only be merged once those changes have been implemented and approved.
Please inform us of any progress on the upstream changes or approval.
- name: 🔬 Needs Testing
labeled:
pr:
body: >
🔬 This PR needs testing!
Any contributor can test and leave reviews, so feel free to help us out!
- name: 🟥 ⬤⬤⬤⬤⬤
labeled:
pr:
body: >
⚠️ This PR is over 1000 lines, which is larger than recommended.
Please make sure that it only addresses a single issue - PRs this large are hard to test and may be rejected.

83
.github/pr-auto-labels-by-branch.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
####################################
# Label PRs against 'release' #
####################################
❗ Against Release Branch:
- base-branch: 'release'
####################################
# Labels based on PR branch name #
####################################
🦋 Bug Fix:
- head-branch: ['^fix[/-]', '\bfixes\b']
🚑 Hot Fix:
- head-branch: ['^hotfix[/-]']
✨ New Feature:
- head-branch: ['^feat(ure)?[/-].*?\badd', '^add-']
✨ Feature Changes:
- head-branch: ['^feat(ure)?[/-](?!.*\badd\b)', '\bchanges?\b']
🤖 API / Model:
- head-branch: ['\bapi\b', '\bmodels?\b']
🏭 Backend Changes:
- head-branch: ['\bbackend\b', '\bendpoints?\b']
🐋 Docker:
- head-branch: ['\bdocker\b']
Extension:
- head-branch: ['\bextension\b', '\bext\b']
🦊 Firefox:
- head-branch: ['\bfirefox\b']
🧑‍🤝‍🧑 Group Chat:
- head-branch: ['\bgroups?\b']
🖼️ Image Gen:
- head-branch: ['\bimage-gen\b']
🌐 Language:
- head-branch: ['\btranslations?\b', '\blanguages?\b']
🐧 Linux:
- head-branch: ['\blinux\b']
🧩 Macros:
- head-branch: ['\bmacros?\b']
📱 Mobile:
- head-branch: ['\bmobile\b', '\bios\b', '\bandroid\b']
🚄 Performance:
- head-branch: ['\bperformance\b']
⚙️ Preset:
- head-branch: ['\bpresets?\b']
📜 Prompt:
- head-branch: ['\bprompt\b']
🧠 Reasoning:
- head-branch: ['\breasoning\b', '\breason\b', '\bthinking\b']
🚚 Refactor:
- head-branch: ['\brefactor(s|ed)?\b']
📜 STscript:
- head-branch: ['\bstscript\b', '\bslash-commands\b']
🏷️ Tags / Folders:
- head-branch: ['\btags\b']
🎙️ TTS / Voice:
- head-branch: ['\btts\b', '\bvoice\b']
🌟 UX:
- head-branch: ['\bux\b']
🗺️ World Info:
- head-branch: ['\bworld-info\b', '\bwi\b']

46
.github/pr-auto-labels-by-files.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
####################################
# Labels based on changed files #
####################################
🏭 Backend Changes:
- changed-files:
- any-glob-to-any-file:
- "src/**"
- "default/config.yaml"
- "server.js"
- "plugins.js"
- "recover.js"
- "webpack.config.js"
- "Start.bat"
- "start.sh"
- "UpdateAndStart.bat"
- "UpdateForkAndStart.bat"
⚙️ config.yaml:
- changed-files:
- any-glob-to-any-file:
- "default/config.yaml"
🛠️ Build Changes:
- changed-files:
- any-glob-to-any-file:
- ".github/workflows/**"
- "docker/**"
- ".dockerignore"
- "Dockerfile"
- "webpack.config.js"
🌐 Language:
- changed-files:
- any-glob-to-any-file:
- "public/locales/**"
📥 Dependencies:
- changed-files:
- any-glob-to-any-file:
- "public/lib/**" # Every frontend lib counts as a dependency as well
- "package.json"
- "package-lock.json"
- "tests/package.json"
- "tests/package-lock.json"
- "src/electron/package.json"
- "src/electron/package-lock.json"

191
.github/readme.md vendored
View File

@@ -23,7 +23,7 @@ We have a [Documentation website](https://docs.sillytavern.app/) to answer most
SillyTavern (or ST for short) is a locally installed user interface that allows you to interact with text generation LLMs, image generation engines, and TTS voice models.
Beginning in February 2023 as a fork of TavernAI 1.2.8, SillyTavern now has over 100 contributors and 2 years of independent development under its belt, and continues to serve as a leading software for savvy AI hobbyists.
Beginning in February 2023 as a fork of TavernAI 1.2.8, SillyTavern now has over 200 contributors and 2 years of independent development under its belt, and continues to serve as a leading software for savvy AI hobbyists.
## Our Vision
@@ -113,7 +113,9 @@ SillyTavern has extensibility support.
Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern.app/).
# ⌛ Installation
## ⌛ Installation
### 🪟 Windows
> \[!WARNING]
>
@@ -121,9 +123,7 @@ Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern
> * DO NOT RUN START.BAT WITH ADMIN PERMISSIONS
> * INSTALLATION ON WINDOWS 7 IS IMPOSSIBLE AS IT CAN NOT RUN NODEJS 18.16
## 🪟 Windows
### Installing via Git
#### Installing via Git (recommended)
1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended)
2. Install [Git for Windows](https://gitforwindows.org/)
@@ -138,7 +138,7 @@ Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern
7. Once everything is cloned, double-click `Start.bat` to make NodeJS install its requirements.
8. The server will then start, and SillyTavern will pop up in your browser.
### Installing via GitHub Desktop
#### Installing via GitHub Desktop
(This allows git usage **only** in GitHub Desktop, if you want to use `git` on the command line too, you also need to install [Git for Windows](https://gitforwindows.org/))
@@ -152,7 +152,7 @@ Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern
9. After the installation process, if everything is working, the command console window should look like this and a SillyTavern tab should be open in your browser:
10. Connect to any of the [supported APIs](https://docs.sillytavern.app/usage/api-connections/) and start chatting!
## 🐧 Linux & 🍎 MacOS
### 🐧 Linux & 🍎 MacOS
For MacOS / Linux all of these will be done in a Terminal.
@@ -168,6 +168,72 @@ For MacOS / Linux all of these will be done in a Terminal.
* `./start.sh`
* `bash start.sh`
## 🐋 Installing via Docker
These instructions assume you have installed Docker, are able to access your command line for the installation of containers, and familiar with their general operation.
### Using the GitHub Container Registry
#### Docker Compose (easiest)
Grab the `docker-compose.yml` file from the [GitHub Repository](https://github.com/SillyTavern/SillyTavern/blob/release/docker/docker-compose.yml) and run the following command in the directory where the file is located. This will pull the latest release image from the GitHub Container Registry and start the container, automatically creating the necessary volumes.
```shell
docker-compose up
```
Customize the `docker-compose.yml` file to your needs. The default port is 8000. If you want to adjust the server configuration using environment variables, read the documentation [here](https://docs.sillytavern.app/administration/config-yaml/#environment-variables).
#### Docker CLI (advanced)
You will need two mandatory directory mappings and a port mapping to allow SillyTavern to function. In the command, replace your selections in the following places:
#### Container Variables
##### Volume Mappings
* `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
* `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
* `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.
#### Running the container
1. Open your Command Line
2. Run the following command in a folder where you want to store the configuration and data files:
```bash
SILLYTAVERN_VERSION="latest"
PUBLIC_PORT="8000"
CONFIG_PATH="./config"
DATA_PATH="./data"
PLUGINS_PATH="./plugins"
EXTENSIONS_PATH="./extensions"
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
We have a comprehensive guide on using SillyTavern in Docker [here](http://docs.sillytavern.app/installation/docker/) which covers installations on Windows, macOS and Linux! Give it a read if you wish to build the image yourself.
## ⚡ Installing via SillyTavern Launcher
SillyTavern Launcher is an installation wizard that will help you get setup with many options, including installing a backend for local inference.
@@ -239,45 +305,6 @@ chmod +x install.sh && ./install.sh
chmod +x launcher.sh && ./launcher.sh
```
## 🐋 Installing via Docker
These instructions assume you have installed Docker, are able to access your command line for the installation of containers, and familiar with their general operation.
### Building the image yourself
We have a comprehensive guide on using SillyTavern in Docker [here](http://docs.sillytavern.app/installation/docker/) which covers installations on Windows, macOS and Linux! Give it a read if you wish to build the image yourself.
### Using the GitHub Container Registry (easiest)
You will need two mandatory directory mappings and a port mapping to allow SillyTavern to function. In the command, replace your selections in the following places:
#### Container Variables
##### 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
##### 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.
##### 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.
#### Install command
1. Open your Command Line
2. Run the following command
`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]'`
> Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config.
## 📱 Installing via Termux on Android OS
> \[!NOTE]
@@ -317,29 +344,35 @@ Start.bat --port 8000 --listen false
### Supported arguments
| Option | Description | Type |
|-------------------------|------------------------------------------------------------------------------------------------------|----------|
| `--version` | Show version number | boolean |
| `--enableIPv6` | Enables IPv6. | boolean |
| `--enableIPv4` | Enables IPv4. | boolean |
| `--port` | Sets the port under which SillyTavern will run. If not provided falls back to yaml config 'port'. | number |
| `--dnsPreferIPv6` | Prefers IPv6 for dns. If not provided falls back to yaml config 'preferIPv6'. | boolean |
| `--autorun` | Automatically launch SillyTavern in the browser. If not provided falls back to yaml config 'autorun'.| boolean |
| `--autorunHostname` | The autorun hostname, probably best left on 'auto'. | string |
| `--autorunPortOverride` | Overrides the port for autorun. | string |
| `--listen` | SillyTavern is listening on all network interfaces. If not provided falls back to yaml config 'listen'.| boolean |
| `--corsProxy` | Enables CORS proxy. If not provided falls back to yaml config 'enableCorsProxy'. | boolean |
| `--disableCsrf` | Disables CSRF protection | boolean |
| `--ssl` | Enables SSL | boolean |
| `--certPath` | Path to your certificate file. | string |
| `--keyPath` | Path to your private key file. | string |
| `--whitelist` | Enables whitelist mode | boolean |
| `--dataRoot` | Root directory for data storage | string |
| `--avoidLocalhost` | Avoids using 'localhost' for autorun in auto mode. | boolean |
| `--basicAuthMode` | Enables basic authentication | boolean |
| `--requestProxyEnabled` | Enables a use of proxy for outgoing requests | boolean |
| `--requestProxyUrl` | Request proxy URL (HTTP or SOCKS protocols) | string |
| `--requestProxyBypass` | Request proxy bypass list (space separated list of hosts) | array |
> \[!TIP]
> None of the arguments are required. If you don't provide them, SillyTavern will use the settings in `config.yaml`.
| 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 |
| `--whitelist` | Enables whitelist mode | boolean |
| `--basicAuthMode` | Enables basic authentication | boolean |
| `--enableIPv4` | Enables IPv4 protocol | boolean |
| `--enableIPv6` | Enables IPv6 protocol | boolean |
| `--listenAddressIPv4` | Specific IPv4 address to listen to | string |
| `--listenAddressIPv6` | Specific IPv6 address to listen to | string |
| `--dnsPreferIPv6` | Prefers IPv6 for DNS | boolean |
| `--ssl` | Enables SSL | boolean |
| `--certPath` | Path to your certificate file | string |
| `--keyPath` | Path to your private key file | string |
| `--autorun` | Automatically launch SillyTavern in the browser | boolean |
| `--autorunHostname` | Autorun hostname | string |
| `--autorunPortOverride` | Overrides the port for autorun | string |
| `--avoidLocalhost` | Avoids using 'localhost' for autorun in auto mode | boolean |
| `--corsProxy` | Enables CORS proxy | boolean |
| `--requestProxyEnabled` | Enables a use of proxy for outgoing requests | boolean |
| `--requestProxyUrl` | Request proxy URL (HTTP or SOCKS protocols) | string |
| `--requestProxyBypass` | Request proxy bypass list (space separated list of hosts) | array |
| `--disableCsrf` | Disables CSRF protection (NOT RECOMMENDED) | boolean |
## Remote connections
@@ -351,10 +384,29 @@ You may also want to configure SillyTavern user profiles with (optional) passwor
## Performance issues?
### General tips
1. Disable the Blur Effect and enable Reduced Motion on the User Settings panel (UI Theme toggles category).
2. If using response streaming, set the streaming FPS to a lower value (10-15 FPS is recommended).
3. Make sure the browser is enabled to use GPU acceleration for rendering.
### Input lag
Performance degradation, particularly input lag, is most commonly attributed to browser extensions. Known problematic extensions include:
* iCloud Password Manager
* DeepL Translation
* AI-based grammar correction tools
* Various ad-blocking extensions
If you experience performance issues and cannot identify the cause, or suspect an issue with SillyTavern itself, please:
1. [Record a performance profile](https://developer.chrome.com/docs/devtools/performance/reference)
2. Export the profile as a JSON file
3. Submit it to the development team for analysis
We recommend first testing with all browser extensions and third-party SillyTavern extensions disabled to isolate the source of the performance degradation.
## License and credits
**This program is distributed in the hope that it will be useful,
@@ -369,6 +421,7 @@ GNU Affero General Public License for more details.**
* Icon theme by Font Awesome <https://fontawesome.com> (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Default content by @OtisAlejandro (Seraphina character and lorebook) and @kallmeflocc (10K Discord Users Celebratory Background)
* Docker guide by [@mrguymiah](https://github.com/mrguymiah) and [@Bronya-Rand](https://github.com/Bronya-Rand)
* kokoro-js library by [@hexgrad](https://github.com/hexgrad) (Apache-2.0 License)
## Top Contributors

View File

@@ -1,28 +0,0 @@
# Based on a label applied to an issue, the bot will add a comment with some additional info
name: 🎯 Auto-Reply to Labeled Tickets
on:
issues:
types:
- labeled
- unlabeled
pull_request_target:
types:
- labeled
- unlabeled
permissions:
contents: read
issues: write
pull-requests: write
jobs:
comment:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Label Commenter
uses: peaceiris/actions-label-commenter@v1
with:
config_file: .github/issue-auto-comments.yml
github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}

View File

@@ -1,17 +0,0 @@
# Detect and label pull requests that have merge conflicts
name: 🏗️ Check Merge Conflicts
on:
push:
branches:
- staging
jobs:
check-conflicts:
if: github.repository == 'SillyTavern/SillyTavern'
runs-on: ubuntu-latest
steps:
- uses: mschilde/auto-label-merge-conflicts@master
with:
CONFLICT_LABEL_NAME: "🚫 Merge Conflicts"
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
MAX_RETRIES: 5
WAIT_MS: 5000

View File

@@ -1,82 +0,0 @@
# Closes any issues that no longer have user interaction
name: 🎯 Close Stale Issues
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Runs every day at midnight UTC
jobs:
stale:
runs-on: ubuntu-latest
steps:
# Comment on, then close issues that haven't been updated for ages
- name: Close Stale Issues
uses: actions/stale@v4
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
days-before-stale: 183
days-before-close: 7
operations-per-run: 30
remove-stale-when-updated: true
enable-statistics: true
stale-issue-message: >
This issue has gone 6 months without an update. To keep the ticket open, please indicate that it is still relevant in a comment below.
Otherwise it will be closed in 7 days.
stale-pr-message: >
This PR is stale because it has been open 6 months with no activity. Either remove the stale label or comment below with a short update,
otherwise this PR will be closed in 7 days.
close-issue-message: >
This issue was automatically closed because it has been stalled for over 6 months with no activity.
close-pr-message: >
This pull request was automatically closed because it has been stalled for over 6 months with no activity.
stale-issue-label: '⚰️ Stale'
close-issue-label: '🕸️ Inactive'
stale-pr-label: '⚰️ Stale'
close-pr-label: '🕸️ Inactive'
exempt-issue-labels: '📌 Keep Open'
exempt-pr-labels: '📌 Keep Open'
labels-to-add-when-unstale: '📌 Keep Open'
# Comment on, then close issues that required a response from the user, but didn't get one
- name: Close Issues without Response
uses: actions/stale@v4
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30
remove-stale-when-updated: true
stale-issue-message: >
Hi! Looks like additional info is required for this issue to be addressed.
Don't forget to provide this within the next few days to keep your ticket open.
close-issue-message: 'Issue closed due to no response from user.'
only-labels: '🚏 Awaiting User Response'
labels-to-remove-when-unstale: '🚏 Awaiting User Response, 🛑 No Response'
stale-issue-label: '🛑 No Response'
close-issue-label: '🕸️ Inactive'
exempt-issue-labels: '📌 Keep Open'
exempt-pr-labels: '📌 Keep Open'
# Comment on issues that we should have replied to
- name: Notify Repo Owner to Respond
uses: actions/stale@v4
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 183
operations-per-run: 30
remove-stale-when-updated: true
stale-issue-message: Hey SillyTavern, - Don't forget to respond!
stale-pr-message: Hey SillyTavern, - Don't forget to respond!
only-labels: '👤 Awaiting Maintainer Response'
labels-to-remove-when-unstale: '👤 Awaiting Maintainer Response'
close-issue-message: 'Closed due to no response from repo author for over a year'
close-pr-message: 'Closed due to no response from repo author for over a year'
stale-issue-label: '👤 Awaiting Maintainer Response'
stale-pr-label: '👤 Awaiting Maintainer Response'
close-issue-label: '🕸️ Inactive'
close-pr-label: '🕸️ Inactive'
exempt-issue-labels: '📌 Keep Open'
exempt-pr-labels: '📌 Keep Open'

View File

@@ -1,39 +0,0 @@
# Adds a comment to new PRs, showing the compressed size and size difference of new code
# And also labels the PR based on the number of lines changes
name: 🌈 Check PR Size
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Find and comment with compressed size
- name: Get Compressed Size
uses: preactjs/compressed-size-action@v2
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
pattern: './dist/**/*.{js,css,html}'
strip-hash: '\\b\\w{8}\\.'
exclude: '**/node_modules/**'
minimum-change-threshold: 100
# Check number of lines of code added
- name: Label based on Lines of Code
uses: codelytv/pr-size-labeler@v1
with:
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
xs_max_size: '10'
s_max_size: '100'
m_max_size: '500'
l_max_size: '1000'
s_label: '🟩 PR - Small'
m_label: '🟨 PR - Medium'
l_label: '🟧 PR - Large'
xl_label: '🟥 PR - XL'
fail_if_xl: 'false'
message_if_xl: >
It looks like this PR is very large (over 1000 lines).
Try to avoid addressing multiple issues in a single PR, and
in the future consider breaking large tasks down into smaller steps.
This it to make reviewing, testing, reverting and general quality management easier.

View File

@@ -0,0 +1,116 @@
name: 🛠️ Issues Manager
on:
issues:
types: [opened, edited, labeled, unlabeled]
# Re also listen to comments, to remove stale labels right away
issue_comment:
types: [created]
permissions:
contents: read
issues: write
jobs:
label-on-content:
name: 🏷️ Label Issues by Content
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Auto-Label Issues (Based on Issue Content)
# only auto label based on issue content once, on open (to prevent re-labeling removed labels)
if: github.event.action == 'opened'
# Issue Labeler
# https://github.com/marketplace/actions/regex-issue-labeler
uses: github/issue-labeler@v3.4
with:
configuration-path: .github/issues-auto-labels.yml
enable-versioned-regex: 0
repo-token: ${{ secrets.GITHUB_TOKEN }}
label-on-labels:
name: 🏷️ Label Issues by Labels
runs-on: ubuntu-latest
steps:
- name: ✅ Add "👍 Approved" for relevant labels
if: contains(fromJSON('["👩‍💻 Good First Issue", "🙏 Help Wanted", "🪲 Confirmed", "⚠️ High Priority", "❕ Medium Priority", "💤 Low Priority"]'), github.event.label.name)
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.GITHUB_TOKEN }}
labels: '👍 Approved'
- name: ❌ Remove progress labels when issue is marked done or stale
if: contains(fromJSON('["✅ Done", "✅ Done (staging)", "⚰️ Stale", "❌ wontfix"]'), github.event.label.name)
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🧑‍💻 In Progress,🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove temporary labels when confirmed labels are added
if: contains(fromJSON('["❌ wontfix","👍 Approved","👩‍💻 Good First Issue"]'), github.event.label.name)
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove no bug labels when "🪲 Confirmed" is added
if: github.event.label.name == '🪲 Confirmed'
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
labels: '✖️ Not Reproducible,✖️ Not A Bug'
remove-stale-label:
name: 🗑️ Remove Stale Label on Comment
runs-on: ubuntu-latest
# Only run this on new comments, to automatically remove the stale label
if: github.event_name == 'issue_comment' && github.actor != 'github-actions[bot]'
steps:
- name: Remove Stale Label
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '⚰️ Stale,🕸️ Inactive,🚏 Awaiting User Response,🛑 No Response'
write-auto-comments:
name: 💬 Post Issue Comments Based on Labels
needs: [label-on-content, label-on-labels]
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Post Issue Comments Based on Labels
# Label Commenter
# https://github.com/marketplace/actions/label-commenter
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/issues-auto-comments.yml
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -0,0 +1,45 @@
name: 🔄 Update Issues on Push
on:
push:
branches:
- staging
- release
permissions:
contents: read
issues: write
jobs:
# This runs commits to staging/release, reading the commit messages. Check `pr-auto-manager.yml`:`update-linked-issues` for PR-linked updates.
update-linked-issues:
name: 🔗 Mark Linked Issues Done on Push
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Extract Linked Issues from Commit Message
id: extract_issues
run: |
ISSUES=$(git log ${{ github.event.before }}..${{ github.event.after }} --pretty=%B | grep -oiE '(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) #([0-9]+)' | awk '{print $2}' | tr -d '#' | jq -R -s -c 'split("\n")[:-1]')
echo "issues=$ISSUES" >> $GITHUB_ENV
- name: Label Linked Issues
id: label_linked_issues
env:
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" --remove-label "🧑‍💻 In Progress"
elif [ "${{ github.ref }}" == "refs/heads/release" ]; then
LABEL="✅ Done"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL" --remove-label "🧑‍💻 In Progress"
fi
echo "Added label '$LABEL' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

100
.github/workflows/job-close-stale.yml vendored Normal file
View File

@@ -0,0 +1,100 @@
name: 🕒 Close Stale Issues/PRs Workflow
on:
# Run the workflow every day
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Runs every day at midnight UTC
permissions:
contents: read
issues: write
pull-requests: write
jobs:
mark-inactivity:
name: ⏳ Mark Issues/PRs without Activity
runs-on: ubuntu-latest
steps:
- name: Mark Issues/PRs without Activity
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 183
days-before-close: 7
operations-per-run: 30
remove-stale-when-updated: true
enable-statistics: true
stale-issue-message: >
⏳ This issue has been inactive for 6 months. If it's still relevant, drop a comment below to keep it open.
Otherwise, it will be auto-closed in 7 days.
stale-pr-message: >
⏳ This PR has been inactive for 6 months. If it's still relevant, update it or remove the stale label.
Otherwise, it will be auto-closed in 7 days.
close-issue-message: >
🔒 This issue was auto-closed due to inactivity for over 6 months.
close-pr-message: >
🔒 This PR was auto-closed due to inactivity for over 6 months.
stale-issue-label: '⚰️ Stale'
close-issue-label: '🕸️ Inactive'
stale-pr-label: '⚰️ Stale'
close-pr-label: '🕸️ Inactive'
exempt-issue-labels: '📌 Keep Open'
exempt-pr-labels: '📌 Keep Open'
await-user-response:
name: ⚠️ Mark Issues/PRs Awaiting User Response
runs-on: ubuntu-latest
needs: mark-inactivity
steps:
- name: Mark Issues/PRs Awaiting User Response
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30
remove-stale-when-updated: true
stale-issue-message: >
⚠️ Hey! We need some more info to move forward with this issue.
Please provide the requested details in the next few days to keep this ticket open.
close-issue-message: >
🔒 This issue was auto-closed due to no response from user.
only-labels: '🚏 Awaiting User Response'
labels-to-remove-when-unstale: '🚏 Awaiting User Response'
stale-issue-label: '🛑 No Response'
close-issue-label: '🕸️ Inactive'
exempt-issue-labels: '🚧 Alternative Exists'
alternative-exists:
name: 🔄 Mark Issues with Alternative Exists
runs-on: ubuntu-latest
needs: await-user-response
steps:
- name: Mark Issues with Alternative Exists
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30
remove-stale-when-updated: true
stale-issue-message: >
🔄 An alternative solution has been provided for this issue.
Did this solve your problem? If so, we'll go ahead and close it.
If you still need help, drop a comment within the next 7 days to keep this open.
close-issue-message: >
✅ Closing this issue due to no confirmation on the alternative solution.
only-labels: '🚧 Alternative Exists'
stale-issue-label: '🚏 Awaiting User Response'
close-issue-label: '🕸️ Inactive'
exempt-issue-labels: '📌 Keep Open'

View File

@@ -1,19 +0,0 @@
name: "Issue Labeler"
on:
issues:
types: [opened, edited]
permissions:
issues: write
contents: read
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: github/issue-labeler@v3.4
with:
configuration-path: .github/labeler.yml
# not-before: 2020-01-15T02:54:32Z # optional and will result in any issues prior to this timestamp to be ignored.
enable-versioned-regex: 0
repo-token: ${{ github.token }}

View File

@@ -1,17 +0,0 @@
# When a new comment is added to an issue, if it had the Stale or Awaiting User Response labels, then those labels will be removed
name: 🎯 Remove Pending Labels on Close
on:
issues:
types: [closed]
jobs:
remove-labels:
runs-on: ubuntu-latest
steps:
- name: Remove Labels when Closed
uses: actions-cool/issues-helper@v2
with:
actions: remove-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '🚏 Awaiting User Response,⚰️ Stale,👤 Awaiting Maintainer Response'

View File

@@ -1,42 +0,0 @@
# When a new comment is added to an issue, if it had the Stale or Awaiting User Response labels, then those labels will be removed
name: 🎯 Add/ Remove Awaiting Response Labels
on:
issue_comment:
types: [created]
jobs:
remove-stale:
runs-on: ubuntu-latest
if: ${{ github.event.comment.author_association != 'COLLABORATOR' && github.event.comment.author_association != 'OWNER' }}
steps:
- name: Remove Stale labels when Updated
uses: actions-cool/issues-helper@v2
with:
actions: remove-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '🚏 Awaiting User Response,⚰️ Stale'
add-awaiting-author:
runs-on: ubuntu-latest
if: ${{!github.event.issue.pull_request && github.event.comment.author_association != 'COLLABORATOR' && github.event.comment.author_association != 'OWNER' && github.event.issue.state == 'open' }}
steps:
- name: Add Awaiting Author labels when Updated
uses: actions-cool/issues-helper@v2
with:
actions: add-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '👤 Awaiting Maintainer Response'
remove-awaiting-author:
runs-on: ubuntu-latest
if: ${{ github.event.comment.author_association == 'OWNER' }}
steps:
- name: Remove Awaiting Author labels when Updated
uses: actions-cool/issues-helper@v2
with:
actions: remove-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '👤 Awaiting Maintainer Response'

28
.github/workflows/on-close-handler.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: 🚪 Issues/PRs On Close Handler
on:
issues:
types: [closed]
pull_request_target:
types: [closed]
permissions:
contents: read
issues: write
pull-requests: write
jobs:
remove-labels:
name: 🗑️ Remove Pending Labels on Close
runs-on: ubuntu-latest
steps:
- name: Remove Pending Labels on Close
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: remove-labels
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'

29
.github/workflows/on-open-handler.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: 📨 Issues/PRs Open Handler
on:
issues:
types: [opened]
pull_request_target:
types: [opened]
permissions:
contents: read
issues: write
pull-requests: write
jobs:
label-maintainer:
name: 🏷️ Label if Author is a Repo Maintainer
runs-on: ubuntu-latest
if: contains(fromJson('["Cohee1207", "RossAscends", "Wolfsblvt"]'), github.actor)
steps:
- name: Label if Author is a Repo Maintainer
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number || github.event.pull_request.number }}
labels: '👷 Maintainer'

270
.github/workflows/pr-auto-manager.yml vendored Normal file
View File

@@ -0,0 +1,270 @@
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:
types: [created]
permissions:
contents: read
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
# Pull Request Size Labeler
# https://github.com/marketplace/actions/pull-request-size-labeler
uses: codelytv/pr-size-labeler@v1.10.2
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
xs_label: '🟩 ⬤○○○○'
xs_max_size: '20'
s_label: '🟩 ⬤⬤○○○'
s_max_size: '100'
m_label: '🟨 ⬤⬤⬤○○'
m_max_size: '500'
l_label: '🟧 ⬤⬤⬤⬤○'
l_max_size: '1000'
xl_label: '🟥 ⬤⬤⬤⬤⬤'
fail_if_xl: 'false'
files_to_ignore: |
"package-lock.json"
"public/lib/*"
label-by-branches:
name: 🏷️ Label PR by Branches
runs-on: ubuntu-latest
# 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
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Apply Labels Based on Branch Name and Target Branch
# Pull Request Labeler
# https://github.com/marketplace/actions/labeler
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-branch.yml
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
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Apply Labels Based on Changed Files
# Pull Request Labeler
# https://github.com/marketplace/actions/labeler
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-files.yml
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-label:
name: 🗑️ Remove Stale Label on Comment
runs-on: ubuntu-latest
# 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
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
labels: '⚰️ Stale'
check-merge-blocking-labels:
name: 🚫 Check Merge Blocking Labels
needs: [label-by-branches, label-by-files]
runs-on: ubuntu-latest
# Run, even if the previous jobs were skipped/failed
if: always()
# Override permissions, as this needs to write a check
permissions:
checks: write
contents: read
pull-requests: read
steps:
- name: Check Merge Blocking
# GitHub Script
# https://github.com/marketplace/actions/github-script
id: label-check
uses: actions/github-script@v7.0.1
with:
script: |
const prLabels = context.payload.pull_request.labels.map(label => label.name);
const blockingLabels = [
"⛔ Don't Merge",
"🔨 Needs Work",
"🔬 Needs Testing",
"⛔ Waiting For External/Upstream",
"❗ Against Release Branch",
"💥💣 Breaking Changes"
];
const hasBlockingLabel = prLabels.some(label => blockingLabels.includes(label));
if (hasBlockingLabel) {
console.log("Blocking label detected. Setting warning status.");
await github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: "PR Label Warning",
head_sha: context.payload.pull_request.head.sha,
status: "completed",
conclusion: "neutral",
output: {
title: "Potential Merge Issue",
summary: "This PR has a merge-blocking label. Proceed with caution."
}
});
} else {
console.log("No merge-blocking labels found.");
}
write-auto-comments:
name: 💬 Post PR Comments Based on Labels
needs: [label-by-branches, label-by-files]
runs-on: ubuntu-latest
# Run, even if the previous jobs were skipped/failed
if: always()
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4.2.2
- name: Post PR Comments Based on Labels
# Label Commenter for PRs
# https://github.com/marketplace/actions/label-commenter
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/pr-auto-comments.yml
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:
name: 🔗 Mark Linked Issues Done on Staging Merge
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
run: |
ISSUES=$(jq -r '.pull_request.body' "$GITHUB_EVENT_PATH" | grep -oiE '(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) #([0-9]+)' | awk '{print $2}' | tr -d '#' | jq -R -s -c 'split("\n")[:-1]')
echo "issues=$ISSUES" >> $GITHUB_ENV
- name: Fetch Directly Linked Issues
id: fetch_linked_issues
run: |
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.GITHUB_TOKEN }}" "$API_URL" | jq -r '.[].number' | jq -R -s -c 'split("\n")[:-1]')
echo "linked_issues=$ISSUES" >> $GITHUB_ENV
- name: Merge Issue Lists
id: merge_issues
run: |
ISSUES=$(jq -c -n --argjson a "$issues" --argjson b "$linked_issues" '$a + $b | unique')
echo "final_issues=$ISSUES" >> $GITHUB_ENV
- name: Label Linked Issues
id: label_linked_issues
env:
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)" --remove-label "🧑‍💻 In Progress"
echo "Added label '✅ Done (staging)' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

View File

@@ -0,0 +1,28 @@
name: ⚔️ Check Merge Conflicts
on:
# So that PRs touching the same files as the push are updated
push:
# So that the `dirtyLabel` is removed if conflicts are resolved
pull_request_target:
types: [synchronize]
permissions:
contents: read
pull-requests: write
jobs:
check-merge-conflicts:
name: ⚔️ Check Merge Conflicts
runs-on: ubuntu-latest
steps:
- name: Check Merge Conflicts
# Label Conflicting Pull Requests
# https://github.com/marketplace/actions/label-conflicting-pull-requests
uses: eps1lon/actions-label-merge-conflict@v3.0.3
with:
dirtyLabel: '🚫 Merge Conflicts'
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

@@ -4,7 +4,7 @@ FROM node:lts-alpine3.19
ARG APP_HOME=/home/node/app
# Install system dependencies
RUN apk add gcompat tini git
RUN apk add --no-cache gcompat tini git
# Create app directory
WORKDIR ${APP_HOME}
@@ -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

@@ -0,0 +1,13 @@
These are master copies of the default content files and are managed by SillyTavern.
Editing any of these files would not only have no effect, but will also cause merge conflicts during update pulls.
You should edit their respective copies instead, for example:
1. /default/config.yaml => /config.yaml
2. /default/public/css/user.css => /public/css/user.css
etc.
Any questions? You're always welcome at our official documentation website:
https://docs.sillytavern.app/

View File

@@ -1,8 +1,6 @@
# -- DATA CONFIGURATION --
# Root directory for user data storage
dataRoot: ./data
# The maximum amount of memory that parsed character cards can use in MB
cardsCacheCapacity: 100
# -- SERVER CONFIGURATION --
# Listen for incoming connections
listen: false
@@ -28,6 +26,11 @@ port: 8000
# - Use -1 to use the server port.
# - Specify a port to override the default.
autorunPortOverride: -1
# -- SSL options --
ssl:
enabled: false
certPath: "./certs/cert.pem"
keyPath: "./certs/privkey.pem"
# -- SECURITY CONFIGURATION --
# Toggle whitelist mode
whitelistMode: true
@@ -37,6 +40,8 @@ enableForwardedWhitelist: true
whitelist:
- ::1
- 127.0.0.1
# Automatically whitelist Docker host and gateway IPs
whitelistDockerHosts: true
# Toggle basic authentication for endpoints
basicAuthMode: false
# Basic authentication credentials
@@ -71,20 +76,28 @@ autheliaAuth: false
# the username and passwords for basic auth are the same as those
# for the individual accounts
perUserBasicAuth: false
# Minimum log level to display in the terminal (DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3)
minLogLevel: 0
# User session timeout *in seconds* (defaults to 24 hours).
## Set to a positive number to expire session after a certain time of inactivity
## Set to 0 to expire session when the browser is closed
## Set to a negative number to disable session expiration
sessionTimeout: -1
# Used to sign session cookies. Will be auto-generated if not set
cookieSecret: ''
# Disable CSRF protection - NOT RECOMMENDED
disableCsrfProtection: false
# Disable startup security checks - NOT RECOMMENDED
securityOverride: false
# -- LOGGING CONFIGURATION --
logging:
# Enable access logging to access.log file
# Records new connections with timestamp, IP address and user agent
enableAccessLog: true
# Minimum log level to display in the terminal (DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3)
minLogLevel: 0
# -- RATE LIMITING CONFIGURATION --
rateLimiting:
# Use X-Real-IP header instead of socket IP for rate limiting
# Only enable this if you are using a properly configured reverse proxy (like Nginx/traefik/Caddy)
preferRealIpHeader: false
# -- ADVANCED CONFIGURATION --
# Open the browser automatically
autorun: true
@@ -101,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
@@ -120,6 +135,16 @@ thumbnails:
# Maximum thumbnail dimensions per type [width, height]
dimensions: { 'bg': [160, 90], 'avatar': [96, 144] }
# PERFORMANCE-RELATED CONFIGURATION
performance:
# Enables lazy loading of character cards. Improves performances with large card libraries.
# May have compatibility issues with some extensions.
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
# Skip new default content checks
@@ -130,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:
@@ -208,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

@@ -28,12 +28,11 @@
"wrap_in_quotes": false,
"names_behavior": 0,
"send_if_empty": "",
"jailbreak_system": false,
"impersonation_prompt": "[Write your next reply from the point of view of {{user}}, using the chat history so far as a guideline for the writing style of {{user}}. Don't write as {{char}} or system. Don't describe actions of {{char}}.]",
"new_chat_prompt": "[Start a new Chat]",
"new_group_chat_prompt": "[Start a new group chat. Group members: {{group}}]",
"new_example_chat_prompt": "[Example Chat]",
"continue_nudge_prompt": "[Continue the following message. Do not include ANY parts of the original message. Use capitalization and punctuation as if your reply is a part of the original message: {{lastChatMessage}}]",
"continue_nudge_prompt": "[Continue your last message without repeating its original content.]",
"bias_preset_selected": "Default (none)",
"reverse_proxy": "",
"proxy_password": "",

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

@@ -593,7 +593,7 @@
"new_chat_prompt": "[Start a new Chat]",
"new_group_chat_prompt": "[Start a new group chat. Group members: {{group}}]",
"new_example_chat_prompt": "[Example Chat]",
"continue_nudge_prompt": "[Continue the following message. Do not include ANY parts of the original message. Use capitalization and punctuation as if your reply is a part of the original message: {{lastChatMessage}}]",
"continue_nudge_prompt": "[Continue your last message without repeating its original content.]",
"bias_preset_selected": "Default (none)",
"bias_presets": {
"Default (none)": [],
@@ -626,7 +626,6 @@
"ai21_model": "jamba-1.5-large",
"windowai_model": "",
"openrouter_model": "OR_Website",
"jailbreak_system": true,
"reverse_proxy": "",
"chat_completion_source": "openai",
"max_context_unlocked": false,

View File

@@ -1,4 +1,4 @@
import getWebpackServeMiddleware from '../src/middleware/webpack-serve.js';
const middleware = getWebpackServeMiddleware();
await middleware.runWebpackCompiler();
await middleware.runWebpackCompiler({ forceDist: true });

View File

@@ -1,10 +1,12 @@
version: "3"
services:
sillytavern:
build: ..
container_name: sillytavern
hostname: sillytavern
image: ghcr.io/sillytavern/sillytavern:latest
environment:
- NODE_ENV=production
- FORCE_COLOR=1
ports:
- "8000:8000"
volumes:

View File

@@ -5,5 +5,8 @@ if [ ! -e "config/config.yaml" ]; then
cp -r "default/config.yaml" "config/config.yaml"
fi
# Execute postinstall to auto-populate config.yaml with missing values
npm run postinstall
# Start the server
exec node server.js --listen "$@"

38
index.d.ts vendored
View File

@@ -1,7 +1,36 @@
import { UserDirectoryList, User } from "./src/users";
import { CsrfSyncedToken } from "csrf-sync";
import { EventEmitter } from 'node:events';
import { CsrfSyncedToken } from 'csrf-sync';
import { UserDirectoryList, User } from './src/users.js';
import { CommandLineArguments } from './src/command-line.js';
import { EVENT_NAMES } from './src/server-events.js';
/**
* Event payload for SERVER_STARTED event.
*/
export interface ServerStartedEvent {
/**
* The URL the server is listening on.
*/
url: URL;
}
/**
* Map of all server events to their payload types.
*/
export interface ServerEventMap {
[EVENT_NAMES.SERVER_STARTED]: [ServerStartedEvent];
}
declare global {
declare namespace NodeJS {
export interface Process {
/**
* A global instance of the server events emitter.
*/
serverEvents: EventEmitter<ServerEventMap>;
}
}
declare namespace CookieSessionInterfaces {
export interface CookieSessionObject {
/**
@@ -32,4 +61,9 @@ declare global {
* The root directory for user data.
*/
var DATA_ROOT: string;
/**
* Parsed command line arguments.
*/
var COMMAND_LINE_ARGS: CommandLineArguments;
}

View File

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

2534
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +1,64 @@
{
"dependencies": {
"@adobe/css-tools": "^4.4.0",
"@adobe/css-tools": "^4.4.2",
"@agnai/sentencepiece-js": "^1.1.1",
"@agnai/web-tokenizers": "^0.1.3",
"@iconfu/svg-inject": "^1.2.3",
"@mozilla/readability": "^0.5.0",
"@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.1.0",
"@zeldafan0225/ai_horde": "^5.2.0",
"archiver": "^7.0.1",
"bing-translate-api": "^4.0.2",
"body-parser": "^1.20.2",
"bowser": "^2.11.0",
"bytes": "^3.1.2",
"chalk": "^5.4.1",
"command-exists": "^1.2.9",
"compression": "^1",
"compression": "^1.8.0",
"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",
"droll": "^0.2.1",
"express": "^4.21.0",
"form-data": "^4.0.0",
"fuse.js": "^7.0.0",
"form-data": "^4.0.2",
"fuse.js": "^7.1.0",
"google-translate-api-browser": "^3.0.1",
"google-translate-api-x": "^10.7.1",
"google-translate-api-x": "^10.7.2",
"handlebars": "^4.7.8",
"helmet": "^7.1.0",
"highlight.js": "^11.10.0",
"helmet": "^7.2.0",
"highlight.js": "^11.11.1",
"html-entities": "^2.5.2",
"iconv-lite": "^0.6.3",
"ip-matching": "^2.1.2",
"ip-regex": "^5.0.0",
"ipaddr.js": "^2.0.1",
"jimp": "^0.22.10",
"ipaddr.js": "^2.2.0",
"is-docker": "^3.0.0",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"mime-types": "^2.1.35",
@@ -41,28 +66,27 @@
"morphdom": "^2.7.4",
"multer": "^1.4.5-lts.1",
"node-fetch": "^3.3.2",
"node-persist": "^4.0.1",
"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.4.0",
"rate-limiter-flexible": "^5.0.0",
"response-time": "^2.3.2",
"proxy-agent": "^6.5.0",
"rate-limiter-flexible": "^5.0.5",
"response-time": "^2.3.3",
"sanitize-filename": "^1.6.3",
"seedrandom": "^3.0.5",
"showdown": "^2.1.0",
"sillytavern-transformers": "2.14.6",
"simple-git": "^3.19.1",
"simple-git": "^3.27.0",
"slidetoggle": "^4.0.0",
"tiktoken": "^1.0.16",
"tiktoken": "^1.0.20",
"url-join": "^5.0.0",
"vectra": "^0.2.2",
"wavefile": "^11.0.0",
"webpack": "^5.95.0",
"webpack": "^5.98.0",
"write-file-atomic": "^5.0.1",
"ws": "^8.17.1",
"yaml": "^2.3.4",
"ws": "^8.18.1",
"yaml": "^2.7.0",
"yargs": "^17.7.1",
"yauzl": "^2.10.0"
},
@@ -87,10 +111,11 @@
"type": "git",
"url": "https://github.com/SillyTavern/SillyTavern.git"
},
"version": "1.12.12",
"version": "1.12.14",
"scripts": {
"start": "node server.js",
"debug": "node server.js --inspect",
"debug": "node --inspect server.js",
"start:electron": "cd ./src/electron && npm run start",
"start:deno": "deno run --allow-run --allow-net --allow-read --allow-write --allow-sys --allow-env server.js",
"start:bun": "bun server.js",
"start:no-csrf": "node server.js --disableCsrf",
@@ -109,25 +134,25 @@
},
"main": "server.js",
"devDependencies": {
"@types/archiver": "^6.0.2",
"@types/archiver": "^6.0.3",
"@types/bytes": "^3.1.5",
"@types/command-exists": "^1.2.3",
"@types/compression": "^1.7.5",
"@types/cookie-parser": "^1.4.7",
"@types/cookie-parser": "^1.4.8",
"@types/cookie-session": "^2.0.49",
"@types/cors": "^2.8.17",
"@types/deno": "^2.0.0",
"@types/deno": "^2.2.0",
"@types/express": "^4.17.21",
"@types/jquery": "^3.5.29",
"@types/jquery": "^3.5.32",
"@types/jquery-cropper": "^1.0.4",
"@types/jquery.transit": "^0.9.33",
"@types/jqueryui": "^1.12.23",
"@types/lodash": "^4.17.10",
"@types/jqueryui": "^1.12.24",
"@types/lodash": "^4.17.16",
"@types/mime-types": "^2.1.4",
"@types/multer": "^1.4.12",
"@types/node": "^18.19.55",
"@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",
@@ -135,6 +160,7 @@
"@types/write-file-atomic": "^4.0.3",
"@types/yargs": "^17.0.33",
"@types/yauzl": "^2.10.3",
"eslint": "^8.57.0"
"eslint": "^8.57.1",
"eslint-plugin-jsdoc": "^48.10.0"
}
}

View File

@@ -8,7 +8,7 @@ import path from 'node:path';
import process from 'node:process';
import { fileURLToPath } from 'node:url';
import { default as git } from 'simple-git';
import { default as git, CheckRepoActions } from 'simple-git';
import { color } from './src/util.js';
const __dirname = import.meta.dirname ?? path.dirname(fileURLToPath(import.meta.url));
@@ -49,7 +49,7 @@ async function updatePlugins() {
const pluginPath = path.join(pluginsPath, directory);
const pluginRepo = git(pluginPath);
const isRepo = await pluginRepo.checkIsRepo();
const isRepo = await pluginRepo.checkIsRepo(CheckRepoActions.IS_REPO_ROOT);
if (!isRepo) {
console.log(`Directory ${color.yellow(directory)} is not a Git repository`);
continue;

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