sillytavern 1.13.0 → 1.13.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 (143) hide show
  1. package/Dockerfile +3 -3
  2. package/config.yaml +21 -15
  3. package/default/config.yaml +21 -15
  4. package/default/content/index.json +8 -0
  5. package/default/content/presets/context/Dots1.json +11 -0
  6. package/default/content/presets/instruct/Dots1.json +24 -0
  7. package/package.json +27 -27
  8. package/public/css/animations.css +10 -0
  9. package/public/css/character-group-overlay.css +1 -1
  10. package/public/css/data-maid.css +149 -0
  11. package/public/css/loader.css +1 -1
  12. package/public/css/login.css +1 -1
  13. package/public/css/logprobs.css +1 -1
  14. package/public/css/mobile-styles.css +9 -4
  15. package/public/css/promptmanager.css +2 -2
  16. package/public/css/rm-groups.css +1 -1
  17. package/public/css/secrets.css +102 -0
  18. package/public/css/select2-overrides.css +3 -3
  19. package/public/css/st-tailwind.css +9 -1
  20. package/public/css/tags.css +1 -1
  21. package/public/css/toggle-dependent.css +7 -0
  22. package/public/css/welcome.css +16 -0
  23. package/public/css/world-info.css +6 -2
  24. package/public/global.d.ts +7 -0
  25. package/public/img/aimlapi.svg +4 -0
  26. package/public/img/vertexai.svg +26 -0
  27. package/public/index.html +924 -742
  28. package/public/locales/ar-sa.json +1 -0
  29. package/public/locales/de-de.json +1 -0
  30. package/public/locales/es-es.json +1 -0
  31. package/public/locales/fr-fr.json +1 -0
  32. package/public/locales/is-is.json +1 -0
  33. package/public/locales/it-it.json +1 -0
  34. package/public/locales/ja-jp.json +1 -0
  35. package/public/locales/ko-kr.json +1 -0
  36. package/public/locales/nl-nl.json +1 -0
  37. package/public/locales/pt-pt.json +1 -0
  38. package/public/locales/ru-ru.json +144 -4
  39. package/public/locales/uk-ua.json +1 -0
  40. package/public/locales/vi-vn.json +1 -0
  41. package/public/locales/zh-cn.json +2 -1
  42. package/public/locales/zh-tw.json +150 -28
  43. package/public/script.js +341 -245
  44. package/public/scripts/BulkEditOverlay.js +6 -5
  45. package/public/scripts/RossAscends-mods.js +140 -186
  46. package/public/scripts/authors-note.js +17 -14
  47. package/public/scripts/autocomplete/AutoComplete.js +36 -30
  48. package/public/scripts/backgrounds.js +172 -27
  49. package/public/scripts/bookmarks.js +32 -13
  50. package/public/scripts/chats.js +7 -1
  51. package/public/scripts/custom-request.js +4 -4
  52. package/public/scripts/data-maid.js +393 -0
  53. package/public/scripts/extensions/assets/index.js +5 -5
  54. package/public/scripts/extensions/assets/style.css +1 -1
  55. package/public/scripts/extensions/attachments/index.js +29 -0
  56. package/public/scripts/extensions/attachments/notepad.html +1 -1
  57. package/public/scripts/extensions/caption/index.js +7 -5
  58. package/public/scripts/extensions/caption/settings.html +37 -10
  59. package/public/scripts/extensions/connection-manager/index.js +15 -0
  60. package/public/scripts/extensions/expressions/index.js +39 -6
  61. package/public/scripts/extensions/expressions/settings.html +16 -3
  62. package/public/scripts/extensions/gallery/index.js +70 -6
  63. package/public/scripts/extensions/gallery/style.css +5 -0
  64. package/public/scripts/extensions/memory/index.js +3 -1
  65. package/public/scripts/extensions/quick-reply/index.js +1 -1
  66. package/public/scripts/extensions/quick-reply/style.css +13 -16
  67. package/public/scripts/extensions/quick-reply/style.less +534 -370
  68. package/public/scripts/extensions/regex/dropdown.html +28 -2
  69. package/public/scripts/extensions/regex/editor.html +1 -1
  70. package/public/scripts/extensions/regex/embeddedScripts.html +3 -3
  71. package/public/scripts/extensions/regex/index.js +156 -33
  72. package/public/scripts/extensions/regex/scriptTemplate.html +1 -0
  73. package/public/scripts/extensions/regex/style.css +26 -4
  74. package/public/scripts/extensions/shared.js +29 -2
  75. package/public/scripts/extensions/stable-diffusion/index.js +225 -57
  76. package/public/scripts/extensions/stable-diffusion/settings.html +35 -4
  77. package/public/scripts/extensions/translate/index.html +1 -1
  78. package/public/scripts/extensions/tts/chatterbox.js +649 -0
  79. package/public/scripts/extensions/tts/google-native.js +195 -0
  80. package/public/scripts/extensions/tts/index.js +31 -0
  81. package/public/scripts/extensions/tts/lib/pcm-processor.js +73 -0
  82. package/public/scripts/extensions/tts/openai-compatible.js +1 -1
  83. package/public/scripts/extensions/tts/settings.html +2 -2
  84. package/public/scripts/extensions/tts/style.css +1 -1
  85. package/public/scripts/extensions/tts/tts-webui.js +566 -0
  86. package/public/scripts/extensions/vectors/index.js +3 -2
  87. package/public/scripts/extensions.js +99 -12
  88. package/public/scripts/group-chats.js +45 -2
  89. package/public/scripts/horde.js +11 -6
  90. package/public/scripts/i18n.js +1 -1
  91. package/public/scripts/nai-settings.js +1 -1
  92. package/public/scripts/openai.js +487 -35
  93. package/public/scripts/personas.js +6 -4
  94. package/public/scripts/popup.js +10 -2
  95. package/public/scripts/power-user.js +11 -1
  96. package/public/scripts/reasoning.js +3 -1
  97. package/public/scripts/samplerSelect.js +4 -4
  98. package/public/scripts/secrets.js +823 -33
  99. package/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js +1 -0
  100. package/public/scripts/slash-commands/SlashCommandParser.js +8 -6
  101. package/public/scripts/slash-commands.js +79 -10
  102. package/public/scripts/stats.js +7 -6
  103. package/public/scripts/tags.js +1 -1
  104. package/public/scripts/templates/dataMaidCategory.html +68 -0
  105. package/public/scripts/templates/dataMaidDialog.html +25 -0
  106. package/public/scripts/templates/importCharacters.html +2 -1
  107. package/public/scripts/templates/secretKeyManager.html +27 -0
  108. package/public/scripts/templates/secretKeyManagerListItem.html +30 -0
  109. package/public/scripts/templates/themeDelete.html +1 -1
  110. package/public/scripts/templates/wandButton.html +1 -1
  111. package/public/scripts/templates/welcomePanel.html +8 -0
  112. package/public/scripts/textgen-models.js +7 -3
  113. package/public/scripts/tool-calling.js +23 -4
  114. package/public/scripts/utils.js +31 -7
  115. package/public/scripts/variables.js +2 -2
  116. package/public/scripts/welcome-screen.js +240 -6
  117. package/public/scripts/world-info.js +828 -781
  118. package/public/style.css +161 -87
  119. package/src/command-line.js +97 -54
  120. package/src/config-init.js +33 -1
  121. package/src/constants.js +7 -0
  122. package/src/endpoints/avatars.js +1 -1
  123. package/src/endpoints/backends/chat-completions.js +270 -83
  124. package/src/endpoints/backgrounds.js +4 -3
  125. package/src/endpoints/characters.js +12 -14
  126. package/src/endpoints/chats.js +32 -27
  127. package/src/endpoints/content-manager.js +190 -0
  128. package/src/endpoints/data-maid.js +735 -0
  129. package/src/endpoints/google.js +396 -20
  130. package/src/endpoints/images.js +26 -2
  131. package/src/endpoints/openai.js +11 -1
  132. package/src/endpoints/secrets.js +476 -80
  133. package/src/endpoints/settings.js +6 -6
  134. package/src/endpoints/stable-diffusion.js +89 -1
  135. package/src/endpoints/thumbnails.js +1 -1
  136. package/src/fetch-patch.js +1 -51
  137. package/src/prompt-converters.js +178 -30
  138. package/src/server-main.js +37 -11
  139. package/src/server-startup.js +2 -0
  140. package/src/users.js +1 -1
  141. package/src/util.js +67 -0
  142. package/src/vectors/makersuite-vectors.js +3 -2
  143. package/tests/package-lock.json +3 -3
package/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM node:lts-alpine3.19
1
+ FROM node:lts-alpine3.21
2
2
 
3
3
  # Arguments
4
4
  ARG APP_HOME=/home/node/app
@@ -19,7 +19,7 @@ RUN \
19
19
  echo "*** Install npm packages ***" && \
20
20
  npm i --no-audit --no-fund --loglevel=error --no-progress --omit=dev && npm cache clean --force
21
21
 
22
- # Copy default chats, characters and user avatars to <folder>.default folder
22
+ # Create config directory and link config.yaml
23
23
  RUN \
24
24
  rm -f "config.yaml" || true && \
25
25
  ln -s "./config/config.yaml" "config.yaml" || true && \
@@ -30,7 +30,7 @@ RUN \
30
30
  echo "*** Run Webpack ***" && \
31
31
  node "./docker/build-lib.js"
32
32
 
33
- # Cleanup unnecessary files
33
+ # Set the entrypoint script
34
34
  RUN \
35
35
  echo "*** Cleanup ***" && \
36
36
  mv "./docker/docker-entrypoint.sh" "./" && \
package/config.yaml CHANGED
@@ -16,16 +16,28 @@ protocol:
16
16
  ipv6: false
17
17
  # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
18
18
  dnsPreferIPv6: false
19
- # The hostname that autorun opens.
20
- # - Use "auto" to let the server decide
21
- # - Use options like 'localhost', 'st.example.com'
22
- autorunHostname: "auto"
19
+ # -- BROWSER LAUNCH CONFIGURATION --
20
+ browserLaunch:
21
+ # Open the browser automatically on server startup.
22
+ enabled: true
23
+ # Browser to use for opening the URL.
24
+ # NOT SUPPORTED ON ANDROID DEVICES.
25
+ # - Use "default" to use the system default browser
26
+ # - Use "firefox", "chrome", "edge"
27
+ browser: 'default'
28
+ # Overrides the hostname that opens in the browser.
29
+ # - Use "auto" to let the server decide
30
+ # - Use options like 'localhost', 'st.example.com'
31
+ hostname: 'auto'
32
+ # Overrides the port for run in the browser.
33
+ # - Use -1 to use the server port.
34
+ # - Specify a port to override the default.
35
+ port: -1
36
+ # Avoids using 'localhost' as the hostname in auto mode.
37
+ # Use if you don't have 'localhost' in your hosts file
38
+ avoidLocalhost: false
23
39
  # Server port
