Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Group Responder Selector

A SillyTavern extension for group chats. It adds a button next to the message box (to the right of the Emoji Picker's button, if installed) that pops up a picker of every character in the current group. Click a character to force them to respond next, instead of waiting for the group's normal activation strategy to pick someone. The button is hidden entirely outside of group chats, and also hides while a response is currently generating.

The button on the message bar

Settings

Settings live under Extensions → Group Responder Selector in the Extensions panel.

Settings Panel

  • Hide Muted (default: off) — when enabled, group members who are currently muted/disabled are left out of the picker entirely, instead of being shown in the list.
  • Dim Avatar Images (default: on) — when enabled, every entry in the picker is shown at half opacity; turn it off for full-brightness avatars/rows.
  • Display Mode (default: Small) — controls how the picker is laid out:
    • Small — a grid of small circular avatars (matches the Persona Picker extension's style).

      Display Mode: Small

    • Large — the same grid, with avatars doubled in size.

      Display Mode: Large

    • Name — a vertical list of character names, each with a small inline avatar to the left, sized to the text.

      Display Mode: Name

Manual installation

  1. Clone this repository:

    git clone <this-repo-url> STGroupResponderSelector
    cd STGroupResponderSelector
  2. Copy it into your SillyTavern install using the included script, passing the path to your SillyTavern root (the folder that contains public/):

    ./install.sh /path/to/SillyTavern

    This copies manifest.json, index.js, style.css, and settings.html into:

    /path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector/
    

    To update after pulling changes, just re-run the same command — it overwrites the installed copy.

    Without the script: create the destination folder yourself and copy the same four files into it:

    mkdir -p /path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector
    cp manifest.json index.js style.css settings.html \
      /path/to/SillyTavern/public/scripts/extensions/third-party/STGroupResponderSelector/

Reloading SillyTavern

No server restart is required, either for the initial install or for picking up updates — SillyTavern discovers extensions live on every page load. Just reload the SillyTavern tab in your browser.

If you re-installed an update and don't see the change take effect, do a hard refresh (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows/Linux) to bypass the browser's cache of the extension's JS file.

Picker API for other extensions

Other extensions can ask the user "which group member should respond next?" without triggering a generation themselves. The API follows SillyTavern's cross-extension convention (globalThis.<ExtensionName>, the same pattern used by globalThis.quickReplyApi):

const grs = globalThis.STGroupResponderSelector;
if (grs?.pickCharacter) {
    const picked = await grs.pickCharacter();
    if (picked) {
        // picked.chid   — character id (index into SillyTavern's `characters` array)
        // picked.name   — character display name
        // ...do whatever you want with it; no generation has been fired...
    } else {
        // user dismissed the menu without picking
    }
}

The selector opens exactly as it does when the user clicks the toolbar button (same look, same display-mode setting), but clicking a member resolves the promise instead of calling Generate. Closing the menu without a pick (outside click, Esc, or empty group) resolves with null. Consumers should always feature-detect — pickCharacter only exists from version 0.2.0 onward.

License

MIT

About

A SillyTavern extension for group chats: adds a button next to the message box that pops open every character's avatar so you can force who responds next, instead of waiting on the group's activation strategy.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages