diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 58f8ae2eb..53be9963f 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -69,16 +69,16 @@ body:
required: false
- type: checkboxes
- id: idiot-check
+ id: user-check
attributes:
label: Please tick the boxes
- description: Before submitting, please ensure that
+ description: Before submitting, please ensure that you have completed the following checklist
options:
- - label: You have explained the issue clearly, and included all relevant info
+ - label: I have explained the issue clearly, and I included all relevant info
required: true
- - label: You've checked that this [issue hasn't already been raised](https://github.com/SillyTavern/SillyTavern/issues?q=is%3Aissue)
+ - label: I have checked that this [issue hasn't already been raised](https://github.com/SillyTavern/SillyTavern/issues?q=is%3Aissue)
required: true
- - label: You've checked the [docs](https://docs.sillytavern.app/) ![important](https://img.shields.io/badge/Important!-F6094E)
+ - label: I have checked the [docs](https://docs.sillytavern.app/) ![important](https://img.shields.io/badge/Important!-F6094E)
required: true
- type: markdown
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
index 4180f93da..bbb97465e 100644
--- a/.github/ISSUE_TEMPLATE/feature-request.yml
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -15,7 +15,7 @@ body:
- 'No'
- 'Yes'
validations:
- required: false
+ required: true
# Field 2 - Is it bug-related
- type: textarea
@@ -67,16 +67,16 @@ body:
validations:
required: true
- # Field 7 - Can the user implement
+ # Field 7 - Can the user user test in staging
- type: dropdown
- id: canImplement
+ id: canTestStaging
attributes:
- label: Is this something you would be keen to implement?
- description: Are you raising this ticket in order to get an issue number for your PR?
+ label: Are you willing to test this on staging/unstable branch if this is implemented?
+ description: Otherwise you'll need to wait until the next stable release after the feature is developed.
options:
- 'No'
- 'Maybe'
- - 'Yes!'
+ - 'Yes'
validations:
required: false
diff --git a/.github/readme.md b/.github/readme.md
index 4b6892650..2504eec35 100644
--- a/.github/readme.md
+++ b/.github/readme.md
@@ -1,6 +1,8 @@
+
+
English | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md)
-![SillyTavern-Banner](https://github.com/SillyTavern/SillyTavern/assets/18619528/c2be4c3f-aada-4f64-87a3-ae35a68b61a4)
+![][cover]
Mobile-friendly layout, Multi-API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), VN-like Waifu Mode, Stable Diffusion, TTS, WorldInfo (lorebooks), customizable UI, auto-translate, and more prompt options than you'd ever want or need + ability to install third-party extensions.
@@ -22,6 +24,11 @@ SillyTavern is a user interface you can install on your computer (and Android ph
SillyTavern is a fork of TavernAI 1.2.8 which is under more active development and has added many major features. At this point, they can be thought of as completely independent programs.
+## Screenshots
+
+
+
+
### Branches
SillyTavern is being developed using a two-branch system to ensure a smooth experience for all users.
@@ -31,36 +38,25 @@ SillyTavern is being developed using a two-branch system to ensure a smooth expe
If you're not familiar with using the git CLI or don't understand what a branch is, don't worry! The release branch is always the preferable option for you.
-### What do I need other than Tavern?
+### What do I need other than SillyTavern?
-On its own Tavern is useless, as it's just a user interface. You have to have access to an AI system backend that can act as the roleplay character. There are various supported backends: OpenAPI API (GPT), KoboldAI (either running locally or on Google Colab), and more. You can read more about this in [the FAQ](https://docs.sillytavern.app/usage/faq/).
+On its own SillyTavern is useless, as it's just a user interface. You have to have access to an AI system backend that can act as the roleplay character. There are various supported backends: OpenAPI API (GPT), KoboldAI (either running locally or on Google Colab), and more. You can read more about this in [the FAQ](https://docs.sillytavern.app/usage/faq/).
-### Do I need a powerful PC to run Tavern?
+### Do I need a powerful PC to run SillyTavern?
-Since Tavern is only a user interface, it has tiny hardware requirements, it will run on anything. It's the AI system backend that needs to be powerful.
-
-## Mobile support
-
-> **Note**
-
-> **This fork can be run natively on Android phones using Termux. Please refer to this guide by ArroganceComplex#2659:**
-
-
+Since SillyTavern is only a user interface, it has tiny hardware requirements, it will run on anything. It's the AI system backend that needs to be powerful.
## Questions or suggestions?
### We now have a community Discord server
-Get support, share favorite characters and prompts:
+| [![][discord-shield-badge]][discord-link] | [Join our Discord community!](https://discord.gg/sillytavern) Get support, share favorite characters and prompts. |
+| :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |
-### [Join](https://discord.gg/sillytavern)
-
-***
-
-Get in touch with the developers directly:
+Or get in touch with the developers directly:
* Discord: cohee or rossascends
-* Reddit: /u/RossAscends or /u/sillylossy
+* Reddit: [/u/RossAscends](https://www.reddit.com/user/RossAscends/) or [/u/sillylossy](https://www.reddit.com/user/sillylossy/)
* [Post a GitHub issue](https://github.com/SillyTavern/SillyTavern/issues)
## This version includes
@@ -124,61 +120,88 @@ A full list of included extensions and tutorials on how to use them can be found
* Customizable page colors for 'main text', 'quoted text', and 'italics text'.
* Customizable UI background color and blur amount
-## Installation
+# ⌛ Installation
-*NOTE: This software is intended for local install purposes, and has not been thoroughly tested on a colab or other cloud notebook service.*
+> \[!WARNING]
+> * DO NOT INSTALL INTO ANY WINDOWS CONTROLLED FOLDER (Program Files, System32, etc).
+> * DO NOT RUN START.BAT WITH ADMIN PERMISSIONS
+> * INSTALLATION ON WINDOWS 7 IS IMPOSSIBLE AS IT CAN NOT RUN NODEJS 18.16
-> **Warning**
-
-> DO NOT INSTALL INTO ANY WINDOWS CONTROLLED FOLDER (Program Files, System32, etc).
-
-> DO NOT RUN START.BAT WITH ADMIN PERMISSIONS
-
-### Windows
-
-Installing via Git (recommended for easy updating)
-
-An easy-to-follow guide with pretty pictures:
-
+## 🪟 Windows
+## Installing via Git
1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended)
- 2. Install [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32)
+ 2. Install [Git for Windows](https://gitforwindows.org/)
3. Open Windows Explorer (`Win+E`)
4. Browse to or Create a folder that is not controlled or monitored by Windows. (ex: C:\MySpecialFolder\)
5. Open a Command Prompt inside that folder by clicking in the 'Address Bar' at the top, typing `cmd`, and pressing Enter.
6. Once the black box (Command Prompt) pops up, type ONE of the following into it and press Enter:
-* for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
-* for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
+- for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
+- for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
7. Once everything is cloned, double-click `Start.bat` to make NodeJS install its requirements.
8. The server will then start, and SillyTavern will pop up in your browser.
-Installing via ZIP download (discouraged)
+## Installing via SillyTavern Launcher
+ 1. Install [Git for Windows](https://gitforwindows.org/)
+ 2. Open Windows Explorer (`Win+E`) and make or choose a folder where you wanna install the launcher to
+ 3. Open a Command Prompt inside that folder by clicking in the 'Address Bar' at the top, typing `cmd`, and pressing Enter.
+ 4. When you see a black box, insert the following command: `git clone https://github.com/SillyTavern/SillyTavern-Launcher.git`
+ 5. Double-click on `installer.bat` and choose what you wanna install
+ 6. After installation double-click on `launcher.bat`
+## Installing via GitHub Desktop
+(This allows git usage **only** in GitHub Desktop, if you want to use `git` on the command line too, you also need to install [Git for Windows](https://gitforwindows.org/))
1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended)
- 2. Download the zip from this GitHub repo. (Get the `Source code (zip)` from [Releases](https://github.com/SillyTavern/SillyTavern/releases/latest))
- 3. Unzip it into a folder of your choice
- 4. Run `Start.bat` by double-clicking or in a command line.
- 5. Once the server has prepared everything for you, it will open a tab in your browser.
+ 2. Install [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32)
+ 3. After installing GitHub Desktop, click on `Clone a repository from the internet....` (Note: You **do NOT need** to create a GitHub account for this step)
+ 4. On the menu, click the URL tab, enter this URL `https://github.com/SillyTavern/SillyTavern`, and click Clone. You can change the Local path to change where SillyTavern is going to be downloaded.
+ 6. To open SillyTavern, use Windows Explorer to browse into the folder where you cloned the repository. By default, the repository will be cloned here: `C:\Users\[Your Windows Username]\Documents\GitHub\SillyTavern`
+ 7. Double-click on the `start.bat` file. (Note: the `.bat` part of the file name might be hidden by your OS, in that case, it will look like a file called "`Start`". This is what you double-click to run SillyTavern)
+ 8. After double-clicking, a large black command console window should open and SillyTavern will begin to install what it needs to operate.
+ 9. After the installation process, if everything is working, the command console window should look like this and a SillyTavern tab should be open in your browser:
+ 10. Connect to any of the [supported APIs](https://docs.sillytavern.app/usage/api-connections/) and start chatting!
-### Linux
+## 🐧 Linux & 🍎 MacOS
-#### Unofficial Debian/Ubuntu PKGBUILD
+For MacOS / Linux all of these will be done in a Terminal.
-> **This installation method is unofficial and not supported by the project. Report any issues to the PKGBUILD maintainer.**
-> The method is intended for Debian-based distributions (Ubuntu, Mint, etc).
+1. Install git and nodeJS (the method for doing this will vary depending on your OS)
+2. Clone the repo
-1. Install [makedeb](https://www.makedeb.org/).
-2. Ensure you have Node.js v18 or higher installed by running `node -v`. If you need to upgrade, you can install a [node.js repo](https://mpr.makedeb.org/packages/nodejs-repo) (you'll might need to edit the version inside the PKGBUILD). As an alternative, install and configure [nvm](https://mpr.makedeb.org/packages/nvm) to manage multiple node.js installations. Finally, you can [install node.js manually](https://nodejs.org/en/download), but you will need to update the PATH variable of your environment.
-3. Now build the [sillytavern package](https://mpr.makedeb.org/packages/sillytavern). The build needs to run with the correct node.js version.
+- for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release`
+- for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
-#### Manual
+3. `cd SillyTavern` to navigate into the install folder.
+4. Run the `start.sh` script with one of these commands:
+
+- `./start.sh`
+- `bash start.sh`
+
+## Installing via SillyTavern Launcher
+
+### For Linux users
+1. Open your favorite terminal and install git
+2. Download Sillytavern Launcher with: `git clone https://github.com/SillyTavern/SillyTavern-Launcher.git`
+3. Navigate to the SillyTavern-Launcher with: `cd SillyTavern-Launcher`
+4. Start the install launcher with: `chmod +x install.sh && ./install.sh` and choose what you wanna install
+5. After installation start the launcher with: `chmod +x launcher.sh && ./launcher.sh`
+
+### For Mac users
+1. Open a terminal and install brew with: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
+2. Then install git with: `brew install git`
+3. Download Sillytavern Launcher with: `git clone https://github.com/SillyTavern/SillyTavern-Launcher.git`
+4. Navigate to the SillyTavern-Launcher with: `cd SillyTavern-Launcher`
+5. Start the install launcher with: `chmod +x install.sh && ./install.sh` and choose what you wanna install
+6. After installation start the launcher with: `chmod +x launcher.sh && ./launcher.sh`
+
+## 📱 Mobile - Installing via termux
+
+> \[!NOTE]
+> **SillyTavern can be run natively on Android phones using Termux. Please refer to this guide by ArroganceComplex#2659:**
+> *
- 1. Ensure you have Node.js v18 or higher (the latest [LTS version](https://nodejs.org/en/download/) is recommended) installed by running `node -v`.
-Alternatively, use the [Node Version Manager](https://github.com/nvm-sh/nvm#installing-and-updating) script to quickly and easily manage your Node installations.
- 2. Run the `start.sh` script.
- 3. Enjoy.
## API keys management
@@ -222,7 +245,7 @@ or
CIDR masks are also accepted (eg. 10.0.0.0/24).
* Save the `whitelist.txt` file.
-* Restart your TAI server.
+* Restart your ST server.
Now devices which have the IP specified in the file will be able to connect.
@@ -293,10 +316,7 @@ You can find them archived here:
-## Screenshots
-
-
## License and credits
@@ -327,3 +347,10 @@ GNU Affero General Public License for more details.**
* Korean translation by @doloroushyeonse
* k_euler_a support for Horde by
* Chinese translation by [@XXpE3](https://github.com/XXpE3), 中文 ISSUES 可以联系 @XXpE3
+
+
+[back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square
+[cover]: https://github.com/SillyTavern/SillyTavern/assets/18619528/c2be4c3f-aada-4f64-87a3-ae35a68b61a4
+[discord-link]: https://discord.gg/sillytavern
+[discord-shield]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square
+[discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml
index 06e8eac9e..588fcd80c 100644
--- a/.github/workflows/docker-publish.yml
+++ b/.github/workflows/docker-publish.yml
@@ -1,45 +1,78 @@
# This workflow will publish a docker image for every full release to the GitHub package repository
-name: Create Docker Image on Release
+name: Create Docker Image (Release and Staging)
on:
release:
# Allow pre-releases
types: [published]
+ schedule:
+ # Build the staging image everyday at 00:00 UTC
+ - cron: "0 0 * * *"
env:
# This should allow creation of docker images even in forked repositories
- # Image name may not contain uppercase characters, so we can not use the repository name
- # Creates a string like: ghcr.io/SillyTavern/sillytavern
- image_name: ghcr.io/sillytavern/sillytavern
+ IMAGE_NAME: ${{ github.repository }}
+ REGISTRY: ghcr.io
jobs:
-
build:
-
runs-on: ubuntu-latest
steps:
- - name: Checkout
+ # Using the following workaround because currently GitHub Actions
+ # does not support logical AND/OR operations on triggers
+ # It's currently not possible to have `branches` under the `schedule` trigger
+ - name: Checkout the release branch
+ if: ${{ github.event_name == 'release' }}
uses: actions/checkout@v3
+ with:
+ ref: "release"
- # Build docker image using dockerfile and tag it with branch name
- # Assumes branch name is the version number
- - name: Build the Docker image
- run: |
- docker build . --file Dockerfile --tag $image_name:${{ github.ref_name }}
+ - name: Checkout the staging branch
+ if: ${{ github.event_name == 'schedule' }}
+ uses: actions/checkout@v3
+ with:
+ ref: "staging"
+
+ # Setting up QEMU for multi-arch image build
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Extract metadata (tags, labels) for the image
+ uses: docker/metadata-action@v5.5.1
+ id: metadata
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+ tags: ${{ github.ref_name }}
# Login into package repository as the person who created the release
- - name: Login to GitHub Container Registry
- uses: docker/login-action@v1
+ - name: Log in to the Container registry
+ uses: docker/login-action@v3
with:
- registry: ghcr.io
+ registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- # Assumes release is the latest and marks image as such
- - name: Docker Tag and Push
+ # Build docker image using dockerfile for amd64 and arm64
+ # Tag it with branch name
+ # Assumes branch name is the version number
+ - name: Build and push
+ uses: docker/build-push-action@v5.3.0
+ with:
+ context: .
+ platforms: linux/amd64,linux/arm64
+ file: Dockerfile
+ push: true
+ tags: ${{ steps.metadata.outputs.tags }}
+ labels: ${{ steps.metadata.outputs.labels }}
+
+ # If the workflow is triggered by a release, marks and push the image as such
+ - name: Docker tag latest and push
+ if: ${{ github.event_name == 'release' }}
run: |
- docker tag $image_name:${{ github.ref_name }} $image_name:latest
- docker push $image_name:${{ github.ref_name }}
- docker push $image_name:latest
+ docker tag $IMAGE_NAME:${{ github.ref_name }} $IMAGE_NAME:latest
+ docker push $IMAGE_NAME:latest
diff --git a/.gitignore b/.gitignore
index 72a123efd..64b33ddb2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,3 +45,4 @@ access.log
/cache/
public/css/user.css
/plugins/
+/data
diff --git a/default/content/presets/instruct/Adventure.json b/default/content/presets/instruct/Adventure.json
index 827c6d5c9..a4093dff7 100644
--- a/default/content/presets/instruct/Adventure.json
+++ b/default/content/presets/instruct/Adventure.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Adventure"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Alpaca-Roleplay.json b/default/content/presets/instruct/Alpaca-Roleplay.json
index 5a5054340..b5aec1c92 100644
--- a/default/content/presets/instruct/Alpaca-Roleplay.json
+++ b/default/content/presets/instruct/Alpaca-Roleplay.json
@@ -19,5 +19,6 @@
"system_suffix": "\n\n",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Alpaca-Roleplay"
}
diff --git a/default/content/presets/instruct/Alpaca-Single-Turn.json b/default/content/presets/instruct/Alpaca-Single-Turn.json
index 6a6f052d2..9baca108c 100644
--- a/default/content/presets/instruct/Alpaca-Single-Turn.json
+++ b/default/content/presets/instruct/Alpaca-Single-Turn.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Alpaca-Single-Turn"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Alpaca.json b/default/content/presets/instruct/Alpaca.json
index 96fd2cc83..28b2065fb 100644
--- a/default/content/presets/instruct/Alpaca.json
+++ b/default/content/presets/instruct/Alpaca.json
@@ -19,5 +19,6 @@
"system_suffix": "\n\n",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Alpaca"
}
diff --git a/default/content/presets/instruct/ChatML.json b/default/content/presets/instruct/ChatML.json
index 348ae2458..513a72820 100644
--- a/default/content/presets/instruct/ChatML.json
+++ b/default/content/presets/instruct/ChatML.json
@@ -19,5 +19,6 @@
"system_suffix": "<|im_end|>\n",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "ChatML"
}
diff --git a/default/content/presets/instruct/DreamGen Role-Play V1.json b/default/content/presets/instruct/DreamGen Role-Play V1.json
index 07f0301fc..002878b4d 100644
--- a/default/content/presets/instruct/DreamGen Role-Play V1.json
+++ b/default/content/presets/instruct/DreamGen Role-Play V1.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "DreamGen Role-Play V1"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Koala.json b/default/content/presets/instruct/Koala.json
index 980482c1a..f5db8ff48 100644
--- a/default/content/presets/instruct/Koala.json
+++ b/default/content/presets/instruct/Koala.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Koala"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Libra-32B.json b/default/content/presets/instruct/Libra-32B.json
index 6014546f6..c665eb364 100644
--- a/default/content/presets/instruct/Libra-32B.json
+++ b/default/content/presets/instruct/Libra-32B.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Libra-32B"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Lightning 1.1.json b/default/content/presets/instruct/Lightning 1.1.json
index bf79e1358..9f9bd7ccf 100644
--- a/default/content/presets/instruct/Lightning 1.1.json
+++ b/default/content/presets/instruct/Lightning 1.1.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Lightning 1.1"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Llama 2 Chat.json b/default/content/presets/instruct/Llama 2 Chat.json
index aeb4e13fd..dc507b777 100644
--- a/default/content/presets/instruct/Llama 2 Chat.json
+++ b/default/content/presets/instruct/Llama 2 Chat.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Llama 2 Chat"
}
diff --git a/default/content/presets/instruct/Metharme.json b/default/content/presets/instruct/Metharme.json
index 1c8474cdf..195fe5260 100644
--- a/default/content/presets/instruct/Metharme.json
+++ b/default/content/presets/instruct/Metharme.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Metharme"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Mistral.json b/default/content/presets/instruct/Mistral.json
index 4f35139fa..bd3a9ff3c 100644
--- a/default/content/presets/instruct/Mistral.json
+++ b/default/content/presets/instruct/Mistral.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Mistral"
}
diff --git a/default/content/presets/instruct/OpenOrca-OpenChat.json b/default/content/presets/instruct/OpenOrca-OpenChat.json
index 924ea94f7..04d526d4d 100644
--- a/default/content/presets/instruct/OpenOrca-OpenChat.json
+++ b/default/content/presets/instruct/OpenOrca-OpenChat.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "OpenOrca-OpenChat"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Pygmalion.json b/default/content/presets/instruct/Pygmalion.json
index 6278c0d23..cb5b60d8a 100644
--- a/default/content/presets/instruct/Pygmalion.json
+++ b/default/content/presets/instruct/Pygmalion.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Pygmalion"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Story.json b/default/content/presets/instruct/Story.json
index 1e42d3281..5c6b00cf0 100644
--- a/default/content/presets/instruct/Story.json
+++ b/default/content/presets/instruct/Story.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Story"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Synthia.json b/default/content/presets/instruct/Synthia.json
index 24ec4849e..21fa535c0 100644
--- a/default/content/presets/instruct/Synthia.json
+++ b/default/content/presets/instruct/Synthia.json
@@ -19,5 +19,6 @@
"system_suffix": "\n",
"user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "Synthia"
}
diff --git a/default/content/presets/instruct/Vicuna 1.0.json b/default/content/presets/instruct/Vicuna 1.0.json
index fbc8a2bf5..d96bf4cb2 100644
--- a/default/content/presets/instruct/Vicuna 1.0.json
+++ b/default/content/presets/instruct/Vicuna 1.0.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Vicuna 1.0"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/Vicuna 1.1.json b/default/content/presets/instruct/Vicuna 1.1.json
index a31698d03..a42e4fbfc 100644
--- a/default/content/presets/instruct/Vicuna 1.1.json
+++ b/default/content/presets/instruct/Vicuna 1.1.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "Vicuna 1.1"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/WizardLM-13B.json b/default/content/presets/instruct/WizardLM-13B.json
index 21e7bd555..b15fea56f 100644
--- a/default/content/presets/instruct/WizardLM-13B.json
+++ b/default/content/presets/instruct/WizardLM-13B.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": true,
+ "last_system_sequence": "",
"name": "WizardLM-13B"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/WizardLM.json b/default/content/presets/instruct/WizardLM.json
index 198f6a062..18e808da4 100644
--- a/default/content/presets/instruct/WizardLM.json
+++ b/default/content/presets/instruct/WizardLM.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "WizardLM"
-}
\ No newline at end of file
+}
diff --git a/default/content/presets/instruct/simple-proxy-for-tavern.json b/default/content/presets/instruct/simple-proxy-for-tavern.json
index 14d32d86c..986da1697 100644
--- a/default/content/presets/instruct/simple-proxy-for-tavern.json
+++ b/default/content/presets/instruct/simple-proxy-for-tavern.json
@@ -19,5 +19,6 @@
"system_suffix": "",
"user_alignment_message": "",
"system_same_as_user": false,
+ "last_system_sequence": "",
"name": "simple-proxy-for-tavern"
-}
\ No newline at end of file
+}
diff --git a/package-lock.json b/package-lock.json
index 8be17c4f4..dca9e969d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "sillytavern",
- "version": "1.11.6",
+ "version": "1.11.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "sillytavern",
- "version": "1.11.6",
+ "version": "1.11.7",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
diff --git a/package.json b/package.json
index 970b8efbc..d491384c0 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"type": "git",
"url": "https://github.com/SillyTavern/SillyTavern.git"
},
- "version": "1.11.6",
+ "version": "1.11.7",
"scripts": {
"start": "node server.js",
"start-multi": "node server.js --disableCsrf",
diff --git a/public/css/mobile-styles.css b/public/css/mobile-styles.css
index 3156e9207..c5e4eb1a7 100644
--- a/public/css/mobile-styles.css
+++ b/public/css/mobile-styles.css
@@ -208,6 +208,7 @@
#cfgConfig,
#logprobsViewer,
#movingDivs > div {
+ /* 100vh are fallback units for browsers that don't support svh */
height: calc(100vh - 45px);
height: calc(100svh - 45px);
min-width: 100% !important;
@@ -223,6 +224,10 @@
backdrop-filter: blur(calc(var(--SmartThemeBlurStrength) * 2));
}
+ #right-nav-panel {
+ padding-right: 15px;
+ }
+
#floatingPrompt,
#cfgConfig,
#logprobsViewer,
diff --git a/public/css/rm-groups.css b/public/css/rm-groups.css
index 4bc82ee6b..e7cbb2c95 100644
--- a/public/css/rm-groups.css
+++ b/public/css/rm-groups.css
@@ -58,6 +58,11 @@
cursor: unset;
}
+#rm_group_buttons textarea {
+ margin: 0px;
+ min-width: 200px;
+}
+
#rm_group_members,
#rm_group_add_members {
margin-top: 0.25rem;
diff --git a/public/css/tags.css b/public/css/tags.css
index 9a3e02064..11806c69a 100644
--- a/public/css/tags.css
+++ b/public/css/tags.css
@@ -73,6 +73,11 @@
background: none;
}
+.tag.placeholder-expander {
+ cursor: alias;
+ border: 0;
+}
+
.tagListHint {
align-self: center;
display: flex;
@@ -94,7 +99,7 @@
#bulkTagsList,
#tagList.tags {
- margin: 2px 0;
+ margin: 5px 0;
}
#bulkTagsList,
diff --git a/public/index.html b/public/index.html
index f4b1586c7..46942e6d9 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2404,16 +2404,20 @@
+