24
40
  port: 8000
25
- # Overrides the port for autorun in browser.
26
- # - Use -1 to use the server port.
27
- # - Specify a port to override the default.
28
- autorunPortOverride: -1
29
41
  # -- SSL options --
30
42
  ssl:
31
43
  enabled: false
@@ -70,7 +82,7 @@ enableDiscreetLogin: false
70
82
  # https://www.authelia.com/
71
83
  # This will use auto login to an account with the same username
72
84
  # as that used for authlia. (Ensure the username in authlia
73
- # is an exact match with that in sillytavern)
85
+ # is an exact match in lowercase with that in sillytavern)
74
86
  autheliaAuth: false
75
87
  # If `basicAuthMode` and this are enabled then
76
88
  # the username and passwords for basic auth are the same as those
@@ -98,12 +110,6 @@ rateLimiting:
98
110
  # Use X-Real-IP header instead of socket IP for rate limiting
99
111
  # Only enable this if you are using a properly configured reverse proxy (like Nginx/traefik/Caddy)
100
112
  preferRealIpHeader: false
101
- # -- ADVANCED CONFIGURATION --
102
- # Open the browser automatically
103
- autorun: true
104
- # Avoids using 'localhost' for autorun in auto mode.
105
- # use if you don't have 'localhost' in your hosts file
106
- avoidLocalhost: false
107
113
 
108
114
  ## BACKUP CONFIGURATION
109
115
  backups:
