diff --git a/docs/ai/plugin-ui-consistency-plan.md b/docs/ai/plugin-ui-consistency-plan.md index 2e9a9251a3..73f5382265 100644 --- a/docs/ai/plugin-ui-consistency-plan.md +++ b/docs/ai/plugin-ui-consistency-plan.md @@ -1,5 +1,10 @@ # Plan: Plugin UI Consistency via CSS Library + Reactive Theme +## Status + +- **Part 2 (CSS Component Library)**: Implemented as a UI Kit element reset in `src/app/plugins/util/plugin-ui-kit.css.ts`. Uses plain element selectors injected at the start of `
` (inject-first), so plugin CSS always wins by source order. No class-based components — just styled HTML elements. +- **Part 1 (Reactive Theme Updates / THEME_CHANGE hook)**: Not yet implemented. + ## Goal Make iframe plugin UI more consistent with the main app by: diff --git a/docs/plugin-development.md b/docs/plugin-development.md index 3b7bbe04a3..9779645263 100644 --- a/docs/plugin-development.md +++ b/docs/plugin-development.md @@ -85,21 +85,22 @@ The `manifest.json` file is required for all plugins and defines the plugin's me ### Manifest Fields -| Field | Type | Required | Description | -| ----------------- | -------- | -------- | ------------------------------------------------------------------ | -| `id` | string | ✓ | Unique identifier for your plugin (use kebab-case) | -| `name` | string | ✓ | Display name shown to users | -| `version` | string | ✓ | Semantic version (e.g., "1.0.0") | -| `description` | string | ✓ | Brief description of what your plugin does | -| `manifestVersion` | number | ✓ | Currently must be `1` | -| `minSupVersion` | string | ✓ | Minimum Super Productivity version required | -| `author` | string | | Plugin author name | -| `homepage` | string | | Plugin website or repository URL | -| `icon` | string | | Path to icon file (SVG recommended) | -| `iFrame` | boolean | | Whether plugin uses iframe UI (default: false) | -| `sidePanel` | boolean | | Show plugin in side panel (default: false), requires `iFrame:true` | -| `permissions` | string[] | | The permissions the plugin needs (e.g., ["nodeExecution"]) | -| `hooks` | string[] | | App events to listen to | +| Field | Type | Required | Description | +| ----------------- | -------- | -------- | -------------------------------------------------------------------------------------- | +| `id` | string | ✓ | Unique identifier for your plugin (use kebab-case) | +| `name` | string | ✓ | Display name shown to users | +| `version` | string | ✓ | Semantic version (e.g., "1.0.0") | +| `description` | string | ✓ | Brief description of what your plugin does | +| `manifestVersion` | number | ✓ | Currently must be `1` | +| `minSupVersion` | string | ✓ | Minimum Super Productivity version required | +| `author` | string | | Plugin author name | +| `homepage` | string | | Plugin website or repository URL | +| `icon` | string | | Path to icon file (SVG recommended) | +| `iFrame` | boolean | | Whether plugin uses iframe UI (default: false) | +| `sidePanel` | boolean | | Show plugin in side panel (default: false), requires `iFrame:true` | +| `permissions` | string[] | | The permissions the plugin needs (e.g., ["nodeExecution"]) | +| `hooks` | string[] | | App events to listen to | +| `uiKit` | boolean | | Enable UI Kit CSS reset for iframe plugins (default: true). Set to `false` to disable. | ### Complete Manifest Example @@ -172,37 +173,22 @@ Plugins that render custom UI in a sandboxed iframe.