sillytavern 1.4.1

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 (259) hide show
  1. package/.dockerignore +4 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. package/.github/workflows/npm-publish.yml +32 -0
  5. package/Dockerfile +49 -0
  6. package/Start.bat +3 -0
  7. package/colab/GPU.ipynb +339 -0
  8. package/colab/extras_server.py +40 -0
  9. package/colab/globals.py +2 -0
  10. package/colab/models.py +77 -0
  11. package/docker/docker-compose.yml +12 -0
  12. package/docker/docker-entrypoint.sh +28 -0
  13. package/faq.md +208 -0
  14. package/package.json +49 -0
  15. package/poe-client.js +638 -0
  16. package/poe-test.js +21 -0
  17. package/poe_graphql/AddHumanMessageMutation.graphql +52 -0
  18. package/poe_graphql/AddMessageBreakMutation.graphql +17 -0
  19. package/poe_graphql/AutoSubscriptionMutation.graphql +7 -0
  20. package/poe_graphql/BioFragment.graphql +8 -0
  21. package/poe_graphql/ChatAddedSubscription.graphql +5 -0
  22. package/poe_graphql/ChatFragment.graphql +6 -0
  23. package/poe_graphql/ChatListPaginationQuery.graphql +316 -0
  24. package/poe_graphql/ChatPaginationQuery.graphql +26 -0
  25. package/poe_graphql/ChatViewQuery.graphql +8 -0
  26. package/poe_graphql/DeleteHumanMessagesMutation.graphql +7 -0
  27. package/poe_graphql/DeleteMessageMutation.graphql +7 -0
  28. package/poe_graphql/HandleFragment.graphql +8 -0
  29. package/poe_graphql/LoginWithVerificationCodeMutation.graphql +13 -0
  30. package/poe_graphql/MessageAddedSubscription.graphql +115 -0
  31. package/poe_graphql/MessageDeletedSubscription.graphql +8 -0
  32. package/poe_graphql/MessageFragment.graphql +13 -0
  33. package/poe_graphql/MessageRemoveVoteMutation.graphql +7 -0
  34. package/poe_graphql/MessageSetVoteMutation.graphql +7 -0
  35. package/poe_graphql/SendVerificationCodeForLoginMutation.graphql +12 -0
  36. package/poe_graphql/ShareMessagesMutation.graphql +9 -0
  37. package/poe_graphql/SignupWithVerificationCodeMutation.graphql +13 -0
  38. package/poe_graphql/StaleChatUpdateMutation.graphql +7 -0
  39. package/poe_graphql/SubscriptionsMutation.graphql +9 -0
  40. package/poe_graphql/SummarizePlainPostQuery.graphql +3 -0
  41. package/poe_graphql/SummarizeQuotePostQuery.graphql +3 -0
  42. package/poe_graphql/SummarizeSharePostQuery.graphql +3 -0
  43. package/poe_graphql/UserSnippetFragment.graphql +14 -0
  44. package/poe_graphql/ViewerInfoQuery.graphql +21 -0
  45. package/poe_graphql/ViewerMessageLimitUpdatedSubscription.graphql +81 -0
  46. package/poe_graphql/ViewerStateFragment.graphql +30 -0
  47. package/poe_graphql/ViewerStateUpdatedSubscription.graphql +63 -0
  48. package/public/KoboldAI Settings/Ace of Spades 13B.settings +22 -0
  49. package/public/KoboldAI Settings/Adventurer-NeoX-20B-Erebus.settings +54 -0
  50. package/public/KoboldAI Settings/Basic Coherence 13B.settings +22 -0
  51. package/public/KoboldAI Settings/Best Guess 6B.settings +22 -0
  52. package/public/KoboldAI Settings/Calibrated-Pygmalion-6b.settings +47 -0
  53. package/public/KoboldAI Settings/Classic-Pygmalion-2.7b.settings +46 -0
  54. package/public/KoboldAI Settings/Classic-Pygmalion-6b.settings +47 -0
  55. package/public/KoboldAI Settings/Coherent Creativity 6B.settings +22 -0
  56. package/public/KoboldAI Settings/Default-TavernAI.settings +22 -0
  57. package/public/KoboldAI Settings/DragonSlayer-Pygmalion-6b.settings +47 -0
  58. package/public/KoboldAI Settings/GPU-Pygmalion-6b.settings +47 -0
  59. package/public/KoboldAI Settings/Genesis 13B.settings +22 -0
  60. package/public/KoboldAI Settings/Godlike.settings +22 -0
  61. package/public/KoboldAI Settings/Good Winds.settings +22 -0
  62. package/public/KoboldAI Settings/Lancer-OPT-2.7B-Erebus.settings +54 -0
  63. package/public/KoboldAI Settings/Liminal Drift.settings +22 -0
  64. package/public/KoboldAI Settings/Low Rider 13B.settings +22 -0
  65. package/public/KoboldAI Settings/Luna Moth 6B.settings +22 -0
  66. package/public/KoboldAI Settings/Mayday.settings +22 -0
  67. package/public/KoboldAI Settings/Ouroboros.settings +22 -0
  68. package/public/KoboldAI Settings/Pleasing Results 6B.settings +22 -0
  69. package/public/KoboldAI Settings/Pro Writer 13B.settings +22 -0
  70. package/public/KoboldAI Settings/RA - Pygmalion-1.3b.settings +46 -0
  71. package/public/KoboldAI Settings/Storywriter 6B.settings +22 -0
  72. package/public/NovelAI Settings/Classic-Euterpe.settings +14 -0
  73. package/public/NovelAI Settings/Classic-Krake.settings +14 -0
  74. package/public/OpenAI Settings/Default.settings +15 -0
  75. package/public/TextGen Settings/Beam Search.settings +15 -0
  76. package/public/TextGen Settings/Contrastive Search.settings +15 -0
  77. package/public/TextGen Settings/Default.settings +15 -0
  78. package/public/TextGen Settings/Deterministic.settings +15 -0
  79. package/public/TextGen Settings/Kobold (Godlike).settings +15 -0
  80. package/public/TextGen Settings/Kobold (Liminal Drift).settings +15 -0
  81. package/public/TextGen Settings/Naive.settings +15 -0
  82. package/public/TextGen Settings/NovelAI (Best Guess).settings +15 -0
  83. package/public/TextGen Settings/NovelAI (Decadence).settings +15 -0
  84. package/public/TextGen Settings/NovelAI (Genesis).settings +15 -0
  85. package/public/TextGen Settings/NovelAI (Lycaenidae).settings +15 -0
  86. package/public/TextGen Settings/NovelAI (Ouroboros).settings +15 -0
  87. package/public/TextGen Settings/NovelAI (Pleasing Results).settings +15 -0
  88. package/public/TextGen Settings/NovelAI (Sphinx Moth).settings +15 -0
  89. package/public/TextGen Settings/NovelAI (Storywriter).settings +15 -0
  90. package/public/TextGen Settings/Pygmalion.settings +15 -0
  91. package/public/css/fontawesome.css +8488 -0
  92. package/public/css/notes.css +46 -0
  93. package/public/css/solid.css +24 -0
  94. package/public/favicon.ico +0 -0
  95. package/public/img/No-Image-Placeholder.svg +309 -0
  96. package/public/img/addbg3.png +0 -0
  97. package/public/img/ai4.png +0 -0
  98. package/public/img/apple-icon-114x114.png +0 -0
  99. package/public/img/apple-icon-144x144.png +0 -0
  100. package/public/img/apple-icon-57x57.png +0 -0
  101. package/public/img/apple-icon-72x72.png +0 -0
  102. package/public/img/book2.png +0 -0
  103. package/public/img/default-expressions/admiration.png +0 -0
  104. package/public/img/default-expressions/amusement.png +0 -0
  105. package/public/img/default-expressions/anger.png +0 -0
  106. package/public/img/default-expressions/annoyance.png +0 -0
  107. package/public/img/default-expressions/approval.png +0 -0
  108. package/public/img/default-expressions/caring.png +0 -0
  109. package/public/img/default-expressions/confusion.png +0 -0
  110. package/public/img/default-expressions/curiosity.png +0 -0
  111. package/public/img/default-expressions/desire.png +0 -0
  112. package/public/img/default-expressions/desire1.png +0 -0
  113. package/public/img/default-expressions/desire2.png +0 -0
  114. package/public/img/default-expressions/disappointment.png +0 -0
  115. package/public/img/default-expressions/disapproval.png +0 -0
  116. package/public/img/default-expressions/disgust.png +0 -0
  117. package/public/img/default-expressions/embarrassment.png +0 -0
  118. package/public/img/default-expressions/excitement.png +0 -0
  119. package/public/img/default-expressions/fear.png +0 -0
  120. package/public/img/default-expressions/gratitude.png +0 -0
  121. package/public/img/default-expressions/grief.png +0 -0
  122. package/public/img/default-expressions/joy.png +0 -0
  123. package/public/img/default-expressions/love.png +0 -0
  124. package/public/img/default-expressions/nervousness.png +0 -0
  125. package/public/img/default-expressions/neutral.png +0 -0
  126. package/public/img/default-expressions/optimism.png +0 -0
  127. package/public/img/default-expressions/pride.png +0 -0
  128. package/public/img/default-expressions/realization.png +0 -0
  129. package/public/img/default-expressions/relief.png +0 -0
  130. package/public/img/default-expressions/remorse.png +0 -0
  131. package/public/img/default-expressions/sadness.png +0 -0
  132. package/public/img/default-expressions/surprise.png +0 -0
  133. package/public/img/five.png +0 -0
  134. package/public/img/times-circle.svg +1 -0
  135. package/public/img/you.png +0 -0
  136. package/public/index.html +1899 -0
  137. package/public/notes/1.html +44 -0
  138. package/public/notes/1.png +0 -0
  139. package/public/notes/10.html +20 -0
  140. package/public/notes/11.html +33 -0
  141. package/public/notes/12.html +27 -0
  142. package/public/notes/13.html +29 -0
  143. package/public/notes/13_1.html +24 -0
  144. package/public/notes/13_2.html +25 -0
  145. package/public/notes/13_3.html +89 -0
  146. package/public/notes/14.html +30 -0
  147. package/public/notes/2.html +37 -0
  148. package/public/notes/2.png +0 -0
  149. package/public/notes/3.html +37 -0
  150. package/public/notes/4.html +105 -0
  151. package/public/notes/6.html +33 -0
  152. package/public/notes/7.html +40 -0
  153. package/public/notes/8.html +19 -0
  154. package/public/notes/9.html +46 -0
  155. package/public/notes/advanced_formatting.html +91 -0
  156. package/public/notes/group_reply_strategy.html +63 -0
  157. package/public/notes/message_sound.html +33 -0
  158. package/public/notes/multigen.html +36 -0
  159. package/public/notes/oai_api_key.html +37 -0
  160. package/public/notes/textgen_streaming.html +29 -0
  161. package/public/notes/token-limits.html +68 -0
  162. package/public/script.js +5131 -0
  163. package/public/scripts/RossAscends-mods.js +750 -0
  164. package/public/scripts/bookmarks.js +130 -0
  165. package/public/scripts/extensions/backgrounds/index.js +129 -0
  166. package/public/scripts/extensions/backgrounds/manifest.json +11 -0
  167. package/public/scripts/extensions/backgrounds/style.css +45 -0
  168. package/public/scripts/extensions/caption/index.js +117 -0
  169. package/public/scripts/extensions/caption/manifest.json +13 -0
  170. package/public/scripts/extensions/caption/style.css +23 -0
  171. package/public/scripts/extensions/dice/droll.js +108 -0
  172. package/public/scripts/extensions/dice/index.js +96 -0
  173. package/public/scripts/extensions/dice/manifest.json +11 -0
  174. package/public/scripts/extensions/dice/style.css +26 -0
  175. package/public/scripts/extensions/expressions/index.js +387 -0
  176. package/public/scripts/extensions/expressions/manifest.json +13 -0
  177. package/public/scripts/extensions/expressions/style.css +115 -0
  178. package/public/scripts/extensions/floating-prompt/index.js +151 -0
  179. package/public/scripts/extensions/floating-prompt/manifest.json +11 -0
  180. package/public/scripts/extensions/floating-prompt/style.css +19 -0
  181. package/public/scripts/extensions/memory/index.js +358 -0
  182. package/public/scripts/extensions/memory/manifest.json +13 -0
  183. package/public/scripts/extensions/memory/style.css +34 -0
  184. package/public/scripts/extensions.js +288 -0
  185. package/public/scripts/f-localStorage.js +27 -0
  186. package/public/scripts/gpt-2-3-tokenizer/README.md +28 -0
  187. package/public/scripts/gpt-2-3-tokenizer/encoder.js +1 -0
  188. package/public/scripts/gpt-2-3-tokenizer/mod.js +169 -0
  189. package/public/scripts/gpt-2-3-tokenizer/vocab.bpe.js +1 -0
  190. package/public/scripts/gpt-3-tokenizer/array-keyed-map.js +210 -0
  191. package/public/scripts/gpt-3-tokenizer/gpt3-tokenizer.js +271 -0
  192. package/public/scripts/gpt-3-tokenizer/gpt3-tokenizer.js.map +1 -0
  193. package/public/scripts/group-chats.js +899 -0
  194. package/public/scripts/horde.js +214 -0
  195. package/public/scripts/jquery-3.5.1.min.js +2 -0
  196. package/public/scripts/jquery-cookie-1.4.1.min.js +2 -0
  197. package/public/scripts/jquery.transit.min.js +1 -0
  198. package/public/scripts/kai-settings.js +179 -0
  199. package/public/scripts/nai-settings.js +108 -0
  200. package/public/scripts/openai.js +973 -0
  201. package/public/scripts/poe.js +360 -0
  202. package/public/scripts/popper.js +2008 -0
  203. package/public/scripts/popper.js.map +1 -0
  204. package/public/scripts/power-user.js +571 -0
  205. package/public/scripts/purify.min.js +3 -0
  206. package/public/scripts/purify.min.js.map +1 -0
  207. package/public/scripts/showdown.min.js +3 -0
  208. package/public/scripts/showdown.min.js.map +1 -0
  209. package/public/scripts/swiped-events.js +165 -0
  210. package/public/scripts/textgen-settings.js +194 -0
  211. package/public/scripts/toolcool-color-picker.js +87 -0
  212. package/public/scripts/utils.js +109 -0
  213. package/public/scripts/world-info.js +661 -0
  214. package/public/sounds/message.mp3 +0 -0
  215. package/public/style.css +3633 -0
  216. package/public/webfonts/NotoSans/NotoSans-Black.woff +0 -0
  217. package/public/webfonts/NotoSans/NotoSans-Black.woff2 +0 -0
  218. package/public/webfonts/NotoSans/NotoSans-BlackItalic.woff +0 -0
  219. package/public/webfonts/NotoSans/NotoSans-BlackItalic.woff2 +0 -0
  220. package/public/webfonts/NotoSans/NotoSans-Bold.woff +0 -0
  221. package/public/webfonts/NotoSans/NotoSans-Bold.woff2 +0 -0
  222. package/public/webfonts/NotoSans/NotoSans-BoldItalic.woff +0 -0
  223. package/public/webfonts/NotoSans/NotoSans-BoldItalic.woff2 +0 -0
  224. package/public/webfonts/NotoSans/NotoSans-ExtraBold.woff +0 -0
  225. package/public/webfonts/NotoSans/NotoSans-ExtraBold.woff2 +0 -0
  226. package/public/webfonts/NotoSans/NotoSans-ExtraBoldItalic.woff +0 -0
  227. package/public/webfonts/NotoSans/NotoSans-ExtraBoldItalic.woff2 +0 -0
  228. package/public/webfonts/NotoSans/NotoSans-ExtraLight.woff +0 -0
  229. package/public/webfonts/NotoSans/NotoSans-ExtraLight.woff2 +0 -0
  230. package/public/webfonts/NotoSans/NotoSans-ExtraLightItalic.woff +0 -0
  231. package/public/webfonts/NotoSans/NotoSans-ExtraLightItalic.woff2 +0 -0
  232. package/public/webfonts/NotoSans/NotoSans-Italic.woff +0 -0
  233. package/public/webfonts/NotoSans/NotoSans-Italic.woff2 +0 -0
  234. package/public/webfonts/NotoSans/NotoSans-Light.woff +0 -0
  235. package/public/webfonts/NotoSans/NotoSans-Light.woff2 +0 -0
  236. package/public/webfonts/NotoSans/NotoSans-LightItalic.woff +0 -0
  237. package/public/webfonts/NotoSans/NotoSans-LightItalic.woff2 +0 -0
  238. package/public/webfonts/NotoSans/NotoSans-Medium.woff +0 -0
  239. package/public/webfonts/NotoSans/NotoSans-Medium.woff2 +0 -0
  240. package/public/webfonts/NotoSans/NotoSans-MediumItalic.woff +0 -0
  241. package/public/webfonts/NotoSans/NotoSans-MediumItalic.woff2 +0 -0
  242. package/public/webfonts/NotoSans/NotoSans-Regular.woff +0 -0
  243. package/public/webfonts/NotoSans/NotoSans-Regular.woff2 +0 -0
  244. package/public/webfonts/NotoSans/NotoSans-SemiBold.woff +0 -0
  245. package/public/webfonts/NotoSans/NotoSans-SemiBold.woff2 +0 -0
  246. package/public/webfonts/NotoSans/NotoSans-SemiBoldItalic.woff +0 -0
  247. package/public/webfonts/NotoSans/NotoSans-SemiBoldItalic.woff2 +0 -0
  248. package/public/webfonts/NotoSans/NotoSans-Thin.woff +0 -0
  249. package/public/webfonts/NotoSans/NotoSans-Thin.woff2 +0 -0
  250. package/public/webfonts/NotoSans/NotoSans-ThinItalic.woff +0 -0
  251. package/public/webfonts/NotoSans/NotoSans-ThinItalic.woff2 +0 -0
  252. package/public/webfonts/NotoSans/stylesheet.css +162 -0
  253. package/public/webfonts/fa-solid-900.ttf +0 -0
  254. package/public/webfonts/fa-solid-900.woff2 +0 -0
  255. package/readme.md +187 -0
  256. package/server.js +2593 -0
  257. package/start.sh +24 -0
  258. package/tools/charaverter/main.mjs +110 -0
  259. package/tools/charaverter/package.json +10 -0
