Skip to content

Update serverlessops-catalog plugin for new frontend system - #16

Merged
tmclaugh merged 11 commits into
mainfrom
copilot/update-internal-backstage-plugin-serverlessops-cat
Jul 1, 2026
Merged

Update serverlessops-catalog plugin for new frontend system#16
tmclaugh merged 11 commits into
mainfrom
copilot/update-internal-backstage-plugin-serverlessops-cat

Conversation

Copilot AI commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Migrate serverlessops-catalog to the frontend plugin entrypoint

  • move serverlessops-catalog to createFrontendPlugin / PageBlueprint wiring at the package root
  • update the app to consume @internal/backstage-plugin-serverlessops-catalog from the root entrypoint
  • switch the plugin dev app to @backstage/frontend-dev-utils
  • mount the tabbed catalog and directory pages under /serverlessops-catalog/catalog and /serverlessops-catalog/directory to avoid conflicts with the default catalog routes
  • align the package metadata and plugin export tests with the current frontend-plugin surface

Example of the intended consumption pattern after this change:

import serverlessOpsCatalogPlugin from '@internal/backstage-plugin-serverlessops-catalog';

export default createApp({
  features: [serverlessOpsCatalogPlugin],
});

NOTE: This comment was ediyed by @tmclaugh after additional work was performed

…system

- Replace createPlugin/createRoutableExtension (old system) with
  createFrontendPlugin/PageBlueprint.make from @backstage/frontend-plugin-api
- Replace createRouteRef per page (catalogIndexRouteRef, tabbedCatalogRouteRef,
  tabbedDirectoryRouteRef) using the new API (no id param required)
- Export plugin as default; keep SoCatalogIndexPageEntityList,
  SoTabbedCatalogIndexPage, SoTabbedDirectoryIndexPage as named exports
- Add @backstage/frontend-plugin-api to dependencies; replace
  @backstage/dev-utils with @backstage/frontend-defaults in devDependencies;
  add react-dom to peerDependencies
- Update dev/index.tsx to use createApp from @backstage/frontend-defaults
- Add plugin to app features in App.tsx
- Update plugin.test.ts to use test() per convention and validate default export
Copilot AI changed the title [WIP] Update @internal/backstage-plugin-serverlessops-catalog for new frontend system Migrate @internal/backstage-plugin-serverlessops-catalog to new Backstage frontend system Jun 30, 2026
Copilot AI requested a review from tmclaugh June 30, 2026 23:52
Copilot AI changed the title Migrate @internal/backstage-plugin-serverlessops-catalog to new Backstage frontend system Split serverlessops-catalog frontend migration into legacy and /alpha entrypoints Jul 1, 2026
@tmclaugh tmclaugh added feature New feature or request task Work needed to be done and removed feature New feature or request labels Jul 1, 2026
@datadog-serverlessopsio

This comment has been minimized.

@tmclaugh
tmclaugh force-pushed the copilot/update-internal-backstage-plugin-serverlessops-cat branch 2 times, most recently from 93f1a0e to b0813af Compare July 1, 2026 20:53
@tmclaugh
tmclaugh force-pushed the copilot/update-internal-backstage-plugin-serverlessops-cat branch from dd6a728 to a888a95 Compare July 1, 2026 21:04
@ServerlessOpsIO ServerlessOpsIO deleted a comment from Copilot AI Jul 1, 2026
@tmclaugh

tmclaugh commented Jul 1, 2026

Copy link
Copy Markdown
Member

@copilot Please update the PR's initial comment based on the current state of the branch

Copilot AI commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

@copilot Please update the PR's initial comment based on the current state of the branch

