diff --git a/docs/contributing.mdx b/docs/contributing.mdx index a2cded83..5be6b061 100644 --- a/docs/contributing.mdx +++ b/docs/contributing.mdx @@ -76,6 +76,8 @@ To add a new language: 3. Translate the string values in each JSON file while preserving the object structure 4. Register the language in `src/lib/i18n/locales/languages.json` +In `en-US`, many values are empty because the key is already the English text. For those entries, translate the key and write the result as the value. + ### Improve accessibility Accessibility is a core part of good design. Report accessibility problems with reproduction details through Issues. When implementing a maintainer-requested UI change: diff --git a/docs/features/authentication-access/rbac/permissions.md b/docs/features/authentication-access/rbac/permissions.md index fdafe0a2..21d11cdb 100644 --- a/docs/features/authentication-access/rbac/permissions.md +++ b/docs/features/authentication-access/rbac/permissions.md @@ -97,7 +97,7 @@ The server enforces all of these permissions: | **Allow Sharing With Users** | Ability to share a resource with **specific individual users** ([`USER_PERMISSIONS_ACCESS_GRANTS_ALLOW_USERS`](/reference/env-configuration#user_permissions_access_grants_allow_users)). When disabled, a change that shares with an individual user is refused, and individual-user grants are dropped from a new item; group and public sharing are unaffected. Admins are always exempt. | | **Allow Sharing With Groups** | Ability to share a resource with **groups** ([`USER_PERMISSIONS_ACCESS_GRANTS_ALLOW_GROUPS`](/reference/env-configuration#user_permissions_access_grants_allow_groups)). When disabled, a change that shares with a group is refused, and group grants are dropped from a new item; individual-user and public sharing are unaffected. Admins are always exempt. | -Every toggle in the panel's **Sharing Permissions** section is off unless you turn it on, and a public toggle is only drawn once the parent permission named in its row is on. The two **Allow Sharing With ...** rows sit in a separate **Access Grants** section and are on by default. +Every toggle in the panel's **Sharing Permissions** section is off unless you turn it on, and a public toggle is only drawn once the parent permission named in its row is on. The two **Allow Sharing With ...** rows sit in a separate **Access Grants** section and are on by default. With **Allow Sharing With Groups** off, the **Add Access** picker lists no groups. With **Allow Sharing With Users** off, it lists no users. :::warning Re-check Tools and Notes public sharing after an upgrade @@ -118,7 +118,7 @@ Controls the features available to the user inside the chat interface. | **Allow Chat Params** | *(Requires Allow Chat Controls)* Ability to adjust LLM parameters (e.g., temperature, top_k). When disabled, the **Advanced Params** section of the chat controls and the **Advanced Parameters** section in **Settings > General** are hidden. It has no effect on [model controls](/features/workspace/models#using-model-controls-in-chat), and parameters a person saves to their account are kept. These permissions only hide the panels: a user can still set parameters through the API, in a chat request or a settings save. That is the chosen trade-off, so admins can hide the panels and still offer model controls. | | **Allow File Upload** | Ability to upload files to the chat. | | **Allow Web Upload** | Ability to attach a web page to a chat by URL, using **Attach Webpage** in the message input's attach menu ([`USER_PERMISSIONS_CHAT_WEB_UPLOAD`](/reference/env-configuration#user_permissions_chat_web_upload)). On by default. When disabled, the option is greyed out and the attach is refused. Admins are always exempt. | -| **Allow Chat Delete** | Ability to delete entire chat conversations ([`USER_PERMISSIONS_CHAT_DELETE`](/reference/env-configuration#user_permissions_chat_delete)). On by default. When disabled, these delete controls are hidden from non-admins: the sidebar chat menu, the **Delete** button for chats selected in the sidebar, the chat's own top-bar menu, the search results, the per-chat delete in **Settings > Archived Chats** and **Delete All Chats** in **Settings > Data Controls**. The **Delete chat** keyboard shortcut stops doing anything, and archiving is unaffected. Deleting a folder that still holds chats needs this permission too. That menu entry stays visible and the delete is refused. Admins are always exempt. | +| **Allow Chat Delete** | Ability to delete entire chat conversations ([`USER_PERMISSIONS_CHAT_DELETE`](/reference/env-configuration#user_permissions_chat_delete)). On by default. When disabled, these delete controls are hidden from non-admins: the sidebar chat menu, the **Delete** button for chats selected in the sidebar, the chat's own top-bar menu, the search results, the per-chat delete in **Settings > Archived Chats** and **Delete All Chats** in **Settings > Data Controls**. The **Delete chat** keyboard shortcut stops doing anything, and archiving is unaffected. Deleting a folder together with its chats needs this permission too, when **Delete all contents inside this folder** is ticked, which is the default. That menu entry stays visible and the delete is refused. With the box unticked, the folder is deleted and its chats move out of it into your chat list. Admins are always exempt. | | **Allow Delete Messages** | Ability to delete individual messages. | | **Allow Chat Edit** | Ability to edit messages ([`USER_PERMISSIONS_CHAT_EDIT`](/reference/env-configuration#user_permissions_chat_edit)). When disabled, the **Edit** button is hidden on the person's own messages and on responses, so they cannot **Save** or **Send** an edited prompt either. Admins are always exempt. | | **Allow Continue Response** | Ability to use the "Continue" feature for truncated responses. | diff --git a/docs/features/calendar/index.md b/docs/features/calendar/index.md index 699a34d8..01d40a1f 100644 --- a/docs/features/calendar/index.md +++ b/docs/features/calendar/index.md @@ -123,6 +123,8 @@ Click the small **+** button next to the **Calendars** heading in the calendar s Click any event on the calendar to open the event editor. From there you can update details or delete the event. Automation-generated virtual events cannot be edited directly; clicking them navigates to the automation or the run's chat. +Clicking one occurrence of a repeating event opens the whole series, dated from its first occurrence. **Save** changes every occurrence, and **Delete** removes the series. + --- ## Calendar Views diff --git a/docs/features/channels/index.md b/docs/features/channels/index.md index 4cac4ca7..c9d0e498 100644 --- a/docs/features/channels/index.md +++ b/docs/features/channels/index.md @@ -123,6 +123,8 @@ Hover any message to react with emoji, pin it for reference, reply inline, or st You can delete your own messages, and an admin can delete anyone's. Deleting a message that started a thread also deletes every reply in that thread, including replies other people wrote. +If you can only read a channel, messages show no hover actions and the reactions under them cannot be clicked. The message box reads **You do not have permission to send messages in this channel.** + ### Muting a channel The **...** menu of a channel or direct message, in the sidebar or in the channel header, has a **Notifications** setting. **Mentions only** mutes it for you: the channel is dimmed in the sidebar and shows no unread count. Only a message that @mentions you still sends a pop-up, browser notification or [notification webhook](/features/chat-conversations/chat-features/notifications); the unread count stays hidden for it too. **All messages** turns it back on. The setting is per member, so muting a channel changes nothing for anyone else. diff --git a/docs/features/chat-conversations/audio/speech-to-text/env-variables.md b/docs/features/chat-conversations/audio/speech-to-text/env-variables.md index ae8a761a..63d4fcf6 100644 --- a/docs/features/chat-conversations/audio/speech-to-text/env-variables.md +++ b/docs/features/chat-conversations/audio/speech-to-text/env-variables.md @@ -111,7 +111,7 @@ See the [Azure AI Speech STT guide](/features/chat-conversations/audio/speech-to | `AUDIO_TTS_MISTRAL_API_BASE_URL` | Mistral API base URL | `https://api.mistral.ai/v1` | :::info -When `AUDIO_TTS_ENGINE=mistral`, Open WebUI uses `mistral-tts-latest` when `AUDIO_TTS_MODEL` is empty. +When `AUDIO_TTS_ENGINE=mistral`, Open WebUI uses `voxtral-mini-tts-2603` when `AUDIO_TTS_MODEL` is empty. ::: ### Azure TTS diff --git a/docs/features/chat-conversations/audio/speech-to-text/stt-config.md b/docs/features/chat-conversations/audio/speech-to-text/stt-config.md index 06f0b21e..2f6b7430 100644 --- a/docs/features/chat-conversations/audio/speech-to-text/stt-config.md +++ b/docs/features/chat-conversations/audio/speech-to-text/stt-config.md @@ -38,9 +38,9 @@ To configure a speech to text provider: ### Restricting Accepted Audio Extensions -Open WebUI ships with an **Allowed Extensions** list under **Settings → Admin → Audio → STT** that controls which audio file extensions the upload endpoint will accept (default: `mp3,wav,m4a,webm,ogg,flac,mp4,mpga,mpeg`). Uploads with any other extension are rejected with `400 Invalid audio file extension` before transcription runs. +Open WebUI keeps an allowed extensions list that controls which audio file extensions the upload endpoint will accept (default: `mp3,wav,m4a,webm,ogg,flac,mp4,mpga,mpeg`). Uploads with any other extension are rejected with `400 Invalid audio file extension` before transcription runs. -This is enforced server-side in addition to the MIME-type check (`AUDIO_STT_SUPPORTED_CONTENT_TYPES`), so tightening it is a low-cost way to harden the STT endpoint against unexpected file types. Set the matching `AUDIO_STT_ALLOWED_EXTENSIONS` environment variable to seed the list at startup, or clear it in the UI to skip the extension check entirely. +This is enforced server-side in addition to the MIME-type check (`AUDIO_STT_SUPPORTED_CONTENT_TYPES`), so tightening it is a low-cost way to harden the STT endpoint against unexpected file types. The admin **Audio** settings do not show this list. Set it with the `AUDIO_STT_ALLOWED_EXTENSIONS` environment variable, or set that variable to an empty value to skip the extension check entirely. ## User-Level Settings diff --git a/docs/features/chat-conversations/audio/text-to-speech/mistral-tts-integration.md b/docs/features/chat-conversations/audio/text-to-speech/mistral-tts-integration.md index fbb73dc5..1c0f37e3 100644 --- a/docs/features/chat-conversations/audio/text-to-speech/mistral-tts-integration.md +++ b/docs/features/chat-conversations/audio/text-to-speech/mistral-tts-integration.md @@ -40,11 +40,7 @@ See the companion guide: [Using Mistral Voxtral for Speech-to-Text](/features/ch | `voxtral-tts-26-03` | Voxtral TTS — current Mistral text-to-speech model, with zero-shot voice cloning | :::info -If `AUDIO_TTS_MODEL` is empty, Open WebUI falls back to `mistral-tts-latest`. -::: - -:::caution Set the model explicitly -Mistral no longer publishes `-latest` alias names, so the built-in `mistral-tts-latest` fallback may be rejected. Set **TTS Model** to a current ID such as `voxtral-tts-26-03` rather than leaving the field empty. See the [Mistral models overview](https://docs.mistral.ai/getting-started/models/models_overview/) for the current list. +If `AUDIO_TTS_MODEL` is empty, Open WebUI falls back to `voxtral-mini-tts-2603`. Choosing **MistralAI** as the engine fills in that model. ::: ## Environment Variables Setup @@ -71,7 +67,7 @@ services: | `AUDIO_TTS_ENGINE` | Set to `mistral` | empty (uses browser-only TTS) | | `AUDIO_TTS_MISTRAL_API_KEY` | Your Mistral API key | empty | | `AUDIO_TTS_MISTRAL_API_BASE_URL` | Mistral API base URL | `https://api.mistral.ai/v1` | -| `AUDIO_TTS_MODEL` | TTS model | `mistral-tts-latest` (built-in fallback; set `voxtral-tts-26-03` explicitly) | +| `AUDIO_TTS_MODEL` | TTS model | `voxtral-mini-tts-2603` (built-in fallback) | | `AUDIO_TTS_VOICE` | Voice ID | empty | ## Choosing Voices diff --git a/docs/features/chat-conversations/chat-features/automations.mdx b/docs/features/chat-conversations/chat-features/automations.mdx index a75e7827..7d91a073 100644 --- a/docs/features/chat-conversations/chat-features/automations.mdx +++ b/docs/features/chat-conversations/chat-features/automations.mdx @@ -93,6 +93,10 @@ On the editor page, you can: Execution logs are paginated with infinite scroll in the editor, so large run histories load incrementally. +### Quick delete + +Hold **Shift** while the Automations list is open and each automation's menu button and on/off switch turn into a delete button. Clicking it deletes that automation straight away, without asking. Release **Shift** and the menu and switch come back. Deleting from the menu still asks you to confirm. + ## Export and Import The Automations list header has a split **Create** button. Its dropdown holds **Import JSON** and **Export JSON**, which move automations between instances or accounts. diff --git a/docs/features/chat-conversations/chat-features/keyboard-shortcuts.mdx b/docs/features/chat-conversations/chat-features/keyboard-shortcuts.mdx index 04f0c964..4a04abca 100644 --- a/docs/features/chat-conversations/chat-features/keyboard-shortcuts.mdx +++ b/docs/features/chat-conversations/chat-features/keyboard-shortcuts.mdx @@ -53,6 +53,8 @@ These twenty-one can be rebound: **Clear Input Selections** resets the chat input's choices: it removes the model override, deselects tools and filters and turns off web search, image generation and code interpreter. It only fires while the chat input has focus. +**Close modal** closes only the dialog on top, so a confirmation opened over **Settings** closes and leaves **Settings** open. `Escape` always closes dialogs, so keys you assign here work alongside `Escape`, not in place of it. + Anything not listed here is fixed and cannot be reassigned. ## Fixed Shortcuts diff --git a/docs/features/chat-conversations/chat-features/notifications.mdx b/docs/features/chat-conversations/chat-features/notifications.mdx index 918db8c7..a6e81aa8 100644 --- a/docs/features/chat-conversations/chat-features/notifications.mdx +++ b/docs/features/chat-conversations/chat-features/notifications.mdx @@ -34,6 +34,7 @@ Each target has: - **Events** it subscribes to. - **Enabled**, to pause a target without deleting it. - **Automatic Delivery**, either `away` or `always`. +- **Target ID for notify**, the name the `notify` tool uses to pick this target. Left empty, it becomes the webhook's host name. It is saved in lowercase. Each run of characters other than letters, digits, `_` and `-` becomes a single `-`, so `Work/Slack` is saved as `work-slack`. Use **Send Test** to fire a test notification and confirm the endpoint works. diff --git a/docs/features/chat-conversations/data-controls/import-export.md b/docs/features/chat-conversations/data-controls/import-export.md index 85d506bc..1ac45110 100644 --- a/docs/features/chat-conversations/data-controls/import-export.md +++ b/docs/features/chat-conversations/data-controls/import-export.md @@ -137,7 +137,9 @@ If the objects in the array do **not** have a `chat` key, the entire object is t | `chat` | object | ✅ | The conversation data (see Chat Data below) | | `meta` | object | ❌ | Metadata such as `tags` (array of strings). Defaults to `{}` | | `pinned` | boolean | ❌ | Whether the chat is pinned. Defaults to `false` | -| `folder_id` | string \| null | ❌ | ID of the folder to place the chat in. Defaults to `null`. It has to name a folder **you own**: a folder that does not exist, or one merely shared with you, is cleared and the chat is imported outside any folder rather than failing the import | +| `archived` | boolean | ❌ | Whether the chat is archived. Defaults to `false`. An archived chat is imported into **Settings > Archived Chats** | +| `variables` | object | ❌ | Values filled in for the chat's [chat variables](/features/chat-conversations/chat-features/chat-params#chat-variables). Defaults to `{}` | +| `folder_id` | string \| null | ❌ | ID of the folder to place the chat in. Defaults to `null`. It has to name a folder you can write to, either one you own or one shared with you with **Write** access. A folder that does not exist, or one shared with you for reading only, is cleared and the chat is imported outside any folder rather than failing the import | | `created_at` | integer \| null | ❌ | Unix timestamp (seconds) for when the chat was created | | `updated_at` | integer \| null | ❌ | Unix timestamp (seconds) for when the chat was last updated | diff --git a/docs/features/chat-conversations/rag/document-extraction/external.md b/docs/features/chat-conversations/rag/document-extraction/external.md index dc8a4a2b..b8ede224 100644 --- a/docs/features/chat-conversations/rag/document-extraction/external.md +++ b/docs/features/chat-conversations/rag/document-extraction/external.md @@ -21,7 +21,7 @@ In **Settings > Admin > Documents**, set **Content Extraction Engine** to **Exte - **Document Loader URL**: the base URL of your service. Open WebUI appends `/process` to it. - **API Key**: sent as a bearer token. It is required. With the engine set to External but no key saved, Open WebUI silently falls back to its built-in loaders and never calls your service, and the admin panel does not warn about it. -- **Headers** (optional): a JSON object of additional headers to send with every request, see [templating](#the-contract) below. +- **Headers** (optional): a JSON object of additional headers to send with every request, see [templating](#the-contract) below. If it is not a valid JSON object, **Save** shows `Headers must be a valid JSON object` and stores nothing, even with another engine selected. Switch back to **External** to fix or clear the field. The same settings are available as environment variables: [`CONTENT_EXTRACTION_ENGINE=external`](/reference/env-configuration#content_extraction_engine), [`EXTERNAL_DOCUMENT_LOADER_URL`](/reference/env-configuration#external_document_loader_url), [`EXTERNAL_DOCUMENT_LOADER_API_KEY`](/reference/env-configuration#external_document_loader_api_key), [`EXTERNAL_DOCUMENT_LOADER_HEADERS`](/reference/env-configuration#external_document_loader_headers). diff --git a/docs/features/notes/index.md b/docs/features/notes/index.md index 6d43ed71..f0e3cc05 100644 --- a/docs/features/notes/index.md +++ b/docs/features/notes/index.md @@ -92,7 +92,7 @@ Opens the full chat interface in a pane beside the note. It is the same componen **Voice mode** is the exception. Its button is not offered in a note's chat, so use a normal chat for a hands-free voice conversation. Dictation still works, from the microphone button in the chat input. -**Insert a response into the note.** Every assistant response carries an **Insert** button that drops that response into the note at the cursor. Insertion creates a note version first, so **Undo/Redo** (top right) reverts it. +**Insert a response into the note.** With write access on the note, every assistant response carries an **Insert into note** button that drops that response into the note at the cursor. A read-only collaborator does not get the button. Insertion creates a note version first, so **Undo/Redo** (top right) reverts it. **Several conversations per note.** The panel header is a dropdown listing every chat attached to this note. Use it to switch between them, start a new one or delete one. A new conversation is only stored once you send its first message, so opening one and walking away leaves nothing behind. Deleting the last remaining chat immediately recreates an empty one. @@ -182,8 +182,8 @@ Access management options via the **More (...)** menu in the top right corner. ### Export -* **Plain text (.txt)** or **Markdown (.md)** for raw content -* **PDF (.pdf)** with visual formatting and the images pasted into the note (dark mode detected automatically) +* **Plain text (.txt)** or **Plain text (.md)** for raw content +* **PDF document (.pdf)** with visual formatting and the images pasted into the note (dark mode detected automatically) ### Sharing diff --git a/docs/features/workspace/models.md b/docs/features/workspace/models.md index 6a09491f..b55b5423 100644 --- a/docs/features/workspace/models.md +++ b/docs/features/workspace/models.md @@ -295,7 +295,7 @@ Rows you can edit also carry an **Enabled** switch, in **Workspace > Models** an ### Import and export - **Import**: From `.json` files or Open WebUI community links -- **Export**: Download all custom model configurations as a single `.json` +- **Export**: Download every custom model you can edit as a single `.json`, whatever the search box or filter shows. Admins get every custom model while `BYPASS_ADMIN_ACCESS_CONTROL` is on, which is the default - **Discover**: Browse community presets at the bottom of the page A model's background image travels with it. Export carries the image inside the file, and import stores it on the target instance as a fresh upload, so a model moved between instances keeps its background without you moving files by hand. See the [API endpoints reference](/reference/api-endpoints) for the export and import calls. diff --git a/docs/getting-started/quick-start/settings.md b/docs/getting-started/quick-start/settings.md index c87ca0c4..77caaeea 100644 --- a/docs/getting-started/quick-start/settings.md +++ b/docs/getting-started/quick-start/settings.md @@ -44,7 +44,7 @@ User Settings control personal preferences: your default model, interface theme, **Examples of what lives here:** -- Preferred default model and system prompt +- System prompt, and the default model you save with **Set as default** in the model selector - Interface theme and language - Personal API keys (if [Direct Connections](/features/chat-conversations/direct-connections) are enabled) - Per-feature toggles like autocomplete or rich text input diff --git a/docs/reference/env-configuration.mdx b/docs/reference/env-configuration.mdx index 7ba00ebd..1f64c8f1 100644 --- a/docs/reference/env-configuration.mdx +++ b/docs/reference/env-configuration.mdx @@ -2290,7 +2290,7 @@ For maximum performance, enable both: `ENABLE_BASE_MODELS_CACHE=True` with `MODE - Type: `str` - Default: `4w` -- Description: Sets the JWT expiration time in seconds. Valid time units: `s`, `m`, `h`, `d`, `w` or `-1` for no expiration. +- Description: Sets how long a sign-in token stays valid, as a number followed by a unit: `ms`, `s`, `m`, `h`, `d` or `w`, for example `4w` or `12h`. Use `-1` for no expiration. A number without a unit, such as `30`, is not valid, and **Admin Panel > Settings > Authentication** does not save it. - Persistence: This environment variable is a `ConfigVar` variable. :::warning @@ -2746,7 +2746,7 @@ Encryption derives its key from [`WEBUI_SECRET_KEY`](#webui_secret_key). A key o - Type: `bool` - Default: `True` -- Description: When enabled, the application makes automatic update checks and notifies you about version updates. From v0.12.0 only release builds check: the official images built from `main` or a release tag, and the pip package. Images built from `dev` and builds whose origin is unknown never check. A Docker image gets its channel from the `BUILD_CHANNEL` build argument (`main`, `dev` or `unknown`, default `unknown`), so build your own release images with `--build-arg BUILD_CHANNEL=main` to keep update checks. +- Description: When enabled, the application makes automatic update checks and notifies you about version updates. From v0.12.0 only release builds check: the official images built from `main` or a release tag, and the pip package. Images built from `dev` and builds whose origin is unknown never check. A Docker image gets its channel from the `BUILD_CHANNEL` build argument (`main`, `dev` or `unknown`, default `unknown`), so build your own release images with `--build-arg BUILD_CHANNEL=main` to keep update checks. If the check cannot reach GitHub within one second, **Admin Panel > Settings > General** and **Settings > About** show **Could not check for updates**, and the server logs `Version update check failed` as a warning. :::info @@ -5962,7 +5962,7 @@ Note: If none of the specified languages are available and `en` was not in your - Type: `str` - Default: `mp3,wav,m4a,webm,ogg,flac,mp4,mpga,mpeg` -- Description: Comma-separated list of audio file extensions accepted by the Speech-to-Text upload endpoint. Uploads with extensions outside this list are rejected with `400 Invalid audio file extension`. Comparison is case-insensitive. Set to an empty value to skip the extension check (MIME-type validation via `AUDIO_STT_SUPPORTED_CONTENT_TYPES` still applies). Configurable via **Settings → Admin → Audio → STT**. +- Description: Comma-separated list of audio file extensions accepted by the Speech-to-Text upload endpoint. Uploads with extensions outside this list are rejected with `400 Invalid audio file extension`. Comparison is case-insensitive. Set to an empty value to skip the extension check (MIME-type validation via `AUDIO_STT_SUPPORTED_CONTENT_TYPES` still applies). The admin **Audio** settings do not show this list, and saving them leaves it unchanged. - Persistence: This environment variable is a `ConfigVar` variable. ### Text-to-Speech @@ -6175,7 +6175,7 @@ These variables configure **Realtime** call mode for [Voice Mode](/features/chat :::info -When `AUDIO_TTS_ENGINE=mistral`, Open WebUI uses `mistral-tts-latest` when `AUDIO_TTS_MODEL` is empty. +When `AUDIO_TTS_ENGINE=mistral`, Open WebUI uses `voxtral-mini-tts-2603` when `AUDIO_TTS_MODEL` is empty. ::: @@ -7529,7 +7529,7 @@ If you set both `OAUTH_AUDIENCE` and `OAUTH_AUTHORIZE_PARAMS` containing an `aud - Type: `bool` - Default: `True` -- Description: Enables or disables user permission to delete chats. When `False`, the delete controls are hidden from non-admins rather than offered and refused, in the sidebar, the chat menu, search, archived chats and data controls, and the **Delete chat** shortcut stops doing anything. Archiving is unaffected. Deleting a folder that still holds chats needs the same permission and is refused rather than hidden. Configurable per-group as **Allow Chat Delete**. +- Description: Enables or disables user permission to delete chats. When `False`, the delete controls are hidden from non-admins rather than offered and refused, in the sidebar, the chat menu, search, archived chats and data controls, and the **Delete chat** shortcut stops doing anything. Archiving is unaffected. Deleting a folder with **Delete all contents inside this folder** ticked needs the same permission and is refused rather than hidden. With the box unticked, the folder is deleted and its chats are kept. Configurable per-group as **Allow Chat Delete**. - Persistence: This environment variable is a `ConfigVar` variable. #### `USER_PERMISSIONS_CHAT_EDIT` diff --git a/docs/troubleshooting/image-generation.md b/docs/troubleshooting/image-generation.md index e578eacc..7cbdbc91 100644 --- a/docs/troubleshooting/image-generation.md +++ b/docs/troubleshooting/image-generation.md @@ -20,6 +20,7 @@ title: "Image Generation" - With both switches off, the page saves without any key, so you can set up one feature while the other has none. - Switching **Image Generation** on without its key or URL, or **Image Edit** on without the Gemini **API Key**, is refused. Fill in the field, or switch the feature off, and save again. - The **Image Generation** switch stays on next to the error, so the missing field stays in view. Nothing is saved until you fill it in. + - Invalid JSON in **Additional Parameters**, for the OpenAI or AUTOMATIC1111 engine, is refused with `Invalid JSON format for Parameters`. Fix the JSON, or clear the field, and save again. - **Engine settings are missing** (**Settings** > **Admin** > **Images** shows only the **Image Generation** switch): - The **Create Image** and **Edit Image** sections, with the engines, their keys, **Image Prompt Generation** and **Image Edit**, show only while **Image Generation** is on. Switching it on shows them right away, so you can set everything up before saving. Their saved values are kept while they are hidden.