@@ -0,0 +1,1899 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <base href="/">
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no">
8
+ <meta name="apple-mobile-web-app-capable" content="yes">
9
+ <meta name="darkreader-lock">
10
+ <link href="webfonts/NotoSans/stylesheet.css" rel="stylesheet">
11
+ <!-- fontawesome webfonts-->
12
+ <link href="css/fontawesome.css" rel="stylesheet">
13
+ <link href="css/solid.css" rel="stylesheet">
14
+
15
+ <link rel="apple-touch-icon" sizes="57x57" href="img/apple-icon-57x57.png" />
16
+ <link rel="apple-touch-icon" sizes="72x72" href="img/apple-icon-72x72.png" />
17
+ <link rel="apple-touch-icon" sizes="114x114" href="img/apple-icon-114x114.png" />
18
+ <link rel="apple-touch-icon" sizes="144x144" href="img/apple-icon-144x144.png" />
19
+
20
+ <script>
21
+ const documentHeight = () => {
22
+ const doc = document.documentElement
23
+ doc.style.setProperty('--doc-height', `${window.innerHeight}px`)
24
+ }
25
+ window.addEventListener('resize', documentHeight)
26
+ documentHeight()
27
+ </script>
28
+
29
+ <script src="scripts/jquery-3.5.1.min.js"></script>
30
+ <script src="scripts/jquery.transit.min.js"></script>
31
+ <script src="scripts/jquery-cookie-1.4.1.min.js"></script>
32
+ <script src="scripts/showdown.min.js"></script>
33
+ <script src="scripts/popper.js"></script>
34
+ <script src="scripts/purify.min.js"></script>
35
+ <script type="module" src="scripts/power-user.js"></script>
36
+ <script type="module" src="scripts/swiped-events.js"></script>
37
+ <link rel="stylesheet" type="text/css" href="style.css">
38
+ <link rel="stylesheet" href="css/bg_load.css">
39
+ <link rel="icon" type="image/x-icon" href="favicon.ico">
40
+
41
+ <script type=module src="script.js"></script>
42
+
43
+ <script type="module" src="scripts/world-info.js"></script>
44
+ <script type="module" src="scripts/group-chats.js"></script>
45
+ <script type="module" src="scripts/kai-settings.js"></script>
46
+ <script type="module" src="scripts/textgen-settings.js"></script>
47
+ <script type="module" src="scripts/bookmarks.js"></script>
48
+ <script type="module" src="scripts/horde.js"></script>
49
+ <script type="module" src="scripts/poe.js"></script>
50
+ <script type="module" src="scripts/RossAscends-mods.js"></script>
51
+ <script type="text/javascript" src="scripts/toolcool-color-picker.js"></script>
52
+
53
+ <title>SillyTavern</title>
54
+ </head>
55
+
56
+ <body class="no-blur">
57
+
58
+ <div id="bg_custom"></div>
59
+ <div id="bg1"></div>
60
+
61
+ <!-- top bar central settings buttons -->
62
+ <div id="top-bar">
63
+ </div>
64
+ <div id="top-settings-holder">
65
+ <!-- background selection menu -->
66
+
67
+ <div id="ai-config-button" class="drawer">
68
+ <div class="drawer-toggle drawer-header">
69
+ <div id="leftNavDrawerIcon" class="drawer-icon fa-solid fa-sliders closedIcon" title="AI Response Configuration"></div>
70
+ </div>
71
+
72
+ <div id="left-nav-panel" class="drawer-content fillLeft closedDrawer">
73
+ <div id="left-nav-panelheader" class="fa-solid fa-grip drag-grabber"></div>
74
+ <div id="lm_button_panel_pin_div" title="Locked = AI Configuration panel will stay open">
75
+ <input type="checkbox" id="lm_button_panel_pin">
76
+ <label for="lm_button_panel_pin">
77
+ <div class="unchecked fa-solid fa-lock-open "></div>
78
+ <div class="checked fa-solid fa-lock "></div>
79
+ </label>
80
+ </div>
81
+ <div class="scrollableInner">
82
+ <div class="flex-container">
83
+ <div id="respective-presets-block" class="width100p">
84
+ <div id="kobold_api-presets">
85
+ <h3>Kobold Presets
86
+ <a href="/notes/4" class="notes-link" target="_blank">
87
+ <span class="note-link-span">?</span>
88
+ </a>
89
+ </h3>
90
+ <select id="settings_perset">
91
+ <option value="gui">GUI KoboldAI Settings</option>
92
+ </select>
93
+ </div>
94
+ <div id="novel_api-presets">
95
+ <h3>
96
+ NovelAI Presets
97
+ <a href="/notes/7" class="notes-link" target="_blank">
98
+ <span class="note-link-span">?</span>
99
+ </a>
100
+ </h3>
101
+ <select id="settings_perset_novel">
102
+ <option value="gui">Default</option>
103
+ </select>
104
+ </div>
105
+ <div id="openai_api-presets">
106
+ <div>
107
+ <h4>OpenAI Presets</h4>
108
+ <select id="settings_perset_openai">
109
+ <option value="gui">Default</option>
110
+ </select>
111
+ </div>
112
+ <div>
113
+ <h4>OpenAI Model</h4>
114
+ <select id="model_openai_select">
115
+ <option value="gpt-3.5-turbo">gpt-3.5-turbo</option>
116
+ <option value="gpt-3.5-turbo-0301">gpt-3.5-turbo-0301</option>
117
+ <option value="gpt-4">gpt-4</option>
118
+ <option value="gpt-4-32k">gpt-4-32k</option>
119
+ </select>
120
+ </div>
121
+ </div>
122
+ <div id="textgenerationwebui_api-presets">
123
+ <h3>Text Gen WebUI (ooba) presets</h3>
124
+ <select id="settings_preset_textgenerationwebui">
125
+ </select>
126
+ </div>
127
+ <div id="poe_api-presets">
128
+ <h3>Poe.com API Settings</h3>
129
+ <!-- just a placeholder title for the Poe.com settings panel-->
130
+ </div>
131
+ </div>
132
+ <div id="common-gen-settings-block" class="width100p">
133
+ <div id="pro-settings-block">
134
+ <div id="amount_gen_block" class="range-block">
135
+ <div class="range-block-title">
136
+ Response Length (tokens)
137
+ </div>
138
+ <div class="range-block-range">
139
+ <input type="range" id="amount_gen" name="volume" min="16" max="512" step="1">
140
+ </div>
141
+ <div class="range-block-counter">
142
+ <span id="amount_gen_counter">select</span>
143
+ </div>
144
+ </div>
145
+ <div id="max_context_block" class="range-block">
146
+ <div class="range-block-title">
147
+ Context Size (tokens)
148
+ </div>
149
+ <div class="range-block-range">
150
+ <input type="range" id="max_context" name="volume" min="512" max="2048" step="1">
151
+ </div>
152
+ <div class="range-block-counter">
153
+ <span id="max_context_counter">select</span>
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ <div id="respective-ranges-and-temps" class="width100p">
159
+ <div id="range_block">
160
+ <div class="range-block">
161
+ <div class="range-block-title">
162
+ Temperature
163
+ </div>
164
+ <div class="range-block-range">
165
+ <input type="range" id="temp" name="volume" min="0.1" max="2.0" step="0.01">
166
+ </div>
167
+ <div class="range-block-counter">
168
+ <span id="temp_counter">select</span>
169
+ </div>
170
+ </div>
171
+ <div class="range-block">
172
+ <div class="range-block-title">
173
+ Rep. Pen.
174
+ </div>
175
+ <div class="range-block-range">
176
+ <input type="range" id="rep_pen" name="volume" min="1" max="1.5" step="0.01">
177
+ </div>
178
+ <div class="range-block-counter">
179
+ <span id="rep_pen_counter">select</span>
180
+ </div>
181
+ </div>
182
+ <div class="range-block">
183
+ <div class="range-block-title">
184
+ Rep. Pen. Range
185
+ </div>
186
+ <div class="range-block-range">
187
+ <input type="range" id="rep_pen_range" name="volume" min="0" max="2048" step="1">
188
+ </div>
189
+ <div class="range-block-counter">
190
+ <span id="rep_pen_range_counter">select</span>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ <div id="range_block_novel">
195
+ </div>
196
+ <div id="range_block_textgenerationwebui">
197
+ <div class="range-block">
198
+ <div class="range-block-title">
199
+ Temperature
200
+ </div>
201
+ <div class="range-block-range">
202
+ <input type="range" id="temp_textgenerationwebui" name="volume" min="0.1" max="2.0" step="0.01">
203
+ </div>
204
+ <div class="range-block-counter">
205
+ <span id="temp_counter_textgenerationwebui">select</span>
206
+ </div>
207
+ </div>
208
+ <div class="range-block">
209
+ <div class="range-block-title">
210
+ Rep. Pen.
211
+ </div>
212
+ <div class="range-block-range">
213
+ <input type="range" id="rep_pen_textgenerationwebui" name="volume" min="1" max="1.5" step="0.01">
214
+ </div>
215
+ <div class="range-block-counter">
216
+ <span id="rep_pen_counter_textgenerationwebui">select</span>
217
+ </div>
218
+ </div>
219
+ <div class="range-block">
220
+ <div class="range-block-title">
221
+ Encoder Rep. Pen.
222
+ </div>
223
+ <div class="range-block-range">
224
+ <input type="range" id="encoder_rep_pen_textgenerationwebui" name="volume" min="0.8" max="1.5" step="0.01" />
225
+ </div>
226
+ <div class="range-block-counter">
227
+ <span id="encoder_rep_pen_counter_textgenerationwebui">select</span>
228
+ </div>
229
+ </div>
230
+ <div class="range-block">
231
+ <div class="range-block-title">
232
+ No Repeat Ngram Size
233
+ </div>
234
+ <div class="range-block-range">
235
+ <input type="range" id="no_repeat_ngram_size_textgenerationwebui" name="volume" min="0" max="20" step="1">
236
+ </div>
237
+ <div class="range-block-counter">
238
+ <span id="no_repeat_ngram_size_counter_textgenerationwebui">select</span>
239
+ </div>
240
+ </div>
241
+ <div class="range-block">
242
+ <div class="range-block-title">
243
+ Min Length
244
+ </div>
245
+ <div class="range-block-range">
246
+ <input type="range" id="min_length_textgenerationwebui" name="volume" min="0" max="2000" step="1" />
247
+ </div>
248
+ <div class="range-block-counter">
249
+ <span id="min_length_counter_textgenerationwebui">select</span>
250
+ </div>
251
+ </div>
252
+ </div>
253
+ <div id="range_block_openai">
254
+ <div class="range-block">
255
+ <div class="range-block-title">
256
+ OpenAI Reverse Proxy
257
+ </div>
258
+ <div class="range-block-counter">
259
+ Alternative server URL (leave empty to use the default value).<br>
260
+ <b class="reverse_proxy_warning">Don't expose your real API keys to reverse proxies!</b>
261
+ </div>
262
+ <div class="wide100p">
263
+ <input id="openai_reverse_proxy" type="text" class="text_pole" placeholder="https://api.openai.com/v1" maxlength="100" />
264
+ </div>
265
+ </div>
266
+ <div class="range-block">
267
+ <div class="range-block-title">
268
+ Context Size (tokens)
269
+ </div>
270
+ <div class="range-block-range">
271
+ <input type="range" id="openai_max_context" name="volume" min="512" max="4095" step="1">
272
+ </div>
273
+ <div class="range-block-counter">
274
+ <span id="openai_max_context_counter">select</span>
275
+ </div>
276
+ </div>
277
+ <div class="range-block">
278
+ <div class="range-block-title">
279
+ Max Response Length (tokens)
280
+ </div>
281
+ <div class="wide100p">
282
+ <input type="number" id="openai_max_tokens" name="openai_max_tokens" class="text_pole" min="50" max="1000">
283
+ </div>
284
+ </div>
285
+ <div class="range-block">
286
+ <div class="range-block-title">
287
+ Temperature
288
+ </div>
289
+
290
+ <div class="range-block-range">
291
+ <input type="range" id="temp_openai" name="volume" min="0" max="2.0" step="0.01">
292
+ </div>
293
+ <div class="range-block-counter">
294
+ <span id="temp_counter_openai">select</span>
295
+ </div>
296
+ </div>
297
+ <div class="range-block">
298
+ <div class="range-block-title">
299
+ Frequency Penalty
300
+ </div>
301
+
302
+ <div class="range-block-range">
303
+ <input type="range" id="freq_pen_openai" name="volume" min="-2" max="2" step="0.01">
304
+ </div>
305
+ <div class="range-block-counter">
306
+ <span id="freq_pen_counter_openai">select</span>
307
+ </div>
308
+ </div>
309
+ <div class="range-block">
310
+ <div class="range-block-title">
311
+ Presence Penalty
312
+ </div>
313
+ <div class="range-block-range">
314
+ <input type="range" id="pres_pen_openai" name="volume" min="-2" max="2" step="0.01">
315
+ </div>
316
+ <div class="range-block-counter">
317
+ <span id="pres_pen_counter_openai">select</span>
318
+ </div>
319
+ </div>
320
+ <div style="display:none" class="range-block">
321
+ <div class="range-block-title">
322
+ Logit Bias
323
+ </div>
324
+ <div class="openai_logit_bias">
325
+ <div class="openai_logit_bias_form">
326
+ <input class="text_pole" id="openai_logit_bias_text" placeholder="text (will be converted to tokens)" />
327
+ <div class="openai_logit_bias_range_block">
328
+ <input id="openai_logit_bias_value" type="range" min="-100" value="0" max="100" />
329
+ <div class="range-block-counter">
330
+ <span id="openai_logit_bias_value_counter">select</span>
331
+ </div>
332
+ </div>
333
+ <input class="menu_button" id="openai_logit_bias_add" type="button" value="Add" />
334
+ </div>
335
+ <div class="openai_logit_bias_list">
336
+ <div class="openai_logit_bias_list_item">
337
+ <span class="token_id">666</span>
338
+ <span class="separator">:</span>
339
+ <span class="bias_value">-100</span>
340
+ </div>
341
+ </div>
342
+ </div>
343
+ </div>
344
+ </div>
345
+ <div id="range_block_poe">
346
+ <div class="range-block">
347
+ <label for="poe_streaming" class="checkbox_label widthFreeExpand">
348
+ <input id="poe_streaming" type="checkbox" />
349
+ Streaming
350
+ </label>
351
+ <div class="range-block-counter justifyLeft">
352
+ Display bot response text chunks as they are generated.
353
+ </div>
354
+ </div>
355
+ <div class="range-block">
356
+ <label for="poe_auto_purge" class="checkbox_label widthFreeExpand">
357
+ <input id="poe_auto_purge" type="checkbox">
358
+ Auto-purge API context (save JB)
359
+ </label>
360
+ <div class="range-block-counter justifyLeft">
361
+ Delete non-JB messages from Poe context before sending a new prompt. Prevents auto-jailbreak message from being pushed out of context.
362
+ </div>
363
+ </div>
364
+ <div class="range-block">
365
+ <label for="poe_auto_jailbreak" class="checkbox_label widthFreeExpand">
366
+ <input id="poe_auto_jailbreak" type="checkbox">
367
+ Auto-jailbreak
368
+ </label>
369
+ <div class="range-block-counter justifyLeft">
370
+ Send the jailbreak message before first generation after page refresh.
371
+ </div>
372
+ </div>
373
+ <div class="range-block">
374
+ <label for="poe_character_nudge" class="checkbox_label widthFreeExpand">
375
+ <input id="poe_character_nudge" type="checkbox" />
376
+ Send character note
377
+ </label>
378
+ <div class="range-block-counter justifyLeft">
379
+ Sent with every prompt to modify bot responses.
380
+ </div>
381
+ <div class="range-block-range">
382
+ </div>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ <div id="advanced-ai-config-block" class="width100p">
387
+ <div id="kobold_api-settings">
388
+ <div id="kobold-advanced-config">
389
+ <div class="range-block">
390
+ <div class="range-block-title">
391
+ Top P
392
+ </div>
393
+ <div class="range-block-range">
394
+ <input type="range" id="top_p" name="volume" min="0" max="1" step="0.01">
395
+ </div>
396
+ <div class="range-block-counter">
397
+ <span id="top_p_counter">select</span>
398
+ </div>
399
+ </div>
400
+ <div class="range-block">
401
+ <div class="range-block-title">
402
+ Top A
403
+ </div>
404
+ <div class="range-block-range">
405
+ <input type="range" id="top_a" name="volume" min="0" max="1" step="0.01">
406
+ </div>
407
+ <div class="range-block-counter">
408
+ <span id="top_a_counter">select</span>
409
+ </div>
410
+ </div>
411
+ <div class="range-block">
412
+ <div class="range-block-title">
413
+ Top K
414
+ </div>
415
+ <div class="range-block-range">
416
+ <input type="range" id="top_k" name="volume" min="0" max="100" step="1">
417
+ </div>
418
+ <div class="range-block-counter">
419
+ <span id="top_k_counter">select</span>
420
+ </div>
421
+ </div>
422
+ <div class="range-block">
423
+ <div class="range-block-title">
424
+ Typical Sampling
425
+ </div>
426
+ <div class="range-block-range">
427
+ <input type="range" id="typical" name="volume" min="0" max="1" step="0.01">
428
+ </div>
429
+ <div class="range-block-counter">
430
+ <span id="typical_counter">select</span>
431
+ </div>
432
+ </div>
433
+ <div class="range-block">
434
+ <div class="range-block-title">
435
+ Tail Free Sampling
436
+ </div>
437
+ <div class="range-block-range">
438
+ <input type="range" id="tfs" name="volume" min="0" max="1" step="0.01">
439
+ </div>
440
+ <div class="range-block-counter">
441
+ <span id="tfs_counter">select</span>
442
+ </div>
443
+ </div>
444
+ <div class="range-block">
445
+ <div class="range-block-title">
446
+ Rep. Pen. Slope
447
+ </div>
448
+ <div class="range-block-range">
449
+ <input type="range" id="rep_pen_slope" name="volume" min="0" max="10" step="0.1">
450
+ </div>
451
+ <div class="range-block-counter">
452
+ <span id="rep_pen_slope_counter">select</span>
453
+ </div>
454
+ </div>
455
+ <div class="range-block">
456
+ <label class="checkbox_label" for="single_line">
457
+ <input id="single_line" type="checkbox" />
458
+ Single-line mode
459
+ </label>
460
+ </div>
461
+ </div>
462
+ </div>
463
+ <div id="novel_api-settings">
464
+ <h4>Novel AI Model
465
+ <a href="/notes/8" class="notes-link" target="_blank">
466
+ <span class="note-link-span">?</span>
467
+ </a>
468
+ </h4>
469
+ <select id="model_novel_select">
470
+ <option value="euterpe-v2">Euterpe</option>
471
+ <option value="krake-v2">Krake</option>
472
+ </select>
473
+ <div class="range-block">
474
+ <div class="range-block-title">
475
+ Temperature
476
+ </div>
477
+ <div class="range-block-range">
478
+ <input type="range" id="temp_novel" name="volume" min="0.1" max="2.0" step="0.01">
479
+ </div>
480
+ <div class="range-block-counter">
481
+ <span id="temp_counter_novel">select</span>
482
+ </div>
483
+ </div>
484
+ <div class="range-block">
485
+ <div class="range-block-title">
486
+ Rep. Pen.
487
+ </div>
488
+ <div class="range-block-range">
489
+ <input type="range" id="rep_pen_novel" name="volume" min="1" max="1.5" step="0.01">
490
+ </div>
491
+ <div class="range-block-counter">
492
+ <span id="rep_pen_counter_novel">select</span>
493
+ </div>
494
+ </div>
495
+ <div class="range-block">
496
+ <div class="range-block-title">
497
+ Rep. Pen. Range (tokens)
498
+ </div>
499
+ <div class="range-block-range">
500
+ <input type="range" id="rep_pen_size_novel" name="volume" min="0" max="2048" step="1">
501
+ </div>
502
+ <div class="range-block-counter">
503
+ <span id="rep_pen_size_counter_novel">select</span>
504
+ </div>
505
+ </div>
506
+ </div>
507
+ <div id="textgenerationwebui_api-settings">
508
+ <div class="range-block">
509
+ <div class="range-block-title">
510
+ Top K
511
+ </div>
512
+ <div class="range-block-range">
513
+ <input type="range" id="top_k_textgenerationwebui" name="volume" min="0" max="200" step="1">
514
+ </div>
515
+ <div class="range-block-counter">
516
+ <span id="top_k_counter_textgenerationwebui">select</span>
517
+ </div>
518
+ </div>
519
+ <div class="range-block">
520
+ <div class="range-block-title">
521
+ Top P
522
+ </div>
523
+ <div class="range-block-range">
524
+ <input type="range" id="top_p_textgenerationwebui" name="volume" min="0" max="1" step="0.01">
525
+ </div>
526
+ <div class="range-block-counter">
527
+ <span id="top_p_counter_textgenerationwebui">select</span>
528
+ </div>
529
+ </div>
530
+ <div class="range-block">
531
+ <div class="range-block-title">
532
+ Typical P
533
+ </div>
534
+ <div class="range-block-range">
535
+ <input type="range" id="typical_p_textgenerationwebui" name="volume" min="0" max="1" step="0.01">
536
+ </div>
537
+ <div class="range-block-counter">
538
+ <span id="typical_p_counter_textgenerationwebui">select</span>
539
+ </div>
540
+ </div>
541
+ <div class="range-block">
542
+ <label class="checkbox_label" for="do_sample_textgenerationwebui">
543
+ <input type="checkbox" id="do_sample_textgenerationwebui" />
544
+ Do Sample
545
+ </label>
546
+ </div>
547
+ <div class="range-block">
548
+ <label class="checkbox_label" for="add_bos_token_textgenerationwebui">
549
+ <input type="checkbox" id="add_bos_token_textgenerationwebui" />
550
+ Add BOS Token
551
+ </label>
552
+ <div class="range-block-counter justifyLeft">
553
+ Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative.
554
+ </div>
555
+ </div>
556
+ <div class="range-block">
557
+ <label class="checkbox_label" for="ban_eos_token_textgenerationwebui">
558
+ <input type="checkbox" id="ban_eos_token_textgenerationwebui" />
559
+ Ban EOS Token
560
+ </label>
561
+ <div class="range-block-counter justifyLeft">
562
+ Ban the eos_token. This forces the model to never end the generation prematurely.
563
+ </div>
564
+ </div>
565
+ <div class="range-block">
566
+ <label class="checkbox_label" for="skip_special_tokens_textgenerationwebui">
567
+ <input type="checkbox" id="skip_special_tokens_textgenerationwebui" />
568
+ Skip Special Tokens
569
+ </label>
570
+ </div>
571
+ <hr>
572
+ <h4>Beam search</h4>
573
+ <div class="range-block">
574
+ <div class="range-block-title">
575
+ Number of Beams
576
+ </div>
577
+ <div class="range-block-range">
578
+ <input type="range" id="num_beams_textgenerationwebui" name="volume" min="1" max="20" step="1" />
579
+ </div>
580
+ <div class="range-block-counter">
581
+ <span id="num_beams_counter_textgenerationwebui">select</span>
582
+ </div>
583
+ </div>
584
+ <div class="range-block">
585
+ <div class="range-block-title">
586
+ Length Penalty
587
+ </div>
588
+ <div class="range-block-range">
589
+ <input type="range" id="length_penalty_textgenerationwebui" name="volume" min="-5" max="5" step="0.1" />
590
+ </div>
591
+ <div class="range-block-counter">
592
+ <span id="length_penalty_counter_textgenerationwebui">select</span>
593
+ </div>
594
+ </div>
595
+ <div class="range-block">
596
+ <label class="checkbox_label" for="early_stopping_textgenerationwebui">
597
+ <input type="checkbox" id="early_stopping_textgenerationwebui" />
598
+ Early Stopping
599
+ </label>
600
+ </div>
601
+ <hr>
602
+ <h4>Contrastive search</h4>
603
+ <div class="range-block">
604
+ <div class="range-block-title">
605
+ Penalty Alpha
606
+ </div>
607
+ <div class="range-block-range">
608
+ <input type="range" id="penalty_alpha_textgenerationwebui" name="volume" min="0" max="5" step="0.05" />
609
+ </div>
610
+ <div class="range-block-counter">
611
+ <span id="penalty_alpha_counter_textgenerationwebui">select</span>
612
+ </div>
613
+ </div>
614
+ <div class="range-block">
615
+ <div class="range-block-title">
616
+ Seed
617
+ </div>
618
+ <input type="number" id="seed_textgenerationwebui" class="text_pole" maxlength="100" />
619
+ </div>
620
+ <div class="range-block">
621
+ <div class="range-block-title">
622
+ Gradio Streaming Function ID
623
+ <a href="/notes/textgen_streaming" class="notes-link" target="_blank">
624
+ <span class="note-link-span">?</span>
625
+ </a>
626
+ </div>
627
+ <input type="number" id="fn_index_textgenerationwebui" class="text_pole" maxlength="100" />
628
+ </div>
629
+ </div>
630
+ <div id="openai_settings">
631
+ <div class="">
632
+ <div class="range-block">
633
+ <label class="checkbox_label" for="nsfw_toggle">
634
+ <input id="nsfw_toggle" type="checkbox" checked>
635
+ NSFW Toggle
636
+ </label>
637
+ </div>
638
+ <div class="range-block">
639
+ <label title="NSFW block goes first in the resulting prompt" class="checkbox_label widthFreeExpand">
640
+ <input id="nsfw_first" type="checkbox" />
641
+ NSFW first
642
+ </label>
643
+ <div class="range-block-counter justifyLeft">NSFW block goes first in the resulting prompt</div>
644
+ </div>
645
+ <div class="range-block">
646
+ <label title="Inserts jailbreak as a last system message" class="checkbox_label widthFreeExpand">
647
+ <input id="jailbreak_system" type="checkbox" />
648
+ Send Jailbreak
649
+ </label>
650
+ <div class="range-block-counter justifyLeft">Inserts jailbreak as a last system message</div>
651
+ </div>
652
+ <div class="range-block">
653
+ <label for="stream_toggle" title="Enables OpenAI completion streaming" class="checkbox_label widthFreeExpand">
654
+ <input id="stream_toggle" type="checkbox" />
655
+ Streaming
656
+ </label>
657
+ <div class="range-block-counter justifyLeft">Enables OpenAI completion streaming</div>
658
+ </div>
659
+ <div class="range-block">
660
+ <label title="Use OAI knowledge base to enhance definitions for public figures and known fictional characters" class="checkbox_label widthFreeExpand">
661
+ <input id="enhance_definitions" type="checkbox" />
662
+ Enhance Definitions
663
+ </label>
664
+ <div class="range-block-counter justifyLeft">
665
+ Use OAI knowledge base to enhance definitions for public figures and known fictional characters
666
+ </div>
667
+ </div>
668
+ <div class="range-block">
669
+ <label for="wrap_in_quotes" title="Wrap user messages in quotes before sending" class="checkbox_label widthFreeExpand">
670
+ <input id="wrap_in_quotes" type="checkbox" />
671
+ Wrap in Quotes
672
+ </label>
673
+ <div class="range-block-counter justifyLeft">
674
+ Wrap entire user message in quotes before sending.
675
+ Leave off if you use quotes manually for speech.
676
+ </div>
677
+ </div>
678
+ </div>
679
+ <br>
680
+ <div class="range-block">
681
+ <div class="range-block-title openai_restorable">
682
+ <span>Main prompt</span>
683
+ <div id="main_prompt_restore" title="Restore default prompt" class="right_menu_button">
684
+ <div class="fa-solid fa-clock-rotate-left "></div>
685
+ </div>
686
+ </div>
687
+ <div class="range-block-counter">
688
+ The main prompt used to set the model behavior
689
+ </div>
690
+ <div class="wide100p">
691
+ <textarea id="main_prompt_textarea" class="text_pole textarea_compact" name="main_prompt" rows="6" placeholder=""></textarea>
692
+ </div>
693
+ </div>
694
+ <div class="range-block">
695
+ <div class="range-block-title openai_restorable">
696
+ <span>NSFW prompt</span>
697
+ <div id="nsfw_prompt_restore" title="Restore default prompt" class="right_menu_button">
698
+ <div class="fa-solid fa-clock-rotate-left "></div>
699
+ </div>
700
+ </div>
701
+ <div class="range-block-counter">
702
+ Prompt that is used when the NSFW toggle is on
703
+ </div>
704
+ <div class="wide100p">
705
+ <textarea id="nsfw_prompt_textarea" class="text_pole textarea_compact" name="nsfw_prompt" rows="6" placeholder=""></textarea>
706
+ </div>
707
+ </div>
708
+ <div class="range-block">
709
+ <div class="range-block-title openai_restorable">
710
+ <span>Jailbreak prompt</span>
711
+ <div id="jailbreak_prompt_restore" title="Restore default prompt" class="right_menu_button">
712
+ <div class="fa-solid fa-clock-rotate-left"></div>
713
+ </div>
714
+ </div>
715
+ <div class="range-block-counter">
716
+ Prompt that is used when the Jailbreak toggle is on
717
+ </div>
718
+ <div class="wide100p">
719
+ <textarea id="jailbreak_prompt_textarea" class="text_pole textarea_compact" name="jailbreak_prompt" rows="6" placeholder=""></textarea>
720
+ </div>
721
+ </div>
722
+ <div class="range-block">
723
+ <div class="range-block-title openai_restorable">
724
+ <span>Impersonation prompt</span>
725
+ <div id="impersonation_prompt_restore" title="Restore default prompt" class="right_menu_button">
726
+ <div class="fa-solid fa-clock-rotate-left"></div>
727
+ </div>
728
+ </div>
729
+ <div class="range-block-counter">
730
+ Prompt that is used for Impersonation function
731
+ </div>
732
+ <div class="wide100p">
733
+ <textarea id="impersonation_prompt_textarea" class="text_pole textarea_compact" name="impersonation_prompt" rows="6" placeholder=""></textarea>
734
+ </div>
735
+ </div>
736
+ <div class="range-block openai_preset_buttons">
737
+ <input id="update_preset" class="menu_button" type="button" value="Update current preset">
738
+ <input id="new_preset" class="menu_button" type="button" value="Create new preset">
739
+ </div>
740
+ </div>
741
+ <div id="poe_settings">
742
+ <div class="range-block">
743
+ <div class="range-block-title justifyLeft poe_restorable">
744
+ <span>Jailbreak activation message</span>
745
+ <div id="poe_activation_message_restore" title="Restore default jailbreak" class="right_menu_button">
746
+ <div class="fa-solid fa-clock-rotate-left"></div>
747
+ </div>
748
+ </div>
749
+ <div class="range-block-counter justifyLeft">
750
+ Message to send when auto-jailbreak is on.
751
+ </div>
752
+ <div class="wide100p">
753
+ <textarea id="poe_activation_message" class="text_pole textarea_compact" rows="6"></textarea>
754
+ </div>
755
+ </div>
756
+ <div class="range-block">
757
+ <div class="range-block-title justifyLeft poe_restorable">
758
+ <span>Jailbreak confirmation reply</span>
759
+ <div id="poe_activation_response_restore" title="Restore default reply" class="right_menu_button">
760
+ <div class="fa-solid fa-clock-rotate-left"></div>
761
+ </div>
762
+ </div>
763
+ <div class="range-block-counter justifyLeft">
764
+ Bot must send this back to confirm jailbreak
765
+ </div>
766
+ <div class="wide100p">
767
+ <input id="poe_activation_response" class="text_pole textarea_compact" type="text" />
768
+ </div>
769
+ </div>
770
+ <div class="range-block">
771
+ <div class="range-block-title justifyLeft poe_restorable">
772
+ <span>Character Note</span>
773
+ <div id="poe_nudge_text_restore" title="Restore default note" class="right_menu_button">
774
+ <div class="fa-solid fa-clock-rotate-left"></div>
775
+ </div>
776
+ </div>
777
+ <div class="range-block-counter justifyLeft">
778
+ Influences bot behavior in its responses.
779
+ </div>
780
+ <div class="wide100p">
781
+ <textarea id="poe_nudge_text" class="text_pole textarea_compact" rows="3" maxlength="250"></textarea>
782
+ </div>
783
+ </div>
784
+ <div class="range-block">
785
+ <div class="range-block-title justifyLeft poe_restorable">
786
+ <span>Impersonation prompt</span>
787
+ <div id="poe_impersonation_prompt_restore" title="Restore default prompt" class="right_menu_button">
788
+ <div class="fa-solid fa-clock-rotate-left"></div>
789
+ </div>
790
+ </div>
791
+ <div class="range-block-counter justifyLeft">
792
+ Prompt that is used for Impersonation function
793
+ </div>
794
+ <div class="wide100p">
795
+ <textarea id="poe_impersonation_prompt" class="text_pole textarea_compact" rows="3" maxlength="250"></textarea>
796
+ </div>
797
+ </div>
798
+ </div>
799
+ </div>
800
+ </div>
801
+ </div>
802
+ </div>
803
+ </div>
804
+
805
+ <div id="sys-settings-button" class="drawer">
806
+ <div class="drawer-toggle drawer-header">
807
+ <div id="API-status-top" class="drawer-icon fa-solid fa-plug-circle-exclamation closedIcon" title="API Connections"></div>
808
+ </div>
809
+ <div id="rm_api_block" class="drawer-content closedDrawer">
810
+ <h3 id="title_api">API</h3>
811
+ <div class="flex-container">
812
+ <div id="main-API-selector-block">
813
+ <select id="main_api">
814
+ <option value="kobold">KoboldAI</option>
815
+ <option value="textgenerationwebui">Text Gen WebUI (ooba)</option>
816
+ <option value="novel">NovelAI</option>
817
+ <option value="openai">OpenAI</option>
818
+ <option value="poe">Poe</option>
819
+ </select>
820
+ </div>
821
+ <div id="kobold_api" style="position: relative;"> <!-- shows the kobold settings -->
822
+ <form action="javascript:void(null);" method="post" enctype="multipart/form-data">
823
+ <label for="use_horde" class="checkbox_label">
824
+ <input id="use_horde" type="checkbox" />
825
+ Use Horde.
826
+ <a target="_blank" href="https://horde.koboldai.net/">Learn more</a>
827
+ </label>
828
+ <div id="kobold_api_block">
829
+ <h4>API url</h4>
830
+ <h5>Example: http://127.0.0.1:5000/api </h5>
831
+ <input id="api_url_text" name="api_url" class="text_pole" maxlength="500" value="" autocomplete="off">
832
+ <input id="api_button" class="menu_button" type="submit" value="Connect">
833
+ <div id="api_loading" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
834
+ </div>
835
+ <div id="kobold_horde_block">
836
+
837
+ <label for="horde_auto_adjust" class="checkbox_label">
838
+ <input id="horde_auto_adjust" type="checkbox" />
839
+ Adjust generation to worker capabilities
840
+ </label>
841
+ <h4>API key</h4>
842
+ <h5>Get it here: <a target="_blank" href="https://horde.koboldai.net/register">Register</a>
843
+ </h5>
844
+ <input id="horde_api_key" name="horde_api_key" class="text_pole" maxlength="500" value="0000000000" autocomplete="off">
845
+ <h4 class="horde_model_title">
846
+ Model
847
+ <div id="horde_refresh" title="Refresh models" class="right_menu_button">
848
+ <div class="fa-solid fa-repeat "></div>
849
+ </div>
850
+ </h4>
851
+ <select id="horde_model">
852
+ <option>-- Horde models not loaded --</option>
853
+ </select>
854
+ </div>
855
+ <div id="online_status2">
856
+ <div id="online_status_indicator2"></div>
857
+ <div id="online_status_text2">Not connected</div>
858
+ </div>
859
+ </form>
860
+ </div>
861
+ <div id="novel_api" style="display: none;position: relative;"> <!-- shows the novel settings -->
862
+ <form action="javascript:void(null);" method="post" enctype="multipart/form-data">
863
+
864
+ <h4>API key</h4>
865
+ <h5>Where to get
866
+ <a href="/notes/6" class="notes-link" target="_blank">
867
+ <span class="note-link-span">?</span>
868
+ </a>
869
+ </h5>
870
+ <input id="api_key_novel" name="api_key_novel" class="text_pole" maxlength="500" size="35" value="" autocomplete="off">
871
+ <input id="api_button_novel" class="menu_button" type="submit" value="Connect">
872
+ <div id="api_loading_novel" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
873
+ </form>
874
+ <div id="online_status3">
875
+ <div id="online_status_indicator3"></div>
876
+ <div id="online_status_text3">No connection...</div>
877
+ </div>
878
+ </div>
879
+ <div id="textgenerationwebui_api" style="display: none;position: relative;">
880
+ <div class="oobabooga_logo">
881
+ <a href="https://github.com/oobabooga/text-generation-webui" target="_blank">
882
+ oobabooga/text-generation-webui
883
+ </a>
884
+ </div>
885
+ <span>
886
+ Make sure you run it in notebook/default mode<br>(not
887
+ <pre>--cai-chat</pre> or
888
+ <pre>--chat</pre>)
889
+ </span>
890
+ <form action="javascript:void(null);" method="post" enctype="multipart/form-data">
891
+ <h4>API url</h4>
892
+ <h5>Example: http://127.0.0.1:7860/ </h5>
893
+ <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole" maxlength="500" value="" autocomplete="off">
894
+ <input id="api_button_textgenerationwebui" class="menu_button" type="submit" value="Connect">
895
+ <div id="api_loading_textgenerationwebui" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
896
+ </form>
897
+ <div class="online_status4">
898
+ <div class="online_status_indicator4"></div>
899
+ <div class="online_status_text4">Not connected</div>
900
+ </div>
901
+ </div>
902
+ <div id="openai_api" style="display: none;position: relative;">
903
+ <form action="javascript:void(null);" method="post" enctype="multipart/form-data">
904
+ <h4>API key </h4>
905
+ <h5>Where to get
906
+ <a href="/notes/oai_api_key" class="notes-link" target="_blank">
907
+ <span class="note-link-span">?</span>
908
+ </a>
909
+ </h5>
910
+ <input id="api_key_openai" name="api_key_openai" class="text_pole" maxlength="500" value="" autocomplete="off">
911
+ <input id="api_button_openai" class="menu_button" type="submit" value="Connect">
912
+ <div id="api_loading_openai" class=" api-load-icon fa-solid fa-hourglass fa-spin"></div>
913
+ </form>
914
+ <div class="online_status4">
915
+ <div class="online_status_indicator4"></div>
916
+ <div class="online_status_text4">No connection...</div>
917
+ </div>
918
+ <div>
919
+ <a href="https://platform.openai.com/account/usage" target="_blank">View API Usage Metrics</a>
920
+ </div>
921
+ <br>
922
+ </div>
923
+ <div id="poe_api">
924
+ <div class="inline-drawer">
925
+ <div class="inline-drawer-toggle inline-drawer-header">
926
+ <b>Instructions:</b>
927
+ <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div>
928
+ </div>
929
+ <div class="inline-drawer-content">
930
+ <ol>
931
+ <li>Login to <a href="https://poe.com" target="_blank">poe.com</a></li>
932
+ <li>Open browser DevTools (F12) and navigate to "Application" tab</li>
933
+ <li>Find a <tt>p-b</tt> cookie for poe.com domain and copy its value</li>
934
+ <li>Paste cookie value to the box below and click "Connect"</li>
935
+ <li>Select a character and start chatting</li>
936
+ </ol>
937
+ </div>
938
+ </div>
939
+ <div class="range-block">
940
+ <div class="range-block-title">
941
+ poe.com access token (p-b cookie value)
942
+ </div>
943
+ <div class="widthFreeExpand">
944
+ <input id="poe_token" class="text_pole" type="text" placeholder="Example: nTLG2bNvbOi8qxc-DbaSlw%3D%3D" maxlength="100" />
945
+ </div>
946
+ </div>
947
+
948
+ <input id="poe_connect" class="menu_button" type="button" value="Connect" />
949
+ <div id="api_loading_poe" class="api-load-icon fa-solid fa-hourglass fa-spin"></div>
950
+
951
+ <div class="range-block">
952
+ <div class="range-block-title">
953
+ <h4>Bot</h4>
954
+ </div>
955
+ <div class="widthFreeExpand">
956
+ <select id="poe_bots">
957
+ <option>-- Connect to the API --</option>
958
+ </select>
959
+ </div>
960
+ </div>
961
+ <div class="online_status4">
962
+ <div class="online_status_indicator4"></div>
963
+ <div class="online_status_text4">No connection...</div>
964
+ </div>
965
+ </div>
966
+ </div>
967
+ <label for="auto-connect-checkbox" class="checkbox_label"><input id="auto-connect-checkbox" type="checkbox" />
968
+ Auto-connect to Last Server
969
+ </label>
970
+ </div>
971
+ </div>
972
+
973
+ <div id="advanced-formatting-button" class="drawer">
974
+ <div class="drawer-toggle">
975
+ <div class="drawer-icon fa-solid fa-font closedIcon" title="AI Reponse Formatting"></div>
976
+ </div>
977
+ <div class="drawer-content">
978
+ <h3>Advanced Formatting
979
+ <a href="/notes/advanced_formatting" class="notes-link" target="_blank">
980
+ <span class="note-link-span">?</span>
981
+ </a>
982
+ </h3>
983
+ <div class="flex-container">
984
+ <div name="PygOverrides">
985
+ <h4>AutoFormat Overrides</h4>
986
+ <label class="checkbox_label" for="disable-description-formatting-checkbox">
987
+ <input id="disable-description-formatting-checkbox" type="checkbox" />
988
+ Disable description formatting
989
+ </label>
990
+ <label class="checkbox_label" for="disable-scenario-formatting-checkbox">
991
+ <input id="disable-scenario-formatting-checkbox" type="checkbox" />
992
+ Disable scenario formatting
993
+ </label>
994
+ <label class="checkbox_label" for="disable-personality-formatting-checkbox">
995
+ <input id="disable-personality-formatting-checkbox" type="checkbox" />
996
+ Disable personality formatting
997
+ </label>
998
+ <label class="checkbox_label" for="disable-examples-formatting-checkbox">
999
+ <input id="disable-examples-formatting-checkbox" type="checkbox" />
1000
+ Disable example chats formatting
1001
+ </label>
1002
+ <label class="checkbox_label" for="disable-start-formatting-checkbox">
1003
+ <input id="disable-start-formatting-checkbox" type="checkbox" />
1004
+ Disable chat start formatting
1005
+ </label>
1006
+ <div>
1007
+ <h4>
1008
+ Custom Chat Separator
1009
+ </h4>
1010
+ <div>
1011
+ <input id="custom_chat_separator" class="text_pole" type="text" placeholder="&lt;START&gt;" maxlength="100" />
1012
+ </div>
1013
+ </div>
1014
+ <div id="anchors-block">
1015
+ <h4>
1016
+ Anchors Order
1017
+ <a href="/notes/9" class="notes-link" target="_blank">
1018
+ <span class="note-link-span">?</span>
1019
+ </a>
1020
+ </h4>
1021
+ <select id="anchor_order">
1022
+ <option value="0">Character then Style</option>
1023
+ <option value="1">Style then Character</option>
1024
+ </select>
1025
+ <div id="anchor_checkbox">
1026
+ <label for="character_anchor"><input id="character_anchor" type="checkbox" />
1027
+ Character Anchor
1028
+ </label>
1029
+ <label for="style_anchor"><input id="style_anchor" type="checkbox" />
1030
+ Style Anchor
1031
+ </label>
1032
+ </div>
1033
+ </div>
1034
+ </div>
1035
+ <div name="ContextFormatting">
1036
+ <h4>Context Formatting</h4>
1037
+ <label class="checkbox_label" for="always-force-name2-checkbox">
1038
+ <input id="always-force-name2-checkbox" type="checkbox" />
1039
+ Always add character's name to prompt
1040
+ </label>
1041
+ <label class="checkbox_label" for="pin-examples-checkbox">
1042
+ <input id="pin-examples-checkbox" type="checkbox" />
1043
+ Keep Example Messages in Prompt
1044
+ </label>
1045
+ <label class="checkbox_label" for="collapse-newlines-checkbox"><input id="collapse-newlines-checkbox" type="checkbox" />
1046
+ Remove Empty New Lines from Output
1047
+ </label>
1048
+ <div>
1049
+ <h4>Pygmalion Formatting</h4>
1050
+ <select id="pygmalion_formatting">
1051
+ <option value="-1">Disabled for all models</option>
1052
+ <option value="0">Automatic (based on model name)</option>
1053
+ <option value="1">Enabled for all models</option>
1054
+ </select>
1055
+ </div>
1056
+ <div>
1057
+ <h4>
1058
+ Multigen
1059
+ <a href="/notes/multigen" class="notes-link" target="_blank">
1060
+ <span class="note-link-span">?</span>
1061
+ </a>
1062
+ </h4>
1063
+ <label class="checkbox_label" for="multigen">
1064
+ <input id="multigen" type="checkbox" />
1065
+ <span>
1066
+ Enabled
1067
+ </span>
1068
+ </label>
1069
+ <div class="multigen_settings_block">
1070
+ <label for="multigen_1st_chunk">
1071
+ <small>First chunk (tokens)</small>
1072
+ <input id="multigen_first_chunk" type="number" class="text_pole" min="1" max="512" />
1073
+ </label>
1074
+ <label for="multigen_next_chunk">
1075
+ <small>Next chunks (tokens)</small>
1076
+ <input id="multigen_next_chunks" type="number" class="text_pole" min="1" max="512" />
1077
+ </label>
1078
+ </div>
1079
+ </div>
1080
+ </div>
1081
+ </div>
1082
+ </div>
1083
+ </div>
1084
+
1085
+ <div id="WI-SP-button" class="drawer">
1086
+ <div class="drawer-toggle drawer-header">
1087
+ <div class="drawer-icon fa-solid fa-book-atlas closedIcon " title="World Info & Soft Prompts"></div>
1088
+ </div>
1089
+ <div class="drawer-content closedDrawer">
1090
+ <div id="wi-holder">
1091
+ <div id="world_info_block">
1092
+ <h3>World Info</h3>
1093
+ <div id="world_info_buttons">
1094
+ <div id="world_create_button" class="right_menu_button">
1095
+ <h4>+Create</h4>
1096
+ </div>
1097
+ <div id="world_import_button" class="right_menu_button">
1098
+ <h4>+Import</h4>
1099
+ </div>
1100
+ </div>
1101
+ </div>
1102
+ <h4>How to use <a href="/notes/13" class="notes-link" target="_blank"><span class="note-link-span">?</span></a></h4>
1103
+ <div id="rm_world_import" class="right_menu" style="display: none;">
1104
+ <form id="form_world_import" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1105
+ <input type="file" id="world_import_file" accept=".json" name="avatar">
1106
+ </form>
1107
+ </div>
1108
+ <select id="world_info">
1109
+ <option value="None">None</option>
1110
+ </select>
1111
+ <input id="world_info_edit_button" class="menu_button" type="submit" value="Details">
1112
+ <div id="world_info_depth_block">
1113
+ <h4>
1114
+ Scan Depth <a href="/notes/13_1" class="notes-link" target="_blank"><span class="note-link-span">?</span></a>
1115
+ </h4>
1116
+ <span id="world_info_depth_counter">depth</span>
1117
+ <input type="range" id="world_info_depth" name="volume" min="1" max="10" step="1">
1118
+ </div>
1119
+ <div id="world_info_budget_block">
1120
+ <h4>
1121
+ Token Budget <a href="/notes/13_2" class="notes-link" target="_blank"><span class="note-link-span">?</span></a>
1122
+ </h4>
1123
+ <span id="world_info_budget_counter">budget</span>
1124
+ <input type="range" id="world_info_budget" name="volume" min="32" max="2048" step="16">
1125
+ </div>
1126
+ </div>
1127
+ <div id="softprompt_block">
1128
+ <h4>Soft Prompt</h4>
1129
+ <h5>About soft prompts <a href="/notes/14" class="notes-link" target="_blank"><span class="note-link-span">?</span></a></h5>
1130
+ <select id="softprompt">
1131
+ <option value="">None</option>
1132
+ </select>
1133
+ </div>
1134
+ </div>
1135
+ </div>
1136
+
1137
+ <div id="user-settings-button" class="drawer">
1138
+ <div class="drawer-toggle">
1139
+ <div class="drawer-icon fa-solid fa-face-smile closedIcon" title="User Settings"></div>
1140
+ </div>
1141
+ <div id="user-settings-block" class="drawer-content closedDrawer">
1142
+ <h3>User Settings</h3>
1143
+ <div class="flex-container spaceEvenly">
1144
+ <div name="UI Customization" class="flex-container drawer25pWidth">
1145
+ <div class="ui-settings">
1146
+ <h4>UI Customization</h4>
1147
+ <div id="font-blur-UIpresets-block" class="flex-container flexFlowColumn">
1148
+ <div id="font-scale-block" class="range-block">
1149
+ <div class="range-block-title">
1150
+ Font Scale
1151
+ </div>
1152
+ <div class="range-block-range">
1153
+ <input type="range" id="font_scale" name="font_scale" min="0.8" max="1.2" step="0.05">
1154
+ </div>
1155
+ <div class="range-block-counter">
1156
+ <span id="font_scale_counter">select</span>
1157
+ </div>
1158
+ </div>
1159
+ <div id="blur-strength-block" class="range-block">
1160
+ <div class="range-block-title">
1161
+ Blur Strength
1162
+ </div>
1163
+ <div class="range-block-range">
1164
+ <input type="range" id="blur_strength" name="blur_strength" min="0" max="30" step="1">
1165
+ </div>
1166
+ <div class="range-block-counter">
1167
+ <span id="blur_strength_counter">select</span>
1168
+ </div>
1169
+ </div>
1170
+
1171
+ </div>
1172
+ <div>
1173
+ Avatar Style:<br>
1174
+ <label>
1175
+ <input name="avatar_style" type="radio" value="0" />
1176
+ Circle
1177
+ </label>
1178
+ <label>
1179
+ <input name="avatar_style" type="radio" value="1" />
1180
+ Rectangle
1181
+ </label>
1182
+ </div>
1183
+ <div>
1184
+ Chat Style:<br>
1185
+ <label>
1186
+ <input name="chat_display" type="radio" value="0" />
1187
+ Default
1188
+ </label>
1189
+ <label>
1190
+ <input name="chat_display" type="radio" value="1" />
1191
+ Bubbles
1192
+ </label>
1193
+ </div>
1194
+ <div>
1195
+ Chat Width (PC):<br>
1196
+ <label>
1197
+ <input name="sheld_width" type="radio" value="0" />
1198
+ 800px
1199
+ </label>
1200
+ <label>
1201
+ <input name="sheld_width" type="radio" value="1" />
1202
+ 1000px
1203
+ </label>
1204
+ </div>
1205
+ <div>
1206
+ <label for="fast_ui_mode" class="checkbox_label" title="Blur can cause browser lag, especially in Bubble Chat mode. To fix: Turn on your browser's Hardware Acceleration, and restart your browser or simply disable the blur effect with this toggle.">
1207
+ <input id="fast_ui_mode" type="checkbox" />
1208
+ No Blur Effect
1209
+ </label>
1210
+ <label for="waifuMode" class="checkbox_label">
1211
+ <input id="waifuMode" type="checkbox" />
1212
+ ♡ Waifu Mode ♡
1213
+ </label>
1214
+ <label for="movingUImode" class="checkbox_label">
1215
+ <input id="movingUImode" type="checkbox" />
1216
+ Movable UI Panels
1217
+ </label>
1218
+ <div id="movingUIreset" class="menu_button whitespacenowrap">Reset Panels</div>
1219
+ </div>
1220
+ </div>
1221
+
1222
+ </div>
1223
+ <div id="UI-Theme-Block" class="flex-container flexFlowColumn drawer25pWidth">
1224
+ <div id="color-picker-block" class="flex-container flexFlowColumn">
1225
+ <h4>UI Colors</h4>
1226
+ <div class="flex-container">
1227
+ <toolcool-color-picker id="main-text-color-picker"></toolcool-color-picker>
1228
+ Main Text
1229
+ </div>
1230
+ <div class="flex-container">
1231
+ <toolcool-color-picker id="italics-color-picker"></toolcool-color-picker>
1232
+ Italics Text
1233
+ </div>
1234
+ <div class="flex-container">
1235
+ <toolcool-color-picker id="fastui-bg-color-picker"></toolcool-color-picker>
1236
+ FastUI BG
1237
+ </div>
1238
+ <div class="flex-container">
1239
+ <toolcool-color-picker id="blur-tint-color-picker"></toolcool-color-picker>
1240
+ Blur Tint
1241
+ </div>
1242
+ <div id="UI-presets-block" class="flex-container flexFlowColumn">
1243
+ <h4>
1244
+ UI Theme Preset
1245
+ </h4>
1246
+ <div class="flex-container flexnowrap alignitemscenter">
1247
+ <select id="themes" class="margin0 margin-r5">
1248
+ </select>
1249
+ <div id="ui-preset-save-button" title="Save changes to a new theme file" class="menu_button padding5 margin0">
1250
+ <i class="fa-solid fa-save"></i>
1251
+ </div>
1252
+ </div>
1253
+ </div>
1254
+ </div>
1255
+
1256
+ </div>
1257
+ <div id="power-user-options-block" class="flex-container drawer25pWidth">
1258
+ <div id="power-user-option-checkboxes">
1259
+ <h4>Power User Options</h4>
1260
+ <label for="swipes-checkbox">
1261
+ <input id="swipes-checkbox" type="checkbox" />
1262
+ Swipes
1263
+ </label>
1264
+ <label for="play_message_sound" class="checkbox_label">
1265
+ <input id="play_message_sound" type="checkbox" />
1266
+ <audio id="audio_message_sound" src="sounds/message.mp3" hidden></audio>
1267
+ <span>
1268
+ Message Sound
1269
+ <a href="/notes/message_sound" class="notes-link" target="_blank">
1270
+ <span class="note-link-span">?</span>
1271
+ </a>
1272
+ </span>
1273
+ </label>
1274
+ <label for="play_sound_unfocused" class="checkbox_label">
1275
+ <input id="play_sound_unfocused" type="checkbox" />
1276
+ Background Sound Only
1277
+ </label>
1278
+ <label for="auto-load-chat-checkbox"><input id="auto-load-chat-checkbox" type="checkbox" />
1279
+ Auto-load Last Chat
1280
+ </label>
1281
+ <label for="auto_save_msg_edits"><input id="auto_save_msg_edits" type="checkbox" />
1282
+ Auto-save Message Edits
1283
+ </label>
1284
+ </div>
1285
+ </div>
1286
+
1287
+ <div name="NameAndAvatar" class="flex-container flexFlowColumn drawer25pWidth">
1288
+ <div name="NameChanger">
1289
+ <form id='form_change_name' action="javascript:void(null);" method="post" enctype="multipart/form-data">
1290
+ <h4>Name</h4>
1291
+ <input id="your_name" name="your_name" class="text_pole" maxlength="50" value="" autocomplete="off">
1292
+ <input id="your_name_button" class="menu_button" type="submit" title="Click to set a new User Name (reloads page)" value="Update">
1293
+ </form>
1294
+ </div>
1295
+ <div name="AvatarSelector">
1296
+ <h4>Your Avatar</h4>
1297
+ <div id="user_avatar_block">
1298
+ <div class="avatar_upload">+</div>
1299
+ </div>
1300
+
1301
+ <form id="form_upload_avatar" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1302
+ <input type="file" id="avatar_upload_file" accept="image/*" name="avatar">
1303
+ </form>
1304
+ </div>
1305
+ </div>
1306
+
1307
+
1308
+
1309
+ <!-- </div> -->
1310
+ </div>
1311
+ </div>
1312
+ </div>
1313
+
1314
+ <div id="logo_block" class="drawer" title="Change Background Image">
1315
+ <div id="site_logo" class="drawer-toggle drawer-header">
1316
+ <div class="drawer-icon fa-solid fa-panorama closedIcon"></div>
1317
+ </div>
1318
+ <div class="drawer-content closedDrawer">
1319
+ <div class="flex-container">
1320
+ <input id="bg-filter" placeholder="Filter" class="text_pole" type="search" />
1321
+ <div id="bg_menu_content">
1322
+ <form id="form_bg_download" class="bg_example no-border no-shadow" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1323
+ <label class="input-file">
1324
+ <input type="file" id="add_bg_button" name="avatar" accept="image/png, image/jpeg, image/jpg, image/gif, image/bmp">
1325
+ <div class="bg_example no-border no-shadow add_bg_but" style="background-image: url('/img/addbg3.png');"></div>
1326
+ </label>
1327
+ </form>
1328
+ </div>
1329
+ </div>
1330
+ </div>
1331
+ </div>
1332
+
1333
+ <div id="extensions-settings-button" class="drawer">
1334
+ <div class="drawer-toggle">
1335
+ <div class="drawer-icon fa-solid fa-cubes closedIcon" title="Extensions"></div>
1336
+ </div>
1337
+ <div id="rm_extensions_block" class="drawer-content closedDrawer">
1338
+ <div class="extensions_block">
1339
+ <h3>Extensions API:
1340
+ <a target="_blank" href="https://github.com/SillyLossy/TavernAI-extras">
1341
+ TavernAI-extras
1342
+ </a>
1343
+ </h3>
1344
+ <input id="extensions_url" type="text" class="text_pole" maxlength="250" />
1345
+ <div class="extensions_url_block">
1346
+ <input id="extensions_connect" class="menu_button" type="submit" value="Connect" />
1347
+ <span class="expander"></span>
1348
+ <label for="extensions_autoconnect"><input id="extensions_autoconnect" type="checkbox" />
1349
+ Auto-connect
1350
+ </label>
1351
+ </div>
1352
+ <div id="extensions_status">
1353
+ Not connected
1354
+ </div>
1355
+ <div id="extensions_loaded">
1356
+ <h4>Active extensions</h4>
1357
+ <ul id="extensions_list">
1358
+ </ul>
1359
+ <p>Missing something? Press <a id="extensions_details" href="javascript:void(null);">here</a>
1360
+ for more details!</p>
1361
+ </div>
1362
+ <div id="extensions_settings">
1363
+ <h3>Extension settings</h3>
1364
+ </div>
1365
+ </div>
1366
+ </div>
1367
+ </div>
1368
+
1369
+ <div id="rightNavHolder" class="drawer">
1370
+ <div id="unimportantYes" class="drawer-toggle drawer-header">
1371
+ <div id="rightNavDrawerIcon" class="drawer-icon fa-solid fa-id-card closedIcon" title="Character Management">
1372
+ </div>
1373
+ </div>
1374
+ <nav id="right-nav-panel" class="drawer-content closedDrawer fillRight">
1375
+ <div id="right-nav-panelheader" class="fa-solid fa-grip drag-grabber"></div>
1376
+ <div id="rm_button_panel_pin_div" title="Locked = Character Management panel will stay open">
1377
+ <input type="checkbox" id="rm_button_panel_pin">
1378
+ <label for="rm_button_panel_pin">
1379
+ <div class="fa-solid unchecked fa-lock-open" alt=""></div>
1380
+ <div class="fa-solid checked fa-lock" alt=""></div>
1381
+ </label>
1382
+ </div>
1383
+ <div class="scrollableInner">
1384
+ <div id="right-nav-panel-tabs">
1385
+ <div class="right_menu_button fa-solid fa-list-ul" id="rm_button_characters" title="Select/Create Characters"></div>
1386
+ <div class="right_menu_button" id="rm_button_selected_ch">
1387
+ <h2></h2>
1388
+ </div>
1389
+
1390
+ </div>
1391
+ <div id="rm_ch_create_block" class="right_menu" style="display: none;">
1392
+ <form id="form_create" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1393
+ <div id="avatar-and-name-block">
1394
+ <div id="name_div">
1395
+ <h4>Character Name</h4>
1396
+ <input id="character_name_pole" name="ch_name" class="text_pole" placeholder="Name this character" maxlength="50" value="" autocomplete="off">
1397
+ </div>
1398
+ <div id="avatar_div" class="avatar_div">
1399
+ <div id="avatar_div_div" class="avatar">
1400
+ <img id="avatar_load_preview" src="img/ai4.png" alt="avatar">
1401
+ </div>
1402
+ <div class="form_create_bottom_buttons_block">
1403
+ <label for="add_avatar_button" class="menu_button fa-solid fa-file-image " title="Click to select a new avatar for this character">
1404
+ <input type="file" id="add_avatar_button" name="avatar" accept="image/png, image/jpeg, image/jpg, image/gif, image/bmp">
1405
+ </label>
1406
+ <div id="rm_button_back" class="menu_button fa-solid fa-left-long "></div>
1407
+ <div id="advanced_div" class="menu_button fa-solid fa-book " title="Advanced Definitions"></div>
1408
+ <div id="export_button" class="menu_button fa-solid fa-file-export " title="Export and Download"></div>
1409
+ <label for="create_button" id="create_button_label" class="menu_button fa-solid fa-user-check" title="Create Character">
1410
+ <input type="submit" id="create_button" name="create_button">
1411
+ </label>
1412
+ <div id="delete_button" class="menu_button fa-solid fa-trash-can " title="Delete Character"></div>
1413
+ </div>
1414
+ </div>
1415
+ <div title="Token counts may be inaccurate and provided just for reference." id="result_info"></div>
1416
+ </div>
1417
+ <hr>
1418
+ <div id="description_div" class="margin-bot-10px">
1419
+ Description
1420
+ <a href="/notes/1" class="notes-link" target="_blank">
1421
+ <span class="note-link-span">?</span>
1422
+ </a>
1423
+
1424
+ </div>
1425
+ <textarea id="description_textarea" placeholder="Describe your character's physical and mental traits here." class="margin-bot-10px" name="description" placeholder=""></textarea>
1426
+
1427
+ <div id="first_message_div" class="margin-bot-10px">
1428
+ First message
1429
+ <a href="/notes/3" class="notes-link" target="_blank">
1430
+ <span class="note-link-span">?</span>
1431
+ </a>
1432
+
1433
+ </div>
1434
+ <textarea id="firstmessage_textarea" placeholder="This will be the first message from the character that starts every chat." class="margin-bot-10px" name="first_mes" placeholder=""></textarea>
1435
+
1436
+ <!-- these divs are invisible and used for server communication purposes -->
1437
+ <div id="hidden-divs">
1438
+ <div id="avatar_url_div">
1439
+ <input id="avatar_url_pole" name="avatar_url" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
1440
+ </div>
1441
+ <div id="selected_chat_div">
1442
+ <input id="selected_chat_pole" name="chat" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
1443
+ </div>
1444
+ <div id="create_date_div">
1445
+ <input id="create_date_pole" name="create_date" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
1446
+ </div>
1447
+ <div id="last_mes_div">
1448
+ <input id="last_mes_pole" name="last_mes" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
1449
+ </div>
1450
+ </div>
1451
+ <!-- now back to normal divs for display purposes-->
1452
+ </form>
1453
+ </div>
1454
+ <div id="rm_group_chats_block" class="right_menu">
1455
+ <div id="rm_group_top_bar">
1456
+ <div id="rm_button_back_from_group" class="menu_button fa-solid fa-left-long"></div>
1457
+ <input id="rm_group_chat_name" class="text_pole" type="text" name="chat_name" placeholder="Chat Name (Optional)" maxlength="100" />
1458
+ </div>
1459
+ <div id="rm_group_buttons">
1460
+ <div class="rm_group_settings">
1461
+ <label class="checkbox_label">
1462
+ <input id="rm_group_allow_self_responses" type="checkbox" />
1463
+ Allow bot responses to self
1464
+ </label>
1465
+ <label id="rm_group_automode_label" class="checkbox_label">
1466
+ <input id="rm_group_automode" type="checkbox" />
1467
+ Auto Mode
1468
+ </label>
1469
+ <h5>
1470
+ Group reply strategy
1471
+ <a href="/notes/group_reply_strategy" class="notes-link" target="_blank"><span class="note-link-span">?</span></a>
1472
+ </h5>
1473
+ <label>
1474
+ <input type="radio" name="rm_group_activation_strategy" value="0" />
1475
+ Natural order
1476
+ </label>
1477
+ <label>
1478
+ <input type="radio" name="rm_group_activation_strategy" value="1" />
1479
+ List order
1480
+ </label>
1481
+ </div>
1482
+ <div id="rm_group_buttons_expander">&nbsp;</div>
1483
+ <input id="rm_group_submit" class="menu_button" type="submit" value="Create">
1484
+ <input id="rm_group_delete" class="menu_button" type="submit" value="Delete">
1485
+ </div>
1486
+ <div id="rm_group_add_members_header">
1487
+ <h3>Add Members</h3>
1488
+ <input id="rm_group_filter" class="text_pole" type="search" placeholder="Filter..." maxlength="100" />
1489
+ </div>
1490
+ <!-- !!!Don't break line after div!!! -->
1491
+ <div id="rm_group_add_members"></div>
1492
+ <h3>Members</h3>
1493
+ <!-- !!!Don't break line after div!!! -->
1494
+ <div id="rm_group_members"></div>
1495
+
1496
+ <div id="group_member_template">
1497
+ <div class="group_member">
1498
+ <div class="avatar">
1499
+ <img alt="Avatar" src="" />
1500
+ </div>
1501
+ <div class="ch_name"></div>
1502
+ <div class="group_member_icon">
1503
+ <div title="Move up" data-action="up" class="right_menu_button fa-solid fa-xl fa-chevron-up"></div>
1504
+ <div title="Move down" data-action="down" class="right_menu_button fa-solid fa-xl fa-chevron-down"></div>
1505
+ <div title="Remove from group" data-action="remove" class="right_menu_button fa-solid fa-2xl fa-xmark"></div>
1506
+ <div title="Add to group" data-action="add" class="right_menu_button fa-solid fa-2xl fa-plus"></div>
1507
+ </div>
1508
+ </div>
1509
+ </div>
1510
+
1511
+ <div id="group_list_template">
1512
+ <div class="group_select">
1513
+ <div class="avatar">
1514
+ <img src="">
1515
+ </div>
1516
+ <div class="group_icon">
1517
+ <div class="fa-solid fa-user-group"></div>
1518
+ </div>
1519
+ <div class="ch_name"></div>
1520
+ </div>
1521
+ </div>
1522
+ </div>
1523
+
1524
+ <div id="rm_character_import" class="right_menu" style="display: none;">
1525
+ <form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1526
+ <input multiple type="file" id="character_import_file" accept=".json, image/png, image/webp" name="avatar">
1527
+ <input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off">
1528
+ </form>
1529
+ </div>
1530
+ <div id="rm_characters_block" class="right_menu">
1531
+ <div class="form_create_bottom_buttons_block">
1532
+ <div id="rm_button_create" title="Create New Character" class="menu_button fa-solid fa-user-plus "></div>
1533
+ <div id="character_import_button" title="Import Character from File" class="menu_button fa-solid fa-file-arrow-up "></div>
1534
+ <div id="rm_button_group_chats" title="Create New Chat Group" class="menu_button fa-solid fa-users-gear "></div>
1535
+ </div>
1536
+ <form id="form_character_search_form" action="javascript:void(null);">
1537
+ <input id="character_search_bar" class="text_pole" type="search" placeholder="Character search..." maxlength="50" />
1538
+ <select id="character_sort_order" title="Characters sorting order">
1539
+ <option data-field="name" data-order="asc">Name, A-Z</option>
1540
+ <option data-field="name" data-order="desc">Name, Z-A</option>
1541
+ <option data-field="date_added" data-order="desc">Date added, newer first</option>
1542
+ <option data-field="date_added" data-order="asc">Date added, older first</option>
1543
+ <option data-field="date_last_chat" data-order="desc">Recently chatted</option>
1544
+ <option data-field="chat_size" data-order="desc">Most chatted</option>
1545
+ <option data-field="chat_size" data-order="asc">Least chatted</option>
1546
+ </select>
1547
+ </form>
1548
+ <div id="rm_print_characters_block"></div>
1549
+ </div>
1550
+
1551
+ <!-- only displays after creating/deleting a character/group -->
1552
+ <div id="rm_info_block" class="right_menu">
1553
+ <div id="rm_info_panel">
1554
+ <div id="rm_info_avatar"></div>
1555
+ <div id="rm_info_text"></div>
1556
+ <div id="rm_info_button" class="menu_button">Back</div>
1557
+ </div>
1558
+ </div>
1559
+ </div>
1560
+ </nav>
1561
+ </div>
1562
+
1563
+ </div>
1564
+ <!-- various fullscreen popups -->
1565
+ <div id="shadow_popup">
1566
+ <div id="dialogue_popup">
1567
+ <div id="dialogue_popup_text">
1568
+ <h3>text</h3>
1569
+ </div>
1570
+ <input id="dialogue_popup_input" class="text_pole" type="text" />
1571
+ <div id="dialogue_popup_ok" class="menu_button">Delete</div>
1572
+ <div id="dialogue_popup_cancel" class="menu_button">Cancel</div>
1573
+ </div>
1574
+ </div>
1575
+ <div id="colab_shadow_popup">
1576
+ <div id="colab_popup">
1577
+ <div id="colab_popup_text" style="float: left;margin-left: 88px;">
1578
+ <h3>Initialization</h3>
1579
+ </div>
1580
+ </div>
1581
+ </div>
1582
+ <!--<div id="shadow_character_popup">
1583
+ </div>-->
1584
+ <div id="character_popup">
1585
+
1586
+ <div id="character_popup_text">
1587
+ <div>
1588
+ <img src="img/book2.png" id="advanced_book_logo">
1589
+ </div>
1590
+
1591
+ <div>
1592
+ <h3 id="character_popup_text_h3"></h3> - Advanced Defininitions
1593
+ </div>
1594
+
1595
+ </div>
1596
+ <div id="character_cross" class="fa-solid fa-circle-xmark"></div>
1597
+
1598
+ <div id="personality_div">
1599
+ <hr>
1600
+ <h4>Personality summary</h4>
1601
+ <h5>A brief description of the personality <a href="/notes/2" class="notes-link" target="_blank"><span class="note-link-span">?</span></a></h5>
1602
+ <textarea id="personality_textarea" name="personality" placeholder="" form="form_create" class="text_pole" autocomplete="off" rows="2"></textarea>
1603
+ </div>
1604
+
1605
+ <div id="scenario_div">
1606
+ <h4>Scenario</h4>
1607
+ <h5>Circumstances and context of the dialogue
1608
+ <a href="/notes/12" class="notes-link" target="_blank">
1609
+ <span class="note-link-span">?</span>
1610
+ </a>
1611
+ </h5>
1612
+ <textarea id="scenario_pole" name="scenario" class="text_pole" maxlength="9999" value="" autocomplete="off" form="form_create" rows="2"></textarea>
1613
+ </div>
1614
+
1615
+ <div id="talkativeness_div">
1616
+ <h4>Talkativeness</h4>
1617
+ <h5>How often the chracter speaks in &nbsp;<span class="warning">group chats!</span>
1618
+ </h5>
1619
+ <input id="talkativeness_slider" name="talkativeness" type="range" min="0" max="1" step="0.05" value="0.5" form="form_create">
1620
+ <div id="talkativeness_hint">
1621
+ <span>Shy</span>
1622
+ <span>Normal</span>
1623
+ <span>Chatty</span>
1624
+ </div>
1625
+ </div>
1626
+
1627
+ <div id="mes_example_div">
1628
+ <div>
1629
+ <h4>Examples of dialogue</h4>
1630
+ <h5>Forms a personality more clearly <a href="/notes/11" class="notes-link" target="_blank"><span class="note-link-span">?</span></a></h5>
1631
+ </div>
1632
+ <textarea id="mes_example_textarea" name="mes_example" placeholder="" form="form_create"></textarea>
1633
+ </div>
1634
+ <div id="character_popup_ok" class="menu_button">Save</div>
1635
+
1636
+ </div>
1637
+ <div id="world_popup">
1638
+ <div id="world_popup_text">
1639
+ <div id="world_cross" class="fa-solid fa-circle-xmark"></div>
1640
+ <div id="world_popup_header">
1641
+ <!-- Consider changing logo to something else -->
1642
+ <div class="world_popup_logo_block">
1643
+ <img src="img/book2.png" id="world_logo">
1644
+ <h3>
1645
+ World Info Editor
1646
+ <a href="/notes/13_3" class="notes-link" target="_blank"><span class="note-link-span">?</span></a>
1647
+ </h3>
1648
+ </div>
1649
+ <div class="world_popup_expander">&nbsp;</div>
1650
+ <form id="form_rename_world" action="javascript:void(null);" method="post" enctype="multipart/form-data">
1651
+ <input id="world_popup_name" name="world_popup_name" class="text_pole" maxlength="99" size="32" value="" autocomplete="off">
1652
+ <input id="world_popup_name_button" class="menu_button" type="submit" value="Rename">
1653
+ </form>
1654
+ </div>
1655
+ </div>
1656
+
1657
+ <div id="world_popup_entries_list">
1658
+ </div>
1659
+
1660
+ <div id="world_popup_bottom_holder">
1661
+ <div id="world_popup_new" class="menu_button">New Entry</div>
1662
+ <span class="world_popup_expander">&nbsp;</span>
1663
+ <div id="world_popup_export" class="menu_button">Export</div>
1664
+ <div id="world_popup_delete" class="menu_button">Delete World</div>
1665
+ </div>
1666
+
1667
+ <div id="entry_edit_template">
1668
+ <div class="world_entry">
1669
+ <form class="world_entry_form">
1670
+ <div class="world_entry_thin_controls">
1671
+ <div class="world_entry_form_control">
1672
+ <label for="key">
1673
+ <h4>Key</h4>
1674
+ <h5>Comma-separated list of keywords (e.g: foo,bar).</h5>
1675
+ </label>
1676
+ <textarea class="text_pole" name="key" rows="1" placeholder="" maxlength="250"></textarea>
1677
+ </div>
1678
+ <div class="world_entry_form_control keysecondary">
1679
+ <label for="keysecondary">
1680
+ <h4>Secondary Key</h4>
1681
+ <h5>Comma-separated list of additional keywords.</h5>
1682
+ </label>
1683
+ <textarea class="text_pole" name="keysecondary" rows="1" placeholder="" maxlength="250"></textarea>
1684
+ </div>
1685
+ </div>
1686
+ <div class="world_entry_thin_controls">
1687
+ <div class="world_entry_form_control">
1688
+ <label for="order">
1689
+ <h4>Insertion Order</h4>
1690
+ <h5>Higher order number entries will be inserted first.</h5>
1691
+ </label>
1692
+ <input class="text_pole" type="number" name="order" placeholder="" />
1693
+ </div>
1694
+ <div class="world_entry_form_control">
1695
+ <label for="comment">
1696
+ <h4>Comment</h4>
1697
+ <h5>Optional comment (doesn't affect the AI).</h5>
1698
+ </label>
1699
+ <textarea class="text_pole" rows="1" name="comment" maxlength="250"></textarea>
1700
+ </div>
1701
+ </div>
1702
+ <div class="world_entry_form_control">
1703
+ <label for="content">
1704
+ <h4>Content</h4>
1705
+ <h5>Text that will be inserted to the prompt upon activation.</h5>
1706
+ </label>
1707
+ <textarea class="text_pole" name="content" rows="4" placeholder=""></textarea>
1708
+ </div>
1709
+ <div class="world_entry_form_control world_entry_form_horizontal">
1710
+ <label class="checkbox">
1711
+ <input type="checkbox" name="constant" />
1712
+ <h4>Constant</h4>
1713
+ </label>
1714
+ <label class="checkbox">
1715
+ <input type="checkbox" name="selective" />
1716
+ <h4>Selective</h4>
1717
+ </label>
1718
+ <div class="world_entry_form_control world_entry_form_radios">
1719
+ <div>
1720
+ <label><input type="radio" name="position" value="0">
1721
+ <h4>Before Chara</h4>
1722
+ </label>
1723
+ </div>
1724
+ <div>
1725
+ <label><input type="radio" name="position" value="1">
1726
+ <h4>After Chara</h4>
1727
+ </label>
1728
+ </div>
1729
+ </div>
1730
+ <span class="world_popup_expander">&nbsp;</span>
1731
+ <h5 class="world_entry_form_uid">
1732
+ UID:
1733
+ &nbsp;
1734
+ <span class="world_entry_form_uid_value"></span>
1735
+ </h5>
1736
+ <h5 class="world_entry_form_tokens">
1737
+ Tokens used:
1738
+ &nbsp;
1739
+ <span class="world_entry_form_token_counter">0</span>
1740
+ </h5>
1741
+ <input class="menu_button delete_entry_button" type="submit" value="Delete Entry" />
1742
+ </div>
1743
+ </form>
1744
+ </div>
1745
+ </div>
1746
+ </div>
1747
+ <div id="shadow_select_chat_popup">
1748
+ <div id="select_chat_popup">
1749
+ <div id="select_chat_import"> <!-- import chat popup header -->
1750
+ <div id="chat_import_button" class="fa-solid fa-file-arrow-up menu_button"></div>
1751
+ <div id="selectChatPopupHeaderText" class="TxtLrgBoldCenter">
1752
+ <span id="ChatHistoryCharName"></span>
1753
+ <br>
1754
+ Chat History
1755
+ <a href="/notes/10" class="notes-link" target="_blank"><span class="note-link-span">?</span></a>
1756
+ </div>
1757
+ <form id="form_import_chat" action="javascript:void(null);" method="post" enctype="multipart/form-data" style="display: none;">
1758
+ <input type="file" id="chat_import_file" accept=".json, .jsonl" name="avatar">
1759
+ <input id="chat_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
1760
+ <input id="chat_import_avatar_url" name="avatar_url" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
1761
+ <input id="chat_import_character_name" name="character_name" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;">
1762
+ </form>
1763
+ <div id="select_chat_cross" class="fa-solid fa-circle-xmark" alt="Close Past Chat Popup"></div>
1764
+ </div>
1765
+
1766
+ <div id="select_chat_div">
1767
+
1768
+ </div>
1769
+ <div id="load_select_chat_div">
1770
+ <div class="fa-solid fa-hourglass fa-spin"></div>
1771
+ </div>
1772
+ </div>
1773
+ </div>
1774
+
1775
+ <!-- templates for JS to reuse when needed -->
1776
+ <div id="message_template">
1777
+ <div class="mes" mesid="${count_view_mes}" ch_name="${characterName}" is_user="${mes.is_user}" is_system="${mes.is_system}">
1778
+ <div class="for_checkbox"></div><input type="checkbox" class="del_checkbox">
1779
+ <div class="avatar"><img src=""></div>
1780
+ <div class="swipe_left fa-solid fa-chevron-left"></div>
1781
+ <div class="mes_block">
1782
+ <div class="ch_name">
1783
+ <span class="name_text">${characterName}</span>
1784
+
1785
+ <div title="Stop Streaming" class="mes_stop">
1786
+ <i class="fa-xl fa-solid fa-circle-stop"></i>
1787
+ </div>
1788
+ <div title="Edit" class="mes_edit fa-solid fa-pencil "></div>
1789
+ <div class="mes_edit_buttons">
1790
+ <div class="mes_edit_done menu_button fa-solid fa-check" title="Confirm"></div>
1791
+ <div class="mes_edit_copy menu_button fa-solid fa-copy" title="Copy this message"></div>
1792
+ <div class="mes_edit_delete menu_button fa-solid fa-scissors" title="Delete this message"></div>
1793
+ <div class="mes_edit_up menu_button fa-solid fa-chevron-up " title="Move message up"></div>
1794
+ <div class="mes_edit_down menu_button fa-solid fa-chevron-down" title="Move message down"></div>
1795
+ <div class="mes_edit_cancel menu_button fa-solid fa-xmark" title="Cancel"></div>
1796
+ </div>
1797
+ </div>
1798
+ <div class=mes_text></div>
1799
+ <div class="mes_bias"></div>
1800
+ </div>
1801
+
1802
+
1803
+ <div class="swipe_right fa-solid fa-chevron-right">
1804
+
1805
+ <div class="swipes-counter"></div>
1806
+ </div>
1807
+ </div>
1808
+ </div>
1809
+ <div id="group_avatars_template">
1810
+ <div class="avatar avatar_collage collage_1">
1811
+ <img alt="img1" class="img_1" src="">
1812
+ </div>
1813
+ <div class="avatar avatar_collage collage_2">
1814
+ <img alt="img1" class="img_1" src="">
1815
+ <img alt="img2" class="img_2" src="">
1816
+ </div>
1817
+ <div class="avatar avatar_collage collage_3">
1818
+ <img alt="img1" class="img_1" src="">
1819
+ <img alt="img2" class="img_2" src="">
1820
+ <img alt="img3" class="img_3" src="">
1821
+ </div>
1822
+ <div class="avatar avatar_collage collage_4">
1823
+ <img alt="img1" class="img_1" src="">
1824
+ <img alt="img2" class="img_2" src="">
1825
+ <img alt="img3" class="img_3" src="">
1826
+ <img alt="img4" class="img_4" src="">
1827
+ </div>
1828
+ </div>
1829
+
1830
+ <!-- chat and input bar -->
1831
+ <div id="typing_indicator_template">
1832
+ <div class="typing_indicator"><span class="typing_indicator_name">CHAR</span> is typing</div>
1833
+ </div>
1834
+ <div id="sheld">
1835
+ <div id="sheldheader" class="fa-solid fa-grip drag-grabber"></div>
1836
+ <!-- <div class="pull-tab"></div> -->
1837
+ <div id="chat">
1838
+ </div>
1839
+ <div id="form_sheld">
1840
+ <div id="dialogue_del_mes">
1841
+ <div id="dialogue_del_mes_ok" class="menu_button">Delete</div>
1842
+ <div id="dialogue_del_mes_cancel" class="menu_button">Cancel</div>
1843
+ </div>
1844
+ <form id="send_form" class="no-connection">
1845
+ <div id="options_button" class="fa-solid fa-bars"></div>
1846
+ <textarea id="send_textarea" placeholder="Not connected to API!" name="text"></textarea>
1847
+ <div id="send_but_sheld">
1848
+ <div id="loading_mes">
1849
+ <div alt="" class="fa-solid fa-fade fa-hourglass-half"></div>
1850
+ </div>
1851
+ <div id="send_but" class="fa-solid fa-feather-pointed"></div>
1852
+ </div>
1853
+ </form>
1854
+ </div>
1855
+ </div>
1856
+
1857
+ <!-- popups live outside sheld to avoid blur conflicts -->
1858
+ <div id="options" class="font-family-reset">
1859
+ <div class="options-content">
1860
+ <a id="option_back_to_main">
1861
+ <div class="fa-lg fa-solid fa-left-long"></div>
1862
+ <span>Back to parent chat</span>
1863
+ </a>
1864
+ <a id="option_new_bookmark">
1865
+ <div class="fa-lg fa-solid fa-bookmark"></div>
1866
+ <span>Save bookmark</span>
1867
+ </a>
1868
+ <a id="option_start_new_chat">
1869
+ <div class="fa-lg fa-solid fa-comment-dots"></div>
1870
+ <span>Start new chat</span>
1871
+ </a>
1872
+ <a id="option_select_chat">
1873
+ <div class="fa-lg fa-solid fa-address-book"></div>
1874
+ <span>View past chats</span>
1875
+ </a>
1876
+ <hr>
1877
+ <a id="option_delete_mes">
1878
+ <div class="fa-lg fa-solid fa-trash-can"></div>
1879
+ <span>Delete messages</span>
1880
+ </a>
1881
+ <a id="option_impersonate" title="Ask AI to write your message for you">
1882
+ <div class="fa-lg fa-solid fa-user-secret"></div>
1883
+ <span>Impersonate</span>
1884
+ </a>
1885
+ <a id="option_regenerate">
1886
+ <div class="fa-lg fa-solid fa-repeat "></div>
1887
+ <span>Regenerate</span>
1888
+ </a>
1889
+ </div>
1890
+ </div>
1891
+
1892
+ <div id="export_format_popup" class="list-group">
1893
+ <div class="export_format list-group-item" data-format="png">PNG</div>
1894
+ <div class="export_format list-group-item" data-format="json">JSON</div>
1895
+ <div class="export_format list-group-item" data-format="webp">WEBP</div>
1896
+ </div>
1897
+ </body>
1898
+
1899
+ </html>