sillytavern 1.12.7 → 1.12.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/.editorconfig +1 -1
  2. package/.eslintrc.cjs +5 -15
  3. package/config.yaml +8 -0
  4. package/default/config.yaml +8 -0
  5. package/default/content/Char_Avatar_Comfy_Workflow.json +137 -0
  6. package/default/content/index.json +20 -0
  7. package/default/content/presets/context/Mistral V7.json +11 -0
  8. package/default/content/presets/context/Tulu.json +11 -0
  9. package/default/content/presets/instruct/Mistral V7.json +22 -0
  10. package/default/content/presets/instruct/Tulu.json +22 -0
  11. package/default/content/presets/openai/Default.json +0 -1
  12. package/default/content/settings.json +0 -1
  13. package/package.json +22 -2
  14. package/public/css/login.css +6 -0
  15. package/public/css/logprobs.css +8 -0
  16. package/public/css/promptmanager.css +1 -1
  17. package/public/css/scrollable-button.css +19 -0
  18. package/public/css/st-tailwind.css +0 -5
  19. package/public/css/toggle-dependent.css +2 -0
  20. package/public/global.d.ts +103 -1051
  21. package/public/img/nanogpt.svg +43 -0
  22. package/public/index.html +171 -130
  23. package/public/jsconfig.json +1 -12
  24. package/public/lib/epub.min.js +1 -1
  25. package/public/lib/pdf.min.mjs +21 -0
  26. package/public/lib/pdf.worker.min.mjs +21 -0
  27. package/public/lib.js +118 -0
  28. package/public/locales/ar-sa.json +0 -2
  29. package/public/locales/de-de.json +0 -2
  30. package/public/locales/es-es.json +0 -2
  31. package/public/locales/fr-fr.json +0 -2
  32. package/public/locales/is-is.json +0 -2
  33. package/public/locales/it-it.json +0 -2
  34. package/public/locales/ja-jp.json +0 -2
  35. package/public/locales/ko-kr.json +439 -258
  36. package/public/locales/nl-nl.json +0 -2
  37. package/public/locales/pt-pt.json +0 -2
  38. package/public/locales/ru-ru.json +91 -9
  39. package/public/locales/uk-ua.json +0 -2
  40. package/public/locales/vi-vn.json +0 -2
  41. package/public/locales/zh-cn.json +0 -2
  42. package/public/locales/zh-tw.json +0 -2
  43. package/public/script.js +204 -158
  44. package/public/scripts/PromptManager.js +2 -0
  45. package/public/scripts/RossAscends-mods.js +7 -8
  46. package/public/scripts/authors-note.js +98 -39
  47. package/public/scripts/backgrounds.js +2 -0
  48. package/public/scripts/bookmarks.js +2 -2
  49. package/public/scripts/bulk-edit.js +7 -7
  50. package/public/scripts/char-data.js +1 -1
  51. package/public/scripts/chat-templates.js +92 -0
  52. package/public/scripts/chats.js +1 -1
  53. package/public/scripts/extensions/assets/index.js +1 -0
  54. package/public/scripts/extensions/caption/settings.html +6 -0
  55. package/public/scripts/extensions/connection-manager/index.js +2 -0
  56. package/public/scripts/extensions/expressions/index.js +2 -0
  57. package/public/scripts/extensions/expressions/settings.html +1 -1
  58. package/public/scripts/extensions/quick-reply/src/QuickReply.js +1 -1
  59. package/public/scripts/extensions/quick-reply/src/SlashCommandHandler.js +28 -15
  60. package/public/scripts/extensions/quick-reply/src/ui/ctx/ContextMenu.js +20 -2
  61. package/public/scripts/extensions/quick-reply/src/ui/ctx/MenuHeader.js +1 -1
  62. package/public/scripts/extensions/quick-reply/src/ui/ctx/MenuItem.js +11 -7
  63. package/public/scripts/extensions/quick-reply/style.css +3 -0
  64. package/public/scripts/extensions/quick-reply/style.less +4 -0
  65. package/public/scripts/extensions/regex/dropdown.html +1 -1
  66. package/public/scripts/extensions/regex/editor.html +12 -8
  67. package/public/scripts/extensions/regex/engine.js +44 -2
  68. package/public/scripts/extensions/regex/index.js +6 -5
  69. package/public/scripts/extensions/stable-diffusion/comfyWorkflowEditor.html +1 -0
  70. package/public/scripts/extensions/stable-diffusion/index.js +256 -77
  71. package/public/scripts/extensions/stable-diffusion/settings.html +28 -2
  72. package/public/scripts/extensions/translate/index.js +38 -21
  73. package/public/scripts/extensions/tts/alltalk.js +1072 -840
  74. package/public/scripts/extensions/tts/index.js +3 -0
  75. package/public/scripts/extensions/tts/settings.html +14 -14
  76. package/public/scripts/extensions/vectors/index.js +15 -5
  77. package/public/scripts/extensions.js +2 -0
  78. package/public/scripts/filters.js +45 -6
  79. package/public/scripts/group-chats.js +6 -0
  80. package/public/scripts/horde.js +8 -0
  81. package/public/scripts/i18n.js +2 -1
  82. package/public/scripts/instruct-mode.js +131 -44
  83. package/public/scripts/logprobs.js +132 -69
  84. package/public/scripts/macros.js +132 -101
  85. package/public/scripts/openai.js +118 -39
  86. package/public/scripts/personas.js +32 -31
  87. package/public/scripts/power-user.js +127 -100
  88. package/public/scripts/preset-manager.js +3 -0
  89. package/public/scripts/secrets.js +4 -0
  90. package/public/scripts/server-history.js +2 -2
  91. package/public/scripts/setting-search.js +2 -2
  92. package/public/scripts/slash-commands/SlashCommand.js +1 -0
  93. package/public/scripts/slash-commands/SlashCommandBrowser.js +6 -7
  94. package/public/scripts/slash-commands/SlashCommandParser.js +1 -0
  95. package/public/scripts/slash-commands/SlashCommandReturnHelper.js +1 -0
  96. package/public/scripts/slash-commands.js +39 -2
  97. package/public/scripts/stats.js +1 -0
  98. package/public/scripts/sysprompt.js +2 -0
  99. package/public/scripts/tags.js +6 -36
  100. package/public/scripts/templates/forbidMedia.html +2 -2
  101. package/public/scripts/templates/formatting.html +0 -2
  102. package/public/scripts/templates/macros.html +1 -1
  103. package/public/scripts/templates/tagManagement.html +33 -0
  104. package/public/scripts/templates/welcome.html +1 -1
  105. package/public/scripts/templates.js +1 -0
  106. package/public/scripts/textgen-models.js +25 -11
  107. package/public/scripts/textgen-settings.js +26 -1
  108. package/public/scripts/tokenizers.js +2 -1
  109. package/public/scripts/tool-calling.js +21 -6
  110. package/public/scripts/util/showdown-patch.js +30 -0
  111. package/public/scripts/utils.js +16 -58
  112. package/public/scripts/variables.js +30 -75
  113. package/public/scripts/world-info.js +2 -0
  114. package/public/style.css +30 -25
  115. package/server.js +8 -1
  116. package/src/constants.js +1 -0
  117. package/src/endpoints/azure.js +1 -1
  118. package/src/endpoints/backends/chat-completions.js +44 -21
  119. package/src/endpoints/backends/text-completions.js +44 -9
  120. package/src/endpoints/caption.js +1 -1
  121. package/src/endpoints/characters.js +14 -3
  122. package/src/endpoints/chats.js +147 -0
  123. package/src/endpoints/classify.js +1 -1
  124. package/src/endpoints/search.js +4 -1
  125. package/src/endpoints/secrets.js +2 -0
  126. package/src/endpoints/speech.js +1 -1
  127. package/src/endpoints/stable-diffusion.js +232 -17
  128. package/src/endpoints/tokenizers.js +1 -1
  129. package/src/endpoints/translate.js +38 -3
  130. package/src/middleware/webpack-serve.js +45 -0
  131. package/src/prompt-converters.js +138 -6
  132. package/src/{transformers.mjs → transformers.js} +2 -2
  133. package/src/users.js +5 -5
  134. package/src/util.js +181 -2
  135. package/src/vectors/embedding.js +1 -1
  136. package/webpack.config.js +35 -0
  137. package/public/lib/Readability-readerable.js +0 -108
  138. package/public/lib/Readability.js +0 -2314
  139. package/public/lib/bowser.min.js +0 -14
  140. package/public/lib/css-parser.map +0 -1
  141. package/public/lib/css-parser.mjs +0 -765
  142. package/public/lib/diff_match_patch.js +0 -55
  143. package/public/lib/droll.js +0 -108
  144. package/public/lib/fuse.js +0 -2240
  145. package/public/lib/handlebars.js +0 -5972
  146. package/public/lib/highlight.min.js +0 -1361
  147. package/public/lib/localforage.min.js +0 -7
  148. package/public/lib/moment-with-locales.min.js +0 -2
  149. package/public/lib/moment-with-locales.min.js.map +0 -1
  150. package/public/lib/pdf.mjs +0 -17398
  151. package/public/lib/pdf.mjs.map +0 -1
  152. package/public/lib/pdf.worker.mjs +0 -57124
  153. package/public/lib/pdf.worker.mjs.map +0 -1
  154. package/public/lib/popper.js +0 -2008
  155. package/public/lib/popper.js.map +0 -1
  156. package/public/lib/purify.min.js +0 -3
  157. package/public/lib/purify.min.js.map +0 -1
  158. package/public/lib/seedrandom.min.js +0 -1
  159. package/public/lib/showdown-katex.min.js +0 -36
  160. package/public/lib/showdown-katex.min.js.map +0 -1
  161. package/public/lib/showdown-patch.js +0 -24
  162. package/public/lib/showdown-toc.min.js +0 -1
  163. package/public/lib/showdown.min.js +0 -3
  164. package/public/lib/showdown.min.js.map +0 -1
  165. package/public/lib/svg-inject.js +0 -697
  166. package/public/lib/uniqolor.js +0 -303
  167. package/public/scripts/extensions/quick-reply/lib/morphdom-esm.js +0 -769
  168. package/public/scripts/extensions/quick-reply/lib/morphdom.LICENSE.txt +0 -21
