Skip to content

feat(dashboard): Plugins page — manage, enable/disable, auth status#18095

Merged
austinpickett merged 6 commits into
mainfrom
austin/feat/plugins-page
May 1, 2026
Merged

feat(dashboard): Plugins page — manage, enable/disable, auth status#18095
austinpickett merged 6 commits into
mainfrom
austin/feat/plugins-page

Conversation

@austinpickett
Copy link
Copy Markdown
Collaborator

@austinpickett austinpickett commented Apr 30, 2026

What does this PR do?

Adds a full Plugins page to the dashboard with plugin management (enable/disable/install/remove/update), auth status surfacing, and runtime provider selection.

The key bug fix: clicking "Enable" on a bundled backend plugin (like Spotify) previously only wrote to plugins.enabled — which is a no-op for auto-loaded bundled backends. The actual gate is platform_toolsets. Now the enable action correctly adds the plugin's toolset to all configured platforms.

Related Issue

N/A — new feature, no existing issue.

Type of Change

  • ✨ New feature (non-breaking change that adds functionality)

Changes Made

  • web/src/pages/PluginsPage.tsx — New dashboard page: plugin list with status badges, enable/disable switches, install from git, remove, git pull, provider picker
  • hermes_cli/plugins_cmd.pydashboard_set_agent_plugin_enabled() now calls _toggle_plugin_toolset() to add/remove the toolset from platform_toolsets; new helpers _get_plugin_toolset_key(), _toggle_plugin_toolset(), _install_plugin_core(), PluginOperationError
  • hermes_cli/web_server.py — New endpoints: /api/dashboard/plugins/hub, agent plugin install/enable/disable/update/remove, provider save; hub response includes auth_required + auth_command per plugin
  • web/src/lib/api.ts — Added HubAgentPluginRow.auth_required and auth_command fields, new API methods
  • web/src/i18n/en.ts, zh.ts, types.ts — All new plugin page i18n strings
  • web/src/App.tsx — Route registration for plugins page
  • web/src/plugins/slots.ts — Plugin slot definitions for extensibility

How to Test

  1. hermes dashboard → navigate to Plugins page
  2. Verify all installed/bundled plugins are listed with correct status badges
  3. Click "Enable" on Spotify → confirm spotify appears in platform_toolsets.cli in ~/.hermes/config.yaml
  4. Verify "Auth required" badge + hermes auth spotify CommandBlock appears for unauthenticated Spotify
  5. Test the memory/context provider dropdowns — verify they no longer overflow on long names

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: WSL2 Ubuntu (Windows 11)

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

Screenshots / Logs

image image

Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py
Comment thread hermes_cli/plugins_cmd.py Outdated
Comment thread hermes_cli/web_server.py Fixed
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins comp/cli CLI entry point, hermes_cli/, setup wizard labels Apr 30, 2026
Comment thread hermes_cli/web_server.py
…nstall/remove

- New PluginsPage.tsx: full plugin management UI (list, enable/disable,
  install from git, remove, git pull updates, provider picker)
- Backend: dashboard_set_agent_plugin_enabled now also toggles the
  plugin's toolset in platform_toolsets so enabling actually makes
  tools visible in agent sessions
- Backend: /api/dashboard/plugins/hub returns auth_required + auth_command
  per plugin (checks tool registry check_fn)
- Frontend: auth_required shown as Badge + CommandBlock with copy-able
  auth command
- Fix: Select overflow in providers card (min-w-0 grid cells, removed
  truncate/overflow-hidden that clipped dropdown)
- Refactor: _install_plugin_core extracted for non-interactive reuse,
  PluginOperationError for structured error handling
- i18n: en/zh/types updated with all new plugin page strings
- Add _validate_plugin_name() guard on all {name} path param endpoints
  (rejects /, \, .. before reaching plugin logic)
- Strip after_install_path from install response (no internal paths to client)
- Update nix/tui.nix lockfile hash to match committed package-lock.json
Add /plugins route to resolve-page-title BUILTIN map.
…t title

Use usePageHeader().setEnd to place the rescan button in the shared
header bar. Remove the inline H2 title (already shown by the header)
and the wrapper div.
- New config key: dashboard.hidden_plugins (list of plugin names)
- GET /api/dashboard/plugins now filters out hidden plugins from sidebar
- POST /api/dashboard/plugins/{name}/visibility toggles visibility
- Hub response includes user_hidden boolean per plugin row
- Eye/EyeOff toggle on plugin cards with dashboard manifests
- i18n: 'Show in sidebar' / 'Hide from sidebar' (en/zh)
@austinpickett austinpickett force-pushed the austin/feat/plugins-page branch from e455de9 to c73b799 Compare May 1, 2026 00:30
@austinpickett austinpickett merged commit 5ad030d into main May 1, 2026
9 of 11 checks passed
@austinpickett austinpickett deleted the austin/feat/plugins-page branch May 1, 2026 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants