diff --git a/src/workspaces/officerdev/src/apps/Plugins/PluginDetail.tsx b/src/workspaces/officerdev/src/apps/Plugins/PluginDetail.tsx index b3eeeaba..d7097f67 100644 --- a/src/workspaces/officerdev/src/apps/Plugins/PluginDetail.tsx +++ b/src/workspaces/officerdev/src/apps/Plugins/PluginDetail.tsx @@ -1,4 +1,4 @@ -import { useSearchParams } from 'react-router'; +import { Link, useSearchParams } from 'react-router'; import { usePlugins, type PluginItem } from './usePlugins'; // The right panel: one plugin, and the four verbs. @@ -105,6 +105,21 @@ export const PluginDetail = () => { + {/* The way in, when there is one. + Only while installed AND enabled: a link to a route that is not mounted is a link to the home + page, since the shell redirects an unknown path — which reads as the link being broken rather + than the plugin being off. `has.web` because a plugin can be entirely backend and have no screen + to open at all. */} + {plugin.installed && plugin.enabled && plugin.has.web ? ( + + Open {plugin.label} + + + ) : null} +
{!plugin.installed ? (