package/.editorconfig CHANGED
@@ -5,7 +5,7 @@ end_of_line = lf
5
5
  insert_final_newline = true
6
6
  trim_trailing_whitespace = true
7
7
 
8
- [*.{js, conf, json, css, less, html}]
8
+ [*.{js,conf,json,css,less,html}]
9
9
  charset = utf-8
10
10
  indent_style = space
11
11
  indent_size = 4
package/.eslintrc.cjs CHANGED
@@ -19,6 +19,10 @@ module.exports = {
19
19
  parserOptions: {
20
20
  sourceType: 'module',
21
21
  },
22
+ globals: {
23
+ globalThis: 'readonly',
24
+ Deno: 'readonly',
25
+ },
22
26
  },
23
27
  {
24
28
  files: ['*.cjs'],
@@ -50,23 +54,9 @@ module.exports = {
50
54
  },
51
55
  // These scripts are loaded in HTML; tell ESLint not to complain about them being undefined
52
56
  globals: {
53
- DOMPurify: 'readonly',
54
- droll: 'readonly',
55
- Fuse: 'readonly',
56
- Handlebars: 'readonly',
57
- hljs: 'readonly',
58
- localforage: 'readonly',
59
- moment: 'readonly',
57
+ ePub: 'readonly',
60
58
  pdfjsLib: 'readonly',
61
- Popper: 'readonly',
62
- showdown: 'readonly',
63
- showdownKatex: 'readonly',
64
- SVGInject: 'readonly',
65
59
  toastr: 'readonly',
66
- Readability: 'readonly',
67
- isProbablyReaderable: 'readonly',
68
- ePub: 'readonly',
69
- diff_match_patch: 'readonly',
70
60
  SillyTavern: 'readonly',
71
61
  },
72
62
  },
