Compare commits

...

474 Commits

Author SHA1 Message Date
Cohee
d55676d6d5 New Jeremy 2.5 Pro 2025-06-05 20:14:46 +03:00
Cohee
1c499df9da Merge branch 'release' into staging 2025-06-05 08:21:34 +00:00
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
96fb85457f Gallery: add delete functionality for gallery items 2025-06-04 23:53:18 +03:00
Cohee
f646c9416a fix: handle enhance parameter in pollinations generate endpoint 2025-06-04 23:25:13 +03:00
Cohee
0eff634bd0 OpenRouter: add cache TTL control for Claude 2025-06-04 20:30:20 +03:00
Cohee
555c5be8d1 Fix horizontal stretching of HTML img embeds in mobile layout 2025-06-04 11:59:51 +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
229def21cd Fix npm audit in tests 2025-06-03 13:06:38 +00:00
Cohee
c4a44bc08d rename chat: update to new popup 2025-06-03 00:19:31 +03:00
Cohee
13b3f61e82 slash-commands.js: update for new popup 2025-06-03 00:16:00 +03:00
Cohee
b6d282b4ee Fix for eslint 2025-06-03 00:11:06 +03:00
Cohee
8d143a81c3 bulk edit: update for new popup 2025-06-03 00:11:01 +03:00
Cohee
8cf11bccde horde.js: update for new popup 2025-06-03 00:06:34 +03:00
Cohee
b72d7f37d7 regex: update for new popup 2025-06-03 00:05:33 +03:00
Cohee
b901ed1be7 caption: update for new popup 2025-06-03 00:02:05 +03:00
Cohee
5e4c570eb0 textgen-models.js: update for new popup 2025-06-02 23:58:19 +03:00
Cohee
45ef4b60c9 stats.js: update for new popup 2025-06-02 23:57:11 +03:00
Cohee
8c7dbedaa1 samplerSelect.js: update for new popup 2025-06-02 23:55:16 +03:00
Cohee
def23eb359 Fix for eslint 2025-06-02 23:50:12 +03:00
Cohee
134ade0951 secret.js: update for new popup 2025-06-02 23:49:56 +03:00
Cohee
52e7df970f backgrounds.js: update for new poup 2025-06-02 23:44:59 +03:00
Cohee
55b3016985 openai.js: update for new popup 2025-06-02 23:44:50 +03:00
Cohee
d7c938a294 WI: increase budget cap max value 8k -> 64k 2025-06-02 14:33:03 +00:00
Cohee
1ae4c22ebc Merge pull request #4086 from NicodeSS/release
fix: lowercase remote-user header in authelia auto-login procedure
2025-06-02 17:27:54 +03:00
Nicode
cfa9ef4726 fix: lowercase remote-user header in authelia auto-login procedure
Ensure the remote-user header is lowercased to fix case-sensitivity issues in the authelia auto-login process, improving compatibility.
2025-06-02 20:53:39 +08:00
Cohee
281ce10040 Update placeholder for empty message 2025-06-02 11:44:56 +03:00
Rebecca Turner
7ef296d43a Feature: Allow tools to accept arrays of values as an array (#4085)
Previously, a tool that that registered itself as having an array parameter
had each element of the array registered as a variable, but it did not
register the array parameter itself.  This meant that it was only really
useful with fixed length arrays.

This patch adds a variable for the array itself that lives alongside the
existing args.  I don't expect this to have any backward compatiblity
concerns.

Repro:

```stscript
// this requires lalib to function |
/let key=schema {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "string",
    "properties": {
        "example": {
            "type": "array",
            "contains": {
                "type": "string"
            }
        }
    },
    "required": [
        "example"
    ]
} ||
/tools-register name=YourFunc description="filler" parameters={{var::schema}} {:
    /let ex {: /try {: /return {{var::arg.example}} :} :}() | /= ex.isException | /if rule=not left={{pipe}} else={:
        /console-log {{var::ex}}
    :} {:
        /console-log "arg.example: {{var::arg.example}}" |
        /foreach {{var::arg.example}} {: /console-log "#{{var::index}}: {{var::item}}" :}
    :} |
    /try {: /return {{var::arg.example.0}} :}  | /console-log "arg.example.0: {{pipe}}" |
    /try {: /return {{var::arg.example.1}} :}  | /console-log "arg.example.1: {{pipe}}" |
    /try {: /return {{var::arg.example.2}} :}  | /console-log "arg.example.2: {{pipe}}" |
    /try {: /return {{var::arg.example.3}} :}  | /console-log "arg.example.3: {{pipe}}" |
:} ||
/let key=params {
    "example": [
    	"test1", "test2", "test3"
    ]
} |
/tools-invoke parameters={{var::params}} YourFunc
```
Currently produces:

```
[/console-log] arg.example: {"isException":true,"exception":"No such variable: \"arg.example\""}
[/console-log] arg.example.0: {"isException":false,"result":"test1"}
[/console-log] arg.example.1: {"isException":false,"result":"test2"}
[/console-log] arg.example.2: {"isException":false,"result":"test3"}
[/console-log] arg.example.3: {"isException":true,"exception":"No such variable: \"arg.example.3\""}
```

With this patch it produces:

```
[/console-log] arg.example: ["test1","test2","test3"]
[/console-log] #0: test1
[/console-log] #1: test2
[/console-log] #2: test3
[/console-log] arg.example.0: {"isException":false,"result":"test1"}
[/console-log] arg.example.1: {"isException":false,"result":"test2"}
[/console-log] arg.example.2: {"isException":false,"result":"test3"}
[/console-log] arg.example.3: {"isException":true,"exception":"No such variable: \"arg.example.3\""}
```
2025-06-02 10:54:10 +03:00
Rebecca Turner
6bb07370f4 Fix #4083 JSON parse error when tool does not accept parameters (#4084)
* Fix #4083: JSON parse error when tool does not accept parameters

* Reformat for visual coolness

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-06-02 10:18:04 +03:00
RossAscends
fa10833e52 add minimum requirement of 2 [A-za-z] for slashcommand autocomplete to show up (#4080)
* add minimum requirement of 2 [A-za-z] for slashcommand autocomplete to show up

* Migrate to dedicated AC toggle

* Replace state checkbox with select

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-06-01 20:07:33 +03:00
Cohee
4c3bb1aede PPP command and connection profiles (#4079)
* Add PPP command

* Add PPP to connection profiles
2025-06-01 18:15:06 +03:00
Nikolas Brown
c4d89b2067 Gemini inline video (#4078)
* Add inline video attachment support for Gemini 2.5 Pro

* file formatting

* removed redundant function for saving video to message

* removed other redundant function for saving video to message

* Seperate inlining check for video

* Edit video token cost to be a conservative estimate of 10000 tokens

* fixed missing semicolon

* Adds seperate ui toggle for video inlining.

* Move mes_video out of img_container

* Remove title from video element for now

* Better visibilty of video with controls

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-06-01 15:04:16 +03:00
Cohee
3ec9b1a099 Implement data clean-up dialog (#4072)
* [wip] Add user data cleanup service

* Add clean-up report viewer

* Fix review comments

* Add function comments

* Implement item actions

* Fix UI styles

* Add placeholder for empty results, update category description view

* Add displayEmptyPlaceholder method to show message when results list is empty

* Adjust menu buttons row

* Delete char-scoped data bank attachments on character deletion

* Data Bank: Handle character attachments on rename

* Remove line breaks in description strings

* Drop the category when the last item is deleted

* Skip invalid hashes instead of bailing
2025-06-01 13:56:34 +03:00
Cohee
7f47f84c9f Merge branch 'release' into staging 2025-06-01 01:17:59 +03:00
Cohee
303c1dcf14 Caption: fix displaying secondary endpoint for unsupported sources 2025-06-01 01:17:42 +03:00
Cohee
ecbe8d38c5 Merge branch 'release' into staging 2025-06-01 01:11:51 +03:00
Cohee
5b7483af14 Add filename validation middleware to create endpoint 2025-06-01 01:11:26 +03:00
Cohee
b7444a0fd2 Add filename validation middleware to upload endpoint
#4065
2025-06-01 01:09:53 +03:00
Cohee
a17d0c2293 Merge pull request #4077 from SillyTavern/fix-mes0-right-swipe
Allow swipe right to generate first message in non-pristine chats
2025-05-31 21:27:21 +03:00
Cohee
7ca8c4591f Allow swipe right to generate first message in non-pristine chats
Fixes #4074
2025-05-31 19:02:35 +03:00
Cohee
8b44bf1e55 Merge pull request #4071 from closuretext/patch-1
Added NAI Diffusion V4.5 Full and V4.5 Curated
2025-05-31 02:01:08 +03:00
closure
26f717ac45 Added NAI Diffusion V4.5 Full and V4.5 Curated 2025-05-30 17:48:39 -03:00
Cohee
89ef54f286 Do not replace inline HTML img with image embed (#4063) 2025-05-29 21:44:16 +03:00
Cohee
1cbc4ac65b Fix HTML syntax errors by @Dakraid
Original commit: fd4babab31
2025-05-29 21:38:55 +03:00
Cohee
e1e2d3e726 Recent chats: add delete and rename buttons (#4051)
* [wip] Add rename/delete for recent chats

* Implement deleteCharacterChatByName

* Fix character name usage in deleteCharacterChatByName function
2025-05-29 21:21:53 +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
0b1e3828aa Merge pull request #4060 from leandrojofre/relieve-group-chat-console
Clean console debugs for group chats
2025-05-29 19:30:52 +03:00
leandrojofre
34b8b48b52 Update - Clean console debugs for group chats
Those two debugs always floods the console in group chats, making it imposible to debug anything else, like extensions or activated wi entries.
2025-05-29 12:05:57 -03:00
Cohee
8ccbbe8cdc Merge pull request #4057 from omahs/patch-2
Fix typos
2025-05-29 16:40:53 +03:00
Cohee
1dc7415cdb Merge pull request #4058 from rsxdalv/patch-1
refresh voices upon checkReady in openai-compatible TTS
2025-05-29 15:51:09 +03:00
Roberts Slisans
8db879d9f2 refresh voices upon checkReady in openai-compatible TTS 2025-05-29 14:40:52 +03:00
omahs
d7d20a67fa Fix typos 2025-05-29 11:56:59 +02:00
Cohee
87df4db1a4 Add vertexai.svg image file 2025-05-29 01:48:42 +03:00
Cohee
853a80a428 Unblock Request model reasoning for Vertex 2025-05-28 20:55:40 +03:00
Cohee
b61269445d Merge pull request #4046 from InterestingDarknessII/vertexfull
Add Vertex AI Full Version support
2025-05-28 20:52:24 +03:00
Cohee
4e75f2fa4d Change no neutral warning text to align with other inputs 2025-05-28 20:45:35 +03:00
Cohee
1921036666 Move account status block higher 2025-05-28 20:42:40 +03:00
Cohee
0559fd7e8b Fix alignment of Region controls 2025-05-28 20:40:13 +03:00
Cohee
250bf5249a Remove unnecessary blank lines in chat-completions.js 2025-05-28 20:38:09 +03:00
Cohee
5c2cfed18b Implement auto-connect for VertexAI full 2025-05-28 20:37:50 +03:00
Cohee
a0dda44ff9 Fix model options hiding on Chrome 2025-05-28 20:37:34 +03:00
InterestingDarkness
75e3f599e6 Derive Vertex AI Project ID from Service Account JSON
This commit refactors the Vertex AI integration to automatically derive the
Project ID from the provided Service Account JSON. This simplifies the
configuration process for users in "Full" (service account) authentication
mode by removing the need to specify the Project ID separately.
2025-05-28 21:57:17 +08:00
InterestingDarkness
9f698dd6e3 Updated the placeholder text for the region input field in index.html to include 'global' as an option.
- Added a help link to provide users with information on available regions and models, improving user guidance.
2025-05-28 21:32:39 +08:00
InterestingDarkness
55af19e70b Reduced the number of rows in the textarea for Service Account JSON input in index.html 2025-05-28 21:26:10 +08:00
InterestingDarkness
c9f90a2bd3 Update Gemini model options in Vertex AI section
- Removed outdated model options from the Gemini 2.0 optgroup in index.html.
- Added 'gemini-2.0-flash-preview-image-generation' to the image generation models in chat-completions.js for improved functionality.
2025-05-28 09:26:06 +08:00
Cohee
b3077c4635 Use shared constant for default avatar path 2025-05-27 22:34:22 +03:00
Cohee
817ae20c3b Allow vertical scroll in import menu 2025-05-27 22:31:16 +03:00
buzz
4bec90abb5 Import character card from Soulkyn (#4042) 2025-05-27 22:30:15 +03:00
InterestingDarkness
1e2bec1751 Removed direct references to 'vertexai_project_id' from openai.js and related files, ensuring it is now managed through backend secrets for enhanced security. 2025-05-27 21:25:53 +08:00
InterestingDarkness
a9d4988fc0 Remove vertexai_service_account_json from oai_settings. And google.js. 2025-05-27 08:59:13 +08:00
Cohee
2c7f2e2014 Pollinations: fix headers, add samplers 2025-05-26 23:18:51 +03:00
Cohee
e2222ac40a Pollinations: fix headers, add samplers 2025-05-26 23:18:14 +03:00
Cohee
1b5a11206f Merge pull request #3967 from gakada/regex
Regex: allow multiple definitions in a single file
2025-05-26 22:26:06 +03:00
Cohee
523cc36b46 Implement bulk operations for regex 2025-05-26 22:21:48 +03:00
Cohee
52c3b83f96 Merge branch 'staging' into regex 2025-05-26 21:13:13 +03:00
InterestingDarkness
df36b60e9b Add vertex AI configuration fields to sensitiveFields in openai.js
- Included 'vertexai_project_id', 'vertexai_region', and 'vertexai_service_account_json' to the sensitiveFields array for enhanced configuration management.
2025-05-27 00:45:33 +08:00
InterestingDarkness
453c177a8e Enhance Vertex AI model selection by adding data-mode attributes
- Updated index.html to include data-mode attributes for model optgroups, distinguishing between express and full modes.
- Modified openai.js to show/hide model groups based on the selected authentication mode, improving user experience and functionality.
2025-05-27 00:43:31 +08:00
InterestingDarkness
9e71b70f75 Updated toastr messages in openai.js to use translation function for better internationalization support. 2025-05-27 00:38:06 +08:00
InterestingDarkness
1c048a6c79 Refactor Google authentication functions for Vertex AI
- Exported `getVertexAIAuth`, `generateJWTToken`, and `getAccessToken` functions from google.js for better modularity.
- Removed redundant JWT token generation and access token retrieval logic from chat-completions.js, utilizing the newly exported functions instead.
- Improved code organization and maintainability by centralizing authentication logic.
2025-05-27 00:31:43 +08:00
InterestingDarkness
7fcd40c829 fix ESLint 2025-05-26 22:18:54 +08:00
InterestingDarkness
5656c7950d Implement Vertex AI authentication modes and configuration in UI
- Updated index.html to include options for Vertex AI authentication modes (Express and Full).
- Enhanced openai.js to manage Vertex AI settings, including project ID, region, and service account JSON.
- Added validation and handling for service account JSON in the backend.
- Modified API request handling in google.js to support both authentication modes for Vertex AI.
- Updated secrets.js to include a key for storing Vertex AI service account JSON.
- Improved error handling and user feedback for authentication issues.
2025-05-26 22:09:59 +08:00
Cohee
a6928289b3 Clear extension load errors before activating extensions 2025-05-26 11:10:47 +00:00
Cohee
a8a133b6c2 Merge branch 'release' into staging 2025-05-26 08:08:47 +00:00
Cohee
51c5783eb3 Add referrer for Pollinations requests 2025-05-26 08:08:38 +00:00
RossAscends
57882c80e5 add ability for exts to req other exts (#4023)
* add ability for exts to req other exts

* Get rid of toasts. Collect errors on load, display in manager

* Remove unused variable

* Only show missing modules/dependencies

* Prefer display names in validation messages

* Prefer internal name for console warn

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-05-26 01:38:32 +03:00
Cohee
e12e0ccd84 Support ISO 8601 timestamps 2025-05-26 01:20:28 +03:00
Cohee
61a1078e1d Display a greeting for custom welcome assistants 2025-05-26 01:09:57 +03: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
gk
6df95b98ec Regex: add export buttons for global and scoped scripts 2025-05-08 01:27:03 +09:00
Cohee
7a4d6ecfde Migrate old preference for "click to edit" setting based on chat display style 2025-05-07 11:12:41 +00:00
gk
2650d88606 Regex: allow multiple definitions in a single file 2025-05-07 18:48:18 +09: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
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
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
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
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
d05373cdd2 Upload video bg via converter extension 2025-04-03 23:48:01 +03:00
221 changed files with 9121 additions and 2792 deletions

View File

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

48
.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.
@@ -316,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`.
@@ -350,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 |
@@ -379,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

@@ -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

@@ -70,7 +70,7 @@ enableDiscreetLogin: false
# https://www.authelia.com/
# This will use auto login to an account with the same username
# as that used for authlia. (Ensure the username in authlia
# is an exact match with that in sillytavern)
# is an exact match in lowercase with that in sillytavern)
autheliaAuth: false
# If `basicAuthMode` and this are enabled then
# the username and passwords for basic auth are the same as those
@@ -234,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"
},
{
@@ -619,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"
@@ -755,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"
@@ -795,6 +795,14 @@
"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"

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

@@ -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,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": "",

View File

@@ -6,7 +6,7 @@
"stop_sequence": "<|eot|>",
"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": "",
"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

@@ -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": ""
}

50
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "sillytavern",
"version": "1.12.14",
"version": "1.13.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sillytavern",
"version": "1.12.14",
"version": "1.13.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
@@ -18,6 +18,7 @@
"@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",
@@ -28,6 +29,7 @@
"@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",
@@ -72,7 +74,7 @@
"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",
@@ -3374,20 +3376,34 @@
"license": "MIT"
},
"node_modules/concat-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
"integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
"engines": [
"node >= 0.8"
"node >= 6.0"
],
"license": "MIT",
"dependencies": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"readable-stream": "^3.0.2",
"typedarray": "^0.0.6"
}
},
"node_modules/concat-stream/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/content-disposition": {
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -6074,21 +6090,21 @@
"license": "MIT"
},
"node_modules/multer": {
"version": "1.4.5-lts.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
"integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz",
"integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==",
"license": "MIT",
"dependencies": {
"append-field": "^1.0.0",
"busboy": "^1.0.0",
"concat-stream": "^1.5.2",
"mkdirp": "^0.5.4",
"busboy": "^1.6.0",
"concat-stream": "^2.0.0",
"mkdirp": "^0.5.6",
"object-assign": "^4.1.1",
"type-is": "^1.6.4",
"xtend": "^4.0.0"
"type-is": "^1.6.18",
"xtend": "^4.0.2"
},
"engines": {
"node": ">= 6.0.0"
"node": ">= 10.16.0"
}
},
"node_modules/multer/node_modules/mkdirp": {

View File

@@ -8,6 +8,7 @@
"@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",
@@ -18,6 +19,7 @@
"@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",
@@ -62,7 +64,7 @@
"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",
@@ -109,7 +111,7 @@
"type": "git",
"url": "https://github.com/SillyTavern/SillyTavern.git"
},
"version": "1.12.14",
"version": "1.13.0",
"scripts": {
"start": "node server.js",
"debug": "node --inspect server.js",

View File

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

View File

@@ -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;

149
public/css/data-maid.css Normal file
View File

@@ -0,0 +1,149 @@
.dataMaidDialogContainer {
height: 100%;
overflow: hidden;
}
.dataMaidDialog {
display: flex;
flex-direction: column;
gap: 5px;
height: 100%;
overflow: hidden;
}
.dataMaidDialogHeader {
display: flex;
gap: 10px;
align-items: center;
text-align: left;
}
.dataMaidHeaderInfo {
flex: 1;
margin: 0;
padding: 5px 10px;
}
.dataMaidTextView {
width: 100%;
height: 100%;
font-family: var(--monoFontFamily);
resize: none;
font-size: 0.95em;
}
.dataMaidImageView {
width: 100%;
height: 100%;
object-fit: contain;
}
.dataMaidSpinner {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
.dataMaidPlaceholder {
display: flex;
justify-content: center;
align-items: center;
font-size: 1.05em;
}
.dataMaidResultsList:empty {
display: none;
}
.dataMaidResultsList {
text-align: left;
display: flex;
flex-direction: column;
gap: 2px;
overflow-y: auto;
height: 100%;
flex-grow: 1;
}
.dataMaidCategory {
border: 1px solid var(--SmartThemeBorderColor);
border-radius: 10px;
padding: 0 10px;
}
.dataMaidCategoryHeader {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-right: 5px;
padding: 0 5px;
}
.dataMaidCategoryDetails {
display: flex;
flex-direction: column;
gap: 1px;
}
.dataMaidCategoryName {
flex: 3;
font-weight: bold;
font-size: 1.1em;
}
.dataMaidCategoryInfo {
flex: 1;
display: flex;
align-items: baseline;
gap: 5px;
}
.dataMaidCategoryContent {
border: 1px solid var(--SmartThemeBorderColor);
padding: 5px;
border-radius: 10px;
background-color: var(--black30a);
margin: 10px 0;
}
.dataMaidCategoryContent>.info-block {
white-space: pre-wrap;
}
.dataMaidItem {
display: flex;
flex-direction: column;
padding: 5px;
width: 100%;
border-bottom: 1px solid var(--SmartThemeBorderColor);
}
.dataMaidItem:last-child {
border-bottom: none;
}
.dataMaidItemHeader {
display: flex;
align-items: center;
gap: 5px;
}
.dataMaidItemName {
display: flex;
flex: 1;
align-items: baseline;
gap: 2px;
word-break: break-all;
}
.dataMaidItemActions {
display: flex;
align-items: center;
gap: 5px;
}
.dataMaidItemActions>button {
font-size: 0.9em;
}

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

@@ -25,10 +25,6 @@
font-size: 15px;
}
.mes_text img {
width: 100%;
}
#extensions_settings,
#extensions_settings2 {
width: 100% !important;

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

@@ -556,6 +556,10 @@ textarea:disabled {
min-width: fit-content;
}
.flexGap2 {
gap: 2px;
}
.flexGap5 {
gap: 5px;
}

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);
}

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

@@ -0,0 +1,229 @@
#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);
gap: 5px;
}
.welcomeRecent .recentChatList .recentChat .chatNameContainer .chatName {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
flex: 1;
}
.welcomeRecent .recentChatList .recentChat .chatActions {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 5px;
}
.welcomeRecent .recentChatList .recentChat .chatActions button {
margin: 0;
font-size: 0.8em;
cursor: pointer;
}
.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;
}

11
public/global.d.ts vendored
View File

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

26
public/img/vertexai.svg Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" viewBox="0 0 21.773 24.84" xmlns="http://www.w3.org/2000/svg">
<path d="m21.576 14.91a1 1 0 0 0-1.4-0.22l-9.29 6.86v0.29a1 1 0 1 1 0 1.91v0.05a1 1 0 0 0 0.6-0.19l9.88-7.3a1 1 0 0 0 0.21-1.4z"/>
<path d="m10.886 23.75a1 1 0 1 1 0-1.91v-0.29l-9.29-6.86a1 1 0 0 0-1.4 0.22 1 1 0 0 0 0.21 1.4l9.89 7.3a1 1 0 0 0 0.59 0.19z"/>
<path d="m10.886 20.84a2 2 0 1 0 2 2 2 2 0 0 0-2-2zm0 2.91a1 1 0 1 1 1-0.95 1 1 0 0 1-1 0.95z"/>
<path d="m2.8864 4.52a1 1 0 0 1-1-1v-2.51a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z"/>
<circle cx="2.8564" cy="12.38" r="1.01"/>
<circle cx="2.8564" cy="9.43" r="1.01"/>
<circle cx="2.8564" cy="6.47" r="1.01"/>
<path d="m18.886 7.45a1 1 0 0 1-1-1v-2.52a1 1 0 0 1 2 0v2.52a1 1 0 0 1-1 1z"/>
<circle cx="18.916" cy="12.39" r="1.01"/>
<circle cx="18.916" cy="9.4" r="1.01"/>
<circle cx="18.916" cy="1.01" r="1.01"/>
<path d="m10.886 16.38a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0v2.54a1 1 0 0 1-1 1z"/>
<circle cx="10.886" cy="18.31" r="1.01"/>
<circle cx="10.886" cy="9.89" r="1.01"/>
<circle cx="10.886" cy="6.94" r="1.01"/>
<path d="m14.886 10.43a1 1 0 0 1-1-1v-2.51a1 1 0 1 1 2 0v2.51a1 1 0 0 1-1 1z"/>
<circle cx="14.906" cy="3.96" r="1.01"/>
<circle cx="14.906" cy="15.3" r="1.01"/>
<circle cx="14.906" cy="12.35" r="1.01"/>
<circle cx="6.8664" cy="15.3" r="1.01"/>
<circle cx="6.8664" cy="6.94" r="1.01"/>
<circle cx="6.8664" cy="3.96" r="1.01"/>
<path d="m6.8864 13.38a1 1 0 0 1-1-1v-2.54a1 1 0 0 1 2 0v2.54a1 1 0 0 1-1 1z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 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": "استعادة الرسالة الأولى للمستخدم",
@@ -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.": "لا يمكن تجاوز هذه المطالبة بواسطة بطاقات الأحرف، حتى إذا كان التجاوزات مفضلاً.",
@@ -1380,6 +1379,7 @@
"char_import_6": "رابط PNG المباشر (راجع",
"char_import_7": "للمضيفين المسموح بهم)",
"char_import_8": "شخصية RisuRealm (رابط مباشر)",
"char_import_9": "شخصية Soulkyn (رابط مباشر)",
"Supports importing multiple characters.": "يدعم استيراد أحرف متعددة.",
"Write each URL or ID into a new line.": "اكتب كل عنوان URL أو معرف في سطر جديد.",
"Export for character": "تصدير للشخصية",

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",
@@ -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.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Direkter PNG-Link (siehe",
"char_import_7": "für erlaubte Hosts)",
"char_import_8": "RisuRealm-Charakter (Direktlink)",
"char_import_9": "Soulkyn-Charakter (Direktlink)",
"Supports importing multiple characters.": "Unterstützt den Import mehrerer Zeichen.",
"Write each URL or ID into a new line.": "Schreiben Sie jede URL oder ID in eine neue Zeile.",
"Export for character": "Export für Zeichen",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Combina mensajes del sistema consecutivos en uno solo (excluyendo diálogos de ejemplo). Puede mejorar la coherencia para algunos modelos.",
"Enable function calling": "Habilitar llamada a función",
"Send inline images": "Enviar imágenes en línea",
"image_inlining_hint_1": "Envía imágenes en mensajes si el modelo lo admite (por ejemplo, GPT-4V, Claude 3 o Llava 13B).\n Utilizar el",
"image_inlining_hint_1": "Envía imágenes en mensajes si el modelo lo admite.\n Utilizar el",
"image_inlining_hint_2": "acción sobre cualquier mensaje o el",
"image_inlining_hint_3": "menú para adjuntar un archivo de imagen al chat.",
"Inline Image Quality": "Calidad de imagen en línea",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Prellenado de Asistente",
"Start Claude's answer with...": "Iniciar la respuesta de Claude con...",
"Assistant Impersonation Prefill": "Precarga de suplantación de asistente",
"Use system prompt (Claude 2.1+ only)": "Usar indicación del sistema (solo para Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Enviar la indicación del sistema para los modelos admitidos. Si está desactivado, el mensaje del usuario se agrega al principio de las indicaciónes.",
"User first message": "Primer mensaje del usuario",
"Restore User first message": "Restaurar el primer mensaje del usuario",
@@ -411,7 +410,6 @@
"Chat Start": "Inicio de chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Agregue Inicio de chat y Separador de ejemplo a una lista de cadenas de parada.",
"Use as Stop Strings": "Usar como Cadenas de Parada",
"context_allow_jailbreak": "Incluye Jailbreak al final del mensaje, si está definido en la tarjeta de personaje Y está habilitado \"Prefer Char. Jailbreak\".\nESTO NO SE RECOMIENDA PARA MODELOS DE COMPLETO DE TEXTO, PUEDE PRODUCIR UN RESULTADO INCORRECTO.",
"Allow Jailbreak": "Permitir Jailbreak",
"Context Order": "Orden de contexto",
"Summary": "Resumen",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Descargar chat como documento de texto sin formato",
"Delete chat file": "Eliminar archivo de chat",
"Use tag as folder": "Etiquetar como carpeta",
"Hide on character card": "Ocultar en la tarjeta del personaje",
"Delete tag": "Eliminar etiqueta",
"Entry Title/Memo": "Título/Memo",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "Estado de entrada a WI:\r🔵 Constante\r🟢Normal\r🔗 Vectorizado\r❌ Deshabilitado",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "A quién se le atribuirá este mensaje.",
"AI Assistant": "Asistente de IA",
"prompt_manager_position": "Posición",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Posición de inyección. Junto a otras indicaciones (relativa) o en el chat (absoluta).",
"Next to other prompts (relative) or in-chat (absolute).": "Junto a otras indicaciones (relativa) o en el chat (absoluta).",
"prompt_manager_relative": "Relativo",
"prompt_manager_depth": "Profundidad",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Profundidad de inyección. 0 = después del último mensaje, 1 = antes del último mensaje, etc.",
"0 = after the last message, 1 = before the last message, etc.": "0 = después del último mensaje, 1 = antes del último mensaje, etc.",
"Prompt": "Indicar",
"The prompt to be sent.": "El mensaje que se enviará.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Este mensaje no puede ser anulado por tarjetas de personaje, incluso si se prefieren las anulaciones.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Enlace PNG directo (consulte",
"char_import_7": "para hosts permitidos)",
"char_import_8": "Personaje RisuRealm (Enlace directo)",
"char_import_9": "Personaje Soulkyn (Enlace directo)",
"Supports importing multiple characters.": "Admite la importación de múltiples caracteres.",
"Write each URL or ID into a new line.": "Escriba cada URL o ID en una nueva línea.",
"Export for character": "Exportar para personaje",

View File

@@ -227,7 +227,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Combine les messages système consécutifs en un seul (à l'exclusion des dialogues d'exemple). Peut améliorer la cohérence pour certains modèles.",
"Enable function calling": "Activer l'appel de fonction",
"Send inline images": "Envoyer des images en ligne",
"image_inlining_hint_1": "Envoie des images dans les prompts si le modèle le prend en charge (par exemple GPT-4V, Claude 3 ou Llava 13B).\nUtilisez le",
"image_inlining_hint_1": "Envoie des images dans les prompts si le modèle le prend en charge.\nUtilisez le",
"image_inlining_hint_2": "action sur n'importe quel message ou le",
"image_inlining_hint_3": "menu pour joindre un fichier image au chat.",
"Inline Image Quality": "Qualité d'image en ligne",
@@ -240,7 +240,6 @@
"Assistant Prefill": "Pré-remplissage de l'assistant",
"Start Claude's answer with...": "Commencer la réponse de Claude par...",
"Assistant Impersonation Prefill": "Pré-remplir l'usurpation d'identité de l'assistant",
"Use system prompt (Claude 2.1+ only)": "Utiliser le prompt système (uniquement Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Envoyer le prompt système pour les modèles pris en charge. Si désactivé, le message de l'utilisateur est ajouté au début du prompt.",
"New preset": "Nouveau preset",
"Delete preset": "Supprimer le preset",
@@ -884,6 +883,7 @@
"Download chat as plain text document": "Télécharger la discussion sous forme de document texte brut",
"Delete chat file": "Supprimer le fichier de discussion",
"Use tag as folder": "Utiliser les tags comme dossier",
"Hide on character card": "Masquer sur la fiche du personnage",
"Delete tag": "Supprimer le tag'",
"Entry Title/Memo": "Titre de l'entrée/Mémo",
"WI_Entry_Status_Constant": "Constante",
@@ -950,7 +950,7 @@
"prompt_manager_position": "Position",
"prompt_manager_relative": "Relatif",
"prompt_manager_depth": "Profondeur",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Profondeur d'injection. 0 = après le dernier message, 1 = avant le dernier message, etc.",
"0 = after the last message, 1 = before the last message, etc.": "0 = après le dernier message, 1 = avant le dernier message, etc.",
"Prompt": "Prompt",
"The prompt to be sent.": "Le prompt à envoyer.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Ce prompt ne peut pas être remplacé par les cartes de personnage, même si les remplacements sont préférés.",
@@ -1301,6 +1301,7 @@
"char_import_6": "Lien PNG direct (voir",
"char_import_7": "pour les hôtes autorisés)",
"char_import_8": "Personnage de RisuRealm (lien direct)",
"char_import_9": "Personnage de Soulkyn (lien direct)",
"Supports importing multiple characters.": "Prend en charge l'importation de plusieurs caractères.",
"Write each URL or ID into a new line.": "Écrivez chaque URL ou identifiant dans une nouvelle ligne.",
"Export for character": "Exportation pour le personnage",
@@ -1448,7 +1449,6 @@
"Add Character and User names to a list of stopping strings.": "Ajouter les noms de personnages et d'utilisateurs à une liste de chaînes d'arrêt.",
"Names as Stop Strings": "Noms comme chaînes d'arrêt",
"context_allow_post_history_instructions": "Inclut les instructions post-historiques à la fin du prompt, si elles sont définies dans la fiche de personnage ET si l'option 'Préférer les instructions de personnage' est activée.\nN'EST PAS RECOMMANDÉ POUR LES MODÈLES DE COMPLÉTION DE TEXTE, CAR IL PEUT ENTRAÎNER DE MAUVAIS RÉSULTATS.",
"Allow Post-History Instructions": "Autoriser les instructions post-histoire",
"Instruct Template": "Modèle d'instruction",
"instruct_derived": "Dériver des métadonnées du modèle, si possible.",
"instruct_enabled": "Activer le mode d'instruction",
@@ -1545,7 +1545,7 @@
"Filter to Characters or Tags": "Filtre sur les personnages ou les tags",
"Switch the Character/Tags filter around to exclude the listed characters and tags from matching for this entry": "Changez le filtre Personnages/Tags pour exclure les personnages et tags listés de la correspondance pour cette entrée.",
"Exclude": "Exclure",
"Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.": "Position d'injection. Relative (par rapport à d'autres prompts dans le gestionnaire de prompts) ou In-chat @ Depth.",
"Relative (to other prompts in prompt manager) or In-chat @ Depth.": "Relative (par rapport à d'autres prompts dans le gestionnaire de prompts) ou In-chat @ Depth.",
"prompt_manager_in_chat": "In-chat",
"The content of this prompt is pulled from elsewhere and cannot be edited here.": "Le contenu de ce message est tiré d'autres sources et ne peut être modifié ici..",
"Open checkpoint chat\nShift+Click to replace the existing checkpoint with a new one": "Cliquer pour ouvrir le chat du point de contrôle\nShift+Click pour remplacer le point de contrôle existant par un nouveau.",
@@ -2043,7 +2043,6 @@
"Trigger %": "Déclencheur %",
"Only chunk on custom boundary": "Only chunk on custom boundary",
"Generate Caption": "Générer une légende",
"Use System Prompt": "Utiliser le prompt système:",
"Settings Preset": "Preset de réglages:",
"System Prompt Name": "Nom du prompt système:",
"Instruct Mode": "Mode Instruction:",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Sameinar samhliða kerfisskilaboð í eitt (sem er utan umsagna dæmum). Getur bætt samfelldni fyrir sumar módel.",
"Enable function calling": "Virkja aðgerðarkall",
"Send inline images": "Senda myndir í línu",
"image_inlining_hint_1": "Sendir myndir í skilaboðum ef líkanið styður það (t.d. GPT-4V, Claude 3 eða Llava 13B).\n Nota",
"image_inlining_hint_1": "Sendir myndir í skilaboðum ef líkanið styður það.\n Nota",
"image_inlining_hint_2": "aðgerð á hvaða skilaboðum sem er eða",
"image_inlining_hint_3": "valmynd til að hengja myndskrá við spjallið.",
"Inline Image Quality": "Innbyggð myndgæði",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Fyrirfram fylla viðstoðarmanns",
"Start Claude's answer with...": "Byrjaðu svör Claude með...",
"Assistant Impersonation Prefill": "Forfylling aðstoðarmanns eftirlíkingar",
"Use system prompt (Claude 2.1+ only)": "Nota kerfisflug (einungis Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Senda kerfisflug fyrir styðjandi módel. Ef óvirk, er notendaskilaboð bætt við byrjun flugs.",
"User first message": "Fyrstu skilaboð notanda",
"Restore User first message": "Endurheimta fyrstu skilaboð notanda",
@@ -411,7 +410,6 @@
"Chat Start": "Chat Start",
"Add Chat Start and Example Separator to a list of stopping strings.": "Bættu Chat Start og Example Separator við lista yfir stöðvunarstrengi.",
"Use as Stop Strings": "Nota sem Stoppa Strengir",
"context_allow_jailbreak": "Inniheldur Jailbreak í lok hvetjunnar, ef það er skilgreint á stafkortinu OG ''Velst Char. Jailbreak'' er virkt.\nÞETTA ER EKKI MÆLT FYRIR TEXTAÚRSLUNARGERÐ, GETUR leitt til lélegrar úttaks.",
"Allow Jailbreak": "Leyfa jailbreak",
"Context Order": "Samhengisröð",
"Summary": "Samantekt",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Niðurhala spjalli sem einfaldan textaskjal",
"Delete chat file": "Eyða spjallaskrá",
"Use tag as folder": "Merktu sem mappa",
"Hide on character card": "Fela á persónukorti",
"Delete tag": "Eyða merki",
"Entry Title/Memo": "Titill færslu/Minnisblað",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "WI inngangsstaða:\r🔵 Stöðugt\r😢 Venjulegt\r🔗 Vectorized\r❌ Óvirk",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "Hverjum þessi skilaboð verða eignuð.",
"AI Assistant": "AI aðstoðarmaður",
"prompt_manager_position": "Staða",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Inndælingarstaða. Við hliðina á öðrum leiðbeiningum (afstætt) eða í spjalli (algert).",
"Next to other prompts (relative) or in-chat (absolute).": "Við hliðina á öðrum leiðbeiningum (afstætt) eða í spjalli (algert).",
"prompt_manager_relative": "Aðstandandi",
"prompt_manager_depth": "Dýpt",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Inndælingardýpt. 0 = eftir síðustu skilaboð, 1 = fyrir síðustu skilaboð o.s.frv.",
"0 = after the last message, 1 = before the last message, etc.": "0 = eftir síðustu skilaboð, 1 = fyrir síðustu skilaboð o.s.frv.",
"Prompt": "Ábending",
"The prompt to be sent.": "Tilvitnunin sem á að senda.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Ekki er hægt að hnekkja þessari vísbendingu með persónuspjöldum, jafnvel þótt hnekkingar séu æskilegar.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Beinn PNG hlekkur (sjá",
"char_import_7": "fyrir leyfilega gestgjafa)",
"char_import_8": "RisuRealm karakter (beinn hlekkur)",
"char_import_9": "Soulkyn karakter (beinn hlekkur)",
"Supports importing multiple characters.": "Styður innflutning á mörgum stöfum.",
"Write each URL or ID into a new line.": "Skrifaðu hverja vefslóð eða auðkenni í nýja línu.",
"Export for character": "Flytja út fyrir persónu",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Combina i messaggi di sistema consecutivi in uno solo (escludendo i dialoghi di esempio). Potrebbe migliorare la coerenza per alcuni modelli.",
"Enable function calling": "Abilita la chiamata alla funzione",
"Send inline images": "Invia immagini inline",
"image_inlining_hint_1": "Invia immagini nei prompt se il modello lo supporta (ad esempio GPT-4V, Claude 3 o Llava 13B).\n Usa il",
"image_inlining_hint_1": "Invia immagini nei prompt se il modello lo supporta.\n Usa il",
"image_inlining_hint_2": "azione su qualsiasi messaggio o il",
"image_inlining_hint_3": "menu per allegare un file immagine alla chat.",
"Inline Image Quality": "Qualità dell'immagine in linea",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Prefill assistente",
"Start Claude's answer with...": "Inizia la risposta di Claude con...",
"Assistant Impersonation Prefill": "Precompilazione imitazione assistente",
"Use system prompt (Claude 2.1+ only)": "Usa prompt di sistema (solo Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Invia il prompt di sistema per i modelli supportati. Se disabilitato, il messaggio dell'utente viene aggiunto all'inizio del prompt.",
"User first message": "Primo messaggio dell'utente",
"Restore User first message": "Ripristina il primo messaggio dell'utente",
@@ -411,7 +410,6 @@
"Chat Start": "Inizio chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Aggiungi Inizio chat e Separatore di esempio a un elenco di stringhe di arresto.",
"Use as Stop Strings": "Usa come stringhe di arresto",
"context_allow_jailbreak": "Include il jailbreak alla fine del prompt, se definito nella carta personaggio E ''Preferisci Char. Il jailbreak'' è abilitato.\nQUESTO NON È CONSIGLIATO PER I MODELLI DI COMPLETAMENTO DEL TESTO, PUÒ PORTARE A UN RISULTATO CATTIVO.",
"Allow Jailbreak": "Consenti jailbreak",
"Context Order": "Ordine del contesto",
"Summary": "Riepilogo",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Scarica la chat come documento di testo semplice",
"Delete chat file": "Elimina il file di chat",
"Use tag as folder": "Contrassegna come cartella",
"Hide on character card": "Nascondi sulla scheda del personaggio",
"Delete tag": "Elimina il tag",
"Entry Title/Memo": "Titolo/Memo dell'Ingresso",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "Stato della voce WI:\r🔵 Costante\r🟢 Normale\r🔗 Vettorializzato\r❌Disabili",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "A chi verrà attribuito questo messaggio.",
"AI Assistant": "Assistente AI",
"prompt_manager_position": "Posizione",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Posizione di iniezione. Accanto ad altri suggerimenti (relativo) o in chat (assoluto).",
"Next to other prompts (relative) or in-chat (absolute).": "Accanto ad altri suggerimenti (relativo) o in chat (assoluto).",
"prompt_manager_relative": "Parente",
"prompt_manager_depth": "Profondità",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Profondità di iniezione. 0 = dopo l'ultimo messaggio, 1 = prima dell'ultimo messaggio, ecc.",
"0 = after the last message, 1 = before the last message, etc.": "0 = dopo l'ultimo messaggio, 1 = prima dell'ultimo messaggio, ecc.",
"Prompt": "Prompt",
"The prompt to be sent.": "La richiesta da inviare.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Questo prompt non può essere sostituito dalle schede personaggio, anche se si preferisce sostituirlo.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Collegamento PNG diretto (fare riferimento a",
"char_import_7": "per gli host consentiti)",
"char_import_8": "Personaggio RisuRealm (collegamento diretto)",
"char_import_9": "Personaggio Soulkyn (collegamento diretto)",
"Supports importing multiple characters.": "Supporta l'importazione di più caratteri.",
"Write each URL or ID into a new line.": "Scrivi ogni URL o ID in una nuova riga.",
"Export for character": "Esporta per carattere",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "連続するシステムメッセージを1つに結合します例のダイアログを除く。一部のモデルの一貫性を向上させる可能性があります。",
"Enable function calling": "関数呼び出しを有効にする",
"Send inline images": "インライン画像を送信",
"image_inlining_hint_1": "モデルがサポートしている場合GPT-4V、Claude 3、Llava 13Bなど、プロンプトで画像を送信します。",
"image_inlining_hint_1": "モデルがサポートしている場合、プロンプトで画像を送信します。",
"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": "ユーザーの最初のメッセージを復元する",
@@ -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": "文字カードで定義されていて、「文字 Jailbreak を優先」が有効になっている場合は、プロンプトの最後に Jailbreak が含まれます。\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": "WI エントリ ステータス: 🔵 定数 🟢 通常 🔗 ベクトル化 ❌ 無効",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "このメッセージの送信者。",
"AI Assistant": "AIアシスタント",
"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.": "このプロンプトは、オーバーライドが優先される場合でも、キャラクター カードによってオーバーライドすることはできません。",
@@ -1382,6 +1381,7 @@
"char_import_6": "直接PNGリンク参照",
"char_import_7": "許可されたホストの場合)",
"char_import_8": "RisuRealm キャラクター (直接リンク)",
"char_import_9": "Soulkyn キャラクター (直接リンク)",
"Supports importing multiple characters.": "複数のキャラクターのインポートをサポートします。",
"Write each URL or ID into a new line.": "各 URL または ID を新しい行に入力します。",
"Export for character": "キャラクターのエクスポート",

View File

@@ -237,7 +237,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 또는 Llava 13B).\n 사용",
"image_inlining_hint_1": "모델이 지원하는 경우 메시지로 이미지를 보냅니다.\n 사용",
"image_inlining_hint_2": "메시지에 대한 조치 또는",
"image_inlining_hint_3": "채팅에 이미지 파일을 첨부하는 메뉴입니다.",
"Inline Image Quality": "인라인 이미지 품질",
@@ -255,7 +255,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": "사용자의 첫 번째 메시지 복원",
@@ -421,7 +420,6 @@
"Chat Start": "채팅 시작",
"Add Chat Start and Example Separator to a list of stopping strings.": "중지 문자열 목록에 채팅 시작 및 예제 구분 기호를 추가합니다.",
"Use as Stop Strings": "중지 문자열로 사용",
"context_allow_jailbreak": "캐릭터 카드에 정의되어 있고 ''Prefer Char. Jailbreak''가 활성화되어 있는 경우 프롬프트 끝에 Jailbreak를 포함합니다.\n이는 텍스트 완성 모델에 권장되지 않으며, 나쁜 출력으로 이어질 수 있습니다.",
"Allow Jailbreak": "탈옥 허용",
"Context Order": "컨텍스트 순서",
"Summary": "요약",
@@ -956,6 +954,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": "WI 입국 상태:\r🔵 상시\r🟢 조건 만족시\r🔗 벡터화됨\r❌ 비활성화",
@@ -1027,11 +1026,11 @@
"To whom this message will be attributed.": "해당 프롬프트에 부여할 역할은 무엇인가요?",
"AI Assistant": "AI 어시스턴트",
"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_in_chat": "깊이에 따라",
"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.": "이 프롬프트는 고급 정의에서 재정의가 선호되는 경우에도 재정의될 수 없습니다.",
@@ -1399,6 +1398,7 @@
"char_import_6": "직접 PNG 링크(참조",
"char_import_7": "허용된 호스트의 경우)",
"char_import_8": "RisuRealm 캐릭터 (직접링크)",
"char_import_9": "Soulkyn 캐릭터 (직접링크)",
"Supports importing multiple characters.": "여러 문자 가져오기를 지원합니다.",
"Write each URL or ID into a new line.": "각 URL 또는 ID를 새 줄에 작성합니다.",
"Export for character": "캐릭터 내보내기",
@@ -1501,7 +1501,7 @@
"enable_functions_desc_1": "다양한 확장 프로그램에서 추가 기능을 제공하기 위한",
"enable_functions_desc_2": "기능 도구",
"enable_functions_desc_3": "를 사용할 수 있게 합니다.",
"Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.": "삽입 깊이. 상대적인 (프롬프트 관리 목록에 있는 다른 프롬프트들에 비해) 또는 @Depth 깊이에 따라.",
"Relative (to other prompts in prompt manager) or In-chat @ Depth.": "상대적인 (프롬프트 관리 목록에 있는 다른 프롬프트들에 비해) 또는 @Depth 깊이에 따라.",
"Instruct Template": "지시 템플릿",
"System Message Sequences": "시스템 메시지 시퀀스",
"System Prompt Sequences": "시스템 프롬프트 시퀀스",
@@ -1520,7 +1520,6 @@
"Always": "항상 추가함",
"Separators as Stop Strings": "구분 기호를 정지 문자열로 사용하기",
"Names as Stop Strings": "캐릭터의 이름들을 정지 문자열로 사용하기",
"Allow Post-History Instructions": "Post-History 지침 허용",
"Image Captioning": "이미지 캡셔닝",
"Automatically caption images": "자동으로 이미지에 대한 설명 문장으로 나타내기",
"Edit captions before saving": "저장하기 전에 이미지에 대한 설명 문장 편집하기",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Combineert opeenvolgende systeemberichten tot één (exclusief voorbeeld dialogen). Kan de coherentie verbeteren voor sommige modellen.",
"Enable function calling": "Schakel functieaanroepen in",
"Send inline images": "Inline afbeeldingen verzenden",
"image_inlining_hint_1": "Verzendt afbeeldingen in prompts als het model dit ondersteunt (bijvoorbeeld GPT-4V, Claude 3 of Llava 13B).\n Gebruik de",
"image_inlining_hint_1": "Verzendt afbeeldingen in prompts als het model dit ondersteunt.\n Gebruik de",
"image_inlining_hint_2": "actie op elk bericht of de",
"image_inlining_hint_3": "menu om een afbeeldingsbestand aan de chat toe te voegen.",
"Inline Image Quality": "Inline-beeldkwaliteit",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Assistent Voorvullen",
"Start Claude's answer with...": "Start het antwoord van Claude met...",
"Assistant Impersonation Prefill": "Vooraf invullen van assistent-imitatie",
"Use system prompt (Claude 2.1+ only)": "Gebruik systeemprompt (alleen Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Verzend de systeemprompt voor ondersteunde modellen. Als dit is uitgeschakeld, wordt het gebruikersbericht toegevoegd aan het begin van de prompt.",
"User first message": "Bericht van de gebruiker eerst",
"Restore User first message": "Herstel gebruiker eerste bericht",
@@ -411,7 +410,6 @@
"Chat Start": "Chatstart",
"Add Chat Start and Example Separator to a list of stopping strings.": "Voeg Chat Start en Voorbeeldscheidingsteken toe aan een lijst met stoptekenreeksen.",
"Use as Stop Strings": "Gebruik als stopreeksen",
"context_allow_jailbreak": "Inclusief jailbreak aan het einde van de prompt, indien gedefinieerd in de karakterkaart EN ''Prefer Char. Jailbreak'' is ingeschakeld.\nDIT WORDT NIET AANBEVOLEN VOOR MODELLEN VOOR HET INVOEREN VAN TEKST. KAN TOT SLECHTE UITVOER LEIDEN.",
"Allow Jailbreak": "Jailbreak toestaan",
"Context Order": "Contextvolgorde",
"Summary": "Samenvatting",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Download chat als plat tekstbestand",
"Delete chat file": "Chatbestand verwijderen",
"Use tag as folder": "Taggen als map",
"Hide on character card": "Verbergen op karakterkaart",
"Delete tag": "Tag verwijderen",
"Entry Title/Memo": "Titel/Memo",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "WI-invoerstatus:\r🔵Constant\r🟢 Normaal\r🔗 Gevectoriseerd\r❌ Uitgeschakeld",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "Aan wie dit bericht wordt toegeschreven.",
"AI Assistant": "AI-assistent",
"prompt_manager_position": "Positie",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Injectiepositie. Naast andere prompts (relatief) of in-chat (absoluut).",
"Next to other prompts (relative) or in-chat (absolute).": "Naast andere prompts (relatief) of in-chat (absoluut).",
"prompt_manager_relative": "Familielid",
"prompt_manager_depth": "Diepte",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Injectiediepte. 0 = na het laatste bericht, 1 = voor het laatste bericht, etc.",
"0 = after the last message, 1 = before the last message, etc.": "0 = na het laatste bericht, 1 = voor het laatste bericht, etc.",
"Prompt": "Prompt",
"The prompt to be sent.": "De prompt die verzonden moet worden.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Deze prompt kan niet worden overschreven door karakterkaarten, zelfs als overschrijvingen de voorkeur hebben.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Directe PNG-link (zie",
"char_import_7": "voor toegestane hosts)",
"char_import_8": "RisuRealm-personage (directe link)",
"char_import_9": "Soulkyn-personage (directe link)",
"Supports importing multiple characters.": "Ondersteunt het importeren van meerdere tekens.",
"Write each URL or ID into a new line.": "Schrijf elke URL of ID op een nieuwe regel.",
"Export for character": "Exporteren voor karakter",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Combina mensagens do sistema consecutivas em uma (excluindo diálogos de exemplo). Pode melhorar a coerência para alguns modelos.",
"Enable function calling": "Habilitar chamada de função",
"Send inline images": "Enviar imagens inline",
"image_inlining_hint_1": "Envia imagens em prompts se o modelo suportar (por exemplo, GPT-4V, Claude 3 ou Llava 13B).\n Use o",
"image_inlining_hint_1": "Envia imagens em prompts se o modelo suportar.\n Use o",
"image_inlining_hint_2": "ação em qualquer mensagem ou",
"image_inlining_hint_3": "menu para anexar um arquivo de imagem ao chat.",
"Inline Image Quality": "Qualidade de imagem embutida",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Preenchimento prévio do assistente",
"Start Claude's answer with...": "Iniciar resposta de Claude com...",
"Assistant Impersonation Prefill": "Pré-preenchimento de representação do assistente",
"Use system prompt (Claude 2.1+ only)": "Usar prompt do sistema (apenas Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Enviar o prompt do sistema para modelos suportados. Se desativado, a mensagem do usuário é adicionada ao início do prompt.",
"User first message": "Primeira mensagem do usuário",
"Restore User first message": "Restaurar a primeira mensagem do usuário",
@@ -411,7 +410,6 @@
"Chat Start": "Início do Chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Adicione o início do bate-papo e o separador de exemplo a uma lista de strings de parada.",
"Use as Stop Strings": "Usar como Strings de Parada",
"context_allow_jailbreak": "Inclui Jailbreak no final do prompt, se definido no cartão de personagem E ''Prefer Char. Jailbreak'' está habilitado.\nISTO NÃO É RECOMENDADO PARA MODELOS DE COMPLEMENTAÇÃO DE TEXTO, PODE LEVAR A UMA SAÍDA RUIM.",
"Allow Jailbreak": "Permitir jailbreak",
"Context Order": "Ordem de Contexto",
"Summary": "Resumo",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Baixar bate-papo como documento de texto simples",
"Delete chat file": "Excluir arquivo de bate-papo",
"Use tag as folder": "Marcar como pasta",
"Hide on character card": "Ocultar no cartão do personagem",
"Delete tag": "Excluir tag",
"Entry Title/Memo": "Título da Entrada/Memo",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "Status de entrada WI:\r🔵 Constante\r🟢 Normais\r🔗 Vetorizado\r❌ Desativado",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "A quem esta mensagem será atribuída.",
"AI Assistant": "Assistente de IA",
"prompt_manager_position": "Posição",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Posição de injeção. Ao lado de outras solicitações (relativas) ou no chat (absolutas).",
"Next to other prompts (relative) or in-chat (absolute).": "Ao lado de outras solicitações (relativas) ou no chat (absolutas).",
"prompt_manager_relative": "Relativo",
"prompt_manager_depth": "Profundidade",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Profundidade de injeção. 0 = após a última mensagem, 1 = antes da última mensagem, etc.",
"0 = after the last message, 1 = before the last message, etc.": "0 = após a última mensagem, 1 = antes da última mensagem, etc.",
"Prompt": "Prompt",
"The prompt to be sent.": "O prompt a ser enviado.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Este prompt não pode ser substituído por cartas de personagem, mesmo que as substituições sejam preferidas.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Link PNG direto (consulte",
"char_import_7": "para hosts permitidos)",
"char_import_8": "Personagem RisuRealm (link direto)",
"char_import_9": "Personagem Soulkyn (link direto)",
"Supports importing multiple characters.": "Suporta importação de vários caracteres.",
"Write each URL or ID into a new line.": "Escreva cada URL ou ID em uma nova linha.",
"Export for character": "Exportar para personagem",

View File

@@ -52,7 +52,7 @@
"Presence Penalty": "Штраф за присутствие",
"Top A": "Top А",
"Tail Free Sampling": "Tail Free Sampling",
"Rep. Pen. Slope": "Rep. Pen. Slope",
"Rep. Pen. Slope": "Рост штрафа за повтор к концу промпта",
"Top K": "Top K",
"Top P": "Top P",
"Do Sample": "Включить сэмплинг",
@@ -162,9 +162,9 @@
"Story String": "Строка истории",
"Example Separator": "Разделитель примеров сообщений",
"Chat Start": "Начало чата",
"Activation Regex": "Regex для активации",
"Activation Regex": "Рег. выражение для активации",
"Instruct Mode": "Режим Instruct",
"Wrap Sequences with Newline": "Отделять строки символом новой строки",
"Wrap Sequences with Newline": "Каждая строка из шаблона на новой строке",
"Include Names": "Добавлять имена",
"Force for Groups and Personas": "Также для групп и персон",
"System Prompt": "Системный промпт",
@@ -299,7 +299,7 @@
"AI Horde": "AI Horde",
"NovelAI": "NovelAI",
"OpenAI API key": "Ключ для API OpenAI",
"Trim spaces": "Обрезать пробелы",
"Trim spaces": "Обрезать пробелы в начале и конце",
"Trim Incomplete Sentences": "Удалять неоконченные предложения",
"Include Newline": "Добавлять новую строку",
"Non-markdown strings": "Строки без разметки",
@@ -510,7 +510,7 @@
"New preset": "Новый пресет",
"Delete preset": "Удалить пресет",
"API Connections": "Соединения с API",
"Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Может помочь с плохими ответами ставя в очередь только подтвержденных работников. Может замедлить время ответа.",
"Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Может помочь при плохих ответах, делая запросы только к доверенным рабочим машинам. Может замедлить время ответа.",
"Clear your API key": "Стереть ключ от API",
"Refresh models": "Обновить модели",
"Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Получите свой OpenRouter API токен используя OAuth. У вас будет открыта вкладка openrouter.ai",
@@ -551,7 +551,7 @@
"Token counts may be inaccurate and provided just for reference.": "Счетчик токенов может быть неточным, используйте как ориентир",
"Click to select a new avatar for this character": "Нажмите чтобы выбрать новый аватар для этого персонажа",
"Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Пример:\n [{{user}} is a 28-year-old Romanian cat girl.]",
"Toggle grid view": "Переключить вид сетки",
"Toggle grid view": "Сменить вид сетки",
"Add to Favorites": "Добавить в Избранное",
"Advanced Definition": "Расширенное описание",
"Character Lore": "Лор персонажа",
@@ -624,7 +624,7 @@
"UI Theme": "Тема UI",
"This message is invisible for the AI": "Это сообщение невидимо для ИИ",
"Sampler Priority": "Приоритет сэмплеров",
"Ooba only. Determines the order of samplers.": "Только oobabooga. Определяет порядок сэмплеров.",
"Ooba only. Determines the order of samplers.": "Только для oobabooga. Определяет порядок сэмплеров.",
"Load default order": "Загрузить стандартный порядок",
"Max Tokens Second": "Макс. кол-во токенов в секунду",
"CFG": "CFG",
@@ -661,7 +661,6 @@
"Send inline images": "Отправлять inline-картинки",
"Assistant Prefill": "Префилл для ассистента",
"Start Claude's answer with...": "Начать ответ Клода с...",
"Use system prompt (Claude 2.1+ only)": "Использовать системный промпт (только Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Отправлять системный промпт для поддерживаемых моделей. Если отключено, в начало промпта добавляется сообщение пользователя.",
"Prompts": "Промпты",
"Total Tokens:": "Всего токенов:",
@@ -695,7 +694,7 @@
"Medium": "Средний",
"Aggressive": "Агрессивный",
"Very aggressive": "Очень агрессивный",
"Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling.&#13;В единицах 1e-4; разумное значение - 3.&#13;Установите в 0, чтобы отключить.&#13;См. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.",
"Eta_Cutoff_desc": "Eta cutoff - основной параметр специальной техники сэмплинга под названием Eta Sampling.\nВ единицах 1e-4; разумное значение - 3.\nУстановите в 0, чтобы отключить.\nСм. статью Truncation Sampling as Language Model Desmoothing от Хьюитт и др. (2022) для получения подробной информации.",
"Learn how to contribute your idle GPU cycles to the Horde": "Узнайте, как использовать время простоя вашего GPU для помощи Horde",
"Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Используйте соответствующий токенизатор для моделей Google через их API. Медленная обработка подсказок, но предлагает намного более точный подсчет токенов.",
"Load koboldcpp order": "Загрузить порядок из koboldcpp",
@@ -964,8 +963,9 @@
"char_import_3": "Персонаж с JanitorAI (прямая ссылка или UUID)",
"char_import_4": "Персонаж с Pygmalion.chat (прямая ссылка или UUID)",
"char_import_5": "Персонаж с AICharacterCards.com (прямая ссылка или ID)",
"char_import_6": "Прямая ссылка на PNG-файл (чтобы узнать список разрешённых хостов, загляните в",
"char_import_6": "Прямая ссылка на PNG-файл (список разрешённых хостов находится в",
"char_import_7": ")",
"char_import_9": "Персонаж с Soulkyn (прямая ссылка)",
"Grammar String": "Грамматика",
"GBNF or EBNF, depends on the backend in use. If you're using this you should know which.": "GBNF или EBNF, зависит от бэкенда. Если вы это используете, то, скорее всего, сами знаете, какой именно.",
"Account": "Аккаунт",
@@ -1012,14 +1012,14 @@
"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 = перед последним сообщением, и т.д.",
"The prompt to be sent.": "Отправляемый ИИ промпт.",
"0 = after the last message, 1 = before the last message, etc.": "0 = после последнего сообщения, 1 = перед последним сообщением, и т.д.",
"The prompt to be sent.": "Текст промпта.",
"prompt_manager_forbid_overrides": "Запретить перезапись",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Карточка персонажа не сможет перезаписать этот промпт, даже если настройки отдают приоритет именно ей.",
"image_inlining_hint_1": "Отправлять картинки как часть промпта, если позволяет модель (такой функционал поддерживают GPT-4V, Claude 3 или Llava 13B). Чтобы добавить в чат изображение, используйте на нужном сообщении действие",
"image_inlining_hint_1": "Отправлять картинки как часть промпта, если позволяет модель. Чтобы добавить в чат изображение, используйте на нужном сообщении действие",
"image_inlining_hint_2": ". Также это можно сделать через меню",
"image_inlining_hint_3": ".",
"Contest Winners": "Победители конкурса",
@@ -1232,11 +1232,10 @@
"Top P & Min P": "Top P & Min P",
"llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.": "llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.",
"Helps the model to associate messages with characters.": "Помогает модели связывать сообщения с персонажами.",
"character_names_default": "Except for groups and past personas. Otherwise, make sure you provide names in the prompt.",
"character_names_default": "Добавлять префиксы для групповых чатов и предыдущих персон. В остальных случаях указывайте имена в промпте иными способами.",
"Completion": "Completion Object",
"character_names_completion": "Только латинские буквы, цифры и знак подчёркивания. Работает не для всех бэкендов, в частности для Claude, MistralAI, Google.",
"Use AI21 Tokenizer": "Использовать токенайзер AI21",
"Use system prompt": "Использовать системный промпт",
"(Gemini 1.5 Pro/Flash only)": "(только Gemini 1.5 Pro/Flash)",
"Merges_all_system_messages_desc_1": "Объединяет все системные сообщения до первого не-системного, и отсылает их в поле",
"Merges_all_system_messages_desc_2": ".",
@@ -1257,7 +1256,6 @@
"Peek a password": "Посмотреть пароль",
"Clear your cookie": "Clear your cookie",
"Add Chat Start and Example Separator to a list of stopping strings.": "Использовать Начало чата и Разделитель примеров сообщений в качестве стоп-строк.",
"context_allow_jailbreak": "Если в карточке есть джейлбрейк И ПРИ ЭТОМ включена опция \"Приоритет джейлбрейку из карточки персонажа\", то этот джейлбрейк добавляется в конец промпта.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.",
"Context Order": "Context Order",
"Summary": "Summary",
"Example Dialogues": "Примеры диалогов",
@@ -1278,7 +1276,7 @@
"Will be inserted as a last prompt line when using system/neutral generation.": "Will be inserted as a last prompt line when using system/neutral generation.",
"If a stop sequence is generated, everything past it will be removed from the output (inclusive).": "Если ИИ генерирует стоп-строку, то всё после неё будет вырезано из ответа (включая и саму стоп-строку).",
"Will be inserted at the start of the chat history if it doesn't start with a User message.": "Вставляется в начале истории чата, если она начинается не с сообщения пользователя.",
"Global World Info/Lorebook activation settings": "Настройки активации глобального лорбука / Информации о мире",
"Global World Info/Lorebook activation settings": "Глобальные настройки активации лорбука / Информации о мире",
"Click to expand": "Щёлкните, чтобы развернуть",
"Insertion Strategy": "Как инжектить",
"Only the entries with the most number of key matches will be selected for Inclusion Group filtering": "Only the entries with the most number of key matches will be selected for Inclusion Group filtering",
@@ -1621,7 +1619,7 @@
"Using a proxy that you're not running yourself is a risk to your data privacy.": "Помните, что используя чужую прокси, вы подвергаете риску конфиденциальность своих данных.",
"ANY support requests will be REFUSED if you are using a proxy.": "НЕ РАССЧИТЫВАЙТЕ на нашу поддержку, если используете прокси.",
"Do not proceed if you do not agree to this!": "Не продолжайте, если не согласны с этими условиями!",
"Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.": "Как рассчитывать позицию, на которую вставляется данный промпт. Относительно других промтов в менеджере, либо на опред. глубину в чате.",
"Relative (to other prompts in prompt manager) or In-chat @ Depth.": "Относительно других промтов в менеджере, либо на опред. глубину в чате.",
"prompt_manager_in_chat": "На глубине в чате",
"01.AI API Key": "Ключ от API 01.AI",
"01.AI Model": "Модель 01.AI",
@@ -1647,10 +1645,9 @@
"mui_reset": "Сброс",
"Quick 'Impersonate' button": "Быстрое перевоплощение",
"Show a button in the input area to ask the AI to impersonate your character for a single message": "Показать в поле ввода кнопку, по нажатии на которую ИИ сгенерирует одно сообщение от лица вашего персонажа.",
"Separators as Stop Strings": "Разделители как стоп-строки",
"Names as Stop Strings": "Имена как стоп-строки",
"Separators as Stop Strings": "Разделители в качестве стоп-строк",
"Names as Stop Strings": "Имена в качестве стоп-строк",
"Add Character and User names to a list of stopping strings.": "Добавлять имена персонажа и пользователя в список стоп-строк.",
"Allow Post-History Instructions": "Разрешить инструкции после истории",
"context_allow_post_history_instructions": "Добавлять в конец промпта инструкции после истории. Работает только при наличии таких инструкций в карточке И при включенной опции ''Приоритет инструкциям из карточек''.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.",
"First User Prefix": "Первый префикс пользователя",
"Inserted before the first User's message.": "Вставляется перед первым сообщением пользователя.",
@@ -1916,8 +1913,8 @@
"Cannot restore GUI preset": "Пресет для Gui восстановить нельзя",
"Default preset cannot be restored": "Невозможно восстановить пресет по умолчанию",
"Default template cannot be restored": "Невозможно восстановить шаблон по умолчанию",
"Resetting a <b>default preset</b> will restore the default settings": "Сброс <b>стандартного пресета</b> восстановит настройки по умолчанию.",
"Resetting a <b>default template</b> will restore the default settings.": "Сброс <b>стандартного шаблона</b> восстановит настройки по умолчанию.",
"Resetting a <b>default preset</b> will restore the default settings.": "Сброс <b>комплектного пресета</b> восстановит настройки по умолчанию.",
"Resetting a <b>default template</b> will restore the default settings.": "Сброс <b>комплектного шаблона</b> восстановит настройки по умолчанию.",
"Are you sure?": "Вы уверены?",
"Default preset restored": "Стандартный пресет восстановлен",
"Default template restored": "Стандартный шаблон восстановлен",
@@ -2048,11 +2045,11 @@
"prompt_post_processing_merge": "Объединять идущие подряд сообщения с одной ролью",
"prompt_post_processing_semi": "Semi-strict (чередовать роли)",
"prompt_post_processing_strict": "Strict (чередовать роли, сначала пользователь)",
"Select Horde models": "Выбрать модель из Horde",
"Select Horde models": "Выберите модель из Horde",
"Model ID (optional)": "Идентификатор модели (необязательно)",
"Derive context size from backend": "Использовать бэкенд для определения размера контекста",
"Rename current preset": "Переименовать пресет",
"No Worlds active. Click here to select.": "Нет активных миров. Нажмите, чтобы выбрать.",
"No Worlds active. Click here to select.": "Активных миров нет, ЛКМ для выбора.",
"Title/Memo": "Название",
"Strategy": "Статус",
"Position": "Позиция",
@@ -2171,7 +2168,7 @@
"instruct_derived": "Считывать из метаданных модели (по возможности)",
"Confirm token parsing with": "Чтобы убедиться в правильности выделения токенов, используйте",
"Reasoning Effort": "Рассуждения",
"Constrains effort on reasoning for reasoning models.": "Регулирует объём внутренних рассуждений модели (reasoning), для моделей которые поддерживают эту возможность.\nНа данный момент поддерживаются три значения: Подробные, Обычные, Поверхностные.\nПри менее подробном рассуждении ответ получается быстрее, а также экономятся токены, уходящие на рассуждения.",
"Constrains effort on reasoning for reasoning models.": "Регулирует объём внутренних рассуждений модели (reasoning), для моделей, которые поддерживают эту возможность.\nПри менее подробном рассуждении ответ получается быстрее, а также экономятся токены, уходящие на рассуждения.",
"openai_reasoning_effort_low": "Поверхностные",
"openai_reasoning_effort_medium": "Обычные",
"openai_reasoning_effort_high": "Подробные",
@@ -2257,6 +2254,7 @@
"Manual": "Когда вы скажете",
"Auto Mode delay": "Задержка авто-режима",
"Use tag as folder": "Тег-папка",
"Hide on character card": "Скрыть на карточке персонажа",
"All connections to ${0} have been removed.": "Все связи с персонажем ${0} были удалены.",
"Personas Unlocked": "Персоны отвязаны",
"Remove All Connections": "Удалить все связи",
@@ -2276,8 +2274,8 @@
"Persona Name Not Set": "У персоны отсутствует имя",
"You must bind a name to this persona before you can set a lorebook.": "Перед привязкой лорбука персоне необходимо присвоить имя.",
"Default Persona Removed": "Персона по умолчанию снята",
"Persona is locked to the current character": "Персона закреплена за этим персонажем",
"Persona is locked to the current chat": "Персона закреплена за этим чатом",
"Persona is locked to the current character": "Персона закреплена за текущим персонажем",
"Persona is locked to the current chat": "Персона закреплена за текущим чатом",
"characters": "перс.",
"character": "персонаж",
"in this group": "в группе",
@@ -2338,5 +2336,88 @@
"Reasoning already exists.": "Рассуждения уже присутствуют.",
"Edit Message": "Редактирование",
"Status check bypassed": "Проверка статуса отключена",
"Valid": "Работает"
"Valid": "Работает",
"Use Group Scoring": "Использовать Group Scoring",
"Only the entries with the most number of key matches will be selected for Inclusion Group filtering": "До групповых фильтров будут допущены только записи с наибольшим кол-вом совпадений",
"Can be used to automatically activate Quick Replies": "Используется для автоматической активации быстрых ответов (Quick Replies)",
"( None )": "(Отсутствует)",
"Tie this entry to specific characters or characters with specific tags": "Привязать запись к опред. персонажам или персонажам с заданными тегами",
"Move Entry to Another Lorebook": "Переместить запись в другой лорбук",
"There are no other lorebooks to move to.": "Некуда перемещать: не найдено других лорбуков.",
"Select Target Lorebook": "Выберите куда переместить",
"Move '${0}' to:": "Переместить '${0}' в:",
"Please select a target lorebook.": "Выберите лорбук, в который будет перемещена запись.",
"Scan depth cannot be negative": "Глубина сканирования не может быть отрицательной",
"Scan depth cannot exceed ${0}": "Глубина сканирования не может превышать ${0}",
"Select your current Reasoning Template": "Выберите текущий Шаблон рассуждений",
"Delete template": "Удалить шаблон",
"Reasoning Template": "Шаблон рассуждений",
"openai_reasoning_effort_auto": "Авто",
"openai_reasoning_effort_minimum": "Минимальные",
"openai_reasoning_effort_maximum": "Максимальные",
"OpenAI-style options: low, medium, high. Minimum and maximum are aliased to low and high. Auto does not send an effort level.": "OpenAI принимает следующее: low (Поверхностные), medium (Обычные), high (Подробные). Minimum (Минимальные) - то же самое, что low. Maximum (Максимальные) - то же самое, что high. При выборе Auto (Авто) значение не отсылается вообще.",
"Allocates a portion of the response length for thinking (low: 10%, medium: 25%, high: 50%). Other options are model-dependent.": "Резервирует часть ответа для рассуждений (Поверхностные: 10% ответа, Обычные: 25%, Подробные: 50%). Остальные значения зависят от конкретной модели.",
"xAI Model": "Модель xAI",
"xAI API Key": "Ключ от API xAI",
"HuggingFace Token": "Токен HuggingFace",
"Endpoint URL": "Адрес эндпоинта",
"Example: https://****.endpoints.huggingface.cloud": "Пример: https://****.endpoints.huggingface.cloud",
"Featherless Model Selection": "Выбор модели из Featherless",
"category": "категория",
"Top": "Топовые",
"All Classes": "Все классы",
"Date Asc": "Дата, возрастание",
"Date Desc": "Дата, убывание",
"Background Image": "Фоновое изображение",
"Delete the background?": "Удалить фон?",
"Tags_as_Folders_desc": "Чтобы тег отображался как папка, его нужно отметить таковым в меню управления тегами. Нажмите сюда, чтобы открыть его.",
"tag_entries": "раз исп.",
"Multiple personas are connected to this character.\nSelect a persona to use for this chat.": "К этому персонажу привязано несколько персон.\nВыберите персону, которую хотите использовать в этом чате.",
"Select Persona": "Выберите персону",
"Completion Object": "Как часть Completion Object",
"Move ${0} to:": "Переместить '${0}' в:",
"Chat Scenario Override": "Перезапись сценария чата",
"Unique to this chat.": "Действует только в рамках текущего чата.",
"All group members will use the following scenario text instead of what is specified in their character cards.": "Все участники группы будут использовать этот сценарий вместо того, который указан в карточке.",
"Checkpoints inherit the scenario override from their parent, and can be changed individually after that.": "Чекпоинты наследуют сценарий родителя, после отделения его можно менять.",
"Delete Tag": "Удалить тег",
"Do you want to delete the tag": "Вы точно хотите удалить тег",
"If you want to merge all references to this tag into another tag, select it below:": "Если хотите заменить ссылки на этот тег на какой-то другой, то выберите из списка:",
"Open Folder (Show all characters even if not selected)": "Открытая папка (показать всех персонажей, включая невыбранных)",
"Closed Folder (Hide all characters unless selected)": "Закрытая папка (скрыть всех персонажей, кроме выбранных)",
"No Folder": "Не папка",
"Show only favorites": "Показать только избранных персонажей",
"Show only groups": "Показать только группы",
"Show only folders": "Показать только папки",
"Manage tags": "Панель управления тегами",
"Show Tag List": "Показать список тегов",
"Clear all filters": "Сбросить все фильтры",
"There are no items to display.": "Отображать абсолютно нечего.",
"Characters and groups hidden by filters or closed folders": "Персонажи и группы скрыты настройками фильтров либо закрытыми папками",
"Otterly empty": "Всё что можно, всё выдрано",
"Here be dragons": "Список настолько очистился, что в него вернулись драконы",
"Kiwibunga": "Настолько пусто, что киви прилетела посидеть",
"Pump-a-Rum": "Пу-пу-пу",
"Croak it": "Только кваканье лягушек и стрёкот сверчков",
"${0} character hidden.": "Персонажей скрыто: ${0}.",
"${0} characters hidden.": "Персонажей скрыто: ${0}.",
"/ page": "/ стр.",
"Context Length": "Размер контекста",
"Added On": "Добавлена",
"Class": "Класс",
"Bulk_edit_characters": "Массовое редактирование персонажей\n\nЛКМ, чтобы выделить либо отменить выделение персонажа\nShift+ЛКМ, чтобы массово выделить либо отменить выделение персонажей\nПКМ, чтобы выбрать действие",
"Bulk select all characters": "Выбрать всех персонажей",
"Duplicate": "Клонировать",
"Next page": "След. страница",
"Previous page": "Пред. страница",
"Group: ${0}": "Группа: ${0}",
"You deleted a character/chat and arrived back here for safety reasons! Pick another character!": "Вы удалили персонажа или чат, и мы из соображений безопасности перенесли вас на эту страницу! Выберите другого персонажа!",
"Group is empty.": "Группа пуста.",
"No characters available": "Персонажей нет",
"Choose what to export": "Выберите, что экспортировать",
"Text Completion Preset": "Пресет для режима Text Completion",
"Update enabled": "Обновить включенные",
"Could not connect to API": "Не удалось подключиться к API",
"Connected to API": "Соединение с API установлено",
"Go back": "Назад"
}

View File

@@ -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 або Llava 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)": "Використовувати системний промпт (тільки Claude 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": "Відновити перше повідомлення користувача",
@@ -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": "Включає втечу з в’язниці в кінці підказки, якщо визначено в картці символів ТА «Переважати символ. Втечу з в'язниці'' увімкнено.\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": "Статус вступу до WI:\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.": "Це підказка не може бути перевизначено картками символів, навіть якщо перевизначення є кращим.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Пряме посилання на PNG (див",
"char_import_7": "для дозволених хостів)",
"char_import_8": "Персонаж RisuRealm (пряме посилання)",
"char_import_9": "Персонаж Soulkyn (пряме посилання)",
"Supports importing multiple characters.": "Підтримується імпорт кількох символів.",
"Write each URL or ID into a new line.": "Напишіть кожну URL-адресу або ідентифікатор у новому рядку.",
"Export for character": "Експорт для персонажа",

View File

@@ -235,7 +235,7 @@
"Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Kết hợp các tin nhắn hệ thống liên tiếp thành một (loại bỏ các đoạn hội thoại mẫu). Có thể cải thiện tính nhất quán cho một số model.",
"Enable function calling": "Sử dụng tính năng gọi hàm (function calling)",
"Send inline images": "Gửi hình ảnh nội bộ",
"image_inlining_hint_1": "Gửi hình ảnh theo Prompt nếu kiểu máy hỗ trợ (ví dụ: GPT-4V, Claude 3 hoặc Llava 13B).\n Sử dụng",
"image_inlining_hint_1": "Gửi hình ảnh theo Prompt nếu kiểu máy hỗ trợ.\n Sử dụng",
"image_inlining_hint_2": "hành động đối với bất kỳ tin nhắn nào hoặc",
"image_inlining_hint_3": "menu để đính kèm tệp hình ảnh vào cuộc trò chuyện.",
"Inline Image Quality": "Chất lượng hình ảnh nội tuyến",
@@ -253,7 +253,6 @@
"Assistant Prefill": "Prefill trợ lý",
"Start Claude's answer with...": "Claude trả lời bắt đầu bằng...",
"Assistant Impersonation Prefill": "Prefill cho mạo danh trợ lý",
"Use system prompt (Claude 2.1+ only)": "Sử dụng prompt hệ thống (Chỉ áp dụng từ Claude 2.1+)",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Gửi yêu cầu hệ thống cho các model được hỗ trợ. Nếu bị vô hiệu hóa, tin nhắn của người dùng sẽ được thêm vào đầu yêu cầu.",
"User first message": "Tin nhắn đầu tiên của người dùng",
"Restore User first message": "Khôi phục tin nhắn đầu tiên của người dùng",
@@ -411,7 +410,6 @@
"Chat Start": "Bắt đầu Chat",
"Add Chat Start and Example Separator to a list of stopping strings.": "Thêm Bắt đầu trò chuyện và Dấu phân cách ví dụ vào danh sách các chuỗi dừng.",
"Use as Stop Strings": "Sử dụng như chuỗi dừng",
"context_allow_jailbreak": "Bao gồm Bẻ khóa ở cuối Prompt, nếu được xác định trong thẻ ký tự VÀ ''Thích Char. Bẻ khóa'' được bật.\nĐIỀU NÀY KHÔNG ĐƯỢC KHUYẾN NGHỊ CHO CÁC MÔ HÌNH HOÀN THÀNH VĂN BẢN, CÓ THỂ DẪN ĐẾN ĐẦU RA XẤU.",
"Allow Jailbreak": "Cho phép bẻ khóa",
"Context Order": "Thứ tự bối cảnh",
"Summary": "Bản tóm tắt",
@@ -940,6 +938,7 @@
"Download chat as plain text document": "Tải xuống cuộc trò chuyện dưới dạng tài liệu văn bản đơn giản",
"Delete chat file": "Xóa tệp trò chuyện",
"Use tag as folder": "Gắn thẻ dưới dạng thư mục",
"Hide on character card": "Ẩn trên thẻ nhân vật",
"Delete tag": "Xóa tag",
"Entry Title/Memo": "Tiêu đề Đăng nhập/Ghi chú",
"WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled": "Trạng thái nhập WI:\r🔵 Hằng số\r🟢 Bình thường\r🔗 Được vector hóa\r❌ Bị vô hiệu hóa",
@@ -1010,10 +1009,10 @@
"To whom this message will be attributed.": "Tin nhắn này sẽ được quy cho ai.",
"AI Assistant": "Trợ lý AI",
"prompt_manager_position": "Chức vụ",
"Injection position. Next to other prompts (relative) or in-chat (absolute).": "Vị trí tiêm. Bên cạnh các Prompt khác (tương đối) hoặc trong trò chuyện (tuyệt đối).",
"Next to other prompts (relative) or in-chat (absolute).": "Bên cạnh các Prompt khác (tương đối) hoặc trong trò chuyện (tuyệt đối).",
"prompt_manager_relative": "Liên quan đến",
"prompt_manager_depth": "Chiều sâu",
"Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Độ sâu phun. 0 = sau tin nhắn cuối cùng, 1 = trước tin nhắn cuối cùng, v.v.",
"0 = after the last message, 1 = before the last message, etc.": "0 = sau tin nhắn cuối cùng, 1 = trước tin nhắn cuối cùng, v.v.",
"Prompt": "Prompt",
"The prompt to be sent.": "Lời nhắc được gửi đi.",
"This prompt cannot be overridden by character cards, even if overrides are preferred.": "Lời nhắc này không thể bị ghi đè bằng thẻ ký tự, ngay cả khi ưu tiên ghi đè.",
@@ -1380,6 +1379,7 @@
"char_import_6": "Nhập PNG trực tiếp (tham khảo",
"char_import_7": "đối với các máy chủ được phép)",
"char_import_8": "RisuRealm (URL trực tiếp)",
"char_import_9": "Soulkyn (URL trực tiếp)",
"Supports importing multiple characters.": "Hỗ trợ nhập nhiều ký tự.",
"Write each URL or ID into a new line.": "Viết mỗi URL hoặc ID vào một dòng mới.",
"Export for character": "Xuất cho nhân vật",

View File

@@ -259,7 +259,7 @@
"enable_functions_desc_2": "功能工具",
"enable_functions_desc_3": "可以被各种扩展利用来提供附加功能。",
"Send inline images": "发送图片",
"image_inlining_hint_1": "如果模型支持,就可以在提示词中发送图片(例如 GPT-4V、Claude 3 或 Llava 13B。\n发送消息时点击",
"image_inlining_hint_1": "如果模型支持,就可以在提示词中发送图片。\n发送消息时点击",
"image_inlining_hint_2": "在这里(",
"image_inlining_hint_3": ")将图片添加到消息中。",
"Inline Image Quality": "图片画质",
@@ -280,7 +280,6 @@
"Expand the editor": "展开编辑器",
"Start Claude's answer with...": "以如下内容开始Claude的回答...",
"Assistant Impersonation Prefill": "AI帮答预填",
"Use system prompt (Claude 2.1+ only)": "使用系统提示词仅适用于Claude 2.1+",
"Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "为支持的模型发送系统提示词。如果禁用,则用户消息将添加到提示词的开头。",
"Confirm token parsing with": "确认使用以下工具进行词符解析",
"Tokenizer": "词符化器",
@@ -504,7 +503,6 @@
"Add Character and User names to a list of stopping strings.": "将角色和用户名添加到停止字符串列表中。",
"Names as Stop Strings": "名称作为终止字符串",
"context_allow_post_history_instructions": "如果在角色卡中定义并且启用了“首选角色卡说明”,则在提示末尾包含后历史说明。\n不建议在文本补全模型中使用此功能否则会导致输出错误。",
"Allow Post-History Instructions": "允许后历史说明",
"Instruct Template": "指导模板",
"instruct_derived": "如果可能,从模型元数据中获取",
"instruct_bind_to_context": "如果启用,上下文模板将根据所选的指导模板名称或偏好自动选择。",
@@ -1083,6 +1081,7 @@
"Delete chat file": "删除聊天文件",
"Drag to reorder tag": "拖动以排序",
"Use tag as folder": "标记为文件夹",
"Hide on character card": "在角色卡上隐藏",
"Delete tag": "删除标签",
"Toggle entry's active state.": "切换条目激活状态。",
"Entry Title/Memo": "条目标题/备忘录",
@@ -1169,11 +1168,11 @@
"To whom this message will be attributed.": "此消息应归于谁。",
"AI Assistant": "AI助手",
"prompt_manager_position": "位置",
"Injection position. Relative (to other prompts in prompt manager) or In-chat @ Depth.": "注入位置。相对(相对于提示管理器中的其他提示)或在聊天中@深度。",
"Relative (to other prompts in prompt manager) or In-chat @ Depth.": "相对(相对于提示管理器中的其他提示)或在聊天中@深度。",
"prompt_manager_relative": "相对",
"prompt_manager_in_chat": "聊天中",
"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”为在最后一条消息之前等等。",
"The content of this prompt is pulled from elsewhere and cannot be edited here.": "此提示词的内容是从其他地方提取的,无法在此处进行编辑。",
"Prompt": "提示词",
"The prompt to be sent.": "要发送的提示词。",
@@ -1358,7 +1357,7 @@
"Image Captioning": "图像描述",
"Source": "来源",
"Local": "本地",
"Multimodal (OpenAI / Anthropic / llama / Google)": "多模OpenAI / Anthropic / llama / Google",
"Multimodal (OpenAI / Anthropic / llama / Google)": "多模OpenAI / Anthropic / llama / Google",
"Extras": "更多",
"Horde": "Horde",
"API": "API",
@@ -1588,8 +1587,8 @@
"sd_function_tool_txt": "Use function tool",
"sd_interactive_mode": "发送消息时自动生成图像,例如“给我发一张猫的照片”。",
"sd_interactive_mode_txt": "交互模式",
"sd_multimodal_captioning": "使用多模字幕根据用户和角色的头像生成提示词。",
"sd_multimodal_captioning_txt": "使用多模字幕来描绘肖像",
"sd_multimodal_captioning": "使用多模字幕根据用户和角色的头像生成提示词。",
"sd_multimodal_captioning_txt": "使用多模字幕来描绘肖像",
"sd_free_extend": "使用当前选择的 LLM 自动扩展自由模式主题提示(不是肖像或背景)。",
"sd_free_extend_txt": "延长自由模式提示",
"sd_free_extend_small": "(交互/命令)",
@@ -1894,6 +1893,7 @@
"char_import_6": "被允许的PNG直链请参阅",
"char_import_7": "",
"char_import_8": "RisuRealm 角色(直链)",
"char_import_9": "Soulkyn 角色(直链)",
"Supports importing multiple characters.": "支持导入多个角色。",
"Write each URL or ID into a new line.": "将每个 URL 或 ID 写入新行。",
"Enter the Git URL of the extension to install": "输入扩展程序的 Git URL 以安装",
@@ -2109,5 +2109,25 @@
"Title/Memo": "标题(备忘)",
"Strategy": "触发策略",
"Position": "插入位置",
"Trigger %": "触发概率%"
"Trigger %": "触发概率%",
"Generate Caption": "生成图片描述",
"(DEPRECATED)": "(已弃用)",
"[Currently loaded]": "[当前加载]",
"Change Persona Image": "更改角色图片",
"Delete Persona": "删除角色",
"Duplicate Persona": "复制角色",
"Enter a name for this persona:": "输入角色名",
"Enable web search": "启用联网搜索",
"Current Persona": "当前角色",
"Global Settings": "全局设置",
"Select a model": "选择模型",
"Thinking...": "思考中",
"Valid": "有效",
"Rename Persona": "重命名角色",
"Sort By: Name (Z-A)": "排序: 名称Z-A",
"Sort By: Name (A-Z)": "排序: 名称A-Z",
"Sort By: Date (Oldest First)": "排序: 日期(从最远到最新)",
"Sort By: Date (Newest First)": "排序: 日期(从最新到最远)",
"Set the reasoning block of a message. Returns the reasoning block content.": "设置消息的推理块。返回推理块内容。",
"Select providers. No selection = all providers.": "选择服务商。未选择 = 所有服务商。"
}

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