c7db37664eab7dbf97ff0a21c5c0d37c9bf5bfae
# PR Checklist - [ ] Have you checked if it works normally in all models? *Ignore this if it doesn't use models.* - [ ] Have you checked if it works normally in all web, local, and node hosted versions? If it doesn't, have you blocked it in those versions? - [x] Have you added type definitions? # Description This PR addresses an issue where `luaFactory` fails to initialize correctly in 'editDisplay' mode under specific conditions. ## Problem Reproduction: The initialization failure can be reliably reproduced under the following conditions: 1. Disable all modules. 2. Select any chatbot with 'editDisplay' in trigger lua. 3. Select or make chat with length of 2 or more. 4. Restart app and revisit the chatbot ## Changes: 1. Guaranteed `luaFactory` initialization completes successfully during concurrent calls. 2. Added `Promise Map` to ensure only one Lua engine instance is created per mode, preventing redundant initializations. 3. Moved variable updates within mutex scope to prevent potential issues during concurrent operations. 4. Resolved merge conflicts with another PR. During the resolution: * Removed logic related to caching or updating methods for Global Vars. * **Reasoning:** Since Global Vars are stored directly in the database and are not chat-specific, I believe caching/updating these methods to be unnecessary, so I've simply made it calls exported one directly without frequently re-cache itself. * **Verification:** Re-validated that this change does not negatively impact functionality. * **Note:** Please let me know if anyone has concerns about this approach to conflict resolution.
RisuAI
RisuAI, or Risu for short, is a cross platform AI chatting software / web application with powerful features such as multiple API support, assets in the chat, regex functions and much more.
Screenshots
| Screenshot 1 | Screenshot 2 |
|---|---|
Features
- Multiple API Supports: Supports OAI, Claude, Ooba, OpenRouter... and More!
- Emotion Images: Display the image of the current character, according to his/her expressions!
- Group Chats: Multiple characters in one chat.
- Plugins: Add your features and providers, and simply share.
- Regex Script: Modify model's output by regex, to make a custom GUI and others
- Powerful Translators: Automatically translate the input/output, so you can roleplay without knowing model's language.
- Lorebook: Also known as world infos or memory book, which can make character memorize more.
- Themes: Choose it from 3 themes, Classic, WaifuLike, WaifuCut.
- Powerful Prompting: Change the prompting order easily, Impersonate inside prompts, Use conditions, variables... and more!
- Customizable, Friendly UI: Great Accessibility and mobile friendly
- TTS: Use TTS to make the output text into voice.
- Additonal Assets: Embed your images, audios and videos to bot, and make it display at chat or background!
- And More!
You can get detailed information on https://github.com/kwaroran/RisuAI/wiki (Work in Progress)
Discord
Installation
- RisuAI Website (Recommended)
- Github Releases
Docker Installation
You can also run RisuAI using Docker. This method is particularly useful for web hosting.
-
Clone the repository:
git clone https://github.com/kwaroran/RisuAI.git cd RisuAI -
Build and run the Docker container:
docker-compose up -d -
Access RisuAI at
http://localhost:6001in your web browser.
Description
Languages
TypeScript
58.9%
Svelte
35.1%
JavaScript
4.4%
Rust
0.5%
Lua
0.3%
Other
0.7%