# Feature Request / Potential PR: Allow plugins (that don't include nodes) to be managed by the palette manager

**URL:** <https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447>\
**Category:** Feature Requests\
**Created:** [9 August 2023 20:08 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447 "2023-08-09T20:08:22Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [9 August 2023 20:08 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/1 "2023-08-09T20:08:23Z")

</div>

Continuing the discussion from [Some nodes not showing in 'Manage palette'](https://discourse.nodered.org/t/some-nodes-not-showing-in-manage-palette/76817/2):

> [@Some nodes not showing in 'Manage palette'](https://discourse.nodered.org/t/some-nodes-not-showing-in-manage-palette/76817/2):
>
> If `node-red-mcu` is a plugin that doesn't include any nodes, it won't show up. This is a known limitation and sat somewhere on a backlog to be looked at.

I stumbled - once again - over the fact that a plugin without nodes isn't shown in the Palette Manager; thus, despite the plugin can be _installed_, it can neither be updated nor removed via this mean.

Would you accept a PR that adds this functionality?

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [9 August 2023 21:36 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/2 "2023-08-09T21:36:11Z")

</div>

Hi @ralphwetzel

Can I suggest you raise an issue and signal your intent to raise a PR.

Please include an outline of your proposal for discussion.

Also, please include links back to topics of discussion too.

I will be sure to keep an eye out and respond if necessary.

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [10 August 2023 19:17 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/3 "2023-08-10T19:17:13Z")

</div>

> [@Steve-Mcl](#):
>
> Can I suggest you raise an issue and signal your intent to raise a PR.

@Steve-Mcl  
Will do; should the PR raised against `dev` or the `main` branch?

Update: [Issue report](https://github.com/node-red/node-red/issues/4271) is now established.

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [10 August 2023 20:03 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/4 "2023-08-10T20:03:38Z")

</div>

New features against dev please.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [9 October 2023 20:04 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/5 "2023-10-09T20:04:00Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [18 October 2023 19:03 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/6 "2023-10-18T19:03:28Z")

</div>



---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [18 October 2023 19:19 UTC](https://discourse.nodered.org/t/feature-request-potential-pr-allow-plugins-that-dont-include-nodes-to-be-managed-by-the-palette-manager/80447/7 "2023-10-18T19:19:08Z")

</div>

Progress update: PR is (finally) placed! 🎉

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/4/6/46afcbf6e5d5ee709bd9c5fd92e466caabfcbfb6.png)

> <https://github.com/node-red/node-red/pull/4387>
>
> \- \[\] Bugfix (non-breaking change which fixes an issue)
> \- \[x\] New feature (non-…breaking change which adds functionality)
> 
> \## Proposed changes
> This PR adds support for plugin-only modules to the palette manager. Closes #4271.
> 
> \<img width="527" alt="image" src="https://github.com/node-red/node-red/assets/16342003/f99bda9e-0187-4a8d-9697-ea329ccb4a7d"\>
> 
> \## Checklist
> \- \[x\] I have read the \[contribution guidelines\](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
> \- \[x\] For non-bugfix PRs, I have discussed this change on the forum/slack team.
> \- \[x\] I have run \`npm run test\` to verify the unit tests pass
> \- \[\] I have added suitable unit tests to cover the new/changed functionality
> 
> \## Details of implementation
> 
> Runtime:
> \- New runtime-event 'plugin/added', emitted only if a pure plugin module is installed.
> 
> Editor API:
> \- New endpoint '/plugins/\<id\>' to query for the config of a single plugin.
> \- Function 'getConfig' to return the config of a single plugin.
> 
> editor.json / runtime.json:
> \- Plugin specific messages.
> 
> Editor Client:
> \- New functions for plugin (registry) handling, following nodes schematic: setPluginList/addPlugin, getModule.
> \- New event "registry:plugin-module-added", signaling a (plugin) module was registered w/ addPlugin.
> \- New event subscription "notification/plugin/added", to query the added plugins config from the runtime (following nodes schematic).
> 
> Palette Editor (Client):
> \- Handler for "registry:plugin-module-added" to add plugin data to the various lists.
> \- Dedicated list management when adding & removing a plugin.
> \- Support for \*\*new function "onremove", defined by the plugin (html), to remove itself from the client\*\*.
> 
> Installer (runtime)
> \- In uninstallModule, remove plugin config from (plugin) registry.
> \- Log info in case of plugin removal.
> 
> Registry (runtime) / plugin
> \- New function to get the config of a single plugin.
> \- New function to remove the config of a single plugin.
> \- Support for \*\*new function "onremove", defined by the plugin (js), to remove itself from the runtime\*\*.
> 
> Registry (runtime)
> \- Adapt moduleInfo to handle as well plugins.