package/config.yaml CHANGED
@@ -168,5 +168,13 @@ claude:
168
168
  # (e.g {{random}} macro or lorebooks not as in-chat injections).
169
169
  # Otherwise, you'll just waste money on cache misses.
170
170
  enableSystemPromptCache: false
171
+ # Enables caching of the message history at depth (if supported).
172
+ # https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
173
+ # -- IMPORTANT! --
174
+ # Use with caution. Behavior may be unpredictable and no guarantees can or will be made.
175
+ # Set to an integer to specify the desired depth. 0 (which does NOT include the prefill)
176
+ # should be ideal for most use cases.
177
+ # Any value other than a non-negative integer will be ignored and caching at depth will not be enabled.
178
+ cachingAtDepth: -1
171
179
  # -- SERVER PLUGIN CONFIGURATION --
172
180
  enableServerPlugins: false
@@ -168,5 +168,13 @@ claude:
168
168
  # (e.g {{random}} macro or lorebooks not as in-chat injections).
169
169
  # Otherwise, you'll just waste money on cache misses.
170
170
  enableSystemPromptCache: false
171
+ # Enables caching of the message history at depth (if supported).
172
+ # https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
173
+ # -- IMPORTANT! --
174
+ # Use with caution. Behavior may be unpredictable and no guarantees can or will be made.
175
+ # Set to an integer to specify the desired depth. 0 (which does NOT include the prefill)
176
+ # should be ideal for most use cases.
177
+ # Any value other than a non-negative integer will be ignored and caching at depth will not be enabled.
178
+ cachingAtDepth: -1
171
179
  # -- SERVER PLUGIN CONFIGURATION --
