From 3d969f541a481af2851086712159bbbf717f87d1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Mar 2026 14:52:06 +0100 Subject: [PATCH] Clean up example app comments and add missing backend plugin (#33440) Made-with: Cursor Signed-off-by: Patrik Oldsberg --- packages/app/src/App.tsx | 84 ----------------------- packages/app/src/examples/pagesPlugin.tsx | 15 ---- packages/app/src/modules/appModuleNav.tsx | 2 +- packages/backend/package.json | 1 + packages/backend/src/index.ts | 1 + yarn.lock | 3 +- 6 files changed, 5 insertions(+), 101 deletions(-) diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index 88de62663b..160579a3a3 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -55,35 +55,6 @@ import { unprocessedEntitiesDevToolsContent } from '@backstage/plugin-catalog-un import catalogPlugin from '@backstage/plugin-catalog/alpha'; import InfoIcon from '@material-ui/icons/Info'; -/* - -# Notes - -TODO: - - proper createApp - - connect extensions and plugins, provide method? - - higher level API for creating standard extensions + higher order framework API for creating those? - - extension config schema + validation - - figure out how to resolve configured extension ref to runtime value, e.g. '@backstage/plugin-graphiql#GraphiqlPage' - - make sure all shorthands work + tests - - figure out package structure / how to ship, frontend-plugin-api/frontend-app-api - - figure out routing, useRouteRef in the new system - - Legacy plugins / interop - - dynamic updates, runtime API - -*/ - -/* core */ - -// const discoverPackages = async () => { -// // stub for now, deferring package discovery til later -// return ['@backstage/plugin-graphiql']; -// }; - -/* graphiql package */ - -/* app.tsx */ - /** * TechDocs does support the new frontend system so this conversion is not * strictly necessary, but it's left here to provide a demo of the utilities for @@ -91,7 +62,6 @@ TODO: */ const convertedTechdocsPlugin = convertLegacyPlugin(techdocsPlugin, { extensions: [ - // TODO: We likely also need a way to convert an entire tree similar to collectLegacyRoutes convertLegacyPageExtension(TechDocsIndexPage, { name: 'index', path: '/docs', @@ -185,60 +155,6 @@ const app = createApp({ advanced: { pluginInfoResolver, }, - /* Handled through config instead */ - // bindRoutes({ bind }) { - // bind(pagesPlugin.externalRoutes, { pageX: pagesPlugin.routes.pageX }); - // }, }); -// const legacyApp = createLegacyApp({ plugins: [legacyGraphiqlPlugin] }); - export default app.createRoot(); - -// const routes = ( -// -// {/* } /> -// } /> -// } -// > -// -// -// -// -// -// - -// -// -// -// -// - -// -// -// -// -// -// -// } -// /> */} -// {/* } -// /> */} -// } /> -// -// ); - -// export default app.createRoot( -// <> -// {/* -// */} -// {routes} -// , -// ); diff --git a/packages/app/src/examples/pagesPlugin.tsx b/packages/app/src/examples/pagesPlugin.tsx index 531d0084fb..3d69dce677 100644 --- a/packages/app/src/examples/pagesPlugin.tsx +++ b/packages/app/src/examples/pagesPlugin.tsx @@ -36,11 +36,6 @@ export const externalPageXRouteRef = createExternalRouteRef({ defaultTarget: 'pages.pageX', }); export const pageXRouteRef = createRouteRef(); -// const page2RouteRef = createSubRouteRef({ -// id: 'page2', -// parent: page1RouteRef, -// path: '/page2', -// }); function PluginInfo() { const node = useAppNode(); @@ -153,14 +148,12 @@ const Page1 = PageBlueprint.make({ const Component = () => { const indexLink = useRouteRef(indexRouteRef); const xLink = useRouteRef(externalPageXRouteRef); - // const page2Link = useRouteRef(page2RouteRef); return (

This is page 1

{indexLink && Go back} Page 2 - {/* Page 2 */} {xLink && Page X}
@@ -188,7 +181,6 @@ const ExternalPage = PageBlueprint.make({ loader: async () => { const Component = () => { const indexLink = useRouteRef(indexRouteRef); - // const pageXLink = useRouteRef(pageXRouteRef); return (
@@ -468,13 +460,6 @@ const PermissionGatedPage = PageBlueprint.make({ export const pagesPlugin = createFrontendPlugin({ pluginId: 'pages', - // routes: { - // index: indexRouteRef, - // // reference in config: - // // 'plugin.pages.routes.index' - // // OR - // // 'page1' - // }, info: { packageJson: () => import('../../package.json'), manifest: () => import('../../catalog-info.yaml'), diff --git a/packages/app/src/modules/appModuleNav.tsx b/packages/app/src/modules/appModuleNav.tsx index 6c6ba0bfb6..044cd96e23 100644 --- a/packages/app/src/modules/appModuleNav.tsx +++ b/packages/app/src/modules/appModuleNav.tsx @@ -107,7 +107,7 @@ export const appModuleNav = createFrontendModule({ text={item.title} /> )); - // Skip these + // Consume without rendering — these are handled by dedicated sidebar groups nav.take('page:home'); nav.take('page:search'); return ( diff --git a/packages/backend/package.json b/packages/backend/package.json index c59b25a18f..5c70cfda33 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -41,6 +41,7 @@ "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^", + "@backstage/plugin-catalog-backend-module-logs": "workspace:^", "@backstage/plugin-catalog-backend-module-openapi": "workspace:^", "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 14eb36a3a6..e77c83baac 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -50,6 +50,7 @@ backend.add( import('@backstage/plugin-catalog-backend-module-scaffolder-entity-model'), ); backend.add(import('@backstage/plugin-catalog-backend')); +backend.add(import('@backstage/plugin-catalog-backend-module-logs')); backend.add(import('@backstage/plugin-events-backend')); backend.add(import('@backstage/plugin-devtools-backend')); backend.add(import('@backstage/plugin-kubernetes-backend')); diff --git a/yarn.lock b/yarn.lock index cbd421b49b..d8f1112efa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5008,7 +5008,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-logs@workspace:plugins/catalog-backend-module-logs": +"@backstage/plugin-catalog-backend-module-logs@workspace:^, @backstage/plugin-catalog-backend-module-logs@workspace:plugins/catalog-backend-module-logs": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-logs@workspace:plugins/catalog-backend-module-logs" dependencies: @@ -31054,6 +31054,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/plugin-catalog-backend-module-backstage-openapi": "workspace:^" + "@backstage/plugin-catalog-backend-module-logs": "workspace:^" "@backstage/plugin-catalog-backend-module-openapi": "workspace:^" "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^"