Compare commits

..

760 Commits

Author SHA1 Message Date
Cohee
f12c523fcd Merge pull request #4093 from SillyTavern/dependabot/npm_and_yarn/multer-2.0.1
Bump multer from 2.0.0 to 2.0.1
2025-06-05 11:17:57 +03:00
dependabot[bot]
ba74e4f126 Bump multer from 2.0.0 to 2.0.1
Bumps [multer](https://github.com/expressjs/multer) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.0.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 07:35:19 +00:00
Cohee
8eb56355df Merge pull request #4088 from SillyTavern/dependabot/npm_and_yarn/tests/tar-fs-3.0.9
Bump tar-fs from 3.0.8 to 3.0.9 in /tests
2025-06-03 20:30:55 +03:00
dependabot[bot]
1211493404 Bump tar-fs from 3.0.8 to 3.0.9 in /tests
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 3.0.8 to 3.0.9.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v3.0.8...v3.0.9)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 3.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-03 17:30:31 +00:00
Cohee
303c1dcf14 Caption: fix displaying secondary endpoint for unsupported sources 2025-06-01 01:17:42 +03:00
Radovenchyk
71de864a5e docs: edited the link to the forks badge (#4059)
* Update readme.md

* Update readme.md
2025-05-29 21:02:21 +03:00
Cohee
2c7f2e2014 Pollinations: fix headers, add samplers 2025-05-26 23:18:51 +03:00
Cohee
51c5783eb3 Add referrer for Pollinations requests 2025-05-26 08:08:38 +00:00
Cohee
90eb74545c Merge pull request #4041 from SillyTavern/staging
Staging
2025-05-25 22:18:09 +03:00
Cohee
c528940a45 Fix WI position selector if entry.position is empty 2025-05-25 21:36:21 +03:00
Cohee
939e5003e8 Bumperino da packageo versiono 2025-05-25 17:53:12 +03:00
Cohee
08ad507637 Split reasoning effort tooltips from claude/google. 2025-05-25 13:43:16 +03:00
Cohee
b6762d256d Add margin to descriptions 2025-05-25 13:30:28 +03:00
Cohee
4b12eea00f Update reasoning effort options with links and descriptions 2025-05-25 13:29:33 +03:00
Cohee
30ddb34d38 Add visibility-only blurb for model thinking toggle 2025-05-25 04:53:29 +03:00
Cohee
64edcfae22 Claude: allow to request thinking even if not displayed 2025-05-25 04:48:49 +03:00
Cohee
34c25300e5 Trim whitespace before replacing line breaks in unknown elements 2025-05-25 00:52:03 +03:00
Cohee
8d67874215 Adjust document mode styles 2025-05-24 23:50:49 +03:00
Cohee
7a6c930adc {{charPrefix}} is real. 2025-05-24 20:37:46 +03:00
Cohee
955692424a Equalize top/bottom toast paddings 2025-05-24 20:31:37 +03:00
Cohee
b4d6b8e405 Reformat CSS styles 2025-05-24 18:59:15 +03:00
Cohee
e8b54cc8f0 Update README 2025-05-24 18:56:04 +03:00
Aykut Akgün
e4217dbeba custom endpoint handling (#4031) 2025-05-24 01:41:03 +03:00
Cohee
2a7a8cab11 Fix offset of toast in popups 2025-05-24 01:16:28 +03:00
Cohee
5359c76923 Proper treatment for groups #4008 2025-05-24 00:59:45 +03:00
Cohee
d0d358f56f Update tooltip on tag visibility button #4008 2025-05-24 00:51:41 +03:00
Cohee
36dfbd4cbe Add rawQuotes to override with named arg (#4032) 2025-05-24 00:35:58 +03:00
Cohee
d0bc58acf2 Fix CC rename spazzing out on hashtags 2025-05-24 00:20:09 +03:00
Cohee
8d84871134 Sanitize filename before renaming
Fixes #3982
2025-05-24 00:02:48 +03:00
Cohee
1f7c65b45a #3982 CC: Fix visual duplication of presets on renaming 2025-05-24 00:01:50 +03:00
Cohee
6a67e54ff8 Groups: fix resetting chat metadata on renaming group members 2025-05-23 22:02:59 +03:00
Cohee
560c6e8ff1 Claude: control cache TTL with config 2025-05-23 21:40:40 +03:00
Cohee
ed2e6fff6e OpenAI: add gpt-image-1 model 2025-05-23 20:33:27 +03:00
Cohee
58832d1a75 MistralAI: add devstral models 2025-05-23 20:16:56 +03:00
Cohee
22afd570fc Claude: set cache TTL to 1h 2025-05-23 20:11:10 +03:00
Cohee
449522c3aa Combine all toastr settings into one object 2025-05-23 20:01:53 +03:00
RossAscends
e6d5830f33 remove old toast config 2025-05-23 20:39:47 +09:00
RossAscends
26fd06335e Toasty Click to close hint 2025-05-23 20:38:05 +09:00
RossAscends
341fa17ba3 Hack-free Toast 2025-05-23 20:31:31 +09:00
RossAscends
7fc97a3b9a Zen Toast 2025-05-23 20:27:39 +09:00
RossAscends
640d9020f9 toast close button padding 2025-05-23 17:39:34 +09:00
Cohee
be54ef3dac Fix file handle leak on empty chat info 2025-05-22 23:19:10 +03:00
Cohee
57b81be9ce Caption - allow custom endpoint for xAI 2025-05-22 23:03:04 +03:00
Cohee
fd0e0945b3 Remove duplicates from group chats list on load 2025-05-22 22:58:26 +03:00
Cohee
5ac472fbac Implement creator's note style tag preferences (#3979)
* Implement creator's note style tag preferences

* Decouple external media preference from style preference

* Allow explicitly empty prefixes in decodeStyleTags

* Fix Copilot comments

* Refactor global styles management into StylesPreference class

* Refactor openAttachmentManager to return an object instead of an array

* Unify header structure

* Re-render characters panel on setting initial preference

* Add note about classname prefixing

* Rename event handler
2025-05-22 22:32:53 +03:00
Cohee
62c2c88a79 + captioning and multimodal 2025-05-22 21:17:34 +03:00
Cohee
edf307aa9c claude 4 2025-05-22 21:14:13 +03:00
Cohee
ade45b6cd1 Allow prompt post-processing for all sources. Add 'single user msg' processing (#4009)
* Allow prompt post-processing for all sources. Add 'single user msg' PPP type

* Fix copilot comments

* Fix typo in element id

* Remove redundant conditions

* Lint fix

* Add link to PPP docs
2025-05-22 20:36:22 +03:00
NijikaMyWaifu
157315cd68 Add Vertex AI express mode support (#3977)
* Add Vertex AI express mode support
Split Google AI Studio and Vertex AI

* Add support for Vertex AI, including updating default models and related settings, modifying frontend HTML to include Vertex AI options, and adjusting request processing logic in the backend API.

* Log API name in the console

* Merge sysprompt toggles back

* Use Gemma tokenizers for Vertex and LearnLM

* AI Studio parity updates

* Add link to express mode doc. Also technically it's not a form

* Split title

* Use array includes

* Add support for Google Vertex AI in image captioning feature

* Specify caption API name, add to compression list

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-22 20:10:53 +03:00
Cohee
6dc59b9fd3 Don't let tag management shrink vertically 2025-05-22 01:04:54 +03:00
Cohee
d336ea7a13 Add rounded square avatars theme option 2025-05-22 00:39:00 +03:00
Cohee
fdc9a2a93b Fix groups with no avatar in inline lists 2025-05-22 00:32:45 +03:00
Cohee
b0f82b0348 Clean-up image inlining hint 2025-05-22 00:09:45 +03:00
Cohee
c184374753 Remove deepseek reasoner from Request model reasoning tooltip 2025-05-22 00:06:34 +03:00
Cohee
1a6e136010 Respect "hide avatars" preference for welcome screen recent chats 2025-05-22 00:04:02 +03:00
Cohee
a815461d5a GOOGLE THONK IS BACK 🚀
Closes #4024
2025-05-21 23:42:21 +03:00
Cohee
0b260fe835 Only allow POST requests to ping endpoint 2025-05-21 23:25:01 +03:00
Cohee
ae1017edcb Do not regenerate group greeting messages in tainted chats 2025-05-21 23:10:35 +03:00
Cohee
6eeb2dcd75 Label chat as not pristine when messages are deleted 2025-05-21 23:08:23 +03:00
Cohee
84745034e7 Fix handling of recent group chats if empty
Fixes #4022
2025-05-21 22:50:15 +03:00
Cohee
94c30837a2 Fix attaching files to permanent assistant from welcome screen 2025-05-21 22:39:49 +03:00
Cohee
3486303d7c Toast Position => Notifications 2025-05-21 20:56:45 +03:00
Cohee
8b6e2a0fe1 Return set toast position on container init 2025-05-21 20:55:11 +03:00
Cohee
acfc9059e7 Notification => Toast 2025-05-21 20:48:20 +03:00
Cohee
8f7946d6ad Move up to other dropdown frens 2025-05-21 20:38:42 +03:00
Cohee
f8b734d607 Location => Position 2025-05-21 20:36:04 +03:00
Cohee
34490c9614 Display loader earlier, init toast classes in power-user 2025-05-21 20:35:03 +03:00
Cohee
c42cf748b3 Slightly increase text size 2025-05-21 20:10:20 +03:00
Cohee
81e6697e34 Constrain toast colors to container 2025-05-21 20:09:33 +03:00
RossAscends
1aa7d1d5a5 meta-theme color matches UI Background 2025-05-21 21:01:28 +09:00
RossAscends
356dafd954 add theme-color default grey WIP 2025-05-21 20:20:04 +09:00
RossAscends
8dff355d5d xtc block filtering, GO 2025-05-21 19:25:14 +09:00
RossAscends
35ac8bd0fb toastr with the #nofilter life, naturally. 2025-05-21 19:13:09 +09:00
RossAscends
da16c551f0 more toasty edge case fixes 2025-05-21 19:03:26 +09:00
RossAscends
fe0db6ec78 add VSC MARK comments to vital script.js funcs 2025-05-21 17:41:24 +09:00
RossAscends
b3e317393b console log cleanup 2025-05-21 16:03:37 +09:00
RossAscends
713f30ba03 fix unintended width removal (oh also they're slightly less glaring now) 2025-05-21 15:58:24 +09:00
RossAscends
c98ba48561 toaster close button padding fix 2025-05-21 15:43:52 +09:00
RossAscends
f145dfcb2d fix edge cases, put toastr on a diet 2025-05-21 15:35:12 +09:00
RossAscends
87f547cd87 add option for toastr location to themes 2025-05-21 15:07:47 +09:00
Cohee
074ca4a55b flash preview 2025-05-20 21:22:00 +03:00
aalizelau
77f5ef3424 Hide tag for character (#4019)
* Add tagOptions parameter to printTagList for character-specific filtering

* Add toggle functionality to hide tags in tag management popup

* Add translations for "Hide on character card" in multiple locale files

* Add is_hidden_on_character_card property to newTag function

* applied linter

* revert back `DEFAULT_TAGS_LIMIT`

* Remove debug logs

* Adjust HTML

* Render list and save settings on toggle change

* Make tag manager wide

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-20 20:41:03 +03:00
Cohee
f181b46cfc Merge branch 'release' into staging 2025-05-20 10:31:57 +03:00
Cohee
be7407b23b dependabot fix 2025-05-20 10:31:31 +03:00
RossAscends
8d7648ccf7 working fix for logprob reroll with autoparsed reasoning (#3998)
* working fix for logprob reroll with autoparsed reasoning

* fix prefix being added all the time

* Code clean-up

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-19 20:30:03 +03:00
Cohee
c3376da393 Fix import of chars and lorebook by chub URL
Closes #4011
2025-05-19 19:37:54 +03:00
Cohee
e5de348b2e Add missing await in getGroupChat 2025-05-19 10:37:54 +03:00
Cohee
92e80d3bad hideMutedSprites is hilariously broken 2025-05-19 01:15:40 +03:00
Cohee
d06789b8dc Check for chat changed before displaying welcome panel 2025-05-19 00:39:19 +03:00
Cohee
99d473654f Pollinations: write failed image request body to console 2025-05-19 00:15:08 +03:00
Cohee
864a733663 "Bind preset to connection" toggle (#3999)
* Implement THE TOGGLE

* Don't force reconnect on preset switch if toggle off

* Don't clear custom models list either
2025-05-17 20:40:58 +03:00
Cohee
213a619b33 Change server ping to POST method
Closes #4006
2025-05-17 16:50:02 +03:00
Cohee
b093f71ae0 Docker: Add git-lfs package to image 2025-05-17 16:32:42 +03:00
Cohee
9438b5c4aa Cancel debounced metadata save before clearing chat 2025-05-17 15:44:51 +03:00
Cohee
e5677b620d Cancel debounced chat save before clearing chat 2025-05-17 15:38:52 +03:00
Cohee
b571723f94 Wait for chat save before close or create new chat 2025-05-17 09:17:32 +03:00
Cohee
e52b3afea9 Wait for current chat to finish saving before allowing to switch 2025-05-17 08:45:12 +03:00
Cohee
484f7e894a Merge branch 'staging' of http://github.com/SillyTavern/SillyTavern into staging 2025-05-17 08:30:57 +03:00
Cohee
ca4f007009 Fix chat manager in group chats 2025-05-17 08:30:53 +03:00
cloak1505
f6ab33d835 Reverse CC prompt manager's injection order of "Order" to match World Info (#4004)
* Reverse CC injection "Order" to match World Info

* Set CC injection order default to 100

* Update non-PM injects order + add hint

* Update default order value on inject

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-16 23:53:37 +03:00
Cohee
e9bc2d8af0 Force close forms on Prompt Manager init 2025-05-16 22:12:45 +03:00
Cohee
817474c60d Do no automatically apply non-markdown for context separators (#4003) 2025-05-16 19:57:56 +03:00
Cohee
c218c1baea ZIP extraction error handling (#4002)
* Improve error handling in extractFileFromZipBuffer function

* Add warning logging to NovelAI image upscaling
2025-05-16 19:57:33 +03:00
Cohee
1651fa1ed7 Add guidance for API usage with automatic suffix for chat completions 2025-05-16 09:52:55 +03:00
Cohee
5ed6d1cd9b Merge pull request #3990 from SillyTavern/welcome-screen
New welcome screen + quick chat functionality
2025-05-15 00:10:54 +03:00
Cohee
7a23fe794e Hide buttons on welcome assistant message 2025-05-14 10:41:15 +03:00
Cohee
587cecb12c Join recent chat/group queries 2025-05-14 10:25:38 +03:00
Cohee
155172a2b4 Dynamically update show more title 2025-05-14 00:49:33 +03:00
Cohee
dfbc5ec4ac Fix array slicing, decrease default recent display to 3 2025-05-14 00:42:04 +03:00
Cohee
cb380863e2 Keep scroll up on welcome display 2025-05-14 00:25:35 +03:00
Cohee
49c1ee1373 Update avatar title format 2025-05-14 00:21:12 +03:00
Cohee
9744e6ab2f Button enlargement therapy 2025-05-14 00:15:33 +03:00
Cohee
21252cf2dd Fix empty chat if creating new assistant 2025-05-13 21:44:24 +03:00
Cohee
5a799042b1 Optimize fetching recent chats by using Promise.all for concurrent data retrieval 2025-05-13 20:41:26 +03:00
Cohee
241f718df7 Remove redundant version check 2025-05-13 20:37:15 +03:00
Cohee
2b93fd37e3 Focus on send textarea on opening temp chat 2025-05-13 20:28:57 +03:00
Cohee
6a394c0c3e Only render if chat is clear 2025-05-13 19:57:00 +03:00
Cohee
249cb7777c Merge branch 'staging' into welcome-screen 2025-05-13 19:52:40 +03:00
Cohee
cf28df381c Fix Pollinations img query params 2025-05-13 10:15:45 +03:00
Cohee
6e35afa6ec Fix extension prompts injects 2025-05-13 10:04:43 +03:00
Cohee
b261354280 Add "More" menu hint 2025-05-13 01:35:51 +03:00
Cohee
0c411398f0 Collapse welcome recent chats button 2025-05-13 01:27:45 +03:00
Cohee
7659dfb85c Remove reasoning from raw builder summaries 2025-05-13 00:59:27 +03:00
Cohee
ae0aa42e7a Extract assignCharacterAsAssistant func 2025-05-13 00:54:40 +03:00
Cohee
5434efd6c0 Adjust text size 2025-05-13 00:46:34 +03:00
Cohee
28c09deb0d Force clean-up before welcome render 2025-05-13 00:46:24 +03:00
Cohee
cd0a4959ad Merge branch 'staging' into welcome-screen 2025-05-13 00:41:54 +03:00
Cohee
ad15e4f172 Merge pull request #3989 from bmen25124/prefill_custom_request
Added prefill for custom-request->text completion
2025-05-13 00:03:13 +03:00
Kristian Schlikow
8100a542e2 Implement a priority for prompt injections in CC (#3978)
* Implement a priority for prompt injections in CC

Adds a numeric order for injected prompts, 0 being default and placed at the top, and higher numbers placing further down. If two messages have the same priority, then order is determined by role as was before.

* Update data-i18n for new setting field

* Rename priority to order, sort higher first/lower last

* Hide order when position is relative, adjust hint text

* Fix type error

* Fix capitalization

* Cut UI texts

* Reposition text labels

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-12 23:59:54 +03:00
bmen25124
294dc3b3b1 Fixed out of index error 2025-05-12 23:00:12 +03:00
Cohee
d6054e1555 Fix styles conflict with timelines 2025-05-12 22:40:00 +03:00
Cohee
474b2537b5 Revert "Update Font Awesome to 6.7.2"
This reverts commit 7b9f5b3fb8.
2025-05-12 22:36:13 +03:00
Cohee
ed388553cc Add rotation effect to "Show More Chats" button and toggle visibility of hidden chats 2025-05-12 21:59:26 +03:00
bmen25124
6609c941a9 Added prefill for custom-request->text completion 2025-05-12 21:52:16 +03:00
Cohee
e2c44161ed Show recent group chats 2025-05-12 21:44:00 +03:00
Cohee
637e9d5469 Set any char as assistant. Rework welcome prompt 2025-05-12 20:50:17 +03:00
Cohee
f656fba213 Replace text with chevron 2025-05-12 20:18:37 +03:00
Cohee
c45f1ceaff Show more recent chats 2025-05-12 20:16:56 +03:00
Cohee
d5c56fa405 Indicate welcome page assistant in the list 2025-05-12 19:52:14 +03:00
Cohee
7b9f5b3fb8 Update Font Awesome to 6.7.2 2025-05-12 19:34:31 +03:00
Cohee
e25a033caa Merge pull request #3988 from kallewoof/202505-mistral-templates
chat-templates: reorder by version and add missing template
2025-05-12 10:37:32 +03:00
Karl-Johan Alm
644b988b74 chat-templates: reorder by version and add missing template 2025-05-12 14:26:18 +09:00
Cohee
31e2cf714a Permanent assistant autocreation and temporary chat restore 2025-05-12 02:14:54 +03:00
Cohee
61f69aa674 Temp chat button works 2025-05-12 01:10:50 +03:00
Cohee
e80c36c242 Adjust element alignments 2025-05-12 01:03:37 +03:00
Cohee
9be173e34e Fix long date title 2025-05-12 01:03:23 +03:00
Cohee
2e6a02a576 Add line-clamp to recent chats list 2025-05-12 00:53:55 +03:00
Cohee
8d2c8fd675 Prevent reopening an already open recent chat 2025-05-12 00:53:33 +03:00
Cohee
415bb5f9b8 Add shortcuts to welcome prompt 2025-05-12 00:43:41 +03:00
Cohee
e975d37436 [wip] Welcome screen prototype 2025-05-12 00:28:42 +03:00
Cohee
420d568cd3 Pollinations - Text (#3985)
* [wip] Pollinations for text

* Implement generate API request

* Determine Pollinations model tools via models list

* Add Pollinations option to /model command

* Add Pollinations support to caption

* Update link to pollinations site

* Fix type errors in openai.js

* Fix API connection test to use AbortController for request cancellation

* Remove hard coded list of pollinations vision models

* Remove openai-audio from captioning models
2025-05-11 20:14:11 +03:00
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
684ee98168 Add config, increase cache TTL, use async file reads 2025-03-15 19:43:26 +02:00
Cohee
b8f8be8cf9 Merge branch 'staging' into disk-cache 2025-03-15 19:27:56 +02:00
Cohee
3c65b2dcf3 Implement disk caching for character data using node-persist 2025-03-09 20:41:04 +02:00
256 changed files with 10941 additions and 3951 deletions

View File

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

View File

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

View File

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

View File

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

85
.github/readme.md vendored
View File

@@ -7,7 +7,7 @@
English | [German](readme-de_de.md) | [中文](readme-zh_cn.md) | [繁體中文](readme-zh_tw.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) | [한국어](readme-ko_kr.md)
[![GitHub Stars](https://img.shields.io/github/stars/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/stargazers)
[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/network)
[![GitHub Forks](https://img.shields.io/github/forks/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/forks)
[![GitHub Issues](https://img.shields.io/github/issues/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/issues)
[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/SillyTavern/SillyTavern.svg)](https://github.com/SillyTavern/SillyTavern/pulls)
@@ -42,7 +42,7 @@ If you're not familiar with using the git CLI or don't understand what a branch
## What do I need other than SillyTavern?
Since SillyTavern is only an interface, you will need access to an LLM backend to provide inference. You can use AI Horde for instant out-of-the-box chatting. Aside from that, we support many other local and cloud-based LLM backends: OpenAI-compatible API, KoboldAI, Tabby, and many more. You can read more about our supported APIs in [the FAQ](https://docs.sillytavern.app/usage/api-connections/).
Since SillyTavern is only an interface, you will need access to an LLM backend to provide inference. You can use AI Horde for instant out-of-the-box chatting. Aside from that, we support many other local and cloud-based LLM backends: OpenAI-compatible API, KoboldAI, Tabby, and many more. You can read more about our supported APIs in [the Docs](https://docs.sillytavern.app/usage/api-connections/).
### Do I need a powerful PC to run SillyTavern?
@@ -83,9 +83,7 @@ Or get in touch with the developers directly:
SillyTavern is built around the concept of "character cards". A character card is a collection of prompts that set the behavior of the LLM and is required to have persistent conversations in SillyTavern. They function similarly to ChatGPT's GPTs or Poe's bots. The content of a character card can be anything: an abstract scenario, an assistant tailored for a specific task, a famous personality or a fictional character.
The name field is the only required character card input. To start a neutral conversation with the language model, create a new card simply called "Assistant" and leave the rest of the boxes blank. For a more themed chat, you can provide the language model with various background details, behavior and writing patterns, and a scenario to jump start the chat.
To have a quick conversation without selecting a character card or to just test the LLM connection, simply type your prompt input into the input bar on the Welcome Screen after opening SillyTavern. Please note that such chats are temporary and will not be saved.
To have a quick conversation without selecting a character card or to just test the LLM connection, simply type your prompt input into the input bar on the Welcome Screen after opening SillyTavern. This will create an empty "Assistant" character card that you can customize later.
To get a general idea on how to define character cards, see the default character (Seraphina) or download selected community-made cards from the "Download Extensions & Assets" menu.
@@ -192,28 +190,43 @@ You will need two mandatory directory mappings and a port mapping to allow Silly
##### Volume Mappings
* [config] - The directory where SillyTavern configuration files will be stored on your host machine
* [data] - The directory where SillyTavern user data (including characters) will be stored on your host machine
* [plugins] - (optional) The directory where SillyTavern server plugins will be stored on your host machine
* [extensions] - (optional) The directory where global UI extensions will be stored on your host machine
* `CONFIG_PATH` - The directory where SillyTavern configuration files will be stored on your host machine
* `DATA_PATH` - The directory where SillyTavern user data (including characters) will be stored on your host machine
* `PLUGINS_PATH` - (optional) The directory where SillyTavern server plugins will be stored on your host machine
* `EXTENSIONS_PATH` - (optional) The directory where global UI extensions will be stored on your host machine
##### Port Mappings
* [PublicPort] - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security.
* `PUBLIC_PORT` - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security.
##### Additional Settings
* [DockerNet] - The docker network that the container should be created with a connection to. If you don't know what it is, see the [official Docker documentation](https://docs.docker.com/reference/cli/docker/network/).
* [version] - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" and "release" tags that point to the nightly images of the respective branches, but this may not be appropriate, if you are utilizing extensions that could be broken, and may need time to update.
* `SILLYTAVERN_VERSION` - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" that points to the nightly image of the respective branch.
#### Install command
#### Running the container
1. Open your Command Line
2. Run the following command
2. Run the following command in a folder where you want to store the configuration and data files:
`docker run --name='sillytavern' --net='[DockerNet]' -p '8000:8000/tcp' -v '[plugins]':'/home/node/app/plugins':'rw' -v '[config]':'/home/node/app/config':'rw' -v '[data]':'/home/node/app/data':'rw' -v '[extensions]':'/home/node/app/public/scripts/extensions/third-party':'rw' 'ghcr.io/sillytavern/sillytavern:[version]'`
```bash
SILLYTAVERN_VERSION="latest"
PUBLIC_PORT="8000"
CONFIG_PATH="./config"
DATA_PATH="./data"
PLUGINS_PATH="./plugins"
EXTENSIONS_PATH="./extensions"
> Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config.
docker run \
--name="sillytavern" \
-p "$PUBLIC_PORT:8000/tcp" \
-v "$CONFIG_PATH:/home/node/app/config:rw" \
-v "$DATA_PATH:/home/node/app/data:rw" \
-v "$EXTENSIONS_PATH:/home/node/app/public/scripts/extensions/third-party:rw" \
-v "$PLUGINS_PATH:/home/node/app/plugins:rw" \
ghcr.io/sillytavern/sillytavern:"$SILLYTAVERN_VERSION"
```
> By default the container will run in the foreground. If you want to run it in the background, add the `-d` flag to the `docker run` command.
### Building the image yourself
@@ -301,18 +314,6 @@ chmod +x launcher.sh && ./launcher.sh
**Unsupported platform: android arm LEtime-web.** 32-bit Android requires an external dependency that can't be installed with npm. Use the following command to install it: `pkg install esbuild`. Then run the usual installation steps.
## API keys management
SillyTavern saves your API keys to a `secrets.json` file in the user data directory (`/data/default-user/secrets.json` is the default path).
By default, API keys will not be visible from the interface after you have saved them and refreshed the page.
In order to enable viewing your keys:
1. Set the value of `allowKeysExposure` to `true` in `config.yaml` file.
2. Restart the SillyTavern server.
3. Click the 'View hidden API keys' link at the bottom right of the API Connection Panel.
## Command-line arguments
You can pass command-line arguments to SillyTavern server startup to override some settings in `config.yaml`.
@@ -335,6 +336,7 @@ Start.bat --port 8000 --listen false
| Option | Description | Type |
|-------------------------|----------------------------------------------------------------------|----------|
| `--version` | Show version number | boolean |
| `--configPath` | Override the path to the config.yaml file | string |
| `--dataRoot` | Root directory for data storage | string |
| `--port` | Sets the port under which SillyTavern will run | number |
| `--listen` | SillyTavern will listen on all network interfaces | boolean |
@@ -364,32 +366,7 @@ Most often this is for people who want to use SillyTavern on their mobile phones
Read the detailed guide on how to set up remote connections in the [Docs](https://docs.sillytavern.app/usage/remoteconnections/).
You may also want to configure SillyTavern user profiles with (optional) password protection: [Users](https://docs.sillytavern.app/installation/st-1.12.0-migration-guide/#users).
## 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.
You may also want to configure SillyTavern user profiles with (optional) password protection: [Users](https://docs.sillytavern.app/administration/multi-user/).
## License and credits

View File

@@ -7,6 +7,10 @@ on:
issue_comment:
types: [created]
permissions:
contents: read
issues: write
jobs:
label-on-content:
name: 🏷️ Label Issues by Content
@@ -16,7 +20,7 @@ jobs:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
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)
@@ -24,11 +28,11 @@ jobs:
# Issue Labeler
# https://github.com/marketplace/actions/regex-issue-labeler
uses: github/issue-labeler@v3
uses: github/issue-labeler@v3.4
with:
configuration-path: .github/issues-auto-labels.yml
enable-versioned-regex: 0
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
label-on-labels:
name: 🏷️ Label Issues by Labels
@@ -39,40 +43,40 @@ jobs:
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
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '👍 Approved'
- name: ❌ Remove progress labels when issue is marked done or stale
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
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🧑‍💻 In Progress,🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove temporary labels when confirmed labels are added
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
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '🤔 Unsure,🤔 Under Consideration'
- name: ❌ Remove no bug labels when "🪲 Confirmed" is added
if: github.event.label.name == '🪲 Confirmed'
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
labels: '✖️ Not Reproducible,✖️ Not A Bug'
remove-stale-label:
@@ -85,10 +89,10 @@ jobs:
- name: Remove Stale Label
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
labels: '⚰️ Stale,🕸️ Inactive,🚏 Awaiting User Response,🛑 No Response'
@@ -101,12 +105,12 @@ jobs:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
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
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/issues-auto-comments.yml
github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -6,6 +6,10 @@ on:
- 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:
@@ -16,26 +20,26 @@ jobs:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Extract Linked Issues from Commit Message
id: extract_issues
run: |
ISSUES=$(git log -1 --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]')
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.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
for ISSUE in $(echo $issues | jq -r '.[]'); do
if [ "${{ github.ref }}" == "refs/heads/staging" ]; then
LABEL="✅ Done (staging)"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL" --remove-label "🧑‍💻 In Progress"
elif [ "${{ github.ref }}" == "refs/heads/release" ]; then
LABEL="✅ Done"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "$LABEL" --remove-label "🧑‍💻 In Progress"
fi
echo "Added label '$LABEL' to issue #$ISSUE"
echo "Added label '$LABEL' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

View File

@@ -6,6 +6,11 @@ on:
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
@@ -15,9 +20,9 @@ jobs:
- name: Mark Issues/PRs without Activity
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 183
days-before-close: 7
operations-per-run: 30
@@ -49,9 +54,9 @@ jobs:
- name: Mark Issues/PRs Awaiting User Response
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30
@@ -76,9 +81,9 @@ jobs:
- name: Mark Issues with Alternative Exists
# Close Stale Issues and PRs
# https://github.com/marketplace/actions/close-stale-issues
uses: actions/stale@v9
uses: actions/stale@v9.1.0
with:
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 7
days-before-close: 7
operations-per-run: 30

View File

@@ -6,6 +6,11 @@ on:
pull_request_target:
types: [closed]
permissions:
contents: read
issues: write
pull-requests: write
jobs:
remove-labels:
name: 🗑️ Remove Pending Labels on Close
@@ -15,9 +20,9 @@ jobs:
- name: Remove Pending Labels on Close
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@v3.6.0
with:
actions: remove-labels
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number || github.event.pull_request.number }}
labels: '🚏 Awaiting User Response,🧑‍💻 In Progress,📌 Keep Open,🚫 Merge Conflicts,🔬 Needs Testing,🔨 Needs Work,⚰️ Stale,⛔ Waiting For External/Upstream'

View File

@@ -6,6 +6,11 @@ on:
pull_request_target:
types: [opened]
permissions:
contents: read
issues: write
pull-requests: write
jobs:
label-maintainer:
name: 🏷️ Label if Author is a Repo Maintainer
@@ -16,9 +21,9 @@ jobs:
- name: Label if Author is a Repo Maintainer
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'add-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number || github.event.pull_request.number }}
labels: '👷 Maintainer'

View File

@@ -1,23 +1,82 @@
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
uses: codelytv/pr-size-labeler@v1.10.2
with:
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
xs_label: '🟩 ⬤○○○○'
xs_max_size: '20'
s_label: '🟩 ⬤⬤○○○'
@@ -28,7 +87,6 @@ jobs:
l_max_size: '1000'
xl_label: '🟥 ⬤⬤⬤⬤⬤'
fail_if_xl: 'false'
github_api_url: 'https://api.github.com'
files_to_ignore: |
"package-lock.json"
"public/lib/*"
@@ -36,55 +94,63 @@ jobs:
label-by-branches:
name: 🏷️ Label PR by Branches
runs-on: ubuntu-latest
# Only label once when PR is created or branches are changed, to allow manual label removal
if: github.event.action == 'opened' || (github.event.action == 'synchronize' && (github.event.changes.base || github.event.changes.head))
# Only label once when PR is created or when base branch is changed, to allow manual label removal
if: github.event.action == 'opened' || (github.event.action == 'synchronize' && github.event.changes.base)
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
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
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-branch.yml
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
label-by-files:
name: 🏷️ Label PR by Files
runs-on: ubuntu-latest
# Only needs to run when code is changed
if: github.event.action == 'opened' || github.event.action == 'synchronize'
steps:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
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
uses: actions/labeler@v5.0.0
with:
configuration-path: .github/pr-auto-labels-by-files.yml
repo-token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-label:
name: 🗑️ Remove Stale Label on Comment
runs-on: ubuntu-latest
# Only runs when this is not done by the github actions bot
if: github.actor != 'github-actions[bot]'
# Only runs on comments not done by the github actions bot
if: github.event_name == 'pull_request_review_comment' && github.actor != 'github-actions[bot]'
# Override permissions, issue labeler needs issues write access
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Remove Stale Label
# 🤖 Issues Helper
# https://github.com/marketplace/actions/issues-helper
uses: actions-cool/issues-helper@v3
uses: actions-cool/issues-helper@v3.6.0
with:
actions: 'remove-labels'
token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
labels: '⚰️ Stale'
@@ -95,12 +161,18 @@ jobs:
# 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-scriptLabels
# https://github.com/marketplace/actions/github-script
id: label-check
uses: actions/github-script@v7
uses: actions/github-script@v7.0.1
with:
script: |
const prLabels = context.payload.pull_request.labels.map(label => label.name);
@@ -134,7 +206,7 @@ jobs:
write-auto-comments:
name: 💬 Post PR Comments Based on Labels
needs: [label-by-size, label-by-branches, label-by-files]
needs: [label-by-branches, label-by-files]
runs-on: ubuntu-latest
# Run, even if the previous jobs were skipped/failed
if: always()
@@ -143,15 +215,15 @@ jobs:
- name: Checkout Repository
# Checkout
# https://github.com/marketplace/actions/checkout
uses: actions/checkout@v4
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
uses: peaceiris/actions-label-commenter@v1.10.0
with:
config_file: .github/pr-auto-comments.yml
github_token: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
# This runs on merged PRs to staging, reading the PR body and directly linked issues. Check `issues-updates-on-merge.yml`:`update-linked-issues` for commit-based updates.
update-linked-issues:
@@ -159,6 +231,12 @@ jobs:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'staging'
# Override permissions, We need to be able to write to issues
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Extract Linked Issues From PR Description
id: extract_issues
@@ -172,7 +250,7 @@ jobs:
PR_NUMBER=${{ github.event.pull_request.number }}
REPO=${{ github.repository }}
API_URL="https://api.github.com/repos/$REPO/pulls/$PR_NUMBER/issues"
ISSUES=$(curl -s -H "Authorization: token ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}" "$API_URL" | jq -r '.[].number' | jq -R -s -c 'split("\n")[:-1]')
ISSUES=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$API_URL" | jq -r '.[].number' | jq -R -s -c 'split("\n")[:-1]')
echo "linked_issues=$ISSUES" >> $GITHUB_ENV
- name: Merge Issue Lists
@@ -184,9 +262,9 @@ jobs:
- name: Label Linked Issues
id: label_linked_issues
env:
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
for ISSUE in $(echo $final_issues | jq -r '.[]'); do
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "✅ Done (staging)"
echo "Added label '✅ Done (staging)' to issue #$ISSUE"
gh issue edit $ISSUE -R ${{ github.repository }} --add-label "✅ Done (staging)" --remove-label "🧑‍💻 In Progress"
echo "Added label '✅ Done (staging)' (and removed '🧑‍💻 In Progress' if present) in issue #$ISSUE"
done

View File

@@ -7,6 +7,10 @@ on:
pull_request_target:
types: [synchronize]
permissions:
contents: read
pull-requests: write
jobs:
check-merge-conflicts:
name: ⚔️ Check Merge Conflicts
@@ -16,9 +20,9 @@ jobs:
- name: Check Merge Conflicts
# Label Conflicting Pull Requests
# https://github.com/marketplace/actions/label-conflicting-pull-requests
uses: eps1lon/actions-label-merge-conflict@v3
uses: eps1lon/actions-label-merge-conflict@v3.0.3
with:
dirtyLabel: '🚫 Merge Conflicts'
repoToken: ${{ secrets.BOT_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
repoToken: ${{ secrets.GITHUB_TOKEN }}
commentOnDirty: >
⚠️ This PR has conflicts that need to be resolved before it can be merged.

View File

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

View File

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

@@ -114,6 +114,8 @@ backups:
chat:
# Enable automatic chat backups
enabled: true
# Verify integrity of chat files before saving
checkIntegrity: true
# Maximum number of chat backups to keep per user (starting from the most recent). Set to -1 to keep all backups.
maxTotalBackups: -1
# Interval in milliseconds to throttle chat backups per user
@@ -140,6 +142,8 @@ performance:
lazyLoadCharacters: false
# The maximum amount of memory that parsed character cards can use. Set to 0 to disable memory caching.
memoryCacheCapacity: '100mb'
# Enables disk caching for character cards. Improves performances with large card libraries.
useDiskCache: true
# Allow secret keys exposure via API
allowKeysExposure: false
@@ -151,6 +155,7 @@ whitelistImportDomains:
- cdn.discordapp.com
- files.catbox.moe
- raw.githubusercontent.com
- char-archive.evulid.cc
# API request overrides (for KoboldAI and Text Completion APIs)
## Note: host includes the port number if it's not the default (80 or 443)
## Format is an array of objects:
@@ -229,6 +234,14 @@ 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
# Use 1h TTL instead of the default 5m.
## 5m: base price x 1.25
## 1h: base price x 2
extendedTTL: false
# -- 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

@@ -15,6 +15,7 @@
"custom_exclude_body": "",
"custom_include_headers": "",
"google_model": "gemini-pro",
"vertexai_model": "gemini-2.0-flash-001",
"temperature": 1,
"frequency_penalty": 0,
"presence_penalty": 0,

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

1468
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -55,11 +55,14 @@
/* Flashing for highlighting animation */
@keyframes flash {
0%, 50%, 100% {
0%,
50%,
100% {
opacity: 1;
}
25%, 75% {
25%,
75% {
opacity: 0.2;
}
}

View File

@@ -1,4 +1,3 @@
#rm_print_characters_block.group_overlay_mode_select .character_select {
transition: background-color 0.4s ease;
background-color: rgba(170, 170, 170, 0.15);
@@ -28,7 +27,10 @@
height: 0 !important;
}
#character_context_menu.hidden { display: none; }
#character_context_menu.hidden {
display: none;
}
#character_context_menu {
position: absolute;
padding: 3px;

View File

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

View File

@@ -88,4 +88,4 @@
max-height: 50%;
width: 50%;
height: 50%;
}
}

View File

@@ -76,7 +76,7 @@
background-color: rgba(255, 0, 50, 0.4);
}
.logprobs_output_prefix:hover ~ .logprobs_output_prefix {
.logprobs_output_prefix:hover~.logprobs_output_prefix {
background-color: rgba(255, 0, 50, 0.4);
}
@@ -115,7 +115,8 @@
background-color: rgba(255, 255, 0, 0.05);
}
.logprobs_tint_0:hover, .logprobs_tint_0.selected {
.logprobs_tint_0:hover,
.logprobs_tint_0.selected {
background-color: rgba(255, 255, 0, 0.4);
}
@@ -123,7 +124,8 @@
background-color: rgba(255, 0, 255, 0.05);
}
.logprobs_tint_1:hover, .logprobs_tint_1.selected {
.logprobs_tint_1:hover,
.logprobs_tint_1.selected {
background-color: rgba(255, 0, 255, 0.4);
}
@@ -131,7 +133,8 @@
background-color: rgba(0, 255, 255, 0.05);
}
.logprobs_tint_2:hover, .logprobs_tint_2.selected {
.logprobs_tint_2:hover,
.logprobs_tint_2.selected {
background-color: rgba(0, 255, 255, 0.4);
}
@@ -139,6 +142,7 @@
background-color: rgba(50, 205, 50, 0.05);
}
.logprobs_tint_3:hover, .logprobs_tint_3.selected {
.logprobs_tint_3:hover,
.logprobs_tint_3.selected {
background-color: rgba(50, 205, 50, 0.4);
}

View File

@@ -34,9 +34,17 @@ dialog {
}
/** Popup styles applied to the main popup */
.popup--animation-fast { --popup-animation-speed: var(--animation-duration); }
.popup--animation-slow { --popup-animation-speed: var(--animation-duration-slow); }
.popup--animation-none { --popup-animation-speed: 0ms; }
.popup--animation-fast {
--popup-animation-speed: var(--animation-duration);
}
.popup--animation-slow {
--popup-animation-speed: var(--animation-duration-slow);
}
.popup--animation-none {
--popup-animation-speed: 0ms;
}
/* Styling of main popup elements */
.popup .popup-body {
@@ -190,4 +198,3 @@ body.no-blur .popup[open]::backdrop {
/* Fix weird animation issue with font-scaling during popup open */
backface-visibility: hidden;
}

View File

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

View File

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

View File

@@ -1,7 +1,10 @@
.scrollable-buttons-container {
max-height: 50vh; /* Use viewport height instead of fixed pixels */
-webkit-overflow-scrolling: touch; /* Momentum scrolling on iOS */
margin-top: 1rem; /* m-t-1 is equivalent to margin-top: 1rem; */
/* Use viewport height instead of fixed pixels */
max-height: 50vh;
/* Momentum scrolling on iOS */
-webkit-overflow-scrolling: touch;
/* m-t-1 is equivalent to margin-top: 1rem; */
margin-top: 1rem;
flex-shrink: 1;
min-height: 0;
scrollbar-width: thin;

View File

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

View File

@@ -211,6 +211,7 @@
.tag_as_folder.right_menu_button {
filter: brightness(75%) saturate(0.6);
margin-right: 5px;
}
.tag_as_folder.right_menu_button:hover,

View File

@@ -45,6 +45,11 @@ body.square-avatars .avatar img {
border-radius: var(--avatar-base-border-radius) !important;
}
body.rounded-avatars .avatar,
body.rounded-avatars .avatar img {
border-radius: var(--avatar-base-border-radius-rounded) !important;
}
/*char list grid mode*/
body.charListGrid #rm_print_characters_block {
@@ -226,6 +231,7 @@ body.big-avatars .avatars_inline_small .avatar img {
body.big-avatars .avatars_inline {
max-height: calc(var(--avatar-base-height) * var(--big-avatar-height-factor) + 2 * var(--avatar-base-border-radius));
}
body.big-avatars .avatars_inline.avatars_multiline {
max-height: fit-content;
}
@@ -233,6 +239,7 @@ body.big-avatars .avatars_inline.avatars_multiline {
body.big-avatars .avatars_inline.avatars_inline_small {
height: calc(var(--avatar-base-height) * var(--big-avatar-height-factor) * var(--inline-avatar-small-factor) + 2 * var(--avatar-base-border-radius));
}
body.big-avatars .avatars_inline.avatars_inline_small.avatars_multiline {
height: inherit;
}
@@ -339,10 +346,15 @@ body.documentstyle #chat .last_mes .swipe_left {
body.documentstyle #chat .mes .mesAvatarWrapper,
body.documentstyle #chat .mes .mes_block .ch_name .name_text,
body.documentstyle #chat .mes .mes_block .ch_name .timestamp,
body.documentstyle #chat .mes .mes_block .ch_name .timestamp-icon,
body.documentstyle .mes:not(.last_mes) .ch_name .mes_buttons {
display: none !important;
}
body.documentstyle #chat .mes_block .ch_name {
min-height: unset;
}
/*FastUI blur removal*/
body.no-blur * {
@@ -498,3 +510,15 @@ label[for="trim_spaces"]:not(:has(input:checked)) small {
#banned_tokens_block_ooba:not(:has(#send_banned_tokens_textgenerationwebui:checked)) #banned_tokens_controls_ooba {
filter: brightness(0.5);
}
#bind_preset_to_connection:checked~.toggleOff {
display: none;
}
#bind_preset_to_connection:not(:checked)~.toggleOn {
display: none;
}
label[for="bind_preset_to_connection"]:has(input:checked) {
color: var(--active);
}

213
public/css/welcome.css Normal file
View File

@@ -0,0 +1,213 @@
#chat .mes[type="assistant_message"] .mes_button {
display: none;
}
.welcomePanel {
display: flex;
flex-direction: column;
gap: 5px;
padding: 10px;
width: 100%;
}
.welcomePanel:has(.showMoreChats) {
padding-bottom: 5px;
}
.welcomePanel.recentHidden .welcomeRecent,
.welcomePanel.recentHidden .recentChatsTitle,
.welcomePanel.recentHidden .hideRecentChats,
.welcomePanel:not(.recentHidden) .showRecentChats {
display: none;
}
body.bubblechat .welcomePanel {
border-radius: 10px;
background-color: var(--SmartThemeBotMesBlurTintColor);
border: 1px solid var(--SmartThemeBorderColor);
margin-bottom: 5px;
}
body.hideChatAvatars .welcomePanel .recentChatList .recentChat .avatar {
display: none;
}
.welcomePanel .welcomeHeader {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-end;
}
.welcomePanel .recentChatsTitle {
flex-grow: 1;
font-size: calc(var(--mainFontSize) * 1.15);
font-weight: 600;
}
.welcomePanel .welcomeHeaderTitle {
margin: 0;
flex-grow: 1;
display: flex;
flex-direction: row;
align-items: center;
gap: 10px;
}
.welcomePanel .welcomeHeaderVersionDisplay {
font-size: calc(var(--mainFontSize) * 1.3);
font-weight: 600;
flex-grow: 1;
}
.welcomePanel .welcomeHeaderLogo {
width: 30px;
height: 30px;
}
.welcomePanel .welcomeShortcuts {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 5px;
}
.welcomePanel .welcomeShortcuts .welcomeShortcutsSeparator {
margin: 0 2px;
color: var(--SmartThemeBorderColor);
font-size: calc(var(--mainFontSize) * 1.1);
}
.welcomeRecent .recentChatList {
display: flex;
flex-direction: column;
width: 100%;
gap: 2px;
}
.welcomeRecent .welcomePanelLoader {
display: flex;
justify-content: center;
align-items: center;
flex: 1;
width: 100%;
height: 100%;
position: absolute;
}
.welcomePanel .recentChatList .noRecentChat {
display: flex;
flex-direction: row;
justify-content: center;
align-items: baseline;
gap: 5px;
padding: 10px;
}
.welcomeRecent .recentChatList .recentChat {
display: flex;
flex-direction: row;
align-items: center;
padding: 5px 10px;
border-radius: 10px;
cursor: pointer;
gap: 10px;
border: 1px solid var(--SmartThemeBorderColor);
}
.welcomeRecent .recentChatList .recentChat .avatar {
flex: 0;
align-self: center;
}
.welcomeRecent .recentChatList .recentChat:hover {
background-color: var(--white30a);
}
.welcomeRecent .recentChatList .recentChat .recentChatInfo {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
flex-grow: 1;
overflow: hidden;
justify-content: center;
align-self: flex-start;
}
.welcomeRecent .recentChatList .recentChat .chatNameContainer {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: baseline;
font-size: calc(var(--mainFontSize) * 1);
}
.welcomeRecent .recentChatList .recentChat .chatNameContainer .chatName {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.welcomeRecent .recentChatList .recentChat .chatMessageContainer {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 5px;
font-size: calc(var(--mainFontSize) * 0.85);
}
.welcomeRecent .recentChatList .recentChat .chatMessageContainer .chatMessage {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-clamp: 2;
overflow: hidden;
}
body.big-avatars .welcomeRecent .recentChatList .recentChat .chatMessageContainer .chatMessage {
-webkit-line-clamp: 4;
line-clamp: 4;
}
.welcomeRecent .recentChatList .recentChat .chatStats {
display: flex;
flex-direction: row;
justify-content: flex-end;
align-items: baseline;
align-self: flex-start;
gap: 5px;
}
.welcomeRecent .recentChatList .recentChat .chatStats .counterBlock {
display: flex;
flex-direction: row;
align-items: baseline;
gap: 5px;
}
.welcomeRecent .recentChatList .recentChat .chatStats .counterBlock::after {
content: "|";
color: var(--SmartThemeBorderColor);
font-size: calc(var(--mainFontSize) * 0.95);
}
.welcomeRecent .recentChatList .recentChat.hidden {
display: none;
}
.welcomeRecent .recentChatList .showMoreChats {
align-self: center;
}
.welcomeRecent .recentChatList .showMoreChats.rotated {
transform: rotate(180deg);
}
@media screen and (max-width: 1000px) {
.welcomePanel .welcomeShortcuts a span {
display: none;
}
}

View File

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

15
public/global.d.ts vendored
View File

@@ -1,7 +1,11 @@
import libs from './lib';
import getContext from './scripts/st-context';
import { power_user } from './scripts/power-user';
declare global {
// Custom types
declare type InstructSettings = typeof power_user.instruct;
// Global namespace modules
interface Window {
ai: any;
@@ -51,4 +55,15 @@ declare global {
* @param provider Translation provider
*/
async function translate(text: string, lang: string, provider: string = null): Promise<string>;
interface ConvertVideoArgs {
buffer: Uint8Array;
name: string;
}
/**
* Converts a video file to an animated WebP format using FFmpeg.
* @param args - The arguments for the conversion function.
*/
function convertVideoToAnimatedWebp(args: ConvertVideoArgs): Promise<Uint8Array>;
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

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

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

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "يجمع الرسائل المتتالية للنظام في رسالة واحدة (باستثناء الحوارات المثالية). قد يحسن التتابع لبعض النماذج.",
"Enable function calling": "تمكين استدعاء الوظيفة",
"Send inline images": "إرسال الصور المضمنة",
"image_inlining_hint_1": "يرسل الصور في المطالبات إذا كان النموذج يدعمها (على سبيل المثال، GPT-4V، أو Claude 3، أو Lava 13B).\n استخدم ال",
"image_inlining_hint_1": "يرسل الصور في المطالبات إذا كان النموذج يدعمها .\n استخدم ال",
"image_inlining_hint_2": "الإجراء على أي رسالة أو",
"image_inlining_hint_3": "القائمة لإرفاق ملف صورة للدردشة.",
"Inline Image Quality": "جودة الصورة المضمنة",
@@ -253,7 +253,6 @@
"Assistant Prefill": "تعبئة مسبقة للمساعد",
"Start Claude's answer with...": "ابدأ إجابة كلود بـ...",
"Assistant Impersonation Prefill": "مساعد انتحال الشخصية المسبقة",
"Use system prompt (Claude 2.1+ only)": "استخدام التعليمة النظامية (فقط كلود 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "إرسال التعليمة النظامية للنماذج المدعومة. إذا تم تعطيلها، يتم إضافة رسالة المستخدم إلى بداية التعليمة.",
"User first message": "الرسالة الأولى للمستخدم",
"Restore User first message": "استعادة الرسالة الأولى للمستخدم",
@@ -318,23 +317,23 @@
"flag": "وضع علامة",
"API key (optional)": "مفتاح API (اختياري)",
"Server url": "رابط الخادم",
"Example: 127.0.0.1:5000": "مثال: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "مثال: http://127.0.0.1:5000",
"Custom model (optional)": "نموذج مخصص (اختياري)",
"vllm-project/vllm": "vllm-project/vllm (وضع غلاف OpenAI API)",
"vLLM API key": "مفتاح واجهة برمجة التطبيقات vLLM",
"Example: 127.0.0.1:8000": "مثال: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "مثال: http://127.0.0.1:8000",
"vLLM Model": "نموذج vLLM",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (وضع التغليف لواجهة برمجة التطبيقات OpenAI)",
"Aphrodite API key": "مفتاح واجهة برمجة التطبيقات Aphrodite",
"Aphrodite Model": "نموذج أفروديت",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (خادم إخراج)",
"Example: 127.0.0.1:8080": "مثال: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "مثال: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "مثال: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "مثال: http://127.0.0.1:11434",
"Ollama Model": "نموذج Ollama",
"Download": "تحميل",
"Tabby API key": "مفتاح API لـ Tabby",
"koboldcpp API key (optional)": "مفتاح koboldcpp API (اختياري)",
"Example: 127.0.0.1:5001": "مثال: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "مثال: http://127.0.0.1:5001",
"Authorize": "تفويض",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai",
"Bypass status check": "تجاوز فحص الحالة",
@@ -411,7 +410,6 @@
"Chat Start": "بداية الدردشة",
"Add Chat Start and Example Separator to a list of stopping strings.": "أضف بداية الدردشة وفاصل الأمثلة إلى قائمة سلاسل التوقف.",
"Use as Stop Strings": "استخدم كسلاسل التوقف",
"context_allow_jailbreak": "يتضمن كسر الحماية في نهاية المطالبة، إذا تم تحديده في بطاقة الشخصية و''Prefer Char. تم تمكين الهروب من السجن.\nلا يُنصح بهذا بالنسبة لنماذج إكمال النص، فقد يؤدي إلى نتائج سيئة.",
"Allow Jailbreak": "السماح بالجيلبريك",
"Context Order": "ترتيب السياق",
"Summary": "ملخص",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "تنزيل الدردشة كمستند نصي عادي",
"Delete chat file": "حذف ملف الدردشة",
"Use tag as folder": "وضع علامة كمجلد",
"Hide on character card": "إخفاء في بطاقة الشخصية",
"Delete tag": "حذف العلامة",
"Entry Title/Memo": "عنوان الإدخال/المذكرة",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "حالة دخول وي:\r🔵 ثابت\r🟢 عادي\r🔗 ناقل\r❌ معطل",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "لمن ستنسب هذه الرسالة؟",
"AI Assistant": "مساعد الذكاء الاصطناعي",
"prompt_manager_position": "موضع",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "موضع الحقن. بجوار المطالبات الأخرى (نسبية) أو داخل الدردشة (مطلقة).",
"Next to other prompts (relative) or in-chat (absolute).": "موضع الحقن. بجوار المطالبات الأخرى (نسبية) أو داخل الدردشة (مطلقة).",
"prompt_manager_relative": "نسبي",
"prompt_manager_depth": "عمق",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "عمق الحقن. 0 = بعد الرسالة الأخيرة، 1 = قبل الرسالة الأخيرة، الخ.",
"0 = after the last message, 1 = before the last message, etc.": "عمق الحقن. 0 = بعد الرسالة الأخيرة، 1 = قبل الرسالة الأخيرة، الخ.",
"Prompt": "موضوع",
"The prompt to be sent.": "المطالبة ليتم إرسالها.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "لا يمكن تجاوز هذه المطالبة بواسطة بطاقات الأحرف، حتى إذا كان التجاوزات مفضلاً.",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Kombiniert aufeinanderfolgende Systemnachrichten zu einer (ausschließlich Beispiel-Dialoge ausgeschlossen). Kann die Kohärenz für einige Modelle verbessern.",
"Enable function calling": "Funktionsaufruf aktivieren",
"Send inline images": "Inline-Bilder senden",
"image_inlining_hint_1": "Sendet Bilder in Eingabeaufforderungen, wenn das Modell dies unterstützt (z. B. GPT-4V, Claude 3 oder Llava 13B).\nVerwenden Sie die",
"image_inlining_hint_1": "Sendet Bilder in Eingabeaufforderungen, wenn das Modell dies unterstützt.\nVerwenden Sie die",
"image_inlining_hint_2": "Aktion auf eine Nachricht oder die",
"image_inlining_hint_3": "Menü, um eine Bilddatei an den Chat anzuhängen.",
"Inline Image Quality": "Inline-Bildqualität",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Assistenten-Vorausfüllung",
"Start Claude's answer with...": "Beginne Claudes Antwort mit...",
"Assistant Impersonation Prefill": "Identitätswechsel des Assistenten vorab ausfüllen",
"Use system prompt (Claude 2.1+ only)": "Systemprompt verwenden (nur Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Senden Sie die Systemaufforderung für unterstützte Modelle. Wenn deaktiviert, wird die Benutzernachricht am Anfang der Aufforderung hinzugefügt.",
"User first message": "Erste Nachricht des Benutzers",
"Restore User first message": "Erste Nachricht des Benutzers wiederherstellen",
@@ -318,23 +317,23 @@
"flag": "Flagge",
"API key (optional)": "API-Schlüssel (optional)",
"Server url": "Server-URL",
"Example: 127.0.0.1:5000": "Beispiel: 127.0.0.1:5000",
"Example: http://127.0.0.1:5000": "Beispiel: http://127.0.0.1:5000",
"Custom model (optional)": "Benutzerdefiniertes Modell (optional)",
"vllm-project/vllm": "vllm-project/vllm (OpenAI API-Wrappermodus)",
"vLLM API key": "vLLM-API-Schlüssel",
"Example: 127.0.0.1:8000": "Beispiel: http://127.0.0.1:8000",
"Example: http://127.0.0.1:8000": "Beispiel: http://127.0.0.1:8000",
"vLLM Model": "vLLM-Modell",
"PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Wrappermodus für OpenAI API)",
"Aphrodite API key": "Aphrodite API-Schlüssel",
"Aphrodite Model": "Aphrodite-Modell",
"ggerganov/llama.cpp": "ggerganov/llama.cpp (Output-Server)",
"Example: 127.0.0.1:8080": "Beispiel: 127.0.0.1:8080",
"Example: 127.0.0.1:11434": "Beispiel: 127.0.0.1:11434",
"Example: http://127.0.0.1:8080": "Beispiel: http://127.0.0.1:8080",
"Example: http://127.0.0.1:11434": "Beispiel: http://127.0.0.1:11434",
"Ollama Model": "Ollama-Modell",
"Download": "Herunterladen",
"Tabby API key": "Tabby API-Schlüssel",
"koboldcpp API key (optional)": "koboldcpp API-Schlüssel (optional)",
"Example: 127.0.0.1:5001": "Beispiel: 127.0.0.1:5001",
"Example: http://127.0.0.1:5001": "Beispiel: http://127.0.0.1:5001",
"Authorize": "Autorisieren",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet",
"Bypass status check": "Umgehe Statusüberprüfung",
@@ -411,7 +410,6 @@
"Chat Start": "Chat-Start",
"Add Chat Start and Example Separator to a list of stopping strings.": "Fügen Sie einer Liste von Stoppzeichenfolgen „Chat-Start“ und „Beispieltrennzeichen“ hinzu.",
"Use as Stop Strings": "Verwende als Stoppzeichenfolgen",
"context_allow_jailbreak": "Schließt Jailbreak am Ende der Eingabeaufforderung ein, wenn dies in der Charakterkarte definiert ist UND „Charakter-Jailbreak bevorzugen“ aktiviert ist.\nDIES WIRD FÜR TEXTVERVOLLSTÄNDIGUNGSMODELLE NICHT EMPFOHLEN, KANN ZU SCHLECHTEN AUSGABEN FÜHREN.",
"Allow Jailbreak": "Jailbreak zulassen",
"Context Order": "Kontextreihenfolge",
"Summary": "Zusammenfassung",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Chat als einfaches Textdokument herunterladen",
"Delete chat file": "Chatdatei löschen",
"Use tag as folder": "Als Ordner markieren",
"Hide on character card": "Auf Charakterkarte ausblenden",
"Delete tag": "Tag löschen",
"Entry Title/Memo": "Eintragstitel/Memo",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "WI-Eintragstatus: 🔵 Konstant 🟢 Normal 🔗 Vektorisiert ❌ Deaktiviert",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "Wem diese Nachricht zugeschrieben wird.",
"AI Assistant": "KI-Assistent",
"prompt_manager_position": "Position",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Injektionsposition. Neben anderen Eingabeaufforderungen (relativ) oder im Chat (absolut).",
"Next to other prompts (relative) or in-chat (absolute).": "Neben anderen Eingabeaufforderungen (relativ) oder im Chat (absolut).",
"prompt_manager_relative": "Relativ",
"prompt_manager_depth": "Tiefe",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Injektionstiefe. 0 = nach der letzten Nachricht, 1 = vor der letzten Nachricht usw.",
"0 = after the last message, 1 = before the last message, etc.": "0 = nach der letzten Nachricht, 1 = vor der letzten Nachricht usw.",
"Prompt": "Aufforderung",
"The prompt to be sent.": "Die zu sendende Eingabeaufforderung.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Diese Eingabeaufforderung kann nicht durch Charakterkarten überschrieben werden, selbst wenn dies bevorzugt wird.",

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