Skip to content

feat(greenhouse): add Exposed Services#1585

Open
guoda-puidokaite wants to merge 18 commits intomainfrom
guoda-exposed-services
Open

feat(greenhouse): add Exposed Services#1585
guoda-puidokaite wants to merge 18 commits intomainfrom
guoda-exposed-services

Conversation

@guoda-puidokaite
Copy link
Copy Markdown
Contributor

@guoda-puidokaite guoda-puidokaite commented Apr 8, 2026

Summary

Add a list of exposed services for all clusters to Greenhouse under Exposed Services navigation tab

Exposed Services

Filters by supportGroup as default. This has all filters cleared.

Screenshot 2026-04-19 at 23 49 46

Before Plugin Instance Detail Page

Screenshot 2026-04-19 at 23 15 05

After Plugin Instance Detail Page

Screenshot 2026-04-19 at 23 16 00

Changes Made

  • Added a list of exposed services, see ACs
  • Removed list of exposed services from Plugin Instance detail page and added them as a list in Details
  • Updated PluginPresets page to use DataGridToolbar

NOTE Will raise a separate issues for:

  • Selected filters should be removed from the dropdown cross pages
  • Cross page linking e.g. when you press on a cluster in Exposed Services page, navigating to its detail page

Related Issues

Screenshots (if applicable)

Testing Instructions

  1. Review ACs
  2. Test Greenhouse preview link

Checklist

  • I have performed a self-review of my code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have made corresponding changes to the documentation (if applicable).
  • My changes generate no new warnings or errors.
  • I have created a changeset for my changes.

PR Manifesto

Review the PR Manifesto for best practises.

@guoda-puidokaite guoda-puidokaite self-assigned this Apr 8, 2026
@guoda-puidokaite guoda-puidokaite added greenhouse Greenhouse core related task greenhouse-pr-preview Builds a PR preview for greenhouse shell app and plugins. labels Apr 8, 2026
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 8, 2026

🦋 Changeset detected

Latest commit: 6ec4840

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@cloudoperators/juno-app-greenhouse Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@guoda-puidokaite guoda-puidokaite linked an issue Apr 8, 2026 that may be closed by this pull request
7 tasks
@guoda-puidokaite guoda-puidokaite changed the title exposed services feat(greenhouse): add Exposed Services Apr 20, 2026
@guoda-puidokaite guoda-puidokaite marked this pull request as ready for review April 20, 2026 07:39
@guoda-puidokaite guoda-puidokaite requested a review from a team as a code owner April 20, 2026 07:39
Copy link
Copy Markdown
Collaborator

@ArtieReus ArtieReus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Short question... I see that not just the link is clickable instead the whole cell. Is this intentionally? and if yes is this agreed? we don't have this pattern implemented. From my point of view it should be just the link and not the whole cell.

Image

Copy link
Copy Markdown
Collaborator

@ArtieReus ArtieReus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't the selected filter be removed from the available filters in the dropdown?

Image

Copy link
Copy Markdown
Collaborator

@ArtieReus ArtieReus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Icon seems to float away from string

Image

@guoda-puidokaite
Copy link
Copy Markdown
Contributor Author

guoda-puidokaite commented Apr 20, 2026

Shouldn't the selected filter be removed from the available filters in the dropdown?

Image

(Future Improvement, Existing Functionality)
I think it would be better... I already noted this as a general improvement across views (updated PR description). However, it's something we'll need to to discuss. This is how it works across views right now e.g. check PluginPresets. Instead of this, in the code we currently keep all options and check "if filter isn't already applied, apply it".

@guoda-puidokaite
Copy link
Copy Markdown
Contributor Author

guoda-puidokaite commented Apr 20, 2026

Short question... I see that not just the link is clickable instead the whole cell. Is this intentionally? and if yes is this agreed? we don't have this pattern implemented. From my point of view it should be just the link and not the whole cell.

Image

(Overwrote Default Span Behaviour)
Good catch, needed to override default flex behaviour which spanned the link across the entire cell. But I think this is self explanatory, it's a link that should be clickable, not the cell. Thank You!

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Greenhouse Admin page to list services exposed by plugins across clusters, and refactors plugin instance details to show exposed services as compact links rather than a separate grid.

Changes:

  • Added /admin/exposed-services route, navigation entry, data grid, filters, and API fetch helpers for exposed services.
  • Moved exposed-services rendering out of the Plugin Instance “Overview” section and into the “Details” table as link(s).
  • Updated the PluginPresets page to use DataGridToolbar for its header/refresh area.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 19 comments.

