feat(#446): plugins tab full parity — install from URL, provider selection, remove confirm, badges (#456)

* docs: document HermesScaffold padding foot-gun root cause in AGENTS.md

* feat(#446): plugins tab full parity — install from URL, provider selection, remove confirm, badges

- Add Install from URL section with force reinstall + enable after install toggles
- Add Plugin Provider selection section (memory provider + context engine dropdowns)
- Add rescan button in top bar actions
- Add confirmation dialog before removing plugins
- Show source badges, runtime status, auth badges on plugin cards
- Show dashboard slots from plugin manifest
- Add visibility toggle (show/hide in sidebar) for manifest plugins
- Show orphan dashboard plugins section
- Add PluginManifestData, PluginsHubProviders, ProviderOption models
- Add rescanPlugins, savePluginProviders, setPluginVisibility API endpoints

* fix(#446): fix CI compilation errors — DashboardPluginMeta mapping and @Composable context

* fix(#446): pass missing PluginInfo ctor params for orphan plugin mapping

* fix(#446): remove duplicate refresh button in plugins top bar

Scaffold's onRefresh param added a second refresh icon alongside the
rescan action button. Removed onRefresh/isRefreshing from HermesScaffold
and moved pull-to-refresh into a manual PullToRefreshBox wrapping the
content, keeping the rescan icon as the sole top-bar action.

* fix(#446): remove rescan icon from plugins top bar

Only one action icon left in top bar; pull-to-refresh (loadPlugins)
remains the sole refresh mechanism. rescanPlugins() viewmodel logic
is unchanged but now unreachable from the UI.

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
M57andM57 authored and GitHub committed 2026-07-03 15:31:43 +03:00
1 parent 0ee24144c0
commit 57a815c67e
6 files changed
+881 -109

No files matched your search

+21
View File
@@ -28,6 +28,8 @@
<string name="content_desc_back">Back</string>
<string name="content_desc_open_drawer">Open navigation drawer</string>
<string name="content_desc_refresh">Refresh</string>
<string name="common_save">Save</string>
<string name="common_cancel">Cancel</string>
<string name="content_desc_clear_search">Clear search</string>
<!-- General Errors -->
@@ -360,6 +362,25 @@
<string name="plugins_action_update">Update</string>
<string name="plugins_action_uninstall">Uninstall</string>
<string name="plugins_action_install">Install</string>
<string name="plugins_action_remove">Remove</string>
<string name="plugins_action_rescan">Rescan</string>
<string name="plugins_install_heading">Install Plugin</string>
<string name="plugins_install_hint">Install a plugin from a git/URL source</string>
<string name="plugins_force_reinstall">Force reinstall</string>
<string name="plugins_enable_after_install">Enable after install</string>
<string name="plugins_providers_heading">Plugin Providers</string>
<string name="plugins_providers_hint">Select active memory and context providers</string>
<string name="plugins_memory_provider_label">Memory Provider</string>
<string name="plugins_context_engine_label">Context Engine</string>
<string name="plugins_provider_defaults">(config defaults)</string>
<string name="plugins_remove_confirm_title">Remove Plugin</string>
<string name="plugins_remove_confirm_text">This will remove the "%1$s" plugin from your agent.</string>
<string name="plugins_auth_required">Auth Required</string>
<string name="plugins_auth_command_hint">Auth command: %1$s</string>
<string name="plugins_dashboard_slots">Dashboard slots: %1$s</string>
<string name="plugins_orphan_heading">Orphaned Dashboard Plugins</string>
<string name="plugins_show_in_sidebar">Show in sidebar</string>
<string name="plugins_hide_from_sidebar">Hide from sidebar</string>
<!-- McpServers Screen -->
<string name="mcp_servers_label_transport">Transport: %1$s</string>