Lists installed plugins, shows local vs latest versions, and highlights Update available. Works with Larry, Elastic, and custom skins.
plugin_managernow keeps its own canonical version inplugin_manager::PLUGIN_VERSIONinsideplugin_manager.php.plugin_manager::info()exposes the plugin metadata array used for self-identification.- Development builds should use a
+devsuffix such as1.0.0+dev. - Release builds should use a clean tagged version such as
1.0.0.
For a release bump:
- Update
plugin_manager::PLUGIN_VERSIONinplugin_manager.phpor runsh scripts/bump-version.sh 1.0.0. - Update
CHANGELOG.md. - Create the matching release tag after verification.
- Discovers installed plugins
- Shows local version (from composer.json, @version tags, or best-effort)
- Checks online (Packagist / GitHub releases, falls back to tags)
- Bold “Update available”
- One-click (check now) per row to bypass cache
- Diagnostics panel for connectivity
sources.map.phpto resolve outliers or mark plugins as bundled- Scroll-friendly UI for large lists
-
In your Roundcube root (the folder with
composer.json), run:composer require texxarulez/plugin_manager
This uses
roundcube/plugin-installerto place the plugin inplugins/plugin_manager. -
Enable the plugin in Roundcube config (e.g.
config/config.inc.php):$config['plugins'][] = 'plugin_manager';
-
Clear caches.
- Copy the
plugin_manager/folder intoroundcube/plugins/. - Enable in config:
$config['plugins'][] = 'plugin_manager';
- Clear caches.
-
To raise GitHub API limits, set in
plugins/plugin_manager/config.inc.php(or main config):$config['pm_github_token'] = 'ghp_xxxxx';
-
To default remote checks on/off:
$config['pm_remote_checks'] = true; // or false
See INSTALL.md and USER_GUIDE.md for details.
You can suppress specific plugins from appearing in the Plugin Manager by adding their directory names to
pm_hidden_plugins in config.inc.php.
// Hide the built-in example plugins
$config['pm_hidden_plugins'] = array('zipdownload', 'managesieve');This only affects display in the manager; it does not enable/disable the plugin itself.
