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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user