feat(web): admin Plugins page and OpenAPI modal cleanup

Closed
RA
3d ago
+5642-7587

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 SearchNoResults for a search with no match, and the empty illustration otherwise.

Shared code

  • New src/lib/common for app-generic pieces: SearchField and SearchNoResults.
  • src/lib/plugins: plugin type tags and icons (PLUGIN_KIND_ICONS), and OpenAPI method helpers (openapi/methods.tsx: color, icon, sort) with OpenAPIMethodPath.
  • Opal: Modal.Body is always two-tone (the twoTone prop 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

image

MCP

Unchanged.

OpenAPI

image
image
image

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 info fields; 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 into lib/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 CardLoaders renders a loading list, and the dot arrow icons are redrawn on a 16×16 grid.
  • Opal Modal.Body is 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.