Commit Graph

117 Commits

Author SHA1 Message Date
Wolfsblvt f3521e7007 Migrate built-in extensions to use manifest-based activate hooks (#5435)
* Convert jQuery/IIFE wrappers to exported init() functions and register activate hooks in 8 extension manifests

* Convert remaining extensions to exported init() with activate hooks and await initExtensions()

- Convert jQuery/IIFE wrappers to exported init() functions in expressions, memory, quick-reply, regex, stable-diffusion, translate, tts, and vectors extensions

- Register init functions as activate hooks in extension manifests

- Properly await async initExtensions() in firstLoadInit()

* Fix eslint

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2026-04-09 23:49:55 +03:00
Cohee 357da3219b Chore: Add code formatting conventions as eslint rules (#5158)
* Add code formatting conventions as eslint rules

* Improve formatting in addQuickReply
2026-02-15 01:16:34 +02:00
DeclineThyself 8372e7bf9d "gradually replacing property access with a dot operator" (#4965)
* "gradually replacing property access with a dot operator"
https://github.com/SillyTavern/SillyTavern/pull/4963#discussion_r2663003561

(?<=\w|\])\['([a-zA-Z]\w+)'\]
My regex found 593 matches across 47 files.
Also, two typos.

* Fixed chat[0].chat_metadata type error.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664275854

* Fixed `swipedElementsDiv[0]?.getAnimations().filter((a) => a.animationName` type error.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664274593

* Fixed config.MESSAGE_SANITIZE and config.MESSAGE_ALLOW_SYSTEM_UI type errors.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664266271

* Fixed group.date_last_chat type error.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664295652

* Reverted SlashCommandParser dot property access.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664310931

* LLM fixed canUseNegativeLookbehind.result; type error.
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664314288

* Reverted chat-completions.js bodyParams and headers dot property access.

https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664317848
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664320088
https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664324438

* Reverted openai.js data dot property access.

https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664326244

* Reverted tests/frontend/MacroEnvBuilder.e2e.js env.dynamicMacros dot property access.

https://github.com/SillyTavern/SillyTavern/pull/4965#discussion_r2664330990

* Partially reverted `window` dot property access.

* Reverted result.json() and settings dot property access.

* Reverted google.js headers dot property access.

* Fixed regex: `(?<=\w|\])\['([a-zA-Z]\w*)'\]`

* Swapped window to globalThis with dot property access.

* LLM fixed canUseNegativeLookbehind type.

* Refactor property access

* Consistency

---------

Co-authored-by: user <user@exmaple.com>
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2026-01-08 23:58:21 +02:00
Cohee 929d377da8 Update group chat metadata format (#4805)
* Migrate group metadata to group chat files

* Skip migration if chat already has metadata

* Fix active group not being set on group conversion

* Improve types in createGroup

* Fix padding in hotswap group avatars

* Fix centering of empty hotswap avatar

* Added automatic backups of migrated data

* Fix 'OVERWRITE' for GC

* Fix metadata parsing order in migration

* Remove color accents from regular migration logs

* Always set gen_id in converted message

* Clone messages before conversion

* Reduce size of add/remove buttons

* Fix group chat file size calculation
2025-11-25 23:48:43 +02:00
Cohee 45931a334f QR: Add handler for group chat creation event 2025-11-21 22:34:42 +02:00
MAX-TAB 63dcda8609 feat: Send Quick Reply Before Message Generation (#4407)
* feat: Send Quick Reply Before Message Generation

* fix: Use correct event and check for dry runs on before-generation

* Replace icon

* Skip for events in groups outside of group wrapper

* Compatibility with API and slash commands

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-08-21 20:39:16 +03:00
MAX-TAB f107df8ca6 feat: Add Character Quick Reply Sets (#4215)
* charQR

* fix

* fix_2

* fix_3

* Fix refresh errors and Implement confirmation dialog logic

* FIX : The character's quick reply set is executed three times during the initial authorization and import.

* Enhance warning dialog content and layout

* refactor: Use local linking for Char QR sets instead of embedding

* Lint fixes

* Clean-up

* Emit CHAT_CHANGED on character deletion

* Remove isVisible filter, I'm sure it was by design

* Revert order of search in executeQuickReplyByName

* fix: Address review comments

* Add private tag to Char Sets

* Add QR rebind on renamed character

* Clean-up diff

* Don't save empty config lists

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-08-20 20:53:21 +03:00
Cohee 4fa7de9c93 Add typing for QR API global 2025-06-09 22:53:34 +03:00
felger e23f3a6314 feature: 'kokoro-js' supports TTS #3412 (#3656)
* feature: 'kokoro-js' supports TTS #3412

* Linting, add credits for kokoro library

* Fix voice preview

* Fix display languages on previews

* Fix settings restoration. Debounce model init on settings change

* Fix engine sorting

* Move TTS processing to a web worker. Remove unused gain setting

* Speaking rate fix

* Update status when recreating a worker

* Pass voices list from TTS engine

* Call dispose function on provider change

* Extend worker init timeout to 10 minutes

---------

Co-authored-by: ryan <1014670860@qq.com>
Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2025-03-10 22:54:54 +02:00
Cohee 06d300ad36 Quick Replies: Add auto-execute on new chat 2024-08-14 00:08:16 +03:00
LenAnderson 3327be5468 Merge branch 'staging' into parser-followup-2 2024-07-12 08:33:28 -04:00
Cohee b80ed958ae Run summarize after QR execution 2024-07-11 22:26:49 +03:00
LenAnderson 75317f3eb4 better stepping into other scripts, with source indicator 2024-07-08 18:07:37 -04:00
Cohee c55ad419dd Clean-up console logs 2024-07-06 15:29:47 +03:00
Cohee c8b9b62d8a Update built-in extensions to use fixed order in extensions menu 2024-06-24 22:15:08 +03:00
Len 1d75b98393 STscript Parser Rewrite (#1965)
* set isForced to true on input

* make floating auto-complete follow horizontal scrolling

* add callable closure vars

* changes to /let and /var for callable closures

* fix error message

* fix scope for closure arguments

* if should return the pipe result from closures

* use /run to call closures and no arguments on immediate closures

* throw exception from QRs window-function if no match

* when to show autocomplete vs info only

* autocomplete positioning

* autocomplete styling

* add theming to autocomplete (theme, dark, light)

* improve autocomplete show/hide logic and editor selection

* use blur tint color instead of chat tint color and use blur setting

* cleanup and docs

* use scope macros for QR args

* add enter to select autocomplete

* fix no executor found

* cleanup and comment

* fix alias list in help string

* fallback to empty string piped value if null or undefined

* fix typo

* blur textarea on ctrl+enter execute (and refocus after)

* stop executeSlashCommand if parser throws

* move /let and /var callbacks into functions

* switch textarea to monospace when value starts with slash

* add double pipe a pipe breaker

* fix /? slash

* remove some logging

* add "/:name" as shorthand for "/run name" after all

* move shit around

* fix error message

* use testRunShorthandEnd

* use parseQuotedValue and parseValue to determine name for "/:"

QR labels and set names can include spaces

* add some adjustments to make autocomplete work properly

some hint in there about "/:" would still be nice

* add autocomplete style  selector

* only strip quotes from subcommand if they are at both ends

* fix JSDoc

* escaping

* allow open quotes on dry run

* throwing shit at the wall for /: autocomplete

* escapes only for symbols

* clean up autocomplete

* improve performance

* fix scope macros

* remove unescaping of pipes

* fix macros in scope copy

* fix "/? slash"

* don't run parser for getNameAt if text has not changed

* fix options filter

* re-enable blur listener

* restore selection on non-replace select

* fix for escaping first character of value

* add support for {{pipe}} and {{var::}} closures

* add index support to var macro

* add scoped var macro to macro help

* more escape fixes

* reduce autocomplete render debounce

* cleanup

* restore old escape handling and parser flag for strict escaping

* fix "no match" autocomplete message

* add dummy commands for comments and parser flag

* fix type annotations

* somewhat safer macro replacements

* fix autocomplete select on blank / "no match"

* fix cutting off handled part in substitution

* add parser flag REPLACE_GETVAR

Replaces all {{getvar::}} and {{getglobalvar::}} macros with {{var::}}.
Inserts a series of command executors before the command with the macros that:
- save {{pipe}} to a var
- call /getvar or /getglobalvar to get the variable used in the macro
- call /let to save the retrieved variable
- return the saved {{pipe}} value

This helps to avoid double-substitutions when the var values contain text that could be interpreted as macros.

* remove old parser

* fix send on enter when no match

* deal with pipes in quoted values (loose escaping)

* add default parser flags to user settings

* allow quoted values in unnamed argument

* set parser flag without explicit state to "on"

* add click hint on parser error toast

* dirty more detailed cmd defs

* remove name from unnamed arg

* move autocomplete into class and floating with details

* replace jQuery's trigger('input') on #send_textarea with native events because jQuery does not dispatch the native event

* fix ctrl+space

* fix arrow navigation

* add comments

* fix pointer block

* add static fromProps

* fix up dummy commands

* migrate all commands to addCommandObject

* remove commented comment command

* fix alias in details

* add range as argument type

* switch to addCommandObject

* switch to addCommandObject

* fix height

* fix floating details position on left

* re-enable blur event

* use auto width for full details on floating autocomplete

* auto-size floating full details

* fix typo

* re-enable blur listener

* don't prevent enter when selected item is fully typed out

* add autocomplete details tooltips

* add language to slash command examples

* move makeItem into option and command and fix click select

* use autocomplete parts in /? slash

* fix alias formatting

* add language to slash command examples

* fix details position on initial input history

* small screen styles

* replace registerSlashCommand with detailed declarations

* put name on first line

* add missing returns

* fix missing comma

* fix alias display in autocomplete list

* remove args from help string

* move parser settings to its own section

* jsdoc

* hljs stscript lang

* add hljs to autocomplete help examples

* add missing import

* apply autocomplete colors to stscript codeblocks (hljs)

* add fromProps

* cache autocomplete elements

* towards generic autocomplete

* remove unused imports

* fix blanks

* add return types

* re-enable blur

* fix blank check

* Caption messages by id

* add aborting command execution

* fix return type

* fix chat input font reset

* add slash command progress indicator

* add missing return

* mark registerSlashCommand deprecated

* why??

* separate abort logic for commands

* remove parsing of quoted values from unnamed arg

* add adjustable autocomplete width

* revert stop button pulse

* add progress and pause/abort to QR editor

* add resize event on autocomplete width change

* add key= argument to all get vars

* refactoring

* introduce NamedArgumentAsignment

* add TODOs

* refactoring

* record start and end of named arg assignment

* refactoring

* prevent duplicate calls to show

* refactoring

* remove macro ac

* add secondary autocomplete and enum descriptions

* add syntax highlighting to QR editor

* add enum descriptions to /while

* add /let key=... to scope variable names

* add unnamed argument assignment class and unnamed argument splitting

* fix QR editor style

* remove dash before autocomplete help text

* add autocomplete for unnamed enums

* fix remaining dom after holding backslash

* fix for unnamed enums

* fix autocomplete for /parser-flag

* add parser-flag enum help

* fix type annotations

* fix autocomplete result for /:

* add colored autocomplete type icons

* collapse second line autocomplete help if empty

* mark optional named args in autocomplete

* fix when what

* remove duplicate debug buttons

* dispatch input on autocomplete select

* prevent grow from editor syntax layer

* add auto-adjust qr editor caret color

* remove text-shadow from autocomplete

* join value strings in /let and /var

* add /abort syntax highlight

* fix attempting secondary result when there is none

* rename settings headers and split autocomplete / stscript

* add parser flag tooltips

* add tooltips to chat width stops

* fix typo

* return clone of help item

* fix enum string

* don't make optional notice for autocomplete arguments smaller

* avoid scrollbar in chat input

* add rudimentary macro autocomplete

* strip macro from helptext

* finally remove closure delimiters around root

* cleanup

* fix index stuff for removed closure delimiters

* fix type hint

* add child commands to progress indicator

* include sub-separator in macro autocomplete

* remove all mentions of interruptsGeneration and purge

* remove unused imports

* fix syntax highlight with newline at end of input

* cleanup select pointer events

* coalesce onProgress call

* add regex to STscript syntax highlighting

* fix closure end

* fix autocomplete type icon alignment

* adjustments for small screens

* fix removing wrong element

* add missing "at=" arg to /sys, /comment, /sendas

* add font scale setting for autocomplete

* add target=_blank for parser flag links

* fix for searching enums

* remove REGEXP_MODE from hljs
just causes trouble

* fix autocomplete in closures

* fix typo

* fix type hint

* Get rid of scroll bar on load

* Add type hint for /send name argument. Fix 'at' types

* Add 'negative' arg hint to /sd command

* reenable blur event

* Allow /summarize to process any text

* Compact layout of script toggles

* Expand CSS by default

* fix double ranger indicator and adjust to narrow container

* make custom css input fill available vertical space

* reduce scroll lag

* use default cursor on scrollbar

* Clean-up module loading in index.html

* fix tab indent with hljs

---------

Co-authored-by: Cohee <18619528+Cohee1207@users.noreply.github.com>
2024-05-12 22:15:05 +03:00
Cohee 5a5463bd5d #2095 Suppress auto-execution on streamed swiped generations. 2024-04-22 16:02:50 +03:00
Cohee acb623c6d8 Adjust automation id layout 2024-04-05 17:27:08 +03:00
Cohee 9e5505a7d4 Autocomplete for WI automation IDs 2024-02-25 03:54:40 +02:00
Cohee 3441667336 #1853 Add WI/Script link by entry automation id 2024-02-24 17:22:51 +02:00
LenAnderson 9ce2771dad make finalizeInit blocking just to be sure 2024-01-18 20:47:46 +00:00
LenAnderson 65d9c944d8 await init and wait for APP_READY 2024-01-18 20:43:31 +00:00
Cohee 4f55824d7f QR auto-execute on group member draft 2024-01-18 18:08:38 +02:00
LenAnderson 6fe17a1bed queue all auto-executes until APP_READY 2024-01-17 20:32:25 +00:00
LenAnderson 7af43023b1 init quick replies immediately 2024-01-16 21:04:25 +00:00
Cohee 25a695c783 Await QR auto-execution 2024-01-15 19:30:14 +02:00
LenAnderson 7049ec0e12 add empty string fallbacks for old QRs 2024-01-05 16:45:36 +00:00
LenAnderson 473326b3fb remove unused import 2024-01-01 22:40:12 +00:00
LenAnderson 95d5cf509d fix auto exec on chat changed 2024-01-01 22:34:57 +00:00
LenAnderson 65131ee095 fix settings migration 2024-01-01 18:12:28 +00:00
LenAnderson 30757dc92e fix for loading old QRs 2024-01-01 17:14:44 +00:00
LenAnderson 03b80900d6 add optional named arguments to /run command 2023-12-27 12:28:15 +00:00
LenAnderson 89e94edc57 add option to prevent recursive auto-execute 2023-12-26 12:06:23 +00:00
LenAnderson ef33c6dc61 don't stop auto-execute on /abort 2023-12-26 11:37:23 +00:00
LenAnderson cbceb7d1e8 add old settings migration 2023-12-22 13:45:37 +00:00
LenAnderson f90e60783c remove debugger 2023-12-22 13:45:37 +00:00
LenAnderson 4fc456dffa delete QR set command and API 2023-12-22 13:45:37 +00:00
LenAnderson e3c2d6771c fix slash command hints 2023-12-22 13:45:37 +00:00
LenAnderson 9e7bc0b8ab update todos 2023-12-22 13:45:37 +00:00
LenAnderson 9f13ab1fe9 rename exported quick reply api var 2023-12-22 13:45:37 +00:00
LenAnderson a0918a3f5c add QR API 2023-12-22 13:45:37 +00:00
LenAnderson 5125eaf1dc implement slash commands 2023-12-22 13:45:37 +00:00
LenAnderson 8959c0d380 add QR popout 2023-12-22 13:45:37 +00:00
LenAnderson 65e16affb7 add context menu 2023-12-22 13:45:37 +00:00
LenAnderson c71a5bb82f handle overwriting QR set 2023-12-22 13:45:37 +00:00
LenAnderson 3a9b163aca add delete hack :( 2023-12-22 13:45:37 +00:00
LenAnderson ac09fa6019 handle deleting 2023-12-22 13:45:37 +00:00
LenAnderson 2648b3c801 restructuring 2023-12-22 13:45:19 +00:00
LenAnderson 34decf1c05 add creating of new QR sets 2023-12-20 14:04:28 +00:00
LenAnderson 69d6b9379a implement QR basics 2023-12-20 13:40:44 +00:00