@@ -16,16 +16,28 @@ protocol:
16
16
  ipv6: false
17
17
  # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
18
18
  dnsPreferIPv6: false
19
- # The hostname that autorun opens.
20
- # - Use "auto" to let the server decide
21
- # - Use options like 'localhost', 'st.example.com'
22
- autorunHostname: "auto"
19
+ # -- BROWSER LAUNCH CONFIGURATION --
20
+ browserLaunch:
21
+ # Open the browser automatically on server startup.
22
+ enabled: true
23
+ # Browser to use for opening the URL.
24
+ # NOT SUPPORTED ON ANDROID DEVICES.
25
+ # - Use "default" to use the system default browser
26
+ # - Use "firefox", "chrome", "edge"
27
+ browser: 'default'
28
+ # Overrides the hostname that opens in the browser.
29
+ # - Use "auto" to let the server decide
30
+ # - Use options like 'localhost', 'st.example.com'
31
+ hostname: 'auto'
32
+ # Overrides the port for run in the browser.
33
+ # - Use -1 to use the server port.
34
+ # - Specify a port to override the default.
35
+ port: -1
36
+ # Avoids using 'localhost' as the hostname in auto mode.
37
+ # Use if you don't have 'localhost' in your hosts file
38
+ avoidLocalhost: false
23
39
  # Server port
24
40
  port: 8000
25
- # Overrides the port for autorun in browser.
26
- # - Use -1 to use the server port.
27
- # - Specify a port to override the default.
28
- autorunPortOverride: -1
29
41
  # -- SSL options --
30
42
  ssl:
31
43
  enabled: false
@@ -70,7 +82,7 @@ enableDiscreetLogin: false
70
82
  # https://www.authelia.com/
71
83
  # This will use auto login to an account with the same username
72
84
  # as that used for authlia. (Ensure the username in authlia
73
- # is an exact match with that in sillytavern)
85
+ # is an exact match in lowercase with that in sillytavern)
74
86
  autheliaAuth: false
75
87
  # If `basicAuthMode` and this are enabled then
76
88
  # the username and passwords for basic auth are the same as those
@@ -98,12 +110,6 @@ rateLimiting:
98
110
  # Use X-Real-IP header instead of socket IP for rate limiting
99
111
  # Only enable this if you are using a properly configured reverse proxy (like Nginx/traefik/Caddy)
100
112
  preferRealIpHeader: false
101
- # -- ADVANCED CONFIGURATION --
102
- # Open the browser automatically
103
- autorun: true
104
- # Avoids using 'localhost' for autorun in auto mode.
105
- # use if you don't have 'localhost' in your hosts file
106
- avoidLocalhost: false
107
113
 
108
114
  ## BACKUP CONFIGURATION
109
115
  backups:
@@ -810,5 +810,13 @@
810
810
  {
811
811
  "filename": "presets/reasoning/Blank.json",
812
812
  "type": "reasoning"
813
+ },
814
+ {
815
+ "filename": "presets/instruct/Dots1.json",
816
+ "type": "instruct"
817
+ },
818
+ {
819
+ "filename": "presets/context/Dots1.json",
820
+ "type": "context"
813
821
  }
814
822
  ]
@@ -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}}<|endofsystem|>",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "names_as_stop_strings": true,
7
+ "always_force_name2": true,
8
+ "trim_sentences": false,
9
+ "single_line": false,
10
+ "name": "Dots1"
11
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "input_sequence": "<|userprompt|>",
3
+ "output_sequence": "<|response|>",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "<|system|>",
6
+ "stop_sequence": "<|endofresponse|>",
7
+ "wrap": true,
8
+ "macro": true,
9
+ "names_behavior": "force",
10
+ "activation_regex": "",
11
+ "system_sequence_prefix": "",
12
+ "system_sequence_suffix": "",
13
+ "first_output_sequence": "",
14
+ "skip_examples": false,
15
+ "output_suffix": "<|endofresponse|>\n",
16
+ "input_suffix": "<|endofuserprompt|>\n",
17
+ "system_suffix": "<|endofsystem|>\n",
18
+ "user_alignment_message": "",
19
+ "system_same_as_user": false,
20
+ "last_system_sequence": "",
21
+ "first_input_sequence": "",
22
+ "last_input_sequence": "",
23
+ "name": "Dots1"
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "@adobe/css-tools": "^4.4.2",
3
+ "@adobe/css-tools": "^4.4.3",
4
4
  "@agnai/sentencepiece-js": "^1.1.1",
