Add Batch Install Plugins from GitHub tool with: - One-click installation of plugins from GitHub repositories - Smart plugin discovery with metadata extraction and validation - Confirmation dialog with plugin list preview - Selective installation with keyword-based filtering - Smart fallback: auto-retry with localhost:8080 on connection failure - Enhanced debugging with frontend and backend logging - 120-second confirmation timeout for user convenience - Async httpx client for non-blocking I/O - Complete i18n support across 11 languages - Event emitter handling with fallback support - Timeout guards on frontend JavaScript execution - Filtered list consistency for confirmation and installation - Auto-exclusion of tool itself from batch operations - 6 regression tests with 100% pass rate Documentation includes: - English and Chinese READMEs with flow diagrams - Popular repository examples (iChristGit, Haervwe, Classic298, suurt8ll) - Mirrored docs for official documentation site - Plugin index entries in both languages - Comprehensive release notes (v1.0.0.md and v1.0.0_CN.md) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3.3 KiB
3.3 KiB
Overview
Batch Install Plugins from GitHub is a new tool for OpenWebUI that enables one-click installation of multiple plugins directly from GitHub repositories. This initial release includes comprehensive features for discovering, filtering, and installing plugins with user confirmation, extensive multi-language support, and robust debugging capabilities for container deployments.
Features
- One-Click Installation: Install all plugins from a repository with a single command
- Smart Plugin Discovery: Parse Python files to extract metadata and validate plugins automatically
- Multi-Type Support: Support Pipe, Action, Filter, and Tool plugins in a single operation
- Confirmation Dialog: Display plugin list before installation for user review and approval
- Selective Installation: Exclude specific plugins using keyword-based filtering
- Smart Fallback: Container deployments auto-retry with localhost:8080 if primary connection fails
- Enhanced Debugging: Rich frontend JavaScript and backend Python logs for troubleshooting
- Extended Timeout: 120-second confirmation window for thoughtful decision-making
- Async Architecture: Non-blocking I/O operations for better performance
- Full Internationalization: Complete support for 11 languages with proper fallback maps
- Auto-Update: Automatically updates previously installed plugins
- Self-Exclusion: Automatically excludes the tool itself from batch operations
Technical Highlights
- httpx Integration: Modern async HTTP client for reliable, non-blocking requests
- Event Emitter Support: Proper handling of OpenWebUI event injection with fallbacks
- Timeout Protection: Wrapped frontend execution with timeout guards to prevent hanging
- Filtered List Consistency: Uses single source of truth for confirmation and installation
- Error Localization: All error messages are user-facing and properly localized across languages
- Deployment Resilience: Intelligent base URL resolution handles domain, localhost, and containerized environments
Supported Repositories
- Default: Fu-Jie/openwebui-extensions (strict validation)
- Custom: Any GitHub repository with Python plugin files
Testing
Comprehensive regression tests included:
- Filtered installation list consistency
- Missing event emitter handling
- Confirmation timeout verification
- Full failure scenarios
- Localization completeness
- Connection error debug logging and smart fallback
All 6 tests pass successfully.
Documentation
- English README with flow diagrams and usage examples
- Chinese README (README_CN.md) with complete translations
- Mirrored documentation for official docs site
- Plugin index entries in both English and Chinese
Compatibility
- OpenWebUI: 0.2.x - 0.8.x
- Python: 3.9+
- Dependencies: httpx (async HTTP client), pydantic (type validation)
Release Notes
- This initial v1.0.0 release includes complete plugin infrastructure with smart deployment handling.
- The plugin is designed to handle diverse deployment scenarios (domain, localhost, containerized) with minimal configuration.