feat: add interactive selection dialog to batch installer (#60)

* feat: add interactive selection dialog to batch installer

* feat: improve batch installer selection dialog

* feat: add search and filtering to batch installer dialog

* fix: sync type filter with selected plugins

* fix: sync search results with selected plugins

* feat: add multi-repository batch install support

* fix: clarify single-call multi-repo usage

* feat: add repository filters to selection dialog

* refactor: simplify selection dialog header

* docs: simplify batch installer quick start

* docs: feature batch installer on homepage
This commit is contained in:
Fu-Jie
2026-03-16 15:39:14 +08:00
committed by GitHub
parent f142b32486
commit 8573a0d7b0
16 changed files with 977 additions and 377 deletions

View File

@@ -1,29 +1,30 @@
# 🎉 Introducing Batch Install Plugins v1.0.0
# 🎉 Batch Install Plugins v1.1.0
## Headline
**One-Click Batch Installation of OpenWebUI Plugins - Solving the Plugin Setup Headache**
**Interactive Plugin Picker for OpenWebUI Batch Installation**
## Introduction
Installing plugins in OpenWebUI used to be tedious: searching for plugins, downloading them one by one, and hoping everything works in your environment. Today, we're excited to announce **Batch Install Plugins from GitHub** v1.0.0 — a powerful new tool that transforms plugin installation from a chore into a single command.
Installing plugins in OpenWebUI should not feel like an all-or-nothing jump. With **Batch Install Plugins from GitHub** v1.1.0, the workflow now opens an interactive browser dialog so users can review the filtered list and choose exactly which plugins to install before the API requests begin.
## Key Highlights
### 🚀 One-Click Bulk Installation
- Install multiple plugins from any public GitHub repository with a single command
- Automatically discovers plugins and validates them
- Updates previously installed plugins seamlessly
### 🚀 Interactive Plugin Selection
- Uses the OpenWebUI `execute` event to open a custom browser dialog
- Displays the filtered plugin list with checkboxes, type filters, keyword search, plugin descriptions, and repository context
- Installs only the plugins the user keeps selected
### ✅ Smart Safety Features
- Shows a confirmation dialog with the plugin list before installation
- Users can review and approve before proceeding
- Replaces the basic confirmation event with a richer selective install flow
- Users can uncheck plugins they do not want without rewriting the request
- Removes the noisy copy-to-exclude helper when it is not needed
- Automatically excludes the tool itself from installation
### 🌍 Multi-Repository Support
Install plugins from **any public GitHub repository**, including your own community collections:
- Use one request per repository, then call the tool again to combine multiple sources
- Use one request to combine multiple repositories in a single grouped picker
- **Default**: Fu-Jie/openwebui-extensions (my personal collection)
- Works with public repositories in `owner/repo` format
- Mix and match plugins: install from my collection first, then add community collections in subsequent calls
- Works with public repositories in `owner/repo` format, separated by commas, semicolons, or new lines
- Mix and match plugins from multiple sources before installation starts
### 🔧 Container-Friendly
- Automatically handles port mapping issues in containerized deployments
@@ -37,25 +38,25 @@ Install plugins from **any public GitHub repository**, including your own commun
## How It Works: Interactive Installation Workflow
Each request handles one repository. To combine multiple repositories, send another request after the previous installation completes.
The `repo` parameter now accepts one or more `owner/repo` values separated by commas, semicolons, or new lines.
1. **Start with My Collection**
```
"Install all plugins from Fu-Jie/openwebui-extensions"
```
Review the confirmation dialog, approve, and the plugins are installed.
Review the selection dialog, keep the plugins you want checked, and then install them.
2. **Add a Community Collection**
2. **Mix in a Community Collection**
```
"Install all plugins from iChristGit/OpenWebui-Tools"
"Install all plugins from Fu-Jie/openwebui-extensions, iChristGit/OpenWebui-Tools"
```
Add more plugins from a different repository. Already installed plugins are updated seamlessly.
Review both repositories in one grouped dialog, then install only the subset you want.
3. **Install a Specific Type**
3. **Install a Specific Type Across Repositories**
```
"Install only pipe plugins from Haervwe/open-webui-tools"
"Install only pipe plugins from Haervwe/open-webui-tools, Classic298/open-webui-plugins"
```
Pick specific plugin types from another repository, or exclude certain keywords.
Pick specific plugin types across repositories, or exclude certain keywords.
4. **Use Your Own Public Repository**
```
@@ -84,23 +85,23 @@ OpenRouter API pipe integration for advanced model access.
## Usage Examples
Each line below is a separate request:
Each line below can be used directly. The third example combines repositories in one request:
```
# Start with my collection
"Install all plugins"
# Add community plugins in a new request
# Add community plugins
"Install all plugins from iChristGit/OpenWebui-Tools"
# Add only one plugin type from another repository
"Install only tool plugins from Haervwe/open-webui-tools"
# Combine repositories in one picker
"Install all plugins from Fu-Jie/openwebui-extensions, Classic298/open-webui-plugins"
# Continue building your setup
"Install only action plugins from Classic298/open-webui-plugins"
# Add only one plugin type from multiple repositories
"Install only tool plugins from Haervwe/open-webui-tools, Classic298/open-webui-plugins"
# Filter out unwanted plugins
"Install all plugins from Haervwe/open-webui-tools, exclude_keywords=test,deprecated"
"Install all plugins from Haervwe/open-webui-tools, Classic298/open-webui-plugins, exclude_keywords=test,deprecated"
# Install from your own public repository
"Install all plugins from your-username/my-plugin-collection"
@@ -110,8 +111,8 @@ Each line below is a separate request:
- **Async Architecture**: Non-blocking I/O for better performance
- **httpx Integration**: Modern async HTTP client with timeout protection
- **Comprehensive Tests**: 8 regression tests with 100% pass rate
- **Full Event Support**: Proper OpenWebUI event injection with fallback handling
- **Selective Install Flow**: The install loop now runs only for the checked plugin subset
- **Full Event Support**: Proper OpenWebUI `execute` event handling with fallback behavior
## Installation
@@ -123,7 +124,7 @@ Each line below is a separate request:
## Links
- **GitHub Repository**: https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/tools/batch-install-plugins
- **Release Notes**: https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/tools/batch-install-plugins/v1.0.0.md
- **Release Notes**: https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/tools/batch-install-plugins/v1.1.0.md
## Community Love