172
180
  enableServerPlugins: false
@@ -0,0 +1,137 @@
1
+ {
2
+ "3": {
3
+ "inputs": {
4
+ "seed": "%seed%",
5
+ "steps": "%steps%",
6
+ "cfg": "%scale%",
7
+ "sampler_name": "%sampler%",
8
+ "scheduler": "%scheduler%",
9
+ "denoise": "%denoise%",
10
+ "model": [
11
+ "4",
12
+ 0
13
+ ],
14
+ "positive": [
15
+ "6",
16
+ 0
17
+ ],
18
+ "negative": [
19
+ "7",
20
+ 0
21
+ ],
22
+ "latent_image": [
23
+ "12",
24
+ 0
25
+ ]
26
+ },
27
+ "class_type": "KSampler",
28
+ "_meta": {
29
+ "title": "KSampler"
30
+ }
31
+ },
32
+ "4": {
33
+ "inputs": {
34
+ "ckpt_name": "%model%"
35
+ },
36
+ "class_type": "CheckpointLoaderSimple",
37
+ "_meta": {
38
+ "title": "Load Checkpoint"
39
+ }
40
+ },
41
+ "6": {
42
+ "inputs": {
43
+ "text": "%prompt%",
44
+ "clip": [
45
+ "4",
46
+ 1
47
+ ]
48
+ },
49
+ "class_type": "CLIPTextEncode",
50
+ "_meta": {
51
+ "title": "CLIP Text Encode (Prompt)"
52
+ }
53
+ },
54
+ "7": {
55
+ "inputs": {
56
+ "text": "%negative_prompt%",
57
+ "clip": [
58
+ "4",
59
+ 1
60
+ ]
61
+ },
62
+ "class_type": "CLIPTextEncode",
63
+ "_meta": {
64
+ "title": "CLIP Text Encode (Negative Prompt)"
65
+ }
66
+ },
67
+ "8": {
68
+ "inputs": {
69
+ "samples": [
70
+ "3",
71
+ 0
72
+ ],
73
+ "vae": [
74
+ "4",
75
+ 2
76
+ ]
77
+ },
78
+ "class_type": "VAEDecode",
79
+ "_meta": {
80
+ "title": "VAE Decode"
81
+ }
82
+ },
83
+ "9": {
84
+ "inputs": {
85
+ "filename_prefix": "SillyTavern",
86
+ "images": [
87
+ "8",
88
+ 0
89
+ ]
90
+ },
91
+ "class_type": "SaveImage",
92
+ "_meta": {
93
+ "title": "Save Image"
94
+ }
95
+ },
96
+ "10": {
97
+ "inputs": {
98
+ "image": "%char_avatar%"
99
+ },
100
+ "class_type": "ETN_LoadImageBase64",
101
+ "_meta": {
102
+ "title": "Load Image (Base64) [https://github.com/Acly/comfyui-tooling-nodes]"
103
+ }
104
+ },
105
+ "12": {
106
+ "inputs": {
107
+ "pixels": [
108
+ "13",
109
+ 0
110
+ ],
111
+ "vae": [
112
+ "4",
113
+ 2
114
+ ]
115
+ },
116
+ "class_type": "VAEEncode",
117
+ "_meta": {
118
+ "title": "VAE Encode"
119
+ }
120
+ },
121
+ "13": {
122
+ "inputs": {
123
+ "upscale_method": "bicubic",
124
+ "width": "%width%",
125
+ "height": "%height%",
126
+ "crop": "center",
127
+ "image": [
128
+ "10",
129
+ 0
130
+ ]
131
+ },
132
+ "class_type": "ImageScale",
133
+ "_meta": {
134
+ "title": "Upscale Image"
135
+ }
136
+ }
137
+ }
@@ -135,6 +135,10 @@
135
135
  "filename": "Default_Comfy_Workflow.json",