5
5
  "@agnai/web-tokenizers": "^0.1.3",
6
6
  "@iconfu/svg-inject": "^1.2.3",
@@ -41,19 +41,19 @@
41
41
  "cookie-session": "^2.1.0",
42
42
  "cors": "^2.8.5",
43
43
  "crc": "^4.3.2",
44
- "csrf-sync": "^4.0.3",
44
+ "csrf-sync": "^4.2.1",
45
45
  "diff-match-patch": "^1.0.5",
46
- "dompurify": "^3.2.4",
46
+ "dompurify": "^3.2.6",
47
47
  "droll": "^0.2.1",
48
48
  "express": "^4.21.0",
49
- "form-data": "^4.0.2",
49
+ "form-data": "^4.0.3",
50
50
  "fuse.js": "^7.1.0",
51
51
  "google-translate-api-browser": "^3.0.1",
52
52
  "google-translate-api-x": "^10.7.2",
53
53
  "handlebars": "^4.7.8",
54
- "helmet": "^7.2.0",
54
+ "helmet": "^8.1.0",
55
55
  "highlight.js": "^11.11.1",
56
- "html-entities": "^2.5.2",
56
+ "html-entities": "^2.6.0",
57
57
  "iconv-lite": "^0.6.3",
58
58
  "ip-matching": "^2.1.2",
59
59
  "ip-regex": "^5.0.0",
@@ -61,13 +61,13 @@
61
61
  "is-docker": "^3.0.0",
62
62
  "localforage": "^1.10.0",
63
63
  "lodash": "^4.17.21",
64
- "mime-types": "^2.1.35",
64
+ "mime-types": "^3.0.1",
65
65
  "moment": "^2.30.1",
66
- "morphdom": "^2.7.4",
67
- "multer": "^2.0.0",
66
+ "morphdom": "^2.7.5",
67
+ "multer": "^2.0.1",
68
68
  "node-fetch": "^3.3.2",
69
69
  "node-persist": "^4.0.4",
70
- "open": "^8.4.2",
70
+ "open": "^10.1.2",
71
71
  "png-chunk-text": "^1.0.0",
72
72
  "png-chunks-extract": "^1.0.0",
73
73
  "proxy-agent": "^6.5.0",
@@ -77,18 +77,18 @@
77
77
  "seedrandom": "^3.0.5",
78
78
  "showdown": "^2.1.0",
79
79
  "sillytavern-transformers": "2.14.6",
80
- "simple-git": "^3.27.0",
80
+ "simple-git": "^3.28.0",
81
81
  "slidetoggle": "^4.0.0",
82
- "tiktoken": "^1.0.20",
82
+ "tiktoken": "^1.0.21",
83
83
  "url-join": "^5.0.0",
84
84
  "vectra": "^0.2.2",
85
85
  "wavefile": "^11.0.0",
86
- "webpack": "^5.98.0",
86
+ "webpack": "^5.99.9",
87
87
  "write-file-atomic": "^5.0.1",
88
- "ws": "^8.18.1",
89
- "yaml": "^2.7.0",
88
+ "ws": "^8.18.2",
89
+ "yaml": "^2.8.0",
90
90
  "yargs": "^17.7.1",
91
- "yauzl": "^2.10.0"
91
+ "yauzl": "^3.2.0"
92
92
  },
93
93
  "engines": {
94
94
  "node": ">= 18"
@@ -111,7 +111,7 @@
111
111
  "type": "git",
112
112
  "url": "https://github.com/SillyTavern/SillyTavern.git"
113
113
  },
