Releases: SillyTavern/SillyTavern
1.18.0
SillyTavern 1.18.0
Important news
Read the maintainers statement regarding a recent security incident involving the "Bot Browser" third-party extension and learn how to stay safe: #5592
Backends
- Added Cloudflare Workers AI and MiniMax as Chat Completion sources.
- KoboldCpp: Grammar state will be preserved when using a "Continue" option.
- KoboldCpp: Added forwarding of reasoning effort when running as a Custom Chat Completion source.
- Tool Calling: Added a configurable tool calling recursion limit; enabled interleaved thinking for Custom sources.
- Text Completion: Impersonation requests use a "Last User Message" prefix at the end of the prompt (if configured).
- Text Generation WebUI: Added Adaptive-P controls.
- NanoGPT: Added provider selection and model sorting.
- Added ability to view remaining balance for OpenRouter and NanoGPT.
- Enhanced support for new models: DeepSeek v4, GPT 5.4 and 5.5, Gemma 4, GLM-5V-Turbo, Claude Opus 4.7.
Server & Security
- Removed post-install script, config migration is now handled by the app or a dedicated
npm run initcommand. - Added npm configuration to prevent execution of package scripts during installation.
- Moved HTTP error pages and
user.cssfile from/publicto/datato support immutable setups. - Disabled HTTP keep-alive by default to restore old Node 18 behavior, can be enabled with config.
- Added rate limiting to the basic authentication flow to mitigate brute-force attacks.
- Added configuration options to choose which headers can be used for forwarded IP detection to prevent spoofing.
- Added a private address whitelist to prevent SSRF attacks. See the documentation on how to enable and configure: Private Address Whitelist.
- Added an IP whitelist for SSO trusted proxies to prevent authentication bypass.
- Added invalidation of session cookies on password change to prevent session hijacking.
- Increased the length of password reset code to 6 characters to guard against brute-force attacks.
- Implemented PKCE challenge in OpenRouter OAuth flow for more secure key exchange.
UI/UX
- Improved swipe picker: mobile requires a long press on swipe counter to open; added buttons to expand or copy the swipe text.
- "Click to Edit" mode now also applied to reasoning blocks.
- Welcome Screen: Number of recent chats can be configured.
- Streamed requests now can show an error message in the console if the request fails.
STscript
- Added commands for persona management:
/persona-create,/persona-update,/persona-delete,/persona-duplicate, and/persona-get. - Added a command to force update the Prompt Manager's prompt list:
/pm-render. - Added a command to get the state of the regex script:
/regex-state. - Added a command to set fallback expression:
/expression-fallback. - Added a command to generate a streamed response with a connection profile:
/profile-genstream.
Extensions
- Assets list now groups extensions by "Official" or "Community" categories.
- Added an additional confirmation prompt when installing third-party extensions (can be disabled).
- Supported extensions can use a secret-id from connection profiles when making an LLM request.
- Extensions list now shows the extension's author name resolved from the git remote URL.
- Vector Storage: Added Workers AI source; added a toggle to keep vectors for hidden messages; added retry logic to summary generation.
- Image Generation: Added Workers AI source; generation can now be cancelled by pressing a button in the status toast.
- Image Captioning: Added support for macros in the caption prompt.
- TTS: "Skip code blocks" no longer ignores lines that start with 4 spaces (legacy code block syntax); "disabled" voice now shows a toast only once per character.
Bug Fixes
- Fixed text edit flow in Firefox on mobile.
- Fixed welcome screen chat pins not updating on chat renaming.
- Fixed character list filters being stuck on app initialization.
- Fixed application of instruct formatting to
/genrawrequests. - Fixed model routing to sd.cpp API in Image Generation logic.
- Fixed validation of image URLs generated with Z.AI API.
- Fixed vectors deletion for KoboldCpp when a message is deleted.
- Fixed "Show More Messages" button triggering edit in "Click to Edit" mode.
- Fixed max height of select-multiple elements in mobile layout.
- Fixed server crash on empty messages when applying cache control parameters.
Community updates
- Fix npm audit in /tests by @Cohee1207 in #5370
- CI: Update node to 24, run ci without scripts by @Cohee1207 in #5376
- Backmerge release into staging by @Cohee1207 in #5377
- feat(secrets): update readSecret function to accept optional secret ID by @dylenyedc in #5356
- fix: return Error objects from invokeFunctionTool and create error invocations by @xz-dev in #5351
- Add opt-in toggle to keep hidden messages in chat vector index by @Copilot in #5378
- feat: swipe picker expand/collapse, copy button, and left-align text by @Copilot in #5380
- Fix /genraw user instruct format not applied and unwanted system newline by @claude in #5372
- fix: require long press to open swipe picker on phones by @Cohee1207 in #5382
- Save chat before emitting event for user message by @Cohee1207 in #5389
- Use custom init script instead of postinstall by @Cohee1207 in #5384
- glm-5v-turbo by @Cohee1207 in #5393
- Add VSCode settings for TypeScript SDK configuration by @Cohee1207 in #5394
- Add Gemma 4 instruct, context, and reasoning presets by @LumiWasTaken in #5403
- Immutable public and global content management by @Cohee1207 in #5390
- Skip TTS for voices explicitly set to disabled (fixes #4970) by @tgies in #5367
- Add unit tests for prompt-converters.js by @tgies in #5364
- Add unit tests for TavernCardValidator by @tgies in #5366
- Add tests for Cache, MemoryLimitedMap, and other util.js coverage gaps by @tgies in #5365
- Add IP whitelist for SSO authentication headers by @Cohee1207 in #5404
- fix: improve streaming error propagation and forwarded response logging by @dz114879 in #5317
- feat: add Cloudflare Workers AI provider by @tgies in #5385
- fix npm audit in src/electron by @Cohee1207 in #5405
- Add Entry Preview to World Info Deletion Confirmation Dialog by @Wolfsblvt in #5423
- refactor(tts): remove redundant 4-space codeblock filter by @bumprat in #5406
- feat: add Workers AI text embeddings and multimodal captioning by @tgies in #5414
- Fix: Remove
COMFY_RUNPODfrom secrets input map β invalid element reference by @Wolfsblvt in #5432 - Fix: Suppress false "Unsupported language" console warnings for English locale variants by @Wolfsblvt in #5431
- Fix: Skip Pseudo-Elements When Generating Dynamic Focus Styles by @Wolfsblvt in #5430
- Add Arguments Logging to Deprecated MacrosParser Method Warnings for Better Debugging Context by @Wolfsblvt in #5429
- Fix stable-diffusion.cpp model routing and URL path handling by @V13Axel in #5427
- Add
/regex-stateslash command to check regex script status by @Wolfsblvt in #5428 - Migrate built-in extensions to use manifest-based activate hooks by @Wolfsblvt in #5435
- Refactor repetitive vectorization model loading into a generic data-driven function by @Copilot in #5425
- Add configurable welcome screen recent chats, fix pin loss on rename, and add popup number input validation by @Copilot in #5436
- Gemma 4 reasoning: drop newline there by @Cohee1207 in #5433
- Chore: Add persona lifecycle events (
PERSONA_CREATED,PERSONA_UPDATED,PERSONA_RENAMED,PERSONA_DELETED) by @Wolfsblvt in #5443 - chore: Add
getExtensionManifest()to the extension context API by @Wolfsblvt in #5442 - Add
disabledproperty support to all popup custom input types by @Wolfsblvt in #5441 - Fix: Missing
signatureandtoolSignaturesfields inChatCompletionServicestreaming state by @Wolfsblvt in #5439 - Allow ...
1.17.0
SillyTavern 1.17.0
Note: Requires Node.js 20 or higher.
Need to update Node? See: https://docs.sillytavern.app/installation/updating/node/
Backends
- Claude: Added adaptive thinking support mapped from Reasoning Effort (opt-in via config)
- OpenRouter: Added provider filtering based on selected model
- OpenRouter: Deactivated reasoning toggle with minimal reasoning effort now disables thinking (model-dependent)
- OpenRouter: Added interleaved reasoning forwarding for tool-call continuations
- SiliconFlow: Added API endpoint selection (Global / China)
- xAI: Removed deprecated web search toggle
- Synchronized model lists (GPT, Claude, GLM, Gemini, Grok Imagine)
Improvements
- Swipe Picker: New interface to browse, jump, branch, and delete swipes
- Backgrounds: Added virtual folders with grid view, breadcrumbs, and thumbnails
- UI: New splash screen design during app initialization
- World Info: Renaming can optionally relink lorebooks across all characters
- World Info: Unified chat, character and persona link buttons behavior (click to load, shift-click or long press to open a menu)
- Tags: Added automatic cleanup of orphaned folder tags
- Thumbnails: Improved APNG detection for thumbnail generation
- Tokenization: Token estimation now uses byte length of a string
- Gallery: Added a shortcut to extensions ("Magic Wand") menu.
- a11y: Added support for system-wide reduced motion and high contrast preferences
- Reasoning: Added a new "Think XML" template without newlines in tags
- Server: Added isomorphic-git as an alternative backend for installing extensions
- Server: Added optional gzip compression for large request payloads
- Server: Added config for disallowing full data backups
- Server: Clear error messaging for port conflicts during startup
- Server: Auto-create data root in standalone mode if not exists
- Build: Improved webpack cache management to prevent stale caches
Macros
- New macro engine enabled by default for new installs
- Added:
{{charFirstMessage}}/{{greeting}}(with optional indexing for alternate greetings){{maxContextTokens}},{{maxResponseTokens}}{{allChatRange}}: provides the range of the entire chat for commands that accept ranges
- Fixed
{{summary}}prioritization of UI memory content
STscript
New Commands
- Character management:
/char-create,/char-update,/char-get,/char-delete,/char-duplicate,/tag-import - Generation control:
/swipe,/regenerate - Reasoning block control:
/reasoning-collapse,/reasoning-expand,/reasoning-toggle - Array utilities:
/array-wrap,/array-unwrap - Loader:
/loader-wrap,/loader-show,/loader-hide,/loader-stop
Enhancements
- Extended
/input,/popup,/buttonswith placeholders, tooltips, icons /imaginenow supportsgalleryargument/bgcolrebuilt for full theme palette generation using color theory
Removals
- Removed deprecated commands:
/lockand/bind(aliased to/persona-lock) - Deprecated
formatparameter for message-sending commands (usereturn)
Extensions
For developers
- Added extension lifecycle hooks via manifest declarations
- Exported
SlashCommandEnumValueandgenerateRawData - Extensions can now process streamed text during tool-call chains
- Popup System:
- Added textarea support
- Added placeholders, tooltips, icons
- Action Loader:
- New reusable loading overlay system
- Supports stacking, toasts, and STscript integration
- Added events:
PERSONA_CHANGEDTTS_JOB_STARTEDTTS_AUDIO_READYTTS_JOB_COMPLETE
Vector Storage
- Ollama: Migrated to
/api/embedwith batch support - SiliconFlow: Added as embeddings provider
- Google: Added gemini-embedding-2-preview
Image Generation
- Overriden image dimensions via the slash command are preserved for swiped images
- Manual prompt refinement: edit or discard saved negative prompt and resolution
Bug Fixes
- Fixed sanitization of chat import names
- Fixed secrets being present in data backups when not intended
- Fixed user data paths validation in route handlers
- Fixed Claude multipart text block parsing (non-streaming)
- Fixed tokenizer requests requiring model name (llama.cpp)
- Fixed embedding requests for custom API paths (llama.cpp, vLLM)
- Fixed stop string message clean-up for Chat Completion
- Fixed OpenRouter cache-at-depth logic to exclude system messages
- Fixed OpenRouter not respecting
enableThoughtSignaturessetting - Fixed OpenRouter payload field name (
input_videoβvideo_url) - Fixed KoboldCpp DRY sequence stringification
- Fixed KoboldCpp and Tabby tokenization counting a BOS token
- Fixed Escape key closing non-dismissable popups (double tap Escape to override)
- Fixed tag visibility persistence in Tag Management
- Fixed priority of closing side panels with Escape keys
- Fixed APNG image format detection in thumbnail handling
- Fixed duplicate image-generation toasts
- Fixed tool-call error handling and reporting
- Fixed typo in KoboldAI instruct template (
OUPUTβOUTPUT)
Community updates
- Chore: Add code formatting conventions as eslint rules by @Cohee1207 in #5158
- Chore: enable brace-style eslint check by @Cohee1207 in #5159
- Fix/Remove non-samplers from sampler selection by @leandrojofre in #5163
- Fix NanoGPT prompt caching for anthropic/claude-* model IDs by @SenatusSPQR1 in #5164
- Overhaul /bgcol: Oklch color space, full palette generation, save as new theme by @Copilot in #5162
- Fix koboldcpp dry sequence stringification by @malformed-c in #5156
- feat: add prefers-reduced-motion and prefers-contrast media queries by @xavisavvy in #5122
- Add Textarea Support to Popup Custom Inputs by @Wolfsblvt in #5167
- Guard
isValidImageUrlagainst nullishavatar_urlinputs by @Copilot in #5172 - Guard
isValidImageUrlagainst nullishavatar_urlinputs (#5172) by @Cohee1207 in #5173 - i18n: Comprehensive update and refactor for Simplified Chinese (zh-CN) by @YKDZ in #5171
- Add gallery argument to /imagine command by @bal-spec in #5168
- Add {{maxContext}}, {{maxResponse}} macros and {{maxPromptTokens}} alias by @Copilot in #5176
- Add gemini-3.1-pro-preview to Google AI Studio and Vertex model lists⦠by @SpicyMarinara in #5188
- Add gemini-3.1-pro-preview to caption settings by @SpicyMarinara in #5190
- Update zh-CN translations by @Tosd0 in #5180
- Fix APNG thumbnail handling and improve animated format detection by @Vibecoder9000 in #5113
- Feat/Export SlashCommandEnumValue for extensions through getContext by @leandrojofre in #5191
- build llama.cpp embedding url path by appending instead of overwriting by @wbruna in #5178
- OpenRouter interleaved reasoning forwarding for tool-call continuations by @ZhenyaPav in #5160
- Preserve image dimensions when generating swipe images by @Copilot in #5205
- feat(openrouter): disable reasoning if Request model reasoning is off and effort is minimum by @Brioch in #5079
- Open router provider filter by @GERNOMA in #5208
- Add PERSONA_CHANGED event by @Copilot in #5218
- Background Folders by @Vibecoder9000 in #5187
- Fix tag hide/show toggle in Tag Management not persisting by @Copilot in #5226
- Use Ollama /api/embed endpoint for vector embeddings by @shifusen329 in #5221
- Remove open bogus folder tags that don't have any entities assigned by @Cohee1207 in #5225
- Add unit tests for pure functions in src/util.js by @tgies in #5231
- fix: skip system messages in OpenRouter cacheAtDepth calculation by @tgies in #5230
- Support for isomorphic-git as an alternative git backend, part 1 by @Sanitised in #5229
- Claude: map Reasoning Effort to adaptive thinking config by @Cohee1207 in #5219
- Implement {{charFirstMessage}} / {{greeting}} macro with alternate greeting indexing and substitution by @Copilot in #5220
- Enable experimental macro engine by default (for new users) by @Wolfsblvt in #5234
- Add gpt-5.3-chat-latest model support by @SpicyMarinara in #5241
- Remove xAI web search capability by @equal-l2 in #5255
- Group add to background folder by @Vibecoder9000 in #5...
1.16.0
SillyTavern 1.16.0
Note: The first-time startup on low-end devices may take longer due to the image metadata caching process.
Backends
- NanoGPT: Enabled tool calling and reasoning effort support.
- OpenAI (and compatible): Added audio inlining support.
- Added Adaptive-P sampler settings for supported Text Completion backends.
- Gemini: Thought signatures can be disabled with a config.yaml setting.
- Pollinations: Updated to a new API; now requires an API key to use.
- Moonshot: Mapped thinking type to "Request reasoning" setting in the UI.
- Synchronized model lists for Claude and Z.AI.
Features
- Improved naming pattern of branched chat files.
- Enhanced world duplication to use the current world name as a base.
- Improved performance of message rendering in large chats.
- Improved performance of chat file management dialog.
- Groups: Added tag filters to group members list.
- Background images can now save additional metadata like aspect ratio, dominant color, etc.
- Welcome Screen: Added the ability to pin recent chats to the top of the list.
- Docker: Improved build process with support for non-root container users.
- Server: Added CORS module configuration options to config.yaml.
Macros
Note: New features require "Experimental Macro Engine" to be enabled in user settings.
- Added autocomplete support for macros in most text inputs (hint: press Ctrl+Space to trigger autocomplete).
- Added a hint to enable the experimental macro engine if attempting to use new features with the legacy engine.
- Added scoped macros syntax.
- Added conditional
ifmacro and preserve whitespace (#) flag. - Added variable shorthands, comparison and assignment operators.
- Added
{{hasExtension}}to check for active extensions.
STscript
- Added
/reroll-pickcommand to reroll{{pick}}macros in the current chat. - Added
/beepcommand to play a message notification sound.
Extensions
- Added the ability to quickly toggle all third-party extensions on or off in the Extensions Manager.
- Image Generation:
- Added image generation indicator toast and improved abort handling.
- Added stable-diffusion.cpp backend support.
- Added video generation for Z.AI backend.
- Added reduced image prompt processing toggle.
- Added the ability to rename styles and ComfyUI workflows.
- Vector Storage:
- Added slash commands for interacting with vector storage settings.
- Added NanoGPT as an embeddings provider option.
- TTS:
- Added regex processing to remove unwanted parts from the input text.
- Added Volcengine and GPT-SoVITS-adapter providers.
- Image Captioning: Added a model name input for Custom (OpenAI-compatible) backend.
Bug Fixes
- Fixed path traversal vulnerability in several server endpoints.
- Fixed server CORS forwarding being available without authentication when CORS proxy is enabled.
- Fixed asset downloading feature to require a host whitelist match to prevent SSRF vulnerabilities.
- Fixed basic authentication password containing a colon character not working correctly.
- Fixed experimental macro engine being case-sensitive when checking for macro names.
- Fixed compatibility of the experimental macro engine with the STscript parser.
- Fixed tool calling sending user input while processing the tool response.
- Fixed logit bias calculation not using the "Best match" tokenizer.
- Fixed app attribution for OpenRouter image generation requests.
- Fixed itemized prompts not being updated when a message is deleted or moved.
- Fixed error message when the application tab is unloaded in Firefox.
- Fixed Google Translate bypassing the request proxy settings.
- Fixed swipe synchronization overwriting unresolved macros in greetings.
Community updates
- Macros 2.0 (v0.4) - Add scoped macros (last arg can be scoped),
{{if}}macro and macro flags (baseline implementation) by @Wolfsblvt in #4913 - Zai moonshot reverse proxy by @subzero5544 in #4923
- add new Tts adapter provider by @guoql666 in #4915
- updated claude prompt caching url by @underscorex86 in #4931
- Macros 2.0 (v0.5) - Add variable shorthand macros and variable support to
{{if}}macro by @Wolfsblvt in #4933 - Added regex filter option to TTS extension by @ZhenyaPav in #4924
- Macros 2.0 [Fix] - Make macro name matching case-insensitive throughout the macro system by @Wolfsblvt in #4942
- Macros 2.0 (v0.5.1) - Delayed Macro Argument Resolution for
{{if}}Macro by @Wolfsblvt in #4934 - Add Adaptive-P settings by @Cohee1207 in #4945
- Wrap reloadCurrentChat into SimpleMutex by @Cohee1207 in #4944
- Macros 2.0 [βMacros] - Add
{{hasExtension}}macro, and refactor extension lookup logic by @Wolfsblvt in #4948 - Macros 2.0 [Fix] - Macro display override uses alias name if relevant + preserve whitespaces for autocomplete closing tag by @Wolfsblvt in #4953
- Macros 2.0 (v0.5.2) - Onboarding for new Macro Engine by @Wolfsblvt in #4955
- Caption: Add custom model input field by @Cohee1207 in #4956
- Macros 2.0 (v0.6.6) - STscript compatibility by @Cohee1207 in #4957
- Audio inlining for OpenAI and Custom-compatible by @Cohee1207 in #4964
- Removed 87 redundant
chat[chat.length - 1]lookups. by @DeclineThyself in #4963 - Fix user handle naming logic by @allen9441 in #4969
- "gradually replacing property access with a dot operator" by @DeclineThyself in #4965
- Optimize getGroupPastChats by @Cohee1207 in #4976
- Replace $.ajax with fetch by @Cohee1207 in #4978
- Macros 2.0 [Fix] - Fix macro evaluation to allow nested scoped macros in arguments by @Wolfsblvt in #4977
- Macros 2.0 [Fix] - Fix
{{pick}}macro seeding inside delayed-resolution macros like{{if}}by @Wolfsblvt in #4986 - Fix: init macros before extensions by @Cohee1207 in #4988
- Enhance world duplication to use current world name as base by @Wolfsblvt in #4990
- Fix: don't call append media twice on swipe by @Cohee1207 in #4991
- Improve performance of printMessages by @Cohee1207 in #4979
- Feature: Enhanced Branch and Checkpoint Naming by @Wolfsblvt in #4993
refactor/perf-printMessages#2: RemovedgetMessageFromTemplateby @DeclineThyself in #4983- Show a page reload prompt on EME toggle by @Cohee1207 in #4994
refactor/perf-printMessages#3: ExtractedupdateMessageItemizedPromptButtonandgetMessageHTMLfromaddOneMessageto improve readability. by @DeclineThyself in #4984- Adjust itemized prompts on message move/delete by @Cohee1207 in #5000
- Macros 2.0 (v0.7.0) -Variable Shorthand: New Operators & Lazy Evaluation by @Wolfsblvt in #4997
refactor/perf-printMessages#4: RenamednewMessagetomessageElementandnewMessageIdtomessageId. by @DeclineThyself in #4985- Add to list of Showdown block tags by @Cohee1207 in #4998
- Update Dockerfile by @Cohee1207 in #4954
- Suppress error messages when Firefox unloads the tab by @Cohee1207 in #5013
- feat(sd): Add Z.AI GLM-Image model support by @mschienbein in #5012
- Improved
printMessagesperformance on large chats by reducing DOM updates. by @DeclineThyself in #4947 - Adaptive-P for llama.cpp llama-server by @Beinsezii in #4959
- Add taxon filter controls to Group Chat member list by @paradox460 in #5006
- Adaptive P Hotfix by @Beinsezii in #5022
- Adding Slash Commands for Vector Storage Extension by @adventchilde in #5008
- Gemini: Add config.yaml setting for thought signatures by @Cohee1207 in #5025
- Docker: Build Optimization and Enhanced Non-Root/Volumeless Support by @Pavdig in #5024
- feat(sd): Add generation status indicator and improve abort handling by @mschienbein in #5015
- Recent Chats: Add pin functionality by @Cohee1207 in #5030
- feat(docker): add robust h...
1.15.0
SillyTavern 1.15.0
Highlights
Introducing the first preview of Macros 2.0, a comprehensive overhaul of the macro system that enables nesting, stable evaluation order, and more. You are encouraged to try it out by enabling "Experimental Macro Engine" in User Settings -> Chat/Message Handling. Legacy macro substitution will not receive further updates and will eventually be removed.
Breaking Changes
{{pick}}macros are not compatible between the legacy and new macro engines. Switching between them will change the existing pick macro results.- Due to the change of group chat metadata files handling, existing group chat files will be migrated automatically. Upgraded group chats will not be compatible with previous versions.
Backends
- Chutes: Added as a Chat Completion source.
- NanoGPT: Exposed additional samplers to UI.
- llama.cpp: Supports model selection and multi-swipe generation.
- Synchronized model lists for OpenAI, Google, Claude, Z.AI.
- Electron Hub: Supports caching for Claude models.
- OpenRouter: Supports system prompt caching for Gemini and Claude models.
- Gemini: Supports thought signatures for applicable models.
- Ollama: Supports extracting reasoning content from replies.
Improvements
- Experimental Macro Engine: Supports nested macros, stable evaluation order, and improved autocomplete.
- Unified group chat metadata format with regular chats.
- Added backups browser in "Manage chat files" dialog.
- Prompt Manager: Main prompt can be set at an absolute position.
- Collapsed three media inlining toggles into one setting.
- Added verbosity control for supported Chat Completion sources.
- Added image resolution and aspect ratio settings for Gemini sources.
- Improved CharX assets extraction logic on character import.
- Backgrounds: Added UI tabs and ability to upload chat backgrounds.
- Reasoning blocks can be excluded from smooth streaming with a toggle.
- start.sh script for Linux/MacOS no longer uses nvm to manage Node.js version.
STscript
- Added
/message-roleand/message-namecommands. /api-urlcommand supports VertexAI for setting the region.
Extensions
- Speech Recognition: Added Chutes, MistralAI, Z.AI, ElevenLabs, Groq as STT sources.
- Image Generation: Added Chutes, Z.AI, OpenRouter, RunPod Comfy as inference sources.
- TTS: Unified API key handling for ElevenLabs with other sources.
- Image Captioning: Supports Z.AI (common and coding) for captioning video files.
- Web Search: Supports Z.AI as a search source.
- Gallery: Now supports video uploads and playback.
Bug Fixes
- Fixed resetting the context size when switching between Chat Completion sources.
- Fixed arrow keys triggering swipes when focused into video elements.
- Fixed server crash in Chat Completion generation when invalid endpoint URL passed.
- Fixed pending file attachments not being preserved when using "Attach a File" button.
- Fixed tool calling not working with deepseek-reasoner model.
- Fixed image generation not using character prefixes for 'brush' message action.
Community Updates
- Gallery: Add video uploads to gallery by @Cohee1207 in #4796
- Add new WORLDINFO_SCAN_DONE event with mutable state for extensions by @Wolfsblvt in #4797
- Remove nvm install from start.sh by @Cohee1207 in #4804
- TC: Add a toggle for empty json schemas by @Cohee1207 in #4807
- /api-url: Add VertexAI region management by @Cohee1207 in #4808
- Backgrounds: Restore drawer title header by @Cohee1207 in #4809
- Add credit to bryc for writing getStringHash. by @DeclineThyself in #4811
- Refactor loadOpenAISettings by @Cohee1207 in #4815
- Fix resetting the context size when switching between CC sources by @Cohee1207 in #4816
- Update group chat metadata format by @Cohee1207 in #4805
- Trigger CHARACTER_RENAMED_IN_PAST_CHAT for group chats by @leandrojofre in #4818
- Unify chat timestamps format by @Cohee1207 in #4806
- Backport
feat/chat-treeand fix #4709 by @DeclineThyself in #4712 - Fix - Check for samplers in the connections pannel by @leandrojofre in #4822
- Prompt Manager: Make main/PHI/aux injectable by @Cohee1207 in #4829
- Chat Completion: Reduce number of toggles in AI Response Configuration by @Cohee1207 in #4821
- Empty
swipesare not handled byensureSwipes. by @DeclineThyself in #4828 - Return character prefixes to brush image generation by @drake1138 in #4833
- Backfill missing swipe_info by @Cohee1207 in #4831
- Add verbosity control by @Cohee1207 in #4837
- Vertexaisearch by @mightytribble in #4834
- Enhanced CharX Import with Asset Extraction by @axAilotl in #4825
- Gemini: Add image request settings by @Cohee1207 in #4838
- Backported
/testsfrommacros-2.0. by @DeclineThyself in #4842 - Backgrounds menu tabs by @Cohee1207 in #4845
- Sync OpenRouter providers list by @cloak1505 in #4846
- Convert OAI tool_choice to Gemini functionCallingConfig for Gemini requests by @mightytribble in #4840
- Added MockServer class for tests by @DeclineThyself in #4843
- Chutes integration by @cxmplex in #4844
- Add optional Setter to changeMainApi by @SammCheese in #4853
- Feat: Add toggle to exclude think/reason blocks from smooth streaming by @Dakraid in #4849
- Facillitate extension use of ConnectionManagerRequestService by @qvink in #4841
- custom-request: Pass api-url for Z.AI and Vertex and fix if omitted by @Cohee1207 in #4859
- Fix Mistral's Max Temperature by @kashmirmydon in #4856
- Fix path to sprites construction by @Cohee1207 in #4860
- Implement chat backups browse menu by @Cohee1207 in #4862
- Regex cache by @Cohee1207 in #4858
- Fixed
isModifiedKeyboardEventorder of operations. by @DeclineThyself in #4866 - "N" support for llama.cpp by @Beinsezii in #4869
- Backported refactor of the chats endpoint from
feat/chat-tree.by @DeclineThyself in #4870 - Add docker data directories to .dockerignore by @equal-l2 in #4873
- Add an explicit
cache_controlto the first system message for OpenRouter Claude by @chungchandev in #4872 - Fix: preserve attached files during file input changes by @Cohee1207 in #4877
- Replace Google Translate library by @Cohee1207 in #4884
- Refactor CC API async route handlers by @Cohee1207 in #4885
- Chevrons can overlap with other elements. by @DeclineThyself in #4878
- Correct error message in evalBoolean by @Kexus in #4889
- Macros 2.0 (v0.3) - Replacing the existing Macro System with a new Macro Engine by @Wolfsblvt in #4820
- Z.AI: Add image generation and web search by @Cohee1207 in #4895
- Gemini: add media resolution select by @Cohee1207 in #4775
- Implement Gemini thought signatures by @mightytribble in #4886
- Migrate substituteParams calls to new engine by @Cohee1207 in #4901
- Refactor ElevenLabs TTS API key handling by @Cohee1207 in #4906
- Add caching system prompt feature for OpenRouter Gemini by @chungchandev in #4903
- Add model selection support for llama.cpp router mode by @my-alt-acct in #4910
- Fix context size limitation for llama.cpp router mode by @my-alt-acct in #4914
- Updated Avatar Style and
Hide Chat Avatarstitle text. by @DeclineThyself in #4908 - Comfyui serverless runpod image generation by @9nbf7c4q6b-lgtm in https://github.com/SillyTavern/SillyTavern/...
1.14.0
SillyTavern 1.14.0
Breaking changes
Due to changes in the handling of attached media, chat files containing such media will not be backward compatible with versions prior to 1.14.0.
Third-party extensions that read or write media to chat messages may require updates to be compatible with this version. Please contact the extension authors for more information.
Backends
- Added Z.AI API and SiliconFlow as Chat Completion sources.
- Updated default presets for Text Completion and Kobold Classic, legacy presets are removed.
- Updated model lists for Gemini, Claude, OpenAI and Moonshot.
- Added VertexAI-specific safety categories with
OFFvalues for Gemini models. - Synchronized OpenRouter providers list.
Improvements
- Added the ability to attach multiple files and images to a single message.
- Added the ability to attach audio files to messages.
- Added prompt audio inlining support for Gemini and OpenRouter.
- Can switch between gallery and list styles in messages with attached media.
- Advanced Formatting settings that do not work for Chat Completion API are now grayed out.
- Added Start Reply With to master import/export in Advanced Formatting.
- Alternate greetings can now be reordered.
- Added per-chat overrides for example messages and system prompts.
- Markdown: Block quotes can be rendered when "Show tags" setting is enabled.
- Text Completion: Empty JSON schema input no longer sends empty object in the request.
- Text Completion: Added an option to lock sampler selection per API type.
- Server: Invalid IP whitelist entries are now skipped and logged on startup.
- Tags: Can be sorted by most used in the Tag Manager dialog.
- Tags: Increased maximum number of tags that can be imported from a character to 50.
- UX: Multiline inputs in popups will input a linebreak instead of submitting the popup.
- UX: Show a confirmation when reloading/leaving the page while editing a message.
- More complete support for characters import from BYAF archives.
- World Info: Added a height limit to entry keys inputs.
Extensions
- Git operations with extensions now timeout after 5 minutes of inactivity.
- Regex: Preset regex are now applied before scoped regex.
- Image Captioning: Added captioning for video attachments (currently Gemini only).
- Image Generation: Added Veo (Google) and Sora 2 (OpenAI) models for video generation.
- Vector Storage: Added OpenRouter and Electron Hub as provider options.
Bug fixes
- Fixed Quick Replies not auto-executing on new group chats.
- Fixed NanoGPT and DeepSeek models not saving to presets.
- Fixed message editor closing when ending IME composition with Esc key.
- Fixed edge cases in JSON schema conversion for Gemini models.
- Fixed image caching on avatar updates in Firefox.
- Fixed Horde shared keys showing incorrect kudos value.
- Fixed error notifications for Gemini in non-streaming mode.
Community updates
- Extracted
messageEditandmessageEditCancelfrom.mes_editand.mes_edit_cancelby @DeclineThyself in #4633 - CC: Add advanced formatting null settings notice by @Cohee1207 in #4661
- Allow blockquotes with encoded tags by @Cohee1207 in #4662
- Added deleteMessage method by @bmen25124 in #4666
- feat: set sortable handle for regex by @StageDog in #4667
- feat: Apply preset regexes before scoped regexes + avoid unnecessary popping up by @StageDog in #4672
- feat: add move up/down functionality for alternate greetings by @Cohee1207 in #4676
- fix: timeout git process after 5 minutes of inactivity by @Cohee1207 in #4673
- Refactored
swipeand movedmessageEditto a separate function. by @DeclineThyself in #4610 - Refactor message edit function by @Cohee1207 in #4679
- Fixed crash in
parseOpenAIChatLogprobswhentop_logprobsis empty. by @DeclineThyself in #4680 - Add official GLM API as CC provider by @Cohee1207 in #4678
- feat: [Electron Hub] Support Vector Storage, Better searching for image engine by @snowby666 in #4540
- Update default sampler presets for Text Completion and AI Horde / Kobold Classic by @Cohee1207 in #4686
- update dreamgen presets by @DreamGenX in #4683
- Chat Completion: Streamline settings and API key handling by @Cohee1207 in #4687
- If the
world-infohas no comment, show it's keys in the placeholder. by @DeclineThyself in #4681 - Prevent propagation and editing of 'json_data' field in character data by @Cohee1207 in #4690
- fix: Enhances model display for Fal.ai image gen source by @Dakraid in #4694
- Fix koboldcpp abort generation error by @EugeoSynthesisThirtyTwo in #4693
- Fixed a bug in
sendMessageAs. by @DeclineThyself in #4706 - Don't split multiswipes unless requested by @Cohee1207 in #4703
- Refactored
mes_edit_upandmes_edit_downintomessageEditMove. by @DeclineThyself in #4704 - Character settings overrides UI by @docfail in #4707
- Add Full Support for BYAF Archives by @docfail in #4701
- Add Start Reply With to master import/export by @Cohee1207 in #4716
- Remove unnecessary check for swipe info to fix #4717 by @docfail in #4718
- Unblock textarea send during edit by @Cohee1207 in #4714
- Multiple attachments by @Cohee1207 in #4719
- Fixed bug in
syncMesToSwipe.""is falsy and a valid message. by @DeclineThyself in #4733 - Support multiple images in single API response by @Cohee1207 in #4734
- Prevent Esc from closing editor during composition by @fathom0324 in #4738
- OpenRouter: Add as vector storage provider by @Cohee1207 in #4736
- Audio media attachments by @Cohee1207 in #4741
- Refactor flattenSchema to simplify JSON schema for Google Generative β¦ by @bmen25124 in #4711
- fix: reorder regex import target popup by @StageDog in #4744
- Google: Add Veo models by @Cohee1207 in #4742
- fix #3199: firefox using cached images instead of new images. by @DeclineThyself in #4743
- TC: Allow setting empty JSON schema by @Cohee1207 in #4746
- Add captioning for video attachments by @Cohee1207 in #4749
- Add audio/video inlining for OpenRouter by @Cohee1207 in #4751
- Raise max response length to 128k for GPT-5 models by @madobeichika in #4753
- Small refactoring to enhance HTML escaping to include single quotes by @Wolfsblvt in #4755
- Fix: Prevent data loss on bulk regex move to scoped scripts by @AzureKarasuba in #4760
- Refactor: make whitelist validation a bit more robust by @Wolfsblvt in #4757
- Feat: Improve multiline input handling in popups by @Wolfsblvt in #4756
- Add max-height and scrolling to world info entry key input fields by @Wolfsblvt in #4769
- OpenAI: Add Sora 2 API by @Cohee1207 in #4748
- Vertex: Add Vertex AI-specific safety setting by @Cohee1207 in #4770
- Feature: allows sorting tags by most used by @AzureKarasuba in #4768
- Preserve media playback state when running appendMediaToMessage by @Cohee1207 in #4771
- Add Gemini 3 for Vertex AI by @equal-l2 in #4777
- feat: add siliconflow chat provider by @qychen2001 in #4764
- Add option to keep manually selected samplers on API Type switch by @leandrojofre in #4692
- Feat/Link sampler selection lock to TC API Type by @leandrojofre in #4782
- Z.AI: Add endpoint selection by @Cohee1207 in #4789
- Fixed layout thrashing when
Stream Fade-InandAuto-scroll Chatare enabled. by @DeclineThyself in https://github.com/SillyT...
1.13.5
SillyTavern 1.13.5
Backends
- Synchronized model lists for Claude, Grok, AI Studio, and Vertex AI.
- NanoGPT: Added reasoning content display.
- Electron Hub: Added prompt cost display and model grouping.
Improvements
- UI: Updated the layout of the backgrounds menu.
- UI: Hid panel lock buttons in the mobile layout.
- UI: Added a user setting to enable fade-in animation for streamed text.
- UX: Added drag-and-drop to the past chats menu and the ability to import multiple chats at once.
- UX: Added first/last-page buttons to the pagination controls.
- UX: Added the ability to change sampler settings while scrolling over focusable inputs.
- World Info: Added a named outlet position for WI entries.
- Import: Added the ability to replace or update characters via URL.
- Secrets: Allowed saving empty secrets via the secret manager and the slash command.
- Macros: Added the
{{notChar}}macro to get a list of chat participants excluding{{char}}. - Persona: The persona description textarea can be expanded.
- Persona: Changing a persona will update group chats that haven't been interacted with yet.
- Server: Added support for Authentik SSO auto-login.
STscript
- Allowed creating new world books via the
/getpersonabookand/getcharbookcommands. /genrawnow emits prompt-ready events and can be canceled by extensions.
Extensions
- Assets: Added the extension author name to the assets list.
- TTS: Added the Electron Hub provider.
- Image Captioning: Renamed the Anthropic provider to Claude. Added a models refresh button.
- Regex: Added the ability to save scripts to the current API settings preset.
Bug Fixes
- Fixed server OOM crashes related to node-persist usage.
- Fixed parsing of multiple tool calls in a single response on Google backends.
- Fixed parsing of style tags in Creator notes in Firefox.
- Fixed copying of non-Latin text from code blocks on iOS.
- Fixed incorrect pitch values in the MiniMax TTS provider.
- Fixed new group chats not respecting saved persona connections.
- Fixed the user filler message logic when continuing in instruct mode.
Community updates
- Update ru-ru locale by @Yokayo in #4522
- fix(perf): disable periodic expired item check in node-persist by @GoldenglowMeow in #4521
- Backgrounds Drawer Max Height by @Vibecoder9000 in #4515
- div id="logo block" update by @Vibecoder9000 in #4524
- Layout Update by @Vibecoder9000 in #4514
- feat: [Electron Hub] Added Text-to-Speech, Prompt cost, Sort/Group/Se⦠by @snowby666 in #4528
- Add new WI position 'outlet' to expose WI entries triggered to be placed as macros literally anywhere by @Wolfsblvt in #4523
- Add new Grok models by @equal-l2 in #4541
- Fix: Close chat before performing deletion by @Cohee1207 in #4545
- Assets: Display extension author in the list by @Cohee1207 in #4551
- Fix creator notes display field (in char panel) not updating when changed in Advanced Definitions by @Wolfsblvt in #4552
- Update BG header layout by @Vibecoder9000 in #4519
- Feat: add first and last buttons to pagination component by @andrempiva in #4560
- Bump tar-fs from 3.0.9 to 3.1.1 in /tests by @dependabot[bot] in #4561
- Streaming fade-in animation by @Cohee1207 in #4568
- Scroll to top button by @Vibecoder9000 in #4569
- Performance improvements due to using chatElement instead of $('#chat'). by @DeclineThyself in #4576
- Fix MiniMax (TTS) pitch on API calls being the wrong range by @Wolfsblvt in #4578
- feat: Add {{notChar}} macro for participant list by @Quairon-Nailo in #4579
- Allow saving empty secrets via secret manager and slash command by @Cohee1207 in #4580
- Fix listing tags already assigned to a char on tag import popup by @Wolfsblvt in #4582
- Extend Update/Replace character function to replace directly from URL + Fixes on cached thumbnail by @Wolfsblvt in #4581
- Fix duplicate CHARACTER_MESSAGE_RENDERED events during streaming by @shanmaocc in #4584
- Small change, (visually) disable "Link to Source" on characters that weren't downloaded from a source by @Wolfsblvt in #4588
- Emit prompt events in generateRaw by @Cohee1207 in #4587
- Fix make
/profileawait the for an actual successful API connection by @Wolfsblvt in #4589 - Emit event on message swipe deletion by @Cohee1207 in #4590
- Persona description editor expand by @Cohee1207 in #4591
- Fix group chat on new chat not respecting saved persona connections by @Wolfsblvt in #4594
- Fix re-enable character source (open link) when group is selected by @Wolfsblvt in #4592
- Hide self-responses option in group chat unless "natural" strategy chosen by @Wolfsblvt in #4593
- Authentik automatic login support by @dopp1e in #4600
- Small fix to not show a (wrong) error on quickly switching to group chat by @Wolfsblvt in #4601
- Allow create new world books via
/getpersonabookand/getcharbookby @Wolfsblvt in #4597 - Fix not jumping twice to group chat when creating a new group chat with deleting the old one by @Wolfsblvt in #4602
- Update GitHub workflows to use
ISSUES_BOT_TOKEN, so that they may chain-trigger other workflows. maybe. hopefully. by @Wolfsblvt in #4606 - feat: emit dryRun for GENERATE_AFTER_DATA by @StageDog in #4614
- deleteSwipe now emits the deleted message Id. by @DeclineThyself in #4609
- Reprint non-tainted group chat on switching personas by @Wolfsblvt in #4603
- Fix trapped cursor on sampler input by removing focus call on event by @Wolfsblvt in #4607
- Summarize Popout placement by @IceFog72 in #4615
- Preset Regex: event change by @StageDog in #4616
- Fix font size difference in API Connections dropdowns by @Trahloc in #4620
- Workflows: Replace ISSUES_BOT_TOKEN with GitHub App for labeling + 'against release' auto comment by @Wolfsblvt in #4621
- Workflows Switch all to use app token/app for any PR/issue labeling/commenting action by @Wolfsblvt in #4624
- Refactor: add has() and get() to MacrosParser by @Wolfsblvt in #4626
- Update contribution guidelines by @Cohee1207 in #4613
- Preset Regex: refactor regex scope detection by @StageDog in #4618
- Regex: Code clean-up by @Cohee1207 in #4628
- Add -webkit-tap-highlight-color for smoother touch experience by @RivelleDays in #4630
- Remove dead Gemini 1.5 models, and clean up by @cloak1505 in #4636
- Add required icon sizes for PWAs on Firefox for Android by @Mijyuoon in #4641
- Added "custom_prompt_post_processing" to custom-request by @bmen25124 in #4639
- feat: prevent scrolling of containers when using focused number inputs by @Cohee1207 in #4629
- Preset Regex: add preset type for script regexes by @Cohee1207 in #4642
- expose openThirdPartyExtensionMenu for Video Avatar extension by @Vibecoder9000 in #4646
- groupMemberListPopout placement by @IceFog72 in #4649
- Fix off-by-one cases in user prompt filler logic by @Cohee1207 in #4648
- Add bulk and drag&drop to chats import by @Cohee1207 in #4652
- Staging by @Cohee1207 in #4656
New Contributors
- @GoldenglowMeow made their first contribution in #4521
- @DeclineThyself made their first contribu...
1.13.4
SillyTavern 1.13.4
Backends
- Google: Added support for the gemini-2.5-flash-image (Nano Banana) model.
- DeepSeek: Sampling parameters can be passed to the reasoner model.
- NanoGPT: Enabled prompt cache setting for Claude models.
- OpenRouter: Added image output parsing for models that support it.
- Chat Completion: Added Azure OpenAI and Electron Hub as sources.
Improvements
- Server: Added validation of hostnames in requests for improved security (opt-in).
- Server: Added support for SSL certificates with a passphrase when using HTTPS.
- Chat Completion: Requests that fail with code 429 will no longer be silently retried.
- Chat Completion: Inline Image Quality control is now available for all compatible sources.
- Reasoning: Auto-parsed reasoning blocks are now automatically removed from impersonation results.
- UI: Updated the layout of the background image settings menu.
- UX: Ctrl+Enter will send a user message if the text input is not empty.
- Added Thai locale and made various improvements to existing locales.
Extensions
- Image Captioning: Added custom model input for Ollama, updated the list of Groq models, and added NanoGPT as a source.
- Regex: Added a debug mode for regex visualization and the ability to save regex order and state as presets.
- TTS: Improved handling of nested quotes when using the "Narrate quotes" option.
Bug Fixes
- Fixed request streaming for the Vertex AI backend in Express mode.
- Fixed erroneous replacement of newlines with
<br>tags inside HTML code blocks. - Fixed custom toast positions not being applied to popups.
- Fixed the depth of in-chat prompt injections when using the continue function with the Chat Completion API.
What's Changed
- feat: Advanced Regex Chain Debugger and Testing Panel by @MAX-TAB in #4418
- Update dependencies by @Cohee1207 in #4447
- fix: Slash command descriptions and argument help text are not translated by @MAX-TAB in #4434
- Update ru-ru locale by @Yokayo in #4449
- Fix JannyAI error handling in #4460
- Chat Completion: Adjust depth of 0-depth injects on continue with prefill by @Cohee1207 in #4452
- Header change by @Vibecoder9000 in #4465
- Update zh-CN translations by @Tosd0 in #4466
- Fix compiler errors in public/global.d.ts by @epyllia in #4464
- fix: Resolve streaming output for Vertex AI Express Mode by @AliceRabbit in #4474
- a11y: Setup observers for element roles by @Cohee1207 in #4469
- More modern backgrounds buttons and filename by @Vibecoder9000 in #4484
- Server: Support passphrase for SSL private key by @Cohee1207 in #4488
- Server: Add host whitelisting by @Cohee1207 in #4476
- Add Electron Hub as Chat Completions Provider by @snowby666 in #4458
- Backgrounds Border Conflicts by @Vibecoder9000 in #4491
- Add: id="PersonaManagement" to Persona Management div by @RivelleDays in #4495
- Reasoning: Support auto-parse for impersonation results by @Cohee1207 in #4489
- feat: Regex Presets by @Tosd0 in #4468
- Fix: Do not replace newlines inside of pre blocks by @Cohee1207 in #4498
- Improvement: Add Upload Button to Image Gallery by @RivelleDays in #4500
- Fix/cleanup and background interactability (keyboard navigation, focus/hover) by @Wolfsblvt in #4503
- Change Ctrl+Enter handling for non-empty text input to send, instead of regenerate by @Wolfsblvt in #4504
- Fix toast positioning inside popups to align with the "Notifications" positioning option by @Wolfsblvt in #4506
- Implement robust quote extraction for TTS narration with support for nested quotes by @Wolfsblvt in #4502
- Improvement: Enhanced UI Consistency by @RivelleDays in #4499
- feat: Add Azure OpenAI chat completions provider by @nfuller286 in #4456
- Sync OpenRouter providers list by @cloak1505 in #4509
- Add Thai Translation by @Rawi1005 in #4513
- Staging by @Cohee1207 in #4516
New Contributors
- @epyllia made their first contribution in #4464
- @snowby666 made their first contribution in #4458
- @nfuller286 made their first contribution in #4456
- @Rawi1005 made their first contribution in #4513
Full Changelog: 1.13.3...1.13.4
1.13.3
SillyTavern 1.13.3
News
Most built-in formatting templates for Text Completion (instruct and context) have been updated to support proper Story String wrapping. To use the at-depth position and get a correctly formatted prompt:
- If you are using system-provided templates, restore your context and instruct templates to their default state.
- If you are using custom templates, update them manually by moving the wrapping to the Story String sequence settings.
See the documentation for more details.
Backends
- Chat Completion: Removed the 01.AI source. Added Moonshot, Fireworks, and CometAPI sources.
- Synchronized model lists for OpenAI, Claude, Cohere, and MistralAI.
- Synchronized the providers list for OpenRouter.
Improvements
- Instruct Mode: Removed System Prompt wrapping sequences. Added Story String wrapping sequences.
- Context Template: Added
{{anchorBefore}}and{{anchorAfter}}Story String placeholders. - Advanced Formatting: Added the ability to place the Story String in-chat at depth.
- Advanced Formatting: Added OpenAI Harmony (gpt-oss) formatting templates.
- Welcome Screen: The hint about setting an assistant will not be displayed for customized assistant greetings.
- Chat Completion: Added an indication of model support for Image Inlining and Tool Calling options.
- Tokenizers: Downloadable tokenizer files now support GZIP compression.
- World Info: Added a per-entry toggle to ignore budget constraints.
- World Info: Updated the World Info editor toolbar layout and file selection dropdown.
- Tags: Added an option to prune unused tags in the Tags Management dialog.
- Tags: All tri-state tag filters now persist their state on reload.
- UI: The Alternate Greeting editor textarea can be maximized.
- UX: Auto-scrolling behavior can be deactivated and snapped back more reliably.
- Reasoning: Added a button to close all currently open reasoning blocks.
Extensions
- Extension manifests can now specify a minimal SillyTavern client version.
- Regex: Added support for named capture groups in "Replace With".
- Quick Replies: QR sets can be bound to characters (non-exportable).
- Quick Replies: Added a "Before message generation" auto-execute option.
- TTS: Added an option to split voice maps for quotes, asterisks, and other text.
- TTS: Added the MiniMax provider. Added the gpt-4o-mini-tts model for the OpenAI provider.
- Image Generation: Added a Variety Boost option for NovelAI image generation.
- Image Captioning: Always load the external models list for OpenRouter, Pollinations, and AI/ML.
STscript
- Added the
trimargument to the/genand/sysgencommands to trim the output by sentence boundary. - The
nameargument of the/gencommand will now activate group members if used in groups.
Bug fixes
- Fixed a server crash when trying to back up the settings of a deleted user.
- Fixed the pre-allocation of injections in chat history for Text Completion.
- Fixed an issue where the server would try to DNS resolve the localhost domain.
- Fixed an auto-load issue when opening recent chats from the Welcome Screen.
- Fixed the syntax of YAML placeholders in the Additional Parameters dialog.
- Fixed model reasoning extraction for the MistralAI source.
- Fixed the duplication of multi-line example message separators in Instruct Mode.
- Fixed the initialization of UI elements in the QR set duplication logic.
- Fixed an issue with Character Filters after World Info entry duplication.
- Fixed the removal of a name prefix from the prompt upon continuation in Text Completion.
- Fixed MovingUI behavior when the resized element overlaps with the top bar.
- Fixed the activation of group members on quiet generation when the last message is hidden.
- Fixed chat metadata cloning compatibility for some third-party extensions.
- Fixed highlighting for quoted run shorthand syntax when used with QR names containing a space.
Community updates
- Fix convert to persona with unusual names by @Cohee1207 in #4319
- AI Studio/Vertex AI: add seed param by @Cohee1207 in #4314
- feat: add tts provider MiniMax by @MindsMaster in #4309
- Deprecate 01.ai chat completion source by @Cohee1207 in #4327
- fixes #4324: injectedIndices becomes invalidated with a off-by-one in⦠by @alekslt in #4325
- Feat/moonshot api by @Cohee1207 in #4330
- Add command-a-vision support by @equal-l2 in #4340
- Add copy option to move WI entry by @Cohee1207 in #4335
- Support gzip compression for tokenizer downloads by @Cohee1207 in #4348
- Fix duplication of multi-line example message separators in instruct mode by @crimeragames in #4347
- Allow extensions to specify minimum ST client version by @qvink in #4350
- feature: ignore budget switch by @kallewoof in #4354
- Add gpt-4o-mini-tts model with character voice instructions #3879 by @Ni-co-la-s in #4352
- Instruct: Add Sequences as Stop Strings control by @Cohee1207 in #4355
- Text Completion: Inject Story String @ depth by @Cohee1207 in #4362
- feat(client): desktop version uses select2 to search, filter, and select by @pAnhTri in #4359
- Add multiple voice per character in TTS extension by @Ni-co-la-s in #4367
- feat: Add close all reasonings button by @andrempiva in #4375
- Fix Soulkyn import by @buzz in #4372
- Persist actionable tag states on reload by @Cohee1207 in #4368
- Add Fireworks AI Provider Support by @ershang-fireworks in #4374
- Fix overly sticky auto-scroll behavior by @Christoph-D in #4382
- Added saveMetadataDebounced to context, fixed 0 values for custom-req⦠by @bmen25124 in #4386
- bug-fix: adhere to chat template hash bound settings when a new model appears using the same hash as a bound one by @kallewoof in #4393
- Update ru-ru locale by @Yokayo in #4401
- Add support for named regex capture groups. by @zeroDtree in #4397
- Add a comment regarding hidden OpenRouter providers by @cloak1505 in #4406
- feat: Add Character Quick Reply Sets by @MAX-TAB in #4215
- Add support for maximizing alternate greeting editor by @sakhavhyand in #4413
- feat: Send Quick Reply Before Message Generation by @MAX-TAB in #4407
- Add Variety Boost option for NovelAI image generation. by @sirius422 in #4417
- Add CometAPI as a model provider in "Chat Completion" by @tensornull in #4402
- Improve tag visibility toggle logic by @dfaker in #4425
- Remove continue prompt "clean-up" function by @Cohee1207 in #4422
- Add Harmony template by @Cohee1207 in #4431
- Staging by @Cohee1207 in #4444
New Contributors
- @MindsMaster made their first contribution in #4309
- @alekslt made their first contribution in #4325
- @crimeragames made their first contribution in #4347
- @Ni-co-la-s made their first contribution in #4352
- @pAnhTri made their first contribution in #4359
- @andrempiva made their first contribution in #4375
- @ershang-fireworks made their first contribution in #4374
- @Christoph-D made their first contribution in #4382
- @zeroDtree made their first contribution in #4397
- @tensornull made their first contribution in #4402
- @dfaker made their first contribution in #4425
Full Changelog: 1.13.2...1.13.3
1.13.2
SillyTavern 1.13.2
News
- The 01.AI (lingyiwanwu) Chat Completion source is pending deprecation due to underutilization and geographical restrictions. Please reach out if you use it.
Backends
- Chat Completion: Scale Spellbook and Window AI removed from sources as they are no longer in service.
- Ollama: Removed Mirostat parameters from the UI as they are not supported.
- Perplexity, Groq, MistralAI, AI21, xAI: Synchronized model lists with their respective APIs.
- Claude: Removed retired Claude 2 models from the list.
- Text Generation WebUI: Added nsigma sampler controls.
- OpenRouter: Gemini models will now be passed the same safety settings as AI Studio/Vertex AI.
Improvements
- Personas: Added an optional Persona title field for cosmetic titles.
- Personas: Avatars can now be thumbnailed to reduce network load.
- Personas: The original aspect ratio is now preserved when "Never resize avatars" is enabled.
- Text Completion: Macros are now replaced in the Banned Strings list.
- Chat Completion: Added generation type filters to injected prompts.
- Advanced Formatting: Added templates for Kimi K2 and Mistral Small 24B models.
- World Info: Added generation type filters to WI entries.
- Import: Added the ability to import characters from Perchance AI.
- Import: Added BYAF file import support.
- UI: Redesigned the layouts of the character search bar and Creator's Notes display.
- UI: A list of character tags filters is now scrollable.
- UX: Messages with image attachments can now be swiped to regenerate.
- UX: Added the ability to remove video attachments from messages.
- Welcome Screen: "Start New Chat" will now start a temporary chat only if you are already in one.
- Clean-Up: Added a cleanup scan for unused video attachments.
- Server: Added a startup setting to use a global data path instead of the server data path.
- Server: Increased request payload size limits (200 -> 500 Mb).
- Server: Browser cache cleanup on server restart is now an optional setting.
- Server: Console access log output is now controlled by the
logging.enableAccessLogsetting. - Added character tags as data attributes for rendered chat messages.
Extensions
- Extensions can now save and load data from API setting presets.
- Extensions can now use structured generation with a JSON schema.
- Image Generation: Added support for video outputs from workflows.
- TTS: Added Pollinations as a TTS source.
- TTS: Added new models and speed control to the ElevenLabs TTS source.
- Image Captioning: Added the 'Show captions in chat' setting.
- Vectors: Added Google Vertex AI as a source.
STscript
/injectcommand: An ID will be automatically generated if not provided and will be returned as command output./genrawcommand: Added aprefillparameter.{{setvar}}/{{setglobalvar}}macros: Now allow setting empty values.
Bug fixes
- Fixed the uploading of MKV video attachments.
- Fixed image models being displayed in the TogetherAI text model list.
- Fixed being unable to search by model ID in OpenRouter for Text Completion.
- Fixed checking for updates in extensions that are not Git repositories.
- Fixed the Regex extension not loading if a script had an invalid placement array.
- Fixed WI entries failing to load into the editor if they contained corrupted data.
- Fixed thumbnails for backgrounds with names containing a single quote.
- Fixed "Click to Edit" activating on copy from code blocks and while deleting messages.
- Fixed not being able to assign additional WI connections during character creation.
- Fixed the application of message CSS styling that uses pseudo-classes in selectors.
- Fixed FAL.AI image models list loading.
- Fixed
{{getvar}}in slash commands if the macro name is not lowercase. - Fixed cutoff of hamburger and wand menus on height overflow.
- Fixed prompts with inline videos when using Prompt Post-Processing.
- Fixed non-streaming "Narrate by paragraph" to work regardless of the streaming setting.
Community updates
- Allow message swipe gens with image attachments by @Cohee1207 in #4184
- KoboldAI Instruct format preset by @henk717 in #4193
- Fixed minor avatar cropping bug in avatars.js by @02loka in #4192
- Fix attachment file extension extraction by @GregW6 in #4199
- Image Generation: Support video outputs for ComfyUI by @Cohee1207 in #4194
- Refactor saveBase64AsFile uploads by @Cohee1207 in #4200
- Removing zh-tw translations for specific extension by @qvink in #4208
- Fix default emojis expression fallback setting resetting on reload by @Wolfsblvt in #4206
- Select2 visual bug fix by @qvink in #4207
- Add backfill for missing WI entries fields by @Cohee1207 in #4203
- feat(elevenlabs): add new models and deprecate old ones by @augusteo in #4212
- Feature/Perchance AI Character Chat import by @m-petra-fn in #4211
- Implement persona thumbnails by @Cohee1207 in #4210
- Add Speed Control to ElevenLabs TTS Provider by @augusteo in #4213
- feature: customizable mappings for presets per model name / chat template by @kallewoof in #4153
- Add persona titles by @Cohee1207 in #4224
- Current Mistral Small 24B Instruct Format by @Vhallo in #4226
- Bugfix - Clicking on tag view list toggles checkbox by @m-petra-fn in #4227
- Refactor: Replace Deprecated Code by @GregW6 in #4221
- Non-streaming narrate by paragraphs setting now actually works automatically regardless of streaming-related settings. Resolves #4228. by @Erquint in #4232
- Improve sanitation of CSS pseudo-classes by @Cohee1207 in #4230
- Move itemized prompts into separate module by @Cohee1207 in #4229
- Move Kobold Classic settings into related module by @Cohee1207 in #4234
- Feature/add character tags to message div option by @m-petra-fn in #4225
- OpenRouter: match both id/text in select2 by @Cohee1207 in #4237
- Fix FAL.AI models list endpoint by @jenrzzz in #4236
- Move NovelAI settings to respective module by @Cohee1207 in #4238
- Move text completion settings to respective module by @Cohee1207 in #4239
- Move default slash commands to respective module by @Cohee1207 in #4240
- Replace ajax with fetch by @Cohee1207 in #4241
- Preset Manager: Add methods for reading/writing custom data by @Cohee1207 in #4246
- Move system messages init into separate module by @Cohee1207 in #4251
- Add vision support for Grok 4 by @equal-l2 in #4254
- /inject: auto-generate ID and fix argument description by @Cohee1207 in #4253
- Move event types + new events by @Cohee1207 in #4257
- Ooba nsigma support. by @Ph0rk0z in #4258
- Fix underscore typo for nsigma. by @Ph0rk0z in #4259
- Ability to specify multiple messages and roles in generateRaw() by @qvink in #4264
- Add Moonshot AI to OpenRouter providers by @cloak1505 in #4269
- adding prefill parameter to generateRaw() by @qvink in #4266
- apply gemini safety settings as extra_body in OpenRouter requests by @Fensterbank in #4256
- Add Moonshot AI instruct template by @cloak1505 in #4270
- Added structured output for common APIs by @bmen25124 in #4272
- Refactor generateRaw/generateQuietPrompt calls by @Cohee1207 in #4277
- CC/PM: Add generation type trigger prompt filter by @Cohee1207 in #4281
- chat templates: add Kimi K2 (Moonshot AI) chat template derivation by @kallewoof in #4283
- Characters list top panel touchup by @Cohee1207 in #4282
- Add generation type triggers to world info by @Cohee1207 in #4286
- Feat/global install by @Cohee1207 in #4289
- Remove Window AI from CC sources by @Cohee1207 in #4294
- Redesign Creator's Note block by @cohee...
1.13.1
SillyTavern 1.13.1
News
- Node.js 18 has reached its EOL, please update Node runtime to the latest LTS version to continue receiving future updates.
secrets.jsonfile format has been updated and won't be compatible with previous SillyTavern versions.
Backends
- Google Vertex AI (Full): Added support for accessing Gemini models with a service account.
- Google Vertex AI (Express): Added controls for Project ID and Region.
- Google AI Studio: Added new Gemini 2.5 Pro models. Models not in the list will be pulled from the API endpoint.
- OpenRouter: Added cache TTL control for Claude; synchronized providers list.
- MistralAI: Added new models to the list.
- Pollinations: Added sampler controls, fixed reasoning tokens display.
- xAI: Enabled backend web search capabilities.
- DeepSeek: Added tool calls for reasoner model.
- AI/ML API: Added as a Chat Completion source.
Improvements
- Secrets: Added an ability to save multiple secret values per API type.
- Welcome Page: Custom assistants will display their greeting message (if any).
- Welcome Page: Added rename and delete buttons for recent chats.
- Browser Launch (previously known as autorun): Added a config setting to choose the browser to launch.
- Added a clean-up dialog to remove loose files and images from the data directory.
- World Info: Budget cap max value increased to 64k tokens.
- Backgrounds: Implemented lazy loading for backgrounds in the selection dialog.
- Chat Completion: Added prompt post-processing types with tool calling support.
- Added an ability to attach videos to messages (only supported by Gemini models).
- Switched top drawer animations to use CSS transitions instead of JavaScript for better performance.
STscript
- Added a setting to hide autocomplete suggestions in chat input.
- Added a set of commands for managing secrets:
/secret-id,/secret-write, etc. - Added access to WI entry character filters via
/getwifield//setwifieldcommands.
Extensions
- Extension manifest can now require other extensions presence to be loaded.
- If any extensions failed to load, the reason will be displayed in the "Manage extensions" dialog.
- Connection Profiles: Added Prompt Post-Processing and Secret ID to connection profiles.
- Regex: Added bulk operations and multiple scripts export per file.
- Image Generation: Added Google Imagen and AI/ML API as image generation sources. Added NovelAI V4.5 models.
- TTS: Added Chatterbox, TTS WebUI and Google Gemini as TTS sources.
- Gallery: Added delete functionality for gallery items.
- Character Expressions: Added a switch between raw/full prompt building strategies for Main API classification.
- Vector Storage: Allow chunk overlap when forced chunking on a custom delimiter.
Bug fixes
- Fixed not being able to swipe right to generate if the first message was generated.
- Fixed image prompt modified on image swipe not saving to the message title.
- Fixed poor performance and memory leaks in the World Info editor.
- Fixed personality/scenario missing in Chat Completion prompts if the respective utility prompt is empty.
- Fixed parsing strings as numeric operands in STscript
ifcommand. - Fixed performance of "Back to parent chat" operation.
Community updates
- add ability for exts to req other exts by @RossAscends in #4023
- Regex: allow multiple definitions in a single file by @gakada in #3967
- Import character card from Soulkyn by @buzz in #4042
- Add Vertex AI Full Version support in #4046
- refresh voices upon checkReady in openai-compatible TTS by @rsxdalv in #4058
- Fix typos by @omahs in #4057
- Clean console debugs for group chats by @leandrojofre in #4060
- docs: edited the link to the forks badge by @Radovenchyk in #4059
- Recent chats: add delete and rename buttons by @Cohee1207 in #4051
- Do not replace inline HTML img with image embed by @Cohee1207 in #4063
- Added NAI Diffusion V4.5 Full and V4.5 Curated by @closuretext in #4071
- Allow swipe right to generate first message in non-pristine chats by @Cohee1207 in #4077
- Implement data clean-up dialog by @Cohee1207 in #4072
- Gemini inline video by @nbrown725 in #4078
- PPP command and connection profiles by @Cohee1207 in #4079
- add minimum requirement of 2 [A-za-z] for slashcommand autocomplete to show up by @RossAscends in #4080
- Fix #4083 JSON parse error when tool does not accept parameters by @iarna in #4084
- Feature: Allow tools to accept arrays of values as an array by @iarna in #4085
- fix: lowercase remote-user header in authelia auto-login procedure by @NicodeSS in #4086
- Bump tar-fs from 3.0.8 to 3.0.9 in /tests by @dependabot in #4088
- Bump multer from 2.0.0 to 2.0.1 by @dependabot in #4093
- Sync OpenRouter providers list by @cloak1505 in #4101
- Add gemma-3n-e4b-it by @cloak1505 in #4102
- UI performance optimizations and refactoring by @RossAscends in #4096
- Implement Google AI Studio model list dynamic fetching in #4113
- animated bg thumb toggle by @Vibecoder9000 in #4109
- Implement lazy loading for background menu by @Vibecoder9000 in #4110
- Add skip save checks to all on-init event handlers by @Cohee1207 in #4117
- Replace url.origin with trimTrailingSlash in #4118
- Refactor and fix type errors in WI and script modules by @Cohee1207 in #4123
- add dots1 templates by @LumiWasTaken in #4128
- Add PPP types allowing tool calls by @Cohee1207 in #4125
- Update outdated
readme-zh_cn.mdby @MAX-TAB in #4134 - TTS WebUI provider by @rsxdalv in #4097
- Fix Typo in Error Message by @leopardracer in #4140
- Solve the issue where selecting an unofficial Gemini model and then clicking 'Connect' causes the selection to be reset in #4139
- Secrets manager by @Cohee1207 in #4131
- Update npm dependencies by @Cohee1207 in #4142
- Added new slash command member-count by @Culpeo in #4149
- Increase
's opacity from 0.2 to 0.4 by @cloak1505 in #4144 - Support for chatterbox api by @Boof2015 in #4145
- Update ru-ru locale by @Yokayo in #4150
- Rework browser launch functionality by @Cohee1207 in #4143
- Improve and Add Traditional Chinese Translations by @RivelleDays in #4156
- feat: Added AI/ML API Provider Support by @D1m7asis in #4135
- Emotions: Use the full context for main API by @kingbri1 in #4157
- More expression fixes for main API by @kingbri1 in #4162
- Add region option for vertex express mode to access more models by @AliceRabbit in #4155
- Feature: Google Native TTS by @powercaller in #4163
- Update: Disabled VertexAI api option in the Gemini TTS settings by @powercaller in #4168
- Add Extension Hook for Stable Diffusion Prompt Processing by @coffeegrind123 in #4167
- Regex bulkedit select all toggle button add by @imesha10 in #4170
- Make back to parent chat button faster (PR for #4177) by @imesha10 in #4178
- Add support for characterFilter to getEntryField and setEntryField by @WanderingMouse in #4185
- Staging by @Cohee1207 in #4189