136
136
  "type": "workflow"
137
137
  },
138
+ {
139
+ "filename": "Char_Avatar_Comfy_Workflow.json",
140
+ "type": "workflow"
141
+ },
138
142
  {
139
143
  "filename": "presets/kobold/Ace of Spades.json",
140
144
  "type": "kobold_preset"
@@ -623,6 +627,14 @@
623
627
  "filename": "presets/instruct/Synthia.json",
624
628
  "type": "instruct"
625
629
  },
630
+ {
631
+ "filename": "presets/instruct/Tulu.json",
632
+ "type": "instruct"
633
+ },
634
+ {
635
+ "filename": "presets/context/Tulu.json",
636
+ "type": "context"
637
+ },
626
638
  {
627
639
  "filename": "presets/instruct/Vicuna 1.0.json",
628
640
  "type": "instruct"
@@ -762,5 +774,13 @@
762
774
  {
763
775
  "filename": "presets/context/Mistral V3-Tekken.json",
764
776
  "type": "context"
777
+ },
778
+ {
779
+ "filename": "presets/instruct/Mistral V7.json",
780
+ "type": "instruct"
781
+ },
782
+ {
783
+ "filename": "presets/context/Mistral V7.json",
784
+ "type": "context"
765
785
  }
766
786
  ]
@@ -0,0 +1,11 @@
1
+ {
2
+ "story_string": "[SYSTEM_PROMPT] {{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}[/SYSTEM_PROMPT]",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "allow_jailbreak": false,
7
+ "always_force_name2": true,
8
+ "trim_sentences": false,
9
+ "single_line": false,
10
+ "name": "Mistral V7"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "story_string": "<|system|>\n{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}\n",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "allow_jailbreak": false,
7
+ "always_force_name2": true,
8
+ "trim_sentences": false,
9
+ "single_line": false,
10
+ "name": "Tulu"
11
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input_sequence": "[INST] ",
3
+ "output_sequence": " ",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "[SYSTEM_PROMPT] ",
6
+ "stop_sequence": "</s>",
7
+ "wrap": false,
8
+ "macro": true,
9
+ "names_behavior": "always",
10
+ "activation_regex": "",
11
+ "system_sequence_prefix": "",
12
+ "system_sequence_suffix": "",
13
+ "first_output_sequence": "",
14
+ "skip_examples": false,
15
+ "output_suffix": "</s>",
16
+ "input_suffix": "[/INST]",
17
+ "system_suffix": "[/SYSTEM_PROMPT]",
18
+ "user_alignment_message": "",
19
+ "system_same_as_user": false,
20
+ "last_system_sequence": "",
21
+ "name": "Mistral V7"
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input_sequence": "<|user|>\n",
3
+ "output_sequence": "<|assistant|>\n",
4
+ "first_output_sequence": "",
5
+ "last_output_sequence": "",
6
+ "system_sequence_prefix": "",
7
+ "system_sequence_suffix": "",
8
+ "stop_sequence": "<|end_of_text|>",
9
+ "wrap": false,
10
+ "macro": true,
11
+ "names_behavior": "always",
12
+ "activation_regex": "",
13
+ "skip_examples": false,
14
+ "output_suffix": "<|end_of_text|>\n",
15
+ "input_suffix": "\n",
16
+ "system_sequence": "<|system|>\n",
17
+ "system_suffix": "\n",
18
+ "user_alignment_message": "",
19
+ "last_system_sequence": "",
20
+ "system_same_as_user": false,
21
+ "name": "Tulu"
22
+ }
@@ -230,7 +230,6 @@
230
230
  "show_external_models": false,