114
- "version": "1.13.0",
114
+ "version": "1.13.1",
115
115
  "scripts": {
116
116
  "start": "node server.js",
117
117
  "debug": "node --inspect server.js",
@@ -137,24 +137,24 @@
137
137
  "@types/archiver": "^6.0.3",
138
138
  "@types/bytes": "^3.1.5",
139
139
  "@types/command-exists": "^1.2.3",
140
- "@types/compression": "^1.7.5",
141
- "@types/cookie-parser": "^1.4.8",
140
+ "@types/compression": "^1.8.1",
141
+ "@types/cookie-parser": "^1.4.9",
142
142
  "@types/cookie-session": "^2.0.49",
143
- "@types/cors": "^2.8.17",
144
- "@types/deno": "^2.2.0",
145
- "@types/express": "^4.17.21",
143
+ "@types/cors": "^2.8.19",
144
+ "@types/deno": "^2.3.0",
145
+ "@types/express": "^4.17.23",
146
146
  "@types/jquery": "^3.5.32",
147
147
  "@types/jquery-cropper": "^1.0.4",
148
148
  "@types/jquery.transit": "^0.9.33",
149
149
  "@types/jqueryui": "^1.12.24",
150
- "@types/lodash": "^4.17.16",
151
- "@types/mime-types": "^2.1.4",
152
- "@types/multer": "^1.4.12",
153
- "@types/node": "^18.19.80",
150
+ "@types/lodash": "^4.17.17",
151
+ "@types/mime-types": "^3.0.1",
152
+ "@types/multer": "^1.4.13",
153
+ "@types/node": "^18.19.84",
154
154
  "@types/node-persist": "^3.1.8",
155
155
  "@types/png-chunk-text": "^1.0.3",
156
156
  "@types/png-chunks-extract": "^1.0.2",
157
- "@types/response-time": "^2.3.8",
157
+ "@types/response-time": "^2.3.9",
158
158
  "@types/select2": "^4.0.63",
159
159
  "@types/toastr": "^2.1.43",
160
160
  "@types/write-file-atomic": "^4.0.3",
@@ -55,6 +55,7 @@
55
55
 
56
56
  /* Flashing for highlighting animation */
57
57
  @keyframes flash {
58
+
58
59
  0%,
59
60
  50%,
60
61
  100% {
@@ -122,3 +123,12 @@
122
123
  border-top-color: var(--progFlashColor);
123
124
  }
124
125
  }
126
+
127
+ /* Scroll delay animations */
128
+ @keyframes hide-scroll {
129
+
130
+ from,
131
+ to {
132
+ overflow-y: hidden;
133
+ }
134
+ }
@@ -1,5 +1,5 @@
1
1
  #rm_print_characters_block.group_overlay_mode_select .character_select {
2
- transition: background-color 0.4s ease;
2
+ transition: background-color var(--animation-duration-3x) ease;
3
3
  background-color: rgba(170, 170, 170, 0.15);
4
4
  }
5
5
 