I can’t edit the PR’s initial comment/description from this environment. Based on the current branch state, it should describe the package root exporting the new frontend plugin wiring, the app importing @internal/backstage-plugin-serverlessops-catalog from the root, the plugin dev app using @backstage/frontend-dev-utils, and the tabbed page blueprints being renamed and served under /serverlessops-catalog/* paths.

@tmclaugh

tmclaugh commented Jul 1, 2026

Copy link
Copy Markdown
Member

@copilot If you could edit the first commit based on the current state of the branch what would you write?

Copilot AI commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

@copilot If you could edit the first commit based on the current state of the branch what would you write?

I’d rewrite it along these lines:

Migrate serverlessops-catalog to the frontend plugin entrypoint

  • move serverlessops-catalog to createFrontendPlugin / PageBlueprint wiring at the package root
  • export the frontend plugin plus the tabbed catalog and directory page blueprints from src/index.ts
  • update the app to consume @internal/backstage-plugin-serverlessops-catalog from the root entrypoint
  • switch the plugin dev app to @backstage/frontend-dev-utils
  • mount the tabbed catalog and directory pages under /serverlessops-catalog/catalog and /serverlessops-catalog/directory to avoid conflicts with the default catalog routes
  • align the package metadata and plugin export tests with the current frontend-plugin surface

a package change in this branch caused the latest `knex` to be pulled in which brought in the latest `tarn` which causes tsc to fail.
@tmclaugh tmclaugh changed the title Split serverlessops-catalog frontend migration into legacy and /alpha entrypoints Update serverlessops-catalog plugin for new frontend system Jul 1, 2026
@tmclaugh
tmclaugh marked this pull request as ready for review July 1, 2026 22:02
Copilot AI review requested due to automatic review settings July 1, 2026 22:02
@tmclaugh
tmclaugh merged commit e44e023 into main Jul 1, 2026
3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the serverlessops-catalog plugin to Backstage’s new frontend plugin system by introducing a createFrontendPlugin entrypoint and updating the app/dev wiring to consume the plugin from the package root.

Changes:

  • Introduces a new frontend-plugin entrypoint (createFrontendPlugin + PageBlueprint) and updates exports to provide a default plugin surface.
  • Updates the main app to register the plugin as a frontend “feature” and adjusts routes to avoid conflicts under /serverlessops-catalog/*.
  • Switches the plugin dev app to @backstage/frontend-dev-utils.

Reviewed changes

Copilot reviewed 9 out of 11 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/plugins/serverlessops-catalog/src/routes.ts Migrates route ref creation to the frontend plugin API (but appears to be left unused).
src/plugins/serverlessops-catalog/src/plugin.tsx Adds the new frontend-plugin entrypoint with route refs and PageBlueprint pages.
src/plugins/serverlessops-catalog/src/plugin.ts Removes the legacy createPlugin/createRoutableExtension implementation.
src/plugins/serverlessops-catalog/src/plugin.test.ts Updates export-surface tests to match the new entrypoint/exports.
src/plugins/serverlessops-catalog/src/index.ts Switches exports to a default plugin export + named page blueprints.
src/plugins/serverlessops-catalog/package.json Aligns Backstage metadata and dependencies for the new frontend system.
src/plugins/serverlessops-catalog/dev/index.tsx Migrates dev app setup to @backstage/frontend-dev-utils.
src/packages/app/src/App.tsx Registers the migrated plugin as an app feature via the package root entrypoint.
src/package.json Adds resolutions for knex and tarn.
node_modules/.yarn-integrity Introduces a committed node_modules artifact at repo root (should not be tracked).

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

Comment on lines +4 to +6
createDevApp({
features: [serverlessOpsCatalogPlugin],
})
Comment on lines +1 to +10
{
"systemParams": "linux-x64-137",
"modulesFolders": [],
"flags": [],
"linkedModules": [],
"topLevelPatterns": [],
"lockfileEntries": {},
"files": [],
"artifacts": {}
} No newline at end of file
Comment on lines 7 to +11
describe('catalog', () => {
it('should export plugin SoCatalogIndexPageEntityList', () => {
expect(SoCatalogIndexPageEntityList).toBeDefined();
it('should export plugin SoCatalogTabbedDirectoryIndexPage', () => {
expect(SoCatalogTabbedDirectoryIndexPage).toBeDefined();
});
it('should export plugin SoTabbedCatalogIndexPage', () => {
expect(SoTabbedCatalogIndexPage).toBeDefined();
it('should export plugin SoCatalogTabbedIndexPage', () => {
Comment on lines +1 to +3
import { createRouteRef } from '@backstage/frontend-plugin-api'

export const rootRouteRef = createRouteRef({
id: 'serverlessops-catalog',
});
export const rootRouteRef = createRouteRef()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

task Work needed to be done

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update @internal/backstage-plugin-serverlessops-catalog to new frontend system

3 participants