plugins: merge the user Plugins page into per-plugin sidebar pages
Nightly Build / build (push) Successful in 7m1s

The generic per-user #plugins page is gone: a plugin with per-user
settings hosts them in its own web_pages() sidebar page instead
(Telegram's pairing page is new; Honcho's opt-in page already existed).
The admin catalog moves from #plugin-catalog to #plugins (old hash
redirected), and user_config_schema is removed from the Plugin trait,
the API DTOs and both plugins — the my-config endpoint, the
plugin_user_configs store and the update_user_config hook stay, now
driven by each plugin's own page fragment.
This commit is contained in:
2026-07-28 20:48:03 +01:00
parent 50e1333d99
commit 4b1affa600
32 changed files with 338 additions and 371 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ The plugin polls the ComfyUI server every 5 seconds. If it's offline, every mode
## Enabling & configuring (admin)
1. Plugin catalog**ComfyUI** → enable, then **Configure**.
1. Plugins page**ComfyUI** → enable, then **Configure**.
2. Fields:
- **`base_url`** (default `http://localhost:8188`) — where ComfyUI's API is listening.
- **`workflows_dir`** (default `data/comfyui/workflows`) — folder to watch for `.json` workflow files. Created automatically if missing.
+1 -1
View File
@@ -16,7 +16,7 @@ Enabling the plugin does not by itself add any voice or transcription model —
## Enabling & configuring (admin)
1. Plugin catalog**ElevenLabs** → enable. (This plugin has no config form of its own.)
1. Plugins page**ElevenLabs** → enable. (This plugin has no config form of its own.)
2. Go to the Models hub → **LLM Providers**, add a new provider, choose type **ElevenLabs**, paste the API key (stored as a secret field, not shown again after saving).
3. Go to the Models hub → **Transcription** and/or **TTS**, add a model, pick the ElevenLabs provider just created, and choose a voice/model from the list — fetched live from ElevenLabs, so it always reflects what's actually available on that account.
+1 -1
View File
@@ -17,7 +17,7 @@ Streams a user's completed chat turns to an external [Honcho](https://honcho.dev
## Enabling & configuring (admin)
1. Plugin catalog**Honcho Memory** → enable, then **Configure** (or its own admin page, once enabled: sidebar → Honcho).
1. Plugins page**Honcho Memory** → enable, then **Configure** (or its own admin page, once enabled: sidebar → Honcho).
2. Fields:
- **`base_url`** (default `http://localhost:8000`) — the Honcho server's URL.
- **`api_key`** — optional, only if the server requires auth.
+1 -1
View File
@@ -15,7 +15,7 @@ Lightweight, fast local text-to-speech using the Kokoro ONNX model. Runs on CPU
## Enabling & configuring (admin)
1. Plugin catalog**Kokoro TTS** → enable, then **Configure**.
1. Plugins page**Kokoro TTS** → enable, then **Configure**.
2. Fields:
- **`voice`** (default `if_sara`) — voice id. Prefix meaning: `a`=American, `b`=British, `i`=Italian, `j`=Japanese, `z`=Chinese; `f`=female, `m`=male. Includes `if_sara`, `im_nicola` (Italian), plus several English voices (`af_*`, `am_*`, `bf_*`, `bm_*`).
- **`lang`** (default `it`) — language code for phonemisation: `it`, `en-us`, `en-gb`, `ja`, `zh`, `es`, `fr`, `hi`, `pt-br`, `ko`.
+1 -1
View File
@@ -19,7 +19,7 @@ The model is gated on HuggingFace, so it requires a personal access token before
## Enabling & configuring (admin)
1. Get a HuggingFace token and store it as the secret `HUGGINGFACE_TOKEN` (see above).
2. Plugin catalog**Orpheus TTS 3B** → enable, then **Configure**.
2. Plugins page**Orpheus TTS 3B** → enable, then **Configure**.
3. Fields:
- **`quantization`** (`none` | `int8` | `int4`, default `int8`) — lower precision uses less VRAM at some quality cost.
- **`voice`** (`tara` | `dan` | `leah` | `zac` | `zoe` | `mia` | `julia` | `leo`, default `tara`).
+1 -1
View File
@@ -19,7 +19,7 @@ Depends on which provider is chosen:
## Enabling & configuring (admin)
1. Plugin catalog**Remote Connectivity** → enable, then **Configure**.
1. Plugins page**Remote Connectivity** → enable, then **Configure**.
2. Fields:
- **`provider`** (`tailscale_sys` | `tailscale`, default `tailscale_sys`) — see requirements above.
- **`auth_key`** — only for the embedded `tailscale` provider; a Tailscale auth key (`tskey-auth-…`), needed on first join.
+2 -2
View File
@@ -16,7 +16,7 @@ One bot serves everyone on the instance; each person pairs their **own** Telegra
## Enabling & configuring (admin)
1. Plugin catalog**Telegram Bot** → enable, then **Configure**.
1. Plugins page**Telegram Bot** → enable, then **Configure**.
2. Field:
- **`token`** (required) — the bot token from BotFather. Stored as a secret field, not shown again after saving.
@@ -26,7 +26,7 @@ Once the bot is enabled and a user has been granted access to the plugin:
1. The user opens Telegram, finds the bot (by the username chosen in BotFather), and sends it any message.
2. The bot replies with a short pairing code.
3. The user goes to their own Plugins page in the web app, finds Telegram, and pastes the code into the **pairing code** field.
3. The user opens the **Telegram** page in the web app's sidebar and pastes the code into the **pairing code** field.
That's the whole flow — no admin involvement needed for a normal pairing. (An admin *can* alternatively bind a chat to a user directly using the `telegram_pairing` tool from the assistant, e.g. if a user can't access the web app.)
+1 -1
View File
@@ -23,7 +23,7 @@ The model (roughly 13 GB depending on size) is loaded into memory only when f
## Enabling & configuring (admin)
1. Download a model file first (see above) and note its path.
2. Plugin catalog → **Whisper Local** → enable, then **Configure**.
2. Plugins page → **Whisper Local** → enable, then **Configure**.
3. Fields:
- **`model`** (required) — path to the `.bin` file, e.g. `models/ggml-large-v3.bin`.
- **`language`** — a BCP-47 code (`it`, `en`, …) or `auto` for automatic detection (default `auto`).