@@ -0,0 +1,149 @@
1
+ .dataMaidDialogContainer {
2
+ height: 100%;
3
+ overflow: hidden;
4
+ }
5
+
6
+ .dataMaidDialog {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 5px;
10
+ height: 100%;
11
+ overflow: hidden;
12
+ }
13
+
14
+ .dataMaidDialogHeader {
15
+ display: flex;
16
+ gap: 10px;
17
+ align-items: center;
18
+ text-align: left;
19
+ }
20
+
21
+ .dataMaidHeaderInfo {
22
+ flex: 1;
23
+ margin: 0;
24
+ padding: 5px 10px;
25
+ }
26
+
27
+ .dataMaidTextView {
28
+ width: 100%;
29
+ height: 100%;
30
+ font-family: var(--monoFontFamily);
31
+ resize: none;
32
+ font-size: 0.95em;
33
+ }
34
+
35
+ .dataMaidImageView {
36
+ width: 100%;
37
+ height: 100%;
38
+ object-fit: contain;
39
+ }
40
+
41
+ .dataMaidSpinner {
42
+ display: flex;
43
+ justify-content: center;
44
+ align-items: center;
45
+ height: 100%;
46
+ }
47
+
48
+ .dataMaidPlaceholder {
49
+ display: flex;
50
+ justify-content: center;
51
+ align-items: center;
52
+ font-size: 1.05em;
53
+ }
54
+
55
+ .dataMaidResultsList:empty {
56
+ display: none;
57
+ }
58
+
59
+ .dataMaidResultsList {
60
+ text-align: left;
61
+ display: flex;
62
+ flex-direction: column;
63
+ gap: 2px;
64
+ overflow-y: auto;
65
+ height: 100%;
66
+ flex-grow: 1;
67
+ }
68
+
69
+ .dataMaidCategory {
70
+ border: 1px solid var(--SmartThemeBorderColor);
71
+ border-radius: 10px;
72
+ padding: 0 10px;
73
+ }
74
+
75
+ .dataMaidCategoryHeader {
76
+ width: 100%;
77
+ display: flex;
78
+ align-items: center;
79
+ justify-content: space-between;
80
+ margin-right: 5px;
81
+ padding: 0 5px;
82
+ }
83
+
84
+ .dataMaidCategoryDetails {
85
+ display: flex;
86
+ flex-direction: column;
87
+ gap: 1px;
88
+ }
89
+
90
+ .dataMaidCategoryName {
91
+ flex: 3;
92
+ font-weight: bold;
93
+ font-size: 1.1em;
94
+ }
95
+
96
+ .dataMaidCategoryInfo {
97
+ flex: 1;
98
+ display: flex;
99
+ align-items: baseline;
100
+ gap: 5px;
101
+ }
102
+
103
+ .dataMaidCategoryContent {
104
+ border: 1px solid var(--SmartThemeBorderColor);
105
+ padding: 5px;
106
+ border-radius: 10px;
107
+ background-color: var(--black30a);
108
+ margin: 10px 0;
109
+ }
110
+
111
+ .dataMaidCategoryContent>.info-block {
112
+ white-space: pre-wrap;
113
+ }
114
+
115
+ .dataMaidItem {
116
+ display: flex;
117
+ flex-direction: column;
118
+ padding: 5px;
119
+ width: 100%;
120
+ border-bottom: 1px solid var(--SmartThemeBorderColor);
121
+ }
122
+
123
+ .dataMaidItem:last-child {
124
+ border-bottom: none;
125
+ }
126
+
127
+ .dataMaidItemHeader {
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 5px;
131
+ }
132
+
133
+ .dataMaidItemName {
134
+ display: flex;
135
+ flex: 1;
136
+ align-items: baseline;
137
+ gap: 2px;
138
+ word-break: break-all;
139
+ }
140
+
141
+ .dataMaidItemActions {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 5px;
145
+ }
146
+
147
+ .dataMaidItemActions>button {
148
+ font-size: 0.9em;
149
+ }
@@ -18,7 +18,7 @@
18
18
 
19
19
  #load-spinner {
20
20
  --spinner-size: 2em;
21
- transition: all 300ms ease-out;
21
+ transition: all var(--animation-duration-2x) ease-out;
22
22
  opacity: 1;
23
23
  top: calc(50% - var(--spinner-size) / 2);
24
24
  left: calc(50% - var(--spinner-size) / 2);
@@ -23,7 +23,7 @@ body.login .userSelect {
23
23
  width: 30%;
24
24
  cursor: pointer;
25
25
  margin: 5px 0;
26
- transition: background-color 0.15s ease-in-out;
26
+ transition: background-color var(--animation-duration) ease-in-out;
27
27
  display: flex;
28
28
  align-items: center;
29
29
  justify-content: center;
@@ -43,7 +43,7 @@
43
43
  height: 25px;
44
44
  margin-left: 5px;
45
45
  opacity: 0.5;
46
- transition: all 250ms;
46
+ transition: all var(--animation-duration-2x);
47
47
  position: unset !important;
48
48
  }
49
49
 
@@ -25,10 +25,6 @@
25
25
  font-size: 15px;
26
26
  }
27
27
 
28
- .mes_text img {
29
- width: 100%;
30
- }
31
-
32
28
  #extensions_settings,
33
29
  #extensions_settings2 {
34
30
  width: 100% !important;
@@ -241,6 +237,15 @@
241
237
  top: var(--topBarBlockSize) !important;
242
238
  left: 0 !important;
243
239
  backdrop-filter: blur(calc(var(--SmartThemeBlurStrength) * 2));
240
+
241
+ @starting-style {
242
+ height: 0;
243
+ }
244
+ }
245
+
246
+ #left-nav-panel:not(.openDrawer),
247
+ #right-nav-panel:not(.openDrawer) {
248
+ height: 0;
244
249
  }