Show a summary per file
File Description
apps/greenhouse/src/routes/admin/exposed-services.tsx Adds new admin route and loader output for Exposed Services page.
apps/greenhouse/src/routeTree.gen.ts Registers the new route in the generated TanStack Router tree.
apps/greenhouse/src/components/admin/constants.ts Adds cluster + exposed-services selector constants and a new filter id.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Fetches plugin resources with exposed services and applies filtering/sorting.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServicesFilters.ts Fetches filter value lists for the Exposed Services page.
apps/greenhouse/src/components/admin/ExposedServices/* Implements page layout, filters UI, and the exposed-services data grid.
apps/greenhouse/src/components/admin/mocks/exposedServices.ts Adds mock response data for exposed services tests.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/*.test.tsx Adds initial unit test coverage for the new data grid.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/index.tsx Removes the dedicated Exposed Services section from the instance overview.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Adds exposed services link list into the instance “Details” table.
apps/greenhouse/src/components/admin/Layout/Navigation.tsx Adds “Exposed Services” entry to the admin nav.
apps/greenhouse/src/components/admin/PluginPresets/index.tsx Switches header area to DataGridToolbar.
apps/greenhouse/src/components/admin/types/schema.d.ts Introduces a new ExposedServices schema type.
apps/greenhouse/src/components/admin/types/k8sTypes.ts Exports ExposedServices type alias from the schema.
.changeset/wide-cups-beam.md Adds changeset entry for the new feature/refactor.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Outdated
Comment thread apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Outdated
Comment thread apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Outdated
Comment thread apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Outdated
Comment thread .changeset/wide-cups-beam.md Outdated
@edda
Copy link
Copy Markdown
Contributor

edda commented Apr 20, 2026

Shouldn't the selected filter be removed from the available filters in the dropdown?

Yes, it should.

Comment thread apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Outdated
Comment thread apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an Admin “Exposed Services” view in the Greenhouse app to list services exposed by plugins across clusters, and adjusts existing pages to reflect the new central location for this information.

Changes:

  • Introduces /admin/exposed-services route + navigation entry and new Exposed Services page (filters + datagrid).
  • Adds API fetch utilities to query plugins with exposed services (labelSelector-based) and derives filter options.
  • Removes the Exposed Services datagrid from plugin instance overview and surfaces exposed service links inline under “Details”; updates PluginPresets toolbar usage.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
apps/greenhouse/src/routes/admin/exposed-services.tsx New admin route with search validation and default-filter redirect behavior.
apps/greenhouse/src/routeTree.gen.ts Generated route tree updated to include the new exposed-services route.
apps/greenhouse/src/components/admin/types/schema.d.ts Adds schema typing for plugins filtered to those with exposed services.
apps/greenhouse/src/components/admin/types/k8sTypes.ts Exposes PluginsWithExposedServices type alias from the schema.
apps/greenhouse/src/components/admin/constants.ts Adds constants for exposed-services label selector, filter IDs, and default “no value” marker.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServicesFilters.ts New API helper to fetch plugins-with-exposed-services and derive filter dropdown values.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts New API helper to fetch, flatten, filter, and sort exposed services for the grid.
apps/greenhouse/src/components/admin/mocks/exposedServices.ts Mock response data for exposed services used by new UI tests.
apps/greenhouse/src/components/admin/PluginPresets/index.tsx Switches the PluginPresets page header area to use DataGridToolbar.
apps/greenhouse/src/components/admin/PluginPresetDetail/Overview/Details.tsx Uses SUPPORT_GROUP_LABEL constant for the owning team label lookup.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/index.tsx Removes the dedicated Exposed Services section from plugin instance overview.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.tsx Removes the old per-plugin exposed services datagrid component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.test.tsx Removes tests for the deleted ExposedServices component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Adds inline exposed service links under “Details” for plugin instances.
apps/greenhouse/src/components/admin/Layout/Navigation.tsx Adds “Exposed Services” to the admin navigation.
apps/greenhouse/src/components/admin/ExposedServices/index.tsx New Exposed Services overview page (heading + refresh toolbar + grid + filters).
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesFilters.tsx Filter controls for exposed services (selected filters + search).
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.tsx Exposed services datagrid wrapper with Suspense + error handling.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.test.tsx RTL test coverage for exposed services rendering/link behavior.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/DataRows/index.tsx Suspense-driven datagrid rows fetching and rendering service entries.
.changeset/wide-cups-beam.md Changeset documenting the new admin feature and UI move.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Greenhouse admin page to list all plugin-exposed services across clusters, while refactoring the plugin instance detail page to show exposed services inline within the Details section.

Changes:

  • Introduce /admin/exposed-services route with filters (cluster/plugin/support group) and a DataGrid listing flattened exposed services.
  • Move exposed-services display out of the plugin instance “Overview” section into the “Details” table as link(s).
  • Refine existing admin UI pages (PluginPresets toolbar) and extend shared admin constants/types/utilities.

Reviewed changes

Copilot reviewed 21 out of 22 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
apps/greenhouse/src/routes/admin/exposed-services.tsx New route with search validation, default filter redirect, and loader-provided filter settings + crumb.
apps/greenhouse/src/routeTree.gen.ts Registers the new admin route in the generated route tree.
apps/greenhouse/src/components/admin/utils.ts Adds getSafeExternalUrl helper for sanitizing external links.
apps/greenhouse/src/components/admin/types/schema.d.ts Adds a PluginsWithExposedServices schema type used by the new feature.
apps/greenhouse/src/components/admin/types/k8sTypes.ts Exposes PluginsWithExposedServices type alias.
apps/greenhouse/src/components/admin/constants.ts Adds exposed-services label selector, new filter IDs, and a default placeholder constant.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServicesFilters.ts Fetches plugins with exposed services and derives filter value lists.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Fetches plugins with exposed services, flattens/sorts/services, and applies filters/search.
apps/greenhouse/src/components/admin/mocks/exposedServices.ts Adds mock API response data for tests.
apps/greenhouse/src/components/admin/PluginPresets/index.tsx Switches the header area to DataGridToolbar.
apps/greenhouse/src/components/admin/PluginPresetDetail/Overview/Details.tsx Uses the shared SUPPORT_GROUP_LABEL constant for owning team display.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/index.tsx Removes the dedicated Exposed Services section from the overview layout.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.tsx Removes the old per-plugin exposed-services DataGrid component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.test.tsx Removes tests that covered the deleted per-plugin DataGrid component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Adds inline “Exposed Services” row with safe external links + icon.
apps/greenhouse/src/components/admin/Layout/Navigation.tsx Adds “Exposed Services” item to admin navigation.
apps/greenhouse/src/components/admin/ExposedServices/index.tsx New page container with toolbar + refresh and integration with filters/grid.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesFilters.tsx New filters/search UI wired to URL state and filter API query.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.tsx New DataGrid shell with suspense + error boundary.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.test.tsx Adds a test verifying exposed services render and link behavior.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/DataRows/index.tsx Suspense-powered row rendering using the flattened exposed services query.
.changeset/wide-cups-beam.md Changeset for the new exposed-services feature.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/greenhouse/src/components/admin/constants.ts Outdated
Comment thread apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Outdated
Comment thread apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Greenhouse admin page to view exposed services across all clusters/plugins, default-filtered by support group, and refactors plugin instance details to show exposed services as inline links instead of a dedicated section.

Changes:

  • Introduce /admin/exposed-services route, navigation entry, page layout, filters, and a DataGrid-backed list.
  • Add API helpers/types/mocks for fetching plugins that expose services (via label selector) and flattening them for display/filtering.
  • Update plugin instance and preset details to reuse constants and present exposed services in the “Details” section; update PluginPresets page to use DataGridToolbar.

Reviewed changes

Copilot reviewed 22 out of 23 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
apps/greenhouse/src/routes/admin/exposed-services.tsx New admin route with search validation, default support-group filters, and loader-provided filter settings/crumb.
apps/greenhouse/src/routeTree.gen.ts Registers the new exposed-services route in the generated route tree.
apps/greenhouse/src/components/admin/utils.ts Adds getSafeExternalUrl helper for sanitizing external links.
apps/greenhouse/src/components/admin/types/schema.d.ts Adds PluginsWithExposedServices schema type used by the new exposed-services feature.
apps/greenhouse/src/components/admin/types/k8sTypes.ts Exports PluginsWithExposedServices type alias for use in API/UI layers.
apps/greenhouse/src/components/admin/constants.ts Adds label selector constant and filter IDs for cluster/plugin; introduces a shared “no value” placeholder constant.
apps/greenhouse/src/components/admin/common/ExternalLink.tsx New reusable external link component that uses getSafeExternalUrl.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServicesFilters.ts Fetches plugins with exposed services and derives filter value lists (cluster/plugin/support group).
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Fetches and flattens exposed services into rows; applies filtering/search and sorting.
apps/greenhouse/src/components/admin/mocks/exposedServices.ts Adds mock plugin data with exposed services for tests.
apps/greenhouse/src/components/admin/PluginPresets/index.tsx Replaces custom toolbar layout with DataGridToolbar.
apps/greenhouse/src/components/admin/PluginPresetDetail/Overview/Details.tsx Uses shared SUPPORT_GROUP_LABEL constant instead of inline string.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/index.tsx Removes the old exposed-services section from the plugin instance overview page.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.tsx Removes the old per-plugin exposed services DataGrid component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.test.tsx Removes tests for the deleted exposed-services section component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Adds exposed service links inline under “Details” using ExternalLink.
apps/greenhouse/src/components/admin/Layout/Navigation.tsx Adds “Exposed Services” navigation item to the admin navigation.
apps/greenhouse/src/components/admin/ExposedServices/index.tsx New exposed-services overview page container with filters, refresh, and DataGrid.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesFilters.tsx New filter bar (filter select, clear-all, search) for exposed services.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.tsx New DataGrid wrapper with ErrorBoundary + Suspense integration.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.test.tsx Tests exposed-services grid rendering/link behavior using mock data.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/DataRows/index.tsx Suspense-driven rows component fetching and rendering flattened exposed services.
.changeset/wide-cups-beam.md Changeset for the new exposed-services feature and UI refactor.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/greenhouse/src/routes/admin/exposed-services.tsx
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an “Exposed Services” admin view to Greenhouse to list services exposed by plugins across clusters, and adjusts existing admin pages to use shared patterns/components.

Changes:

  • Added /admin/exposed-services route, navigation entry, data fetching, filtering UI, and datagrid rendering.
  • Moved plugin instance “Exposed Services” from a dedicated section into the “Details” grid using safe external links.
  • Updated Plugin Presets page toolbar usage and improved default-filter redirect behavior there.

Reviewed changes

Copilot reviewed 23 out of 24 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
apps/greenhouse/src/routes/admin/plugin-presets/index.tsx Preserves existing search params when applying default filters via redirect.
apps/greenhouse/src/routes/admin/exposed-services.tsx New route with default-filter logic and loader data for the Exposed Services page.
apps/greenhouse/src/routeTree.gen.ts Generated route tree updated to include /admin/exposed-services.
apps/greenhouse/src/components/admin/utils.ts Adds getSafeExternalUrl helper for sanitizing external link hrefs.
apps/greenhouse/src/components/admin/types/schema.d.ts Adds PluginsWithExposedServices schema typing for exposed-services payloads.
apps/greenhouse/src/components/admin/types/k8sTypes.ts Exposes PluginsWithExposedServices type alias.
apps/greenhouse/src/components/admin/constants.ts Adds label selector constant, NO_VALUE placeholder, and new filter IDs.
apps/greenhouse/src/components/admin/common/ExternalLink.tsx New component rendering safe external links with icon and fallback text.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServicesFilters.ts Fetches plugins (label-selected) and derives filter value sets.
apps/greenhouse/src/components/admin/api/exposed-services/fetchExposedServices.ts Fetches plugins (label-selected) and flattens exposed-services into rows with client-side filtering/sorting.
apps/greenhouse/src/components/admin/mocks/exposedServices.ts Adds mock API response data for exposed-services tests.
apps/greenhouse/src/components/admin/PluginPresets/index.tsx Switches Plugin Presets summary/refresh header to DataGridToolbar.
apps/greenhouse/src/components/admin/PluginPresetDetail/Overview/Details.tsx Uses SUPPORT_GROUP_LABEL constant for owning team display.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/index.tsx Removes the separate Exposed Services section from the overview layout.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.tsx Removes the old plugin-instance exposed-services datagrid component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/ExposedServices.test.tsx Removes tests tied to the deleted ExposedServices component.
apps/greenhouse/src/components/admin/PluginInstanceDetail/Overview/Details.tsx Adds exposed-services links into Details table and uses shared ExternalLink.
apps/greenhouse/src/components/admin/Layout/Navigation.tsx Adds “Exposed Services” nav item.
apps/greenhouse/src/components/admin/ExposedServices/index.tsx New page container: heading, filters, toolbar, and grid composition.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesFilters.tsx New filter/search UI that writes filter state to URL search params.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.tsx New datagrid shell with Suspense + ErrorBoundary rows.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/index.test.tsx Adds test coverage for exposed-services grid rendering/link behavior.
apps/greenhouse/src/components/admin/ExposedServices/ExposedServicesDataGrid/DataRows/index.tsx Implements Suspense-driven data rows using flattened exposed-services query.
.changeset/wide-cups-beam.md Changeset for the new feature and detail-page adjustment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/greenhouse/src/routes/admin/exposed-services.tsx
Pill,
Stack,
ContentHeading,
Icon,
Comment on lines +45 to +46
{flattenedExposedServices.map((service, index) => (
<DataGridRow key={`${service.serviceName}-${index}`}>
const exposedServices = plugin.status?.exposedServices || {}
const exposedServicesEntries = Object.entries(exposedServices)
const exposedServicesLinks = exposedServicesEntries.map(([url, service], index) => (
<span key={`${url}-${service.name}-${index}`}>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

greenhouse Greenhouse core related task greenhouse-pr-preview Builds a PR preview for greenhouse shell app and plugins.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Task](greenhouse): add exposed services list

4 participants