231
231
  "assistant_prefill": "",
232
232
  "assistant_impersonation": "",
233
- "human_sysprompt_message": "Let's get started. Please generate your response based on the information and instructions provided above.",
234
233
  "claude_use_sysprompt": false,
235
234
  "use_alt_scale": false,
236
235
  "squash_system_messages": false,
@@ -133,7 +133,6 @@
133
133
  "auto_fix_generated_markdown": false,
134
134
  "send_on_enter": 0,
135
135
  "console_log_prompts": false,
136
- "render_formulas": false,
137
136
  "allow_name1_display": false,
138
137
  "allow_name2_display": false,
139
138
  "hotswap_enabled": true,
package/package.json CHANGED
@@ -1,28 +1,43 @@
1
1
  {
2
2
  "dependencies": {
3
+ "@adobe/css-tools": "^4.4.0",
3
4
  "@agnai/sentencepiece-js": "^1.1.1",
4
5
  "@agnai/web-tokenizers": "^0.1.3",
6
+ "@iconfu/svg-inject": "^1.2.3",
7
+ "@mozilla/readability": "^0.5.0",
8
+ "@popperjs/core": "^2.11.8",
5
9
  "@zeldafan0225/ai_horde": "^5.1.0",
6
10
  "archiver": "^7.0.1",
7
11
  "bing-translate-api": "^2.9.1",
8
12
  "body-parser": "^1.20.2",
13
+ "bowser": "^2.11.0",
9
14
  "command-exists": "^1.2.9",
10
15
  "compression": "^1",
11
16
  "cookie-parser": "^1.4.6",
12
17
  "cookie-session": "^2.1.0",
13
18
  "cors": "^2.8.5",
14
19
  "csrf-csrf": "^2.2.3",
20
+ "diff-match-patch": "^1.0.5",
21
+ "dompurify": "^3.1.7",
22
+ "droll": "^0.2.1",
15
23
  "express": "^4.21.0",
16
24
  "form-data": "^4.0.0",
25
+ "fuse.js": "^7.0.0",
26
+ "google-translate-api-browser": "^3.0.1",
17
27
  "google-translate-api-x": "^10.7.1",
28
+ "handlebars": "^4.7.8",
18
29
  "helmet": "^7.1.0",
30
+ "highlight.js": "^11.10.0",
19
31
  "html-entities": "^2.5.2",
20
32
  "iconv-lite": "^0.6.3",
21
33
  "ip-matching": "^2.1.2",
22
34
  "ipaddr.js": "^2.0.1",
23
35
  "jimp": "^0.22.10",
36
+ "localforage": "^1.10.0",
24
37
  "lodash": "^4.17.21",
25
38
  "mime-types": "^2.1.35",
39
+ "moment": "^2.30.1",
40
+ "morphdom": "^2.7.4",
26
41
  "multer": "^1.4.5-lts.1",
27
42
  "node-fetch": "^3.3.2",
28
43
  "node-persist": "^4.0.1",
@@ -34,11 +49,14 @@
34
49
  "rate-limiter-flexible": "^5.0.0",
35
50
  "response-time": "^2.3.2",
36
51
  "sanitize-filename": "^1.6.3",
52
+ "seedrandom": "^3.0.5",
53
+ "showdown": "^2.1.0",
37
54
  "sillytavern-transformers": "2.14.6",
38
55
  "simple-git": "^3.19.1",
39
56
  "tiktoken": "^1.0.16",
40
57
  "vectra": "^0.2.2",
41
58
  "wavefile": "^11.0.0",
59
+ "webpack": "^5.95.0",
42
60
  "write-file-atomic": "^5.0.1",
43
61
  "ws": "^8.17.1",
44
62
  "yaml": "^2.3.4",
@@ -66,9 +84,11 @@
66
84
  "type": "git",
67
85
  "url": "https://github.com/SillyTavern/SillyTavern.git"
68
86
  },
69
- "version": "1.12.7",
87
+ "version": "1.12.8",
70
88
  "scripts": {
71
89
  "start": "node server.js",
90
+ "start:deno": "deno run --allow-run --allow-net --allow-read --allow-write --allow-sys --allow-env server.js",
91
+ "start:bun": "bun server.js",
72
92
  "start:no-csrf": "node server.js --disableCsrf",
73
93
  "postinstall": "node post-install.js",
74
94
  "lint": "eslint \"src/**/*.js\" \"public/**/*.js\" ./*.js",
@@ -91,7 +111,7 @@
91
111
  "@types/cookie-parser": "^1.4.7",
92
112
  "@types/cookie-session": "^2.0.49",
93
113
  "@types/cors": "^2.8.17",
94
- "@types/dompurify": "^3.0.5",
114
+ "@types/deno": "^2.0.0",
95
115
  "@types/express": "^4.17.21",
96
116
  "@types/jquery": "^3.5.29",
97
117
  "@types/lodash": "^4.17.10",
@@ -42,3 +42,9 @@ body.login .userSelect .userHandle {
42
42
  body.login .userSelect:hover {
43
43
  background-color: var(--black30a);
44
44
  }
45
+
46
+ body.login #handleEntryBlock,
47
+ body.login #passwordEntryBlock,
48
+ body.login #passwordRecoveryBlock {
49
+ margin: 2px;
50
+ }
@@ -72,6 +72,14 @@
72
72
  opacity: 0.5;
73
73
  }
74
74
 
75
+ .logprobs_output_prefix:hover {
76
+ background-color: rgba(255, 0, 50, 0.4);
77
+ }
78
+
79
+ .logprobs_output_prefix:hover ~ .logprobs_output_prefix {
80
+ background-color: rgba(255, 0, 50, 0.4);
81
+ }
82
+
75
83
  .logprobs_candidate_list {
76
84
  grid-row-start: 3;
77
85
  grid-row-end: 4;
@@ -333,7 +333,7 @@
333
333
  }
334
334
 
335
335
  .completion_prompt_manager_popup_entry_form_control:has(#completion_prompt_manager_popup_entry_form_prompt:disabled)>div:first-child::after {
336
- content: 'The content of this prompt is pulled from elsewhere and cannot be edited here.';
336
+ content: attr(external_piece_text);
337
337
  display: block;
338
338
  width: 100%;
339
339
  font-weight: 600;
@@ -0,0 +1,19 @@
1
+ .scrollable-buttons-container {
2
+ max-height: 50vh; /* Use viewport height instead of fixed pixels */
3
+ overflow-y: auto;
4
+ -webkit-overflow-scrolling: touch; /* Momentum scrolling on iOS */
5
+ margin-top: 1rem; /* m-t-1 is equivalent to margin-top: 1rem; */
6
+ flex-shrink: 1;
7
+ min-height: 0;
8
+ scrollbar-width: thin;
9
+ scrollbar-color: rgba(255, 255, 255, 0.3) transparent;
10
+ }
11
+
12
+ .scrollable-buttons-container::-webkit-scrollbar {
13
+ width: 6px;
14
+ }
15
+
16
+ .scrollable-buttons-container::-webkit-scrollbar-thumb {
17
+ background-color: rgba(255, 255, 255, 0.3);
18
+ border-radius: 3px;
19
+ }
@@ -479,11 +479,6 @@
479
479
  line-height: 1.2;
480
480
  }
481
481
 
482
- .custom-katex-html,
483
- .katex-html {
484
- display: none;
485
- }
486
-
487
482
  .hoverglow {
488
483
  transition: opacity 200ms;
489
484
  }
@@ -474,6 +474,8 @@ label[for="trim_spaces"]:has(input:checked) i.warning {
474
474
 
475
475
  #claude_function_prefill_warning {
476
476
  display: none;
477
+ color: red;
478
+ font-weight: bold;
477
479
  }
478
480
 
479
481
  #openai_settings:has(#openai_function_calling:checked):has(#claude_assistant_prefill:not(:placeholder-shown), #claude_assistant_impersonation:not(:placeholder-shown)) #claude_function_prefill_warning {