245
250
 
246
251
  /*
@@ -79,7 +79,7 @@
79
79
  justify-content: center;
80
80
  margin-left: 0.25em;
81
81
  cursor: pointer;
82
- transition: 0.3s ease-in-out;
82
+ transition: var(--animation-duration-2x) ease-in-out;
83
83
  height: 20px;
84
84
  width: 20px;
85
85
  filter: drop-shadow(0px 0px 2px black);
@@ -239,7 +239,7 @@
239
239
  flex-direction: column;
240
240
  justify-content: center;
241
241
  margin-left: 0.25em;
242
- transition: 0.3s ease-in-out;
242
+ transition: var(--animation-duration-2x) ease-in-out;
243
243
  filter: drop-shadow(0px 0px 2px black);
244
244
  }
245
245
 
@@ -172,7 +172,7 @@
172
172
  #rm_group_members .group_member:not(.disabled) .right_menu_button[data-action="disable"] {
173
173
  opacity: 0.4;
174
174
  filter: brightness(0.5);
175
- transition: all 0.2s ease-in-out;
175
+ transition: all var(--animation-duration-2x) ease-in-out;
176
176
  }
177
177
 
178
178
  /* #rm_group_members .right_menu_button[data-action="speak"]:hover, */
@@ -0,0 +1,102 @@
1
+ .secretKeyManager {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 5px;
5
+ height: 100%;
6
+ }
7
+
8
+ .secretKeyManagerHeader {
9
+ display: flex;
10
+ flex-direction: column;
11
+ justify-content: center;
12
+ align-items: center;
13
+ gap: 5px;
14
+ }
15
+
16
+ .secretKeyManagerSubtitle {
17
+ display: flex;
18
+ flex-direction: row;
19
+ justify-content: space-between;
20
+ align-items: center;
21
+ width: 100%;
22
+ }
23
+
24
+ .secretKeyManagerInfo {
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: baseline;
28
+ flex: 1;
29
+ font-size: 0.95em;
30
+ }
31
+
32
+ .secretKeyManagerList {
33
+ display: flex;
34
+ flex-direction: column;
35
+ text-align: left;
36
+ gap: 5px;
37
+ flex: 1;
38
+ overflow-y: auto;
39
+ height: 100%;
40
+ }
41
+
42
+ .secretKeyManagerItem {
43
+ border: 1px solid var(--SmartThemeBorderColor);
44
+ padding: 5px 10px;
45
+ border-radius: 10px;
46
+ background-color: var(--black30a);
47
+ display: flex;
48
+ flex-direction: row;
49
+ align-items: center;
50
+ }
51
+
52
+ .secretKeyManagerItem.active {
53
+ background-color: var(--cobalt30a);
54
+ }
55
+
56
+ .secretKeyManagerItemInfo {
57
+ display: flex;
58
+ flex-direction: column;
59
+ flex: 1;
60
+ gap: 5px;
61
+ }
62
+
63
+ .secretKeyManagerItemSubtitle,
64
+ .secretKeyManagerItemHeader {
65
+ word-break: break-all;
66
+ }
67
+
68
+ .secretKeyManagerItemId {
69
+ text-decoration: underline;
70
+ text-decoration-style: dotted;
71
+ cursor: pointer;
72
+ }
73
+
74
+ .secretKeyManagerItemActions {
75
+ display: flex;
76
+ flex-direction: column;
77
+ gap: 5px;
78
+ }
79
+
80
+ .secretKeyManagerItemActionsRow {
81
+ display: flex;
82
+ flex-direction: row;
83
+ gap: 5px;
84
+ }
85
+
86
+ .secretKeyManagerItemActionsRow>button {
87
+ margin: 0;
88
+ }
89
+
90
+ .secretKeyManagerList:empty {
91
+ display: none;
92
+ }
93
+
94
+ .secretKeyManagerListEmpty {
95
+ display: flex;
96
+ justify-content: center;
97
+ align-items: center;
98
+ width: 100%;
99
+ opacity: 0.8;
100
+ font-weight: bold;
101
+ font-size: 1.05em;
102
+ }