feat(web): admin Plugins page and OpenAPI modal cleanup
Closed
RA
3d ago+5642+5642+0123456789012345678901234567890123456789-7587-7587-0123456789012345678901234567890123456789
Description
Cleanup of the admin Plugins page (/admin/plugins) and its modals.
Page
- Settings-style plugin cards with a type tag (MCP / OpenAPI / Craft), sign-in status, and manage / delete (on hover) actions.
- Search and filter tabs work like the Agents and Catalog pages: focus on arrival, Escape clears,
/refocuses, and an × clears. Tabs keep their natural width; Craft Apps is disabled with the upgrade tooltip below Business. - Empty states: a shared
SearchNoResultsfor a search with no match, and the empty illustration otherwise.
Shared code
- New
src/lib/commonfor app-generic pieces:SearchFieldandSearchNoResults. src/lib/plugins: plugin type tags and icons (PLUGIN_KIND_ICONS), and OpenAPI method helpers (openapi/methods.tsx: color, icon, sort) withOpenAPIMethodPath.- Opal:
Modal.Bodyis always two-tone (thetwoToneprop is removed); the dot arrow icons are redrawn on a 16×16 grid.
Modals
- Admin-only plugin modals and the MCP / Craft detail modals move into
views/admin/PluginsPage. - OpenAPI add and edit are now one modal,
OpenAPIPluginModal. Add mode opens on Schema; Continue unlocks Authentication; Add Action creates the tool. The modal fits its content (no inner scroll). - The add preview shows the API name and description, the server URL with a trust warning, and one card per action, grouped GET, POST, other writes, DELETE.
- Plugin editor modals open centered; headers use the plugin type icon; delete modals say "Delete name".
Follow-ups (not in this PR): merge the MCP and Craft add/edit modals the same way, and move workspace availability into the modal header.
Changes
MCP
Unchanged.
OpenAPI
Craft Apps
Unchanged.
Additional Options
- [Optional] Please cherry-pick this PR to the latest release version.
- [Optional] Override Linear Check
Summary by cubic
Redesigns the admin Plugins page so plugin management matches the rest of the settings pages, and consolidates plugin and OpenAPI code into views/admin/PluginsPage, lib/plugins, and lib/common.
New Features
- Plugin cards replace the old rows, with a type tag (MCP / OpenAPI / Craft), sign-in status, and hover-revealed manage and delete actions.
- Search and filter tabs behave like the Agents and Catalog pages: focus on arrival, Escape clears,
/refocuses, and the clear button is named for assistive technology. - OpenAPI add and edit merge into one modal with a single form: Schema previews the API and its actions, Continue unlocks Authentication, and the footer button reads Add or Update.
- An OpenAPI plugin's name and description default to the schema's
infofields; stored values act as overrides, so clearing a field removes it. - The Enable for Workspace switch moves from the card menu into the modal's Plugin Details tab; New Plugin always lists Craft, disabled with a Business tier tag when unavailable.
Refactors
- Plugin modals are page state on
/admin/plugins; cards open them in place, a one-time?plugin=<kind>:<id>parameter serves OAuth returns and old detail links, and old detail URLs now redirect. - Plugin add and edit modals close without a discard prompt; only an unfinished skill upload still asks.
- Completing OpenAPI or MCP setup closes the modal and refreshes the list.
- Plugins loading states use Opal loaders, and the OpenAPI schema preview shows them while a check is pending.
- Admin-only plugin modals and detail pages move into
views/admin/PluginsPage; OpenAPI client calls move intolib/plugins/openapi. - Search field and no-results state become shared components used by the Plugins and connector Catalog pages.
- OpenAPI tool names resolve in the fetch layer (
enrichToolSnapshot), falling back to the schema when no override is stored. - New
CardLoadersrenders a loading list, and the dot arrow icons are redrawn on a 16×16 grid. - Opal
Modal.Bodyis always two-tone, and Tab walks open dropdown menus.
Summary by CodeRabbit
-
New Features
- Redesigned plugin management with card-based listings, tabs, search, and modal-based setup and editing for MCP, OpenAPI, and external apps.
- OpenAPI actions now support schema validation and preview, authentication options, and workspace availability settings.
- Added reusable search controls with keyboard navigation and clear no-results messaging.
- Improved plugin icons, status labels, and loading displays.
-
Updates
- Plugin detail links now open modals from the Plugins page.
- App-editing dialogs close without a discard prompt; unfinished skill uploads still request confirmation.
- Modal bodies now